解决xgboost报错 : ValueError: feature_names mismatch

问题原因

已使用训练数据完成xgboost模型的训练,后期应用时,加载完成模型,使用新数据进行预测时报错。
ValueError: feature_names mismatch,具体如下图。
报错
导致这个问题原因可能有多种情况,我这里对我的情况解释一下。

我这里是由于训练数据划分好,使用的 X_train 训练, 后面经验证集 X_test 跑出结果,得到auc都没有问题。
保存好模型。

在后期再应用时,重新加载模型,拿另一批数据进来再跑,比如重新获取的新数据 df_X
就会出现这个报错。

报错原因是新DataFrame中字段的顺序和之前的不一样。

即使新数据中,字段的总数和所有字段名称能对应上,但是字段顺序对应不上,也会出现这个问题。
xgboost中,如果顺序对应不上,那么加载后预测结果时,默认还是使用以前的顺序,就造成了实际字段不匹配。
出现上面的报错。

解决方法

找到以前训练这个模型时使用的 X_train,使用 X_train.columns
使用下面命令重新给新数据排个序,这样就把新的数据字段顺序 和 以前训练时使用的字段顺序保持一致。

df_X = df_X[X_train.columns]

df_X 再拿去预测,就不会出问题了(当然前提是报错是这个原因,可能有其他原因)。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值