R XGBoost - xgb.save或xgb.load数据丢失

时间:2018-02-22 10:42:00

标签: r xgboost

在R中训练XGBoost模型后,我会看到一个名为xgb的模型对象,它是list of 7

当我使用xgb.save保存模型然后使用xgb.load重新加载时,我会看到一个似乎是'较小'的模型对象,它是list of 2

显然我不能分享代码,因为你需要大量的训练数据,所以我真正能够展示的是变量编辑器的图片。

下面是模型对象xgb,它是训练后的原始模型,而模型对象test1是同一模型但保存并重新加载:

Drawing and Creating images

为什么会发生这种情况,我在保存/加载模型时丢失了有价值的信息?

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

也许迟到了,但是我遇到了同样的问题并找到了解决方法。

将xgb模型另存为“ rds”不会丢失任何信息,重新加载的模型xgb_在测试时确实会产生与原始xgb相同的预测值。希望有帮助!

saveRDS(xgb, "model.rds")
xgb_ <- readRDS("model.rds")
all.equal(xgb, xgb_)

答案 1 :(得分:0)

保存/加载后,由于舍入错误,您正在丢失信息。请参阅this问题。我相信这是一个错误。

关于为什么加载的模型较小的列表,请参见here。同样,您正在丢失诸如回调和参数之类的信息。但是这些对于预测不是必不可少的,也不能移植到例如python。