如何将tidymodels拟合完成的模型应用到无标签新数据做预测
Tidymodels 调优后预测无标签新数据的核心操作
你没有遗漏rsample的相关功能,rsample的定位仅负责有标签数据集的拆分用于模型训练、调优、性能评估环节,和无标签新数据的预测流程无关。你遇到的问题核心是对last_fit()的功能边界认知不清,只需要多一步提取或生成最终拟合后的工作流对象即可实现需求。
具体操作逻辑
last_fit()是tidymodels提供的便利封装函数,作用仅为「用最优超参在全量训练集拟合+一次性在测试集输出性能指标」,本身的输出设计没有面向后续新数据预测的场景,你不需要基于它的返回值做后续操作。- 完成超参数调优后,你只需要将最优超参绑定到原始工作流,用全量有标签训练集完成拟合,得到的拟合后工作流对象即可长期复用,支持任意符合特征格式要求的无标签新数据预测。
最简可复用流程示例
# 前置条件:已完成超参调优,tune_res为调优结果对象,wflow为原始未拟合工作流,full_training_data为全量有标签训练集 # 选取最优超参组合 best_params <- select_best(tune_res, metric = "roc_auc") # 绑定最优超参到工作流 final_wflow <- finalize_workflow(wflow, best_params) # 用全量训练集拟合得到最终可复用模型对象 fitted_final_wflow <- fit(final_wflow, data = full_training_data) # 预测无标签新数据,新数据仅需和训练集特征列格式完全一致,无需结果列 pred_result <- predict(fitted_final_wflow, new_data = churn_predict_users) # 本地持久化模型,后续使用直接读取即可复用 saveRDS(fitted_final_wflow, "churn_predict_model.rds")
补充说明
如果你已经运行过last_fit()完成性能验证,可以直接从它的返回结果中提取已经拟合好的工作流对象,不需要重新拟合:
# 从last_fit结果中提取可复用的拟合后工作流 fitted_final_wflow <- extract_workflow(last_fit_result)
内容的提问来源于stack exchange,提问作者Chris Umphlett
相关产品推荐
相关产品推荐

