Buduję model predykcji w python z dwoma oddzielnymi zestawami treningowymi i testowymi. Dane treningowe zawierają zmienną kategoryczną typu liczbowego, np. Kod pocztowy, [91521,23151,12355, ...], a także zmienne kategoryczne ciągów, np. Miasto ["Chicago", "Nowy Jork", "Los Angeles", ...].Zachowaj tę samą zmienną dummy w danych treningowych i testowych
Aby wyedukować dane, najpierw używam "pd.get_dummies", aby pobrać zmienną atrybutu tych zmiennych, a następnie dopasować model do transformowanych danych treningowych.
Wykonuję tę samą transformację danych testowych i przewiduję wynik przy użyciu wyszkolonego modelu. Jednak wystąpił błąd "ValueError: Liczba funkcji modelu musi być zgodna z danymi wejściowymi. Model n_features ma wartość 1487, a parametr wejściowy n_features to 1345 '. Powodem jest to, że w danych testowych jest mniej zmiennych "obojętnych", ponieważ ma mniej "miasta" i "kodu pocztowego".
Jak mogę rozwiązać ten problem? Na przykład "OneHotEncoder" koduje tylko wszystkie zmienne kategoryczne typu liczbowego. "DictVectorizer()" będzie kodował tylko wszystkie zmienne kategoryczne typu string. Przeszukuję online i widzę kilka podobnych pytań, ale żadna z nich naprawdę nie odpowiada na moje pytanie.
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