Kodowanie kolumn kategorycznych I: LabelEncoder
Wiesz już, co trzeba zrobić, aby przygotować dane dotyczące nieruchomości dla XGBoost – teraz przejdziemy przez ten proces krok po kroku.
Na początku wypełnisz brakujące wartości – jak wcześniej widziano, kolumna LotFrontage zawiera ich wiele. Następnie zakodujemy numerycznie kolumny kategoryczne w zbiorze danych przy użyciu kodowania one-hot. Jeśli chcesz odświeżyć sobie tę koncepcję, możesz obejrzeć ten film z kursu Supervised Learning with scikit-learn.
Dane zawierają pięć kolumn kategorycznych: MSZoning, PavedDrive, Neighborhood, BldgType i HouseStyle. Scikit-learn udostępnia funkcję LabelEncoder, która przekształca wartości w każdej kolumnie kategorycznej na liczby całkowite. W tym ćwiczeniu przećwiczysz jej użycie.
To ćwiczenie jest częścią kursu
Extreme Gradient Boosting with XGBoost
Instrukcje do ćwiczenia
- Zaimportuj
LabelEncoderzsklearn.preprocessing. - Wypełnij brakujące wartości w kolumnie
LotFrontagewartością0, używając metody.fillna(). - Utwórz maskę logiczną dla kolumn kategorycznych – możesz to zrobić, sprawdzając, czy
df.dtypesrówna sięobject. - Utwórz obiekt
LabelEncoderw taki sam sposób, jak tworzysz dowolny estymator scikit-learn. - Zakoduj wszystkie kolumny kategoryczne na liczby całkowite za pomocą
LabelEncoder(). Użyj w tym celu metody.fit_transform()obiektulew dostarczonej funkcji lambda.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import LabelEncoder
____
# Fill missing values with 0
df.LotFrontage = ____
# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)
# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()
# Print the head of the categorical columns
print(df[categorical_columns].head())
# Create LabelEncoder object: le
le = ____
# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))
# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())