Kodowanie kolumn kategorycznych II: OneHotEncoder
Masz już kolumny kategoryczne zakodowane numerycznie. Czy możesz teraz przejść do używania potoków i XGBoosta? Jeszcze nie! W kolumnach kategorycznych tego zbioru danych nie ma naturalnego porządku między wartościami. Przykładowo: przy użyciu LabelEncoder dzielnica CollgCr została zakodowana jako 5, dzielnica Veenker jako 24, a Crawfor jako 6. Czy Veenker jest „większy" niż Crawfor i CollgCr? Nie – a pozwolenie modelowi na założenie takiego naturalnego porządku może skutkować słabą jakością predykcji.
Potrzebny jest zatem jeszcze jeden krok: zastosowanie kodowania „jeden z n" (ang. one-hot encoding), które tworzy zmienne binarne, zwane też „dummy variables". Możesz to zrobić za pomocą klasy OneHotEncoder z biblioteki scikit-learn.
To ćwiczenie jest częścią kursu
Extreme Gradient Boosting with XGBoost
Instrukcje do ćwiczenia
- Zaimportuj
OneHotEncoderz modułusklearn.preprocessing. - Utwórz obiekt
OneHotEncodero nazwieohe. Podaj argument kluczowysparse=False. - Używając metody
.fit_transform(), zastosujOneHotEncoderdodfi zapisz wynik jakodf_encoded. Wynik będzie tablicą NumPy. - Wyświetl pierwsze 5 wierszy
df_encoded, a następnie kształtdfidf_encoded, aby porównać różnicę.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import OneHotEncoder
____
# Create OneHotEncoder: ohe
ohe = ____
# Apply OneHotEncoder to categorical columns - output is no longer a dataframe: df_encoded
df_encoded = ____
# Print first 5 rows of the resulting dataset - again, this will no longer be a pandas dataframe
print(df_encoded[:5, :])
# Print the shape of the original DataFrame
print(df.shape)
# Print the shape of the transformed array
print(df_encoded.shape)