我正在使用兩個單獨的訓練和測試集建立python中的預測模型。訓練數據包含數字類型的分類變量,例如郵政編碼[91521,23151,12355,...],以及字符串分類變量,例如城市['芝加哥','紐約','洛杉磯' ...]。爲了訓練數據,我首先使用'pd.get_dummies'來獲得這些變量的虛擬變量,然後用變換後的訓練數據擬合模型。在訓練和測試數據中保持相同的虛擬變量
我對測試數據做了相同的轉換,並使用訓練好的模型預測結果。但是,我得到了錯誤'ValueError:模型的特徵數量必須與輸入匹配。模型n_特徵是1487,輸入n_特徵是1345'。原因是測試數據中的虛擬變量較少,因爲它具有較少的「城市」和「郵編」。
我該如何解決這個問題?例如,'OneHotEncoder'將只編碼所有數字類型的分類變量。 'DictVectorizer()'將只編碼所有字符串類型的分類變量。我在網上搜索,看到一些類似的問題,但沒有一個真正解決我的問題。
Handling categorical features using scikit-learn
https://www.quora.com/What-is-the-best-way-to-do-a-binary-one-hot-one-of-K-coding-in-Python