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
Istruzioni dell'esercizio
- Importa
OneHotEncoderdasklearn.preprocessing. - Istanzia un oggetto
OneHotEncoderchiamatoohe. Specifica l'argomentosparse=False. - Usando il suo metodo
.fit_transform(), applicaOneHotEncoderadfe salva il risultato comedf_encoded. L'output sarà un array NumPy. - Stampa le prime 5 righe di
df_encoded, poi la forma didfe didf_encodedper 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)