CommencerCommencer 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 à XGBoost, parcourons le processus étape par étape.

D’abord, vous devrez remplacer les valeurs manquantes : comme vous l’avez constaté, la colonne LotFrontage contient de nombreuses valeurs manquantes. Ensuite, vous devrez encoder toutes les colonnes catégorielles du jeu de données en utilisant un one-hot encoding afin qu’elles soient représentées numériquement. Vous pouvez revoir cette vidéo du cours Supervised Learning with scikit-learn pour vous rafraîchir la mémoire sur le concept.

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

Cet exercice fait partie du cours

Extreme Gradient Boosting avec XGBoost

Afficher le cours

Instructions

  • Importez LabelEncoder depuis sklearn.preprocessing.
  • Remplacez les valeurs manquantes de la colonne LotFrontage par 0 avec .fillna().
  • Créez un masque booléen pour les colonnes catégorielles. Pour cela, vérifiez si df.dtypes est égal à object.
  • Créez un objet LabelEncoder. Procédez comme pour instancier n’importe quel 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 cet exemple de code.

# 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