报错形式
ValueError: feature_names mismatch:["f1", "f2", "f3", "f4", "f5", "f6", …… "f60123", ]
原因分析
- 上网百度,大多回答都是:
- 训练集和测试集的列名不一致
- 训练集和测试集的列名顺序不一致
如果有以上两种的可以尝试进行修改
- 笔者遇到的是另外一种:
在训练数据集的时候,进行特征转换的时候: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了