CommencezCommencez gratuitement

Encodage des colonnes catégorielles I : LabelEncoder

Maintenant que vous avez vu ce qu'il faut faire pour préparer les données immobilières pour XGBoost, parcourons le processus étape par étape.

D'abord, vous devrez combler les valeurs manquantes — comme vous l'avez constaté, la colonne LotFrontage en contient beaucoup. Ensuite, vous devrez encoder toutes les colonnes catégorielles de l'ensemble de données à l'aide d'un encodage one-hot afin qu'elles soient représentées numériquement. Vous pouvez revoir cette vidéo du cours Supervised Learning with scikit-learn pour un rappel du concept.

Les données comportent cinq colonnes catégorielles : MSZoning, PavedDrive, Neighborhood, BldgType et HouseStyle. Scikit-learn offre la fonction LabelEncoder qui convertit les valeurs de chaque colonne catégorielle en entiers. Vous allez vous exercer à l'utiliser ici.

Cette activité fait partie du cours

Amorçage de gradient avancé avec XGBoost

Voir le cours

Instructions de l’exercice

  • Importez LabelEncoder à partir de sklearn.preprocessing.
  • Remplacez les valeurs manquantes dans la colonne LotFrontage par 0 avec .fillna().
  • Créez un masque booléen pour les colonnes catégorielles. Pour ce faire, vérifiez si df.dtypes est égal à object.
  • Créez un objet LabelEncoder. Procédez comme pour l'instanciation de tout estimateur scikit-learn.
  • Encodez toutes les colonnes catégorielles en entiers avec LabelEncoder(). Pour ce faire, utilisez la méthode .fit_transform() de le dans la fonction lambda fournie.

Exercice interactif pratique

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

# Import LabelEncoder
____

# Fill missing values with 0
df.LotFrontage = ____

# Create a boolean mask for categorical columns
categorical_mask = (____ == ____)

# Get list of categorical column names
categorical_columns = df.columns[categorical_mask].tolist()

# Print the head of the categorical columns
print(df[categorical_columns].head())

# Create LabelEncoder object: le
le = ____

# Apply LabelEncoder to categorical columns
df[categorical_columns] = df[categorical_columns].apply(lambda x: ____(x))

# Print the head of the LabelEncoded categorical columns
print(df[categorical_columns].head())
Modifier et exécuter le code