在用机器学习去训练模型,预测数据的时候,出现ValueError: feature_names mismatch:

报错形式

ValueError: feature_names mismatch:["f1", "f2", "f3", "f4", "f5", "f6", …… "f60123", ]

原因分析

- 上网百度,大多回答都是:

  1. 训练集和测试集的列名不一致
  2. 训练集和测试集的列名顺序不一致

 如果有以上两种的可以尝试进行修改

 

- 笔者遇到的是另外一种:

  在训练数据集的时候,进行特征转换的时候:TfidfVectorizer,在做重新使用其他数据进行测试的时候,忽略了向量维度,因此出现了以上的报错。

 

解决方案:

在进行特征转换的时候,将TfidfVectorizer的模型进行保存,便于下次调用,产生相同维度的向量

# 序列化保存
tfidftransformer_path = './tfidftransformer.pkl'
with open(tfidftransformer_path, 'wb') as file:
        pickle.dump(tfidf_transformer, file)

# 加载保存的模型

tfidftransformer_path = './tfidftransformer.pkl'
tfidftransformer = pickle.load(open(tfidftransformer_path, "rb"))

  

  

在维度相同的向量的时候,就可以输入到分类器中进行predict了

 

猜你喜欢

转载自www.cnblogs.com/harp-yestar/p/xgboost_question.html