Encodage des colonnes catégorielles II : OneHotEncoder
Très bien : vous avez encodé vos colonnes catégorielles sous forme numérique. Pouvez-vous maintenant passer aux pipelines et à XGBoost ? Pas encore ! Dans les colonnes catégorielles de cet ensemble de données, il n’existe aucun ordre naturel entre les valeurs. Par exemple : avec LabelEncoder, le Neighborhood CollgCr a été encodé en 5, tandis que Veenker a été encodé en 24, et Crawfor en 6. Est-ce que Veenker est « plus grand » que Crawfor et CollgCr ? Non ; laisser le modèle supposer un tel ordre naturel peut dégrader ses performances.
Il faut donc une étape supplémentaire : appliquer un encodage one-hot pour créer des variables binaires, ou « muettes ». Vous pouvez le faire avec le OneHotEncoder de scikit-learn.
Cet exercice fait partie du cours
Extreme Gradient Boosting avec XGBoost
Instructions
- Importez
OneHotEncoderdepuissklearn.preprocessing. - Instanciez un objet
OneHotEncodernomméohe. Spécifiez l’argument nommésparse=False. - À l’aide de sa méthode
.fit_transform(), appliquezOneHotEncoderàdfet enregistrez le résultat dansdf_encoded. La sortie sera un tableau NumPy. - Affichez les 5 premières lignes de
df_encoded, puis la forme dedfainsi que celle dedf_encodedpour comparer la différence.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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)