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

在mlr3中如何保存训练好的模型供其他项目调用?

问题原因

你之前仅保存learner$model的方式只能得到rpart原生的模型对象,不包含mlr3 Learner类封装的任务元信息(比如特征规则、标签分类水平)和predict_newdata()方法,因此无法直接用于mlr3的预测流程,也无法实现跨项目免重训调用。

正确操作方法

直接保存完整的训练后Learner对象即可,不需要单独提取底层模型:

模型保存代码

library("mlr3")

# 原有训练逻辑
task = tsk("iris")
learner = lrn("classif.rpart")
learner$train(task, row_ids = 1:120)

# 直接序列化保存整个训练后的learner对象
save(learner, file = "mlr3_learner_rpart.RData")

跨项目加载调用代码

在新的R会话/其他项目中直接加载该对象即可调用预测接口,无需重训,也不需要附带原始训练数据:

library("mlr3")
# 加载保存的learner对象
load("mlr3_learner_rpart.RData")

# 传入新数据集直接预测,仅需保证新数据集特征的列名、类型和训练时一致
new_data = iris[121:150, ] # 此处用iris子集模拟新的业务数据
predictions = learner$predict_newdata(new_data)
print(predictions)

注意事项

  • 该方法同样适用于封装了预处理逻辑的GraphLearner(mlr3pipelines组件),所有预处理规则、训练参数都会被一起序列化保存,加载后直接可用。
  • 如果你需要给非mlr3的接口提供原生模型,可以单独保存learner$model,但这种场景下无法使用predict_newdata()方法,只能调用对应模型的原生预测接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:54:03