我正在寻找加载模型并且遇到问题,因为该模型是使用旧版本的 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_:
如果您正在加载由旧版 XGBoost 生成的序列化模型(如 Python 中的 pickle),请先
Booster.save_model
从该版本调用导出模型,然后将其加载回当前版本。有一个简单的脚本可以帮助这个过程。看:https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
以供参考脚本,以及有关保存模型和序列化之间差异的更多详细信息。