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

如何获取使用vfold_cv的parsnip多分类逻辑回归V折交叉验证系数

提取5折交叉验证各折模型系数的方法

首先请确认你运行交叉验证拟合时,已经开启了保存每折叠对应工作流的参数,如果之前的代码没有加对应配置,需要先调整拟合代码的控制参数:

# 拟合交叉验证时必须配置control参数保存每折的工作流对象
resamples_fit <- workflow() |>
  add_model(logistic_reg(mode = "classification") |> set_engine("glm")) |>
  add_formula(你的目标变量 ~ .) |>
  fit_resamples(
    resamples = vfold_cv(你的数据集, v = 5),
    control = control_resamples(save_workflow = TRUE) # 该参数为必加项,否则不会存储每折的模型结果
  )

后续提取系数的操作步骤如下:

  • 第一步:从resamples_fit中提取所有折叠保存的工作流对象
    library(purrr)
    library(broom)
    
    # 提取所有折叠的工作流对象列表
    fold_workflows <- resamples_fit$.workflows
    
  • 第二步:遍历所有工作流,批量提取各折的模型系数
    针对多分类逻辑回归,tidy()方法会自动按类别返回对应系数,你可以直接合并为统一的数据框方便后续分析:
    fold_coefs <- map2_dfr(
      .x = fold_workflows,
      .y = 1:5, # 对应5个折叠的编号
      .f = function(wf, fold_id) {
        wf |>
          extract_fit_parsnip() |> # 从工作流中提取parsnip格式的拟合模型
          tidy() |> # 提取模型系数,多分类结果会额外新增一列标记系数对应的类别
          mutate(fold = fold_id) # 新增列标记该系数属于第几折
      }
    )
    
  • 第三步:如果需要单独查看每折的系数,可以按折叠编号拆分结果
    # 拆分后列表的每个元素对应一折的所有系数
    coef_by_fold <- split(fold_coefs, fold_coefs$fold)
    

如果你用的是多分类softmax回归而非二分类逻辑回归,最终输出的系数表中会额外包含class列,对应每个系数所属的预测类别,你可以根据需要自行筛选对应类别的系数即可。

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:54:04