如果从文件加载,预训练的 XGBoost 模型不会重现结果

问题描述 投票:0回答:2

我在 Google Colab 中使用 XGBoostClassifier(XGBoost 版本 1.6.0)作为简单的二元分类模型。我将模型保存到文件中以供进一步使用。在同一会话中,从文件加载的模型可以在验证集上很好地重现结果。但是,如果会话结束并且我从头开始连接到 Colab,则同一文件中的同一模型在同一验证集上显示出更糟糕的结果,并且需要再次训练才能重现。 尝试了三种不同的方法来保存和加载模型:

  • 本土
xgb_model.save_model('xgb_native_save.model')
  • 工作库
joblib.dump(xgb_model, 'xgb_joblib.model')
  • 泡菜
with open('xgb_pickle.pkl','wb') as f:
    pickle.dump(xgb_model,f)

所有三种方法的结果相同:验证集上的结果甚至不接近模型在保存到文件之前显示的结果。 Random_state 是固定的。 有什么想法可能是问题出在哪里吗?

python save load xgboost
2个回答
2
投票

我发现基于树的二元分类模型(XGBoost、LightGBM,...)也存在同样的问题

当您重新启动内核并加载保存的模型时,booster 内变量的顺序会发生变化。

这就是我解决它的方法(xgboost):

lst_vars_in_model = model.get_booster().feature_names

model.predict_proba(df[lst_vars_in_model])

0
投票

哇,这个问题应该清楚地记录下来。

© www.soinside.com 2019 - 2024. All rights reserved.