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
Instructions de l’exercice
- Importez
OneHotEncoderdepuissklearn.preprocessing. - Instanciez un objet
OneHotEncodernomméohe. Indiquez 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 dedf_encodedpour 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)