如何保存&加载xgboost模型?

时间:2017-04-29 03:05:03

标签: python machine-learning save xgboost

XGBoost guide

的链接上
  1. 可以保存模型。 unsigned
  2. 模型及其特征图也可以转储到文本文件中 bst.save_model('0001.model')
  3. 可以按如下方式加载已保存的模型: bst.dump_model('dump.raw.txt') # dump model bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
  4. 我的问题是:

    1. bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data &之间有什么区别? save_model
    2. 保存dump_model'0001.model'之间的区别是什么?
    3. 为什么加载'dump.raw.txt','featmap.txt'的模型名称与要保存的名称model.bin不同?
    4. 假设我训练了两个模型0001.modelmodel_A,我想保存这两个模型以备将来使用,model_B&我应该使用save功能吗?你能帮忙展示一下清晰的过程吗?

5 个答案:

答案 0 :(得分:9)

两个函数save_modeldump_model都保存模型,区别在于dump_model中您可以保存要素名称并以文本格式保存树。

load_model适用于save_model的模型。 dump_model中的模型可以用于xgbfi

在加载模型期间,您需要指定模型的保存路径。在示例中bst.load_model("model.bin")模型是从文件model.bin加载的 - 它只是带有模型的文件名。祝你好运!

答案 1 :(得分:5)

我在这里找到了出路,因为我正在寻找一种保存和加载我的xgboost模型的方法。这是我解决问题的方法:

import pickle
file_name = "xgb_reg.pkl"

# save
pickle.dump(xgb_model, open(file_name, "wb"))

# load
xgb_model_loaded = pickle.load(open(file_name, "rb"))

# test
ind = 1
test = X_val[ind]
xgb_model_loaded.predict(test)[0] == xgb_model.predict(test)[0]

Out[1]: True

答案 2 :(得分:5)

请勿使用pickle或joblib,因为这可能会导致对xgboost版本的依赖。保存和还原模型的规范方法是通过load_modelsave_model

如果要存储或归档模型以进行长期存储,请使用save_model(Python)和xgb.save(R)。

This是有关XGBoost最新版本的相关文档。它还说明了dump_modelsave_model之间的区别。

请注意,使用bst.save_model时,可以通过将json指定为扩展名来将模型序列化/反序列化为json。如果保存和恢复模型的速度对您而言并不重要,那么这将非常方便,因为它是一个简单的文本文件,因此您可以对模型进行适当的版本控制。

答案 3 :(得分:4)

保存和加载xgboost模型的一种简单方法是使用joblib库。

import joblib
#save model
joblib.dump(xgb, filename) 

#load saved model
xgb = joblib.load(filename)

答案 4 :(得分:0)

如果您使用的是sklearn api,则可以使用以下内容:

build.gradle.kts

如果使用上述的booster方法进行加载,则会在python API中获得xgboost增强器,而不是sklearn API中的sklearn增强器。

是的,如果您使用的是sklearn api,这似乎是加载已保存的xgboost模型数据的最Python方式。