python - 值错误 : feature_names mismatch: in xgboost in the predict() function

标签 python pandas machine-learning regression xgboost

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

此外,为了构建与训练数据具有相同结构的特征向量,我做了很多低效的处理,例如添加新的空列(如果数据不存在),然后重新排列数据列,以便它与培训结构相匹配。是否有更好、更简洁的方式来格式化输入以使其与训练结构相匹配?

最佳答案

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

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

先加载pickle文件

model = pickle.load(open("saved_model_file", "rb"))

按使用顺序提取所有列

cols_when_model_builds = model.get_booster().feature_names

重新排序 Pandas 数据框

pd_dataframe = pd_dataframe[cols_when_model_builds]

关于python - 值错误 : feature_names mismatch: in xgboost in the predict() function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42338972/

相关文章:

python - 最快的鞋带配方方法

python - Keras 实现中的 LSTM 架构?

python - 从字典中提取键值作为数据框

python - 如何在 Keras 中创建返回多维值的指标?

python - 使用 Python,我如何评估压缩前缀符号形式的表达式?

python - 如何在 Python 中同步日志记录和打印?

python - 使用 pandas read_csv 函数将 'true' 保留为字符串,将 'True' 保留为 bool 值

python - python中的加权移动平均线

python-3.x - 即使没有应用前向传播,也会调整 nn.ModuleList() 的权重

hadoop - Mahout:如何分为均等的训练集