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

tidymodels生态中,有无无需重采样的collect_metrics()替代函数?

在tidymodels中无需重采样即可评估训练集模型性能的方法

在tidymodels生态里,确实有现成的工具可以直接对model_fit对象提取训练集的默认性能指标,不用手动逐个调用accuracy()、roc_auc()这类函数,正好适配你教学时对比训练集与重采样结果的需求,主要有两种简便方式:

方法1:augment() + metrics()组合

先通过augment()从拟合好的model_fit对象中导出训练集的预测结果,再传入metrics()函数——它会自动识别模型的任务类型(分类/回归),并计算对应的默认性能指标,输出格式和collect_metrics()完全一致:

# 加载tidymodels工具包
library(tidymodels)

# 以泰坦尼克号数据为例拟合分类模型
data(titanic)
titanic_clean <- titanic %>% drop_na()
logistic_model <- logistic_reg() %>% set_engine("glm")
fitted_model <- logistic_model %>% fit(survived ~ age + sex, data = titanic_clean)

# 提取训练集预测结果并计算指标
train_predictions <- augment(fitted_model, titanic_clean)
train_performance <- metrics(train_predictions, truth = survived, estimate = .pred_class)

方法2:单折重采样复用collect_metrics()

如果想直接复用collect_metrics()的逻辑,可以创建一个仅包含训练集的单折重采样对象,用fit_resamples()拟合后,就能直接调用collect_metrics()获取结果,完全贴合你熟悉的使用习惯:

# 创建仅包含整个训练集的单折重采样
single_fold <- vfold_cv(titanic_clean, v = 1)

# 拟合模型并提取训练集性能指标
resampled_result <- fit_resamples(
  survived ~ age + sex,
  logistic_model,
  resamples = single_fold,
  metrics = metric_set(accuracy, roc_auc)
)
collect_metrics(resampled_result)

tidymodels没有专门直接作用于model_fit对象的collect_metrics()替代函数,但上述两种都是生态内的现成工具,无需自行构建复杂逻辑,且输出格式统一,很适合用来展示训练集评估结果过于乐观的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:35:10