如何从tidymodels workflowset提取拟合模型用于DALEXtra?
从workflowset结果提取最优模型并传入DALEXtra的步骤
步骤1:获取最优模型的配置ID
先从交叉验证的排名结果里,筛选出BART模型中ROC-AUC排名第一的配置ID,把它存下来方便后续调用:
# 提取最优BART模型的配置ID best_bart_config <- grid_results %>% rank_results() %>% filter(.metric == "roc_auc", rank == 1, model == "bart") %>% pull(.config)
步骤2:提取对应的workflow对象
用extract_workflow()函数从grid_results中取出该配置对应的workflow(包含预处理步骤和模型定义):
# 提取最优配置对应的workflow best_bart_workflow <- grid_results %>% extract_workflow(id = best_bart_config)
步骤3:拟合workflow到完整训练集
注意:workflow_map()只是做了交叉验证,没有把模型拟合到整个训练集。DALEX需要的是拟合好的、能对新数据(或训练集)做预测的模型,所以需要用完整训练集重新拟合:
# 将workflow拟合到完整训练集 best_bart_fitted <- fit(best_bart_workflow, data = the_train)
步骤4:传入DALEXtra的explain_tidymodels函数
把拟合好的best_bart_fitted传入x参数即可,同时确保y参数是训练集中对应的响应变量列:
library(DALEXtra) explainer_bart <- explain_tidymodels( x = best_bart_fitted, data = the_train, y = the_train$adherence_group, # 替换为你的响应变量列 label = "BART Best Model", # 自定义模型标签,方便识别 verbose = FALSE )
关键说明
extract_workflow()是tidymodels中专门用于从workflowset结果中提取单个workflow的函数,参数id就是你从rank_results()里拿到的.config值。- 必须重新拟合到完整训练集:交叉验证的结果只是用来评估模型性能,并没有得到一个可以直接用于解释的完整拟合模型,所以这一步不能省略。
- 确保
y参数的格式正确:需要和训练集中的响应变量完全对应,比如如果是因子型就保持因子型。
内容的提问来源于stack exchange,提问作者itsMeInMiami
相关产品推荐
相关产品推荐

