Maison >développement back-end >Tutoriel Python >Comment étiqueter efficacement l'encodage de plusieurs colonnes dans un DataFrame Pandas ?

Comment étiqueter efficacement l'encodage de plusieurs colonnes dans un DataFrame Pandas ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-21 22:52:13998parcourir

How to Efficiently Label Encode Multiple Columns in a Pandas DataFrame?

Encodage d'étiquettes sur plusieurs colonnes dans Scikit-Learn

Lorsque vous traitez plusieurs colonnes de données catégorielles dans un DataFrame, cela peut être fastidieux et inefficace pour créer des objets LabelEncoder individuels pour chaque colonne. Ce problème survient généralement lorsque vous travaillez avec des ensembles de données contenant de nombreuses colonnes de données catégorielles basées sur des chaînes.

Description du problème :

Tentatives d'application d'un seul objet LabelEncoder à un DataFrame entier entraîner une erreur, comme démontré dans l’extrait de code fourni. Le message d'erreur "mauvaise forme d'entrée (6, 3)" indique que LabelEncoder attend un tableau de valeurs 1D, pas un DataFrame avec plusieurs colonnes.

Solution :

Pour surmonter ce problème, il est recommandé d'exploiter la méthode apply() de pandas. Cette solution élégante consiste à appliquer la méthode fit_transform() de LabelEncoder à chaque colonne du fichier. DataFrame. Voici comment procéder :

df.apply(LabelEncoder().fit_transform)

Cette approche parcourt chaque colonne, applique la transformation LabelEncoder et renvoie un nouveau DataFrame avec les valeurs codées.

Considérations supplémentaires :

  • Transformation Inverse :Pour décoder le valeurs encodées dans leurs catégories d'origine, utilisez la méthode inverse_transform() sur le DataFrame encodé.
  • Encodeurs multiples : Si différents paramètres LabelEncoder sont requis pour différentes colonnes, envisagez d'utiliser un dictionnaire pour stocker les encodeurs, comme indiqué dans la réponse étendue.
  • Sélection de colonne : Pour les scénarios où Toutes les colonnes ne nécessitent pas de codage d'étiquette, utilisez un ColumnTransformer, qui permet de transformer la spécification d'un sous-ensemble de colonnes.

Alternative recommandée :

Dans Scikit -Apprenez les versions 0.20 et ultérieures, OneHotEncoder est recommandé comme alternative plus efficace à LabelEncoder pour les données de chaîne. Il prend directement en charge l'encodage à chaud, qui est souvent la représentation préférée des données catégorielles dans les modèles d'apprentissage automatique.

OneHotEncoder().fit_transform(df)

En tirant parti de ces techniques, les praticiens peuvent gérer efficacement l'encodage d'étiquettes pour plusieurs colonnes de catégories basées sur des chaînes. données, facilitant la préparation d'ensembles de données pour l'analyse de l'apprentissage automatique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn