首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError: feature_names不匹配:在预测()函数的xgboost中

ValueError: feature_names不匹配:在预测()函数的xgboost中
EN

Stack Overflow用户
提问于 2017-02-20 15:43:25
回答 11查看 42.4K关注 0票数 27

我已经训练了一个XGBoostRegressor模型。当我必须使用这个经过训练的模型对新输入进行预测时,尽管输入特征向量与训练数据具有相同的结构,但predict()函数会抛出feature_names不匹配错误。

此外,为了以与训练数据相同的结构构建特征向量,我正在进行许多低效的处理,例如添加新的空列(如果数据不存在),然后重新排列数据列,使其与训练结构相匹配。有没有一种更好、更清晰的方法来格式化输入,使其与训练结构相匹配?

EN

回答 11

Stack Overflow用户

发布于 2019-06-04 17:02:58

这是在构建模型时列名的顺序与模型评分时列名的顺序不同的情况。

我使用了以下步骤来克服这个错误

首先加载pickle文件

代码语言:javascript
运行
复制
model = pickle.load(open("saved_model_file", "rb"))

按使用顺序导出所有列

代码语言:javascript
运行
复制
cols_when_model_builds = model.get_booster().feature_names

重新排序pandas数据帧

代码语言:javascript
运行
复制
pd_dataframe = pd_dataframe[cols_when_model_builds]
票数 23
EN

Stack Overflow用户

发布于 2018-10-31 17:02:16

在将数据传递给fit/predict之前,请尝试将数据转换为ndarray。例如:如果你的训练数据是train_df,测试数据是test_df。使用以下代码:

代码语言:javascript
运行
复制
train_x = train_df.values
test_x = test_df.values

现在拟合模型:

代码语言:javascript
运行
复制
xgb.fit(train_x,train_y)

最后,预测:

代码语言:javascript
运行
复制
pred = xgb.predict(test_x)

希望这能有所帮助!

票数 16
EN

Stack Overflow用户

发布于 2018-03-21 12:27:05

当我使用pandas DataFrame (非稀疏表示)时,我也遇到了这个问题。

我将训练和测试数据转换为numpy ndarray

代码语言:javascript
运行
复制
          `X_train = X_train.as_matrix()
           X_test = X_test.as_matrix()` 

这就是我如何摆脱那个错误的!

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

https://stackoverflow.com/questions/42338972

复制
相关文章

相似问题

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