CommencezCommencez gratuitement

Encodage des colonnes catégorielles II : OneHotEncoder

D'accord — vos colonnes catégorielles sont maintenant encodées numériquement. Pouvez-vous passer aux pipelines et à XGBoost? Pas tout de suite! 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 — et laisser le modèle supposer un tel ordre naturel peut nuire au rendement.

Il faut donc une étape supplémentaire : appliquer un encodage one-hot pour créer des variables binaires, ou « factices ». Vous pouvez le faire avec le OneHotEncoder de scikit-learn.

Cette activité fait partie du cours

Amorçage de gradient avancé avec XGBoost

Voir le cours

Instructions de l’exercice

  • Importez OneHotEncoder depuis sklearn.preprocessing.
  • Instanciez un objet OneHotEncoder nommé ohe. Indiquez 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 de df_encoded pour comparer la différence.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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