Codifica delle colonne categoriche I: LabelEncoder
Ora che hai visto cosa serve per preparare i dati immobiliari per XGBoost, percorriamo il processo passo dopo passo.
Per prima cosa, devi riempire i valori mancanti: come hai visto, la colonna LotFrontage ha molti valori mancanti. Poi, devi codificare in modo numerico tutte le colonne categoriche del dataset usando la one-hot encoding. Puoi rivedere il concetto in questo video del corso Supervised Learning with scikit-learn.
I dati contengono cinque colonne categoriche: MSZoning, PavedDrive, Neighborhood, BldgType e HouseStyle. Scikit-learn include una funzione LabelEncoder che converte i valori in ciascuna colonna categorica in interi. Qui farai pratica con il suo utilizzo.
Questo esercizio fa parte del corso
Extreme Gradient Boosting con XGBoost
Istruzioni dell'esercizio
- Importa
LabelEncoderdasklearn.preprocessing. - Riempio i valori mancanti nella colonna
LotFrontagecon0usando.fillna(). - Crea una maschera booleana per le colonne categoriche. Puoi farlo verificando se
df.dtypesè uguale aobject. - Crea un oggetto
LabelEncoder. Puoi farlo nello stesso modo in cui istanzi qualsiasi stimatore di scikit-learn. - Codifica tutte le colonne categoriche in interi usando
LabelEncoder(). Per farlo, usa il metodo.fit_transform()dilenella funzione lambda fornita.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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())