CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Importez OneHotEncoder depuis sklearn.preprocessing.
  • Instanciez un objet OneHotEncoder nommé ohe. Spécifiez l’argument nommé sparse=False.
  • À l’aide de sa méthode .fit_transform(), appliquez OneHotEncoder à df et enregistrez le résultat dans df_encoded. La sortie sera un tableau NumPy.
  • Affichez les 5 premières lignes de df_encoded, puis la forme de df ainsi que celle de df_encoded pour 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)
Modifier et exécuter le code