Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zaimportuj OneHotEncoder z modułu sklearn.preprocessing.
  • Utwórz obiekt OneHotEncoder o nazwie ohe. Podaj argument kluczowy sparse=False.
  • Używając metody .fit_transform(), zastosuj OneHotEncoder do df i zapisz wynik jako df_encoded. Wynik będzie tablicą NumPy.
  • Wyświetl pierwsze 5 wierszy df_encoded, a następnie kształt df i df_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)
Edytuj i uruchom kod