首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XGBoost预测在AI平台上不起作用:“功能名称不匹配”

XGBoost预测在AI平台上不起作用:“功能名称不匹配”
EN

Stack Overflow用户
提问于 2019-07-30 15:41:42
回答 2查看 428关注 0票数 0

我已经在GCP的AI平台(ex-ML引擎)上部署了一个XGBoost模型来进行预测(它以joblib文件的形式存储在GCS上)。但是,当我试图对一系列特征进行预测时,我得到了一个“特征不匹配”的错误。

AI平台对输入数据有特定的格式要求:

此外,当我在JupyterLab上测试预测时,我的分类器的.predict方法在我给它一个DataFrame时起作用,但如果我试图对DataFrame的数组或单行进行预测则不起作用。

我得到的错误消息(在AI平台和JupyterLab上)是

代码语言:javascript
复制
{
  "error": "Prediction failed: Exception during sklearn prediction:
 feature_names mismatch: [THE FEATURES LIST] ['f0', 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f20', 'f21', 'f22', 'f23', 'f24', 'f25', 'f26', 'f27', 'f28', 'f29', 'f30', 'f31', 'f32', 'f33', 'f34', 'f35', 'f36', 'f37', 'f38', 'f39', 'f40', 'f41', 'f42', 'f43', 'f44', 'f45', 'f46', 'f47', 'f48', 'f49', 'f50', 'f51', 'f52', 'f53', 'f54', 'f55', 'f56']
\nexpected [THE FEATURES LIST BUT NOT IN THE SAME ORDER] in input data
\ntraining data did not have the following fields: f23, f14, f41, f6, f19, f35, f5, f49, f50, f18, f25, f45, f36, f21, f42, f0, f2, f37, f44, f47, f16, f22, f1, f3, f8, f53, f33, f11, f38, f48, f12, f31, f39, f27, f40, f52, f26, f29, f43, f20, f4, f10, f7, f13, f28, f9, f56, f24, f17, f32, f34, f54, f51, f15, f30, f46, f55"
}

也许我给出的输入并不是预期的。但是在AI平台上似乎没有其他的输入选项。我寻找的是一个专门针对Google Cloud的AI平台的解决方案。

EN

回答 2

Stack Overflow用户

发布于 2019-07-31 16:31:30

我通过将版本的框架设置为XGBoost (以前是sklearn)并在存储桶中上传了一个.bst文件而不是.joblib来解决了这个问题

感谢您的帮助@user260826 :)

票数 1
EN

Stack Overflow用户

发布于 2019-10-03 20:51:26

TLDR:在保存到存储桶之前执行以下操作:model.feature_names = None

我也遇到了这个问题。和您一样,我通过将.bst文件上传到存储桶中解决了这个问题。我想要做更多的调查,这是我的发现。

假设模型是通过joblib joblib.dump(xgbm, 'model.joblib')保存的。

然后,加载模型model = joblib.load("model.joblib")并调用model.feature_names,将为您提供特性名称列表,这意味着特性列表存储在model.joblib文件中的某个位置。

然而,对AI平台的请求不包括列名列表(除非您正在执行自定义预测例程,否则无法包括它),因此当谷歌尝试按照model.predict(xgb.DMatrix(np.asarray(instances)))的方式执行某些操作时,它会抛出feature_names不匹配错误。

如果使用pickle保存模型,情况也是如此。

如果模型另存为.bst,则调用model.feature_names将为空,并且一切正常,因为模型和预测实例都没有关于特征列表的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57266635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档