在用機器學習去訓練模型,預測數據的時候,出現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了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM