報錯形式
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了