我已将 XGBoost 模型部署到 GCP,并想使用代码测试预测单个值:
from googleapiclient import discovery
ml = discovery.build('ml', 'v1')
name = 'projects/{}/models/{}/versions/{}'.format(gcp_project_id, model_name, model_version)
prediction = ml.projects().predict(
name=name,
body={'instances': [[10110.0, 5162.0, 13833.0, 1102.0, 211.0]]}
).execute()
print(prediction)
这只是没有给我结果:
{'predictions': [[]]}
部署的模型似乎已被使用并且没有出现任何错误。
我之前用 XGBoost 模型做过同样的事情,使用所有运行完美的相同代码,所以我不知道为什么它以前可以工作但现在不行!
我尝试再次创建模型版本,但没有成功。
如果我使用以下方式加载,保存的模型可以正常工作:
bst = xgb.Booster({'nthread':4})
bst.load_model('model.bst')
prediction = bst.predict(xgb.DMatrix(X_test.iloc[0]))
prediction
并给了我一个预测:
array([439.30298], dtype=float32)
所以我保存的模型看起来没有损坏或任何东西。
任何帮助将不胜感激,因为我不知道下一步该尝试什么!
我在尝试将 Python 中保存的 xgboost 模型加载到 C# 中时遇到了类似的问题。当 xgboost > 2.0 时,该模型不会加载,并且直到我将 xgboost 降级到 0.82 后才进行预测。二进制文件的结构肯定发生了一些变化,只有 xgboost 0.82 才能正确保存它。