IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Importa LabelEncoder da sklearn.preprocessing.
  • Riempio i valori mancanti nella colonna LotFrontage con 0 usando .fillna().
  • Crea una maschera booleana per le colonne categoriche. Puoi farlo verificando se df.dtypes è uguale a object.
  • 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() di le nella 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())
Modifica ed esegui il codice