IniziaInizia gratis

Codifica di colonne categoriche II: OneHotEncoder

Bene: ora le tue colonne categoriche sono codificate numericamente. Puoi passare subito a usare pipeline e XGBoost? Non ancora! Nelle colonne categoriche di questo insieme di dati non esiste un ordinamento naturale tra i valori. Per esempio: usando LabelEncoder, il Neighborhood CollgCr è stato codificato come 5, mentre Veenker come 24 e Crawfor come 6. Veenker è “maggiore” di Crawfor e CollgCr? No — e permettere al modello di assumere un ordinamento naturale può peggiorare le prestazioni.

Di conseguenza, serve un altro passaggio: devi applicare una one-hot encoding per creare variabili binarie, o "dummy". Puoi farlo usando la OneHotEncoder di scikit-learn.

Questo esercizio fa parte del corso

Extreme Gradient Boosting con XGBoost

Visualizza il corso

Istruzioni dell'esercizio

  • Importa OneHotEncoder da sklearn.preprocessing.
  • Istanzia un oggetto OneHotEncoder chiamato ohe. Specifica l'argomento sparse=False.
  • Usando il suo metodo .fit_transform(), applica OneHotEncoder a df e salva il risultato come df_encoded. L'output sarà un array NumPy.
  • Stampa le prime 5 righe di df_encoded, poi la forma di df e di df_encoded per confrontare la differenza.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
Modifica ed esegui il codice