unsigned
bst.save_model('0001.model')
bst.dump_model('dump.raw.txt') # dump model
bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
我的问题是:
bst = xgb.Booster({'nthread':4}) #init model
bst.load_model("model.bin") # load data
&之间有什么区别? save_model
? dump_model
和'0001.model'
之间的区别是什么?'dump.raw.txt','featmap.txt'
的模型名称与要保存的名称model.bin
不同? 0001.model
和model_A
,我想保存这两个模型以备将来使用,model_B
&我应该使用save
功能吗?你能帮忙展示一下清晰的过程吗?答案 0 :(得分:9)
两个函数save_model
和dump_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_model
和save_model
。
如果要存储或归档模型以进行长期存储,请使用save_model(Python)和xgb.save(R)。
This是有关XGBoost最新版本的相关文档。它还说明了dump_model
和save_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方式。