如何从fit_resamples对象中提取各列对应的拟合系数?
问题解答
fit_resamples()默认仅保留重抽样过程的评估指标与预测结果,不会保存每个折叠的拟合模型对象,因此默认返回结果中没有变量系数数据。你需要的系数本质是每个重抽样折叠的训练集单独拟合模型后生成的变量系数,默认不会被输出。
要得到你需要的系数结果,需在调用fit_resamples()时通过控制参数自定义提取规则,操作方法如下:
- 在
control_resamples中配置extract回调函数,每次完成单个折叠的拟合后自动提取并保留模型系数 - 对
fit_resamples()返回的结果做嵌套列展开,即可得到包含所有折叠、所有变量系数的结构化结果
参考代码示例:
library(tidymodels) # 1. 定义模型(以逻辑回归为例,可替换为你使用的模型) model_spec <- logistic_reg() %>% set_engine("glm") # 2. 定义重抽样规则 resample_folds <- vfold_cv(你的数据集, v = 5) # 3. 拟合时指定提取规则 fit_res <- fit_resamples( 你的建模公式, model = model_spec, resamples = resample_folds, control = control_resamples( extract = function(x) { # 提取拟合后的模型,整理为系数表,可按需开启置信区间计算 extract_fit_parsnip(x) %>% tidy(conf.int = TRUE) } ) ) # 4. 展开提取的系数列,得到你需要的结果格式 coef_result <- fit_res %>% unnest(extract)
运行上述代码后得到的coef_result即为预期的系数结果,结构和你不使用重抽样单独拟合得到的系数表一致,额外携带重抽样折叠标识,可直接用于后续分析。
内容的提问来源于stack exchange,提问作者user10443249
相关产品推荐
相关产品推荐

