我希望加载模型,但由于使用旧版XGBoost制作的模型而遇到麻烦。我已经访问了他们的网站并进行了查找,但是它没有就哪种语法正确地解决此问题并正确加载模型提供了明确的指导。我也没有意识到用joblib加载时甚至还需要XGBoost
下面是代码:
def init():
global model
model_path = 'C:\\Users\\ow\\Documents\\Test_Classification_Model\\3rd\\model_AutoMLe8aaac5a731.pkl'
model = joblib.load(model_path)
init()
这是错误:
引发XGBoostError(py_str(_LIB.XGBGetLastError())) xgboost.core.XGBoostError:[15:33:27] C:\ Users \ Administrator \ workspace \ xgboost-win64_release_1.0.0 \ src \ learner.cc:682: 检查失败:标头== serialisation_header _:
如果要加载序列化模型(如Python中的pickle) 由较旧的XGBoost生成,请通过调用导出模型 首先从该版本的
Booster.save_model
,然后将其加载回 当前版本。有一个简单的脚本可以帮助完成该过程。 参见:https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
用于参考脚本,以及有关差异的更多详细信息 在保存模型和序列化之间。
按照他们的建议去做。
使用Anaconda或您使用的任何设备创建新环境。加载模型并将其序列化为JSON文件。这样,您可以确保它不是二进制文件(因此您可以使用普通的文本编辑器查看它),并且XGBoost例程可以获取所需的任何字段。您可能只是对模型进行了腌制,这意味着您将Python对象保存到了二进制文件中。当您切换机器或版本时,这通常会导致问题,因此最终不建议这样做。
因此,一旦您安装了正确的XGBoost版本,就可以使用以下脚本:https://github.com/dmlc/xgboost/blob/master/doc/python/convert_090to100.py