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
相关产品推荐
相关产品推荐

