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

如何在mlr3中仅保存ranger模型(不含数据)并解决加载报错

问题解决方法

1. 仅保存模型参数(不包含训练数据)

mlr3的Learner对象默认会关联训练任务数据,导致保存文件体积过大。可以通过两种方式实现仅保存核心模型:

  • 方式一:提取底层ranger原生模型保存
    训练完成后,直接提取learner_ranger$model(这是训练好的ranger原生模型对象)保存,完全不包含mlr3的包装结构和训练数据:
# 确保模型已成功训练
learner_ranger$train(train_task)
# 提取原生ranger模型
ranger_core_model = learner_ranger$model
# 保存纯模型
save(ranger_core_model, file = "ranger_core_model.rda")
  • 方式二:清理Learner中的任务数据后保存
    如果需要保留mlr3的Learner结构(方便后续直接调用predict方法),可以先清空Learner关联的训练任务数据:
learner_ranger$train(train_task)
# 移除训练任务的关联
learner_ranger$state$train_task = NULL
# 保存轻量化的Learner对象
save(learner_ranger, file = "lightweight_learner.rda")

2. 加载模型时的异常解决

load()函数的作用是将保存的对象直接加载到当前环境中,不会返回对象本身。你之前的错误是错误地将load()的返回值(仅为对象名称字符串)赋值给变量,正确操作如下:

# 直接加载,无需赋值
load("model.rda")
# 加载完成后直接使用原变量名
str(learner_ranger)

如果保存的是ranger_core_model,加载后直接调用ranger_core_model变量即可。

3. 保存learner_ranger$model报错的原因

你报错信息中的learner_randomF$model是变量名拼写错误,正确的变量名应为learner_ranger$model。同时需要确保learner_ranger$train(train_task)已成功执行(无报错),只有训练完成后learner_ranger$model才会被赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:05:23