admin管理员组文章数量:1650772
问题原因
已使用训练数据完成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
再拿去预测,就不会出问题了(当然前提是报错是这个原因,可能有其他原因)。
本文标签: 报错XgboostValueErrormismatchfeaturenames
版权声明:本文标题:解决xgboost报错 : ValueError: feature_names mismatch 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729534178a1205201.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论