R tidymodels调用fit_resamples()报错:首个参数需为模型或工作流
报错原因
- 你使用的
tune 0.1.5版本中,fit_resamples()函数的第一个位置参数要求必须是模型规范对象或workflow工作流对象,不支持直接传入公式作为第一个位置参数。 - 你之前调用
fit()函数时公式可正常运行,是因为parsnip包的fit()函数参数顺序为fit(模型, 公式, 数据),你用管道将knn_spec传入了fit()的第一个参数,公式作为第二个参数匹配,符合函数要求。而你调用fit_resamples()时直接将公式放在第一个位置,不符合该函数的参数设计。
解决方案
提供两种可选修复方案:
方案1:使用workflow整合流程(推荐,符合tidymodels规范)
将公式/配方与模型绑定为workflow对象,再传入fit_resamples():
# 构建工作流绑定模型和预测公式 knn_wf <- workflow() %>% add_formula(children ~ .) %>% add_model(knn_spec) # 重采样拟合,第一个参数传入工作流 knn_res <- fit_resamples( knn_wf, resamples = validation_splits, control = control_resamples(save_pred = TRUE) )
方案2:显式指定参数名,调整参数顺序
不使用workflow的情况下,将模型放在第一个位置,显式声明formula参数:
knn_res <- fit_resamples( object = knn_spec, formula = children ~ ., resamples = validation_splits, control = control_resamples(save_pred = TRUE) )
两种方案都可以解决当前报错,方案1更便于后续扩展调参、模型对比等操作,更推荐使用。
内容的提问来源于stack exchange,提问作者C.Robin
相关产品推荐
相关产品推荐

