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

在R的Tidymodels中提取交叉验证各折的OOB误差

解决Tidymodels交叉验证中提取随机森林OOB误差的问题

你的思路方向是对的,只需从提取的ranger引擎对象中进一步取出OOB误差值即可。ranger拟合的随机森林模型里,分类任务的OOB误差存储在$prediction.error属性中,你可以通过以下两种方式获取:

方法一:拟合时直接提取OOB误差

修改control_resamples中的extract函数,直接从模型引擎中取出OOB误差并整理成表格格式,方便后续查看:

rf_fit_rs <- 
  rf_wf %>% 
  fit_resamples(
    folds, 
    control = control_resamples(
      verbose=TRUE, 
      save_pred = TRUE, 
      extract=function (x) {
        mod <- extract_fit_engine(x)
        # 分类任务下,prediction.error就是OOB误分率
        tibble(oob_error = mod$prediction.error)
      }
    )
  )

# 查看每个折的OOB误差
rf_fit_rs$extracts

方法二:从已拟合结果中事后提取

如果已经运行了你原本的代码,也可以用purrr包从保存的模型引擎中提取OOB误差:

library(purrr)
library(tibble)

# 提取每个折的OOB误差值
oob_errors <- map_dbl(rf_fit_rs$extracts, ~ .x[[1]]$prediction.error)

# 整理成可读性更好的表格
oob_results <- tibble(
  折数 = paste0("第", 1:length(oob_errors), "折"),
  OOB误差 = oob_errors
)

print(oob_results)

注意:如果是回归任务,ranger的prediction.error对应OOB均方误差;分类任务则对应OOB误分率,需根据你的任务类型解读结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:57:04