Kódování kategorických sloupců I: LabelEncoder
Teď, když víš, co bude potřeba udělat, aby byla data o bydlení připravená pro XGBoost, pojďme si celý postup projít krok za krokem.
Nejprve bude nutné doplnit chybějící hodnoty – jak jsi viděl/a dříve, sloupec LotFrontage jich má mnoho. Poté bude potřeba zakódovat kategorické sloupce v datasetu pomocí one-hot encodingu, aby byly reprezentovány numericky. Pro osvěžení tohoto konceptu se můžeš podívat na toto video z kurzu Supervised Learning with scikit-learn.
Data obsahují pět kategorických sloupců: MSZoning, PavedDrive, Neighborhood, BldgType a HouseStyle. Scikit-learn nabízí funkci LabelEncoder, která převede hodnoty v každém kategorickém sloupci na celá čísla. Tady si ji procvičíš.
Toto cvičení je součástí kurzu
Extreme Gradient Boosting with XGBoost
Pokyny k cvičení
- Naimportuj
LabelEncoderzsklearn.preprocessing. - Doplň chybějící hodnoty ve sloupci
LotFrontagehodnotou0pomocí.fillna(). - Vytvoř booleovskou masku pro kategorické sloupce – stačí zkontrolovat, zda se
df.dtypesrovnáobject. - Vytvoř objekt
LabelEncoder. Postupuj stejně jako při vytváření jakéhokoli jiného estimátoru ze scikit-learn. - Zakóduj všechny kategorické sloupce na celá čísla pomocí
LabelEncoder(). K tomu použij metodu.fit_transform()objektulev připravené lambda funkci.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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())