为什么我在 GCP 中部署的 XGBoost 模型返回空预测?

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

我已将 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 google-cloud-platform xgboost google-api-client
1个回答
0
投票

我在尝试将 Python 中保存的 xgboost 模型加载到 C# 中时遇到了类似的问题。当 xgboost > 2.0 时,该模型不会加载,并且直到我将 xgboost 降级到 0.82 后才进行预测。二进制文件的结构肯定发生了一些变化,只有 xgboost 0.82 才能正确保存它。

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