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 :
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!