You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 01:20:36