下面是我训练XGBClassifier并保存它的方式:
import pickle
from xgboost import XGBClassifier
# train
model = XGBClassifier()
model.fit(X, y)
# export
pickle.dump(model, open('model.pickle', 'wb'))
这就是我加载模型并做出预测的方式
loaded_model = pickle.load(open('model.pickle', 'rb'))
y_pred = loaded_model.predict(X)
如果模型是从执行训练的同一python进程中加载的,则模型预测为OK,但如果模型是从不同于用于训练的python进程加载的,则模型预测为OK(随机) 。
请注意,如果使用model.save_model
和model.load_model
而不是泡菜,我也会遇到同样的问题。
我所做的简单检查显示模型已正确保存和加载; model._Booster
(通过model._Booster.dump_model(some_file)
获取)和loaded_model._Booster
的转储是相同的。
Python版本:3.7.5
xgboost版本:尝试了0.80和0.90
任何建议都值得赞赏。