Label encodant plusieurs colonnes DataFrame avec Scikit-Learn
Lorsque vous travaillez avec des étiquettes de chaîne dans un DataFrame pandas, il est souvent nécessaire de les encoder dans entiers pour la compatibilité avec les algorithmes d’apprentissage automatique. LabelEncoder de Scikit-learn est un outil pratique pour cette tâche, mais utiliser plusieurs objets LabelEncoder pour chaque colonne peut être fastidieux.
Pour contourner cela, vous pouvez tirer parti de l'approche suivante :
df.apply(LabelEncoder().fit_transform)
Cela applique un LabelEncoder à chaque colonne du DataFrame, codant efficacement toutes les étiquettes de chaîne dans entiers.
Encodage amélioré avec OneHotEncoder
Dans les versions plus récentes de Scikit-Learn (0.20 et supérieures), la classe OneHotEncoder() est recommandée pour l'entrée de chaîne de codage d'étiquette :
OneHotEncoder().fit_transform(df)
OneHotEncoder fournit un encodage efficace à chaud, ce qui est souvent nécessaire pour les données catégorielles.
Opérations d'inversion et de transformation
Pour inverser la transformation ou transformer les étiquettes codées, vous pouvez utiliser les techniques suivantes :
from collections import defaultdict d = defaultdict(LabelEncoder) # Encoding fit = df.apply(lambda x: d[x.name].fit_transform(x)) # Inverse transform fit.apply(lambda x: d[x.name].inverse_transform(x)) # Transform future data df.apply(lambda x: d[x.name].transform(x))
from sklearn.preprocessing import ColumnTransformer, OneHotEncoder # Select specific columns for encoding encoder = OneHotEncoder() transformer = ColumnTransformer(transformers=[('ohe', encoder, ['col1', 'col2', 'col3'])]) # Transform the DataFrame encoded_df = transformer.fit_transform(df)
from neuraxle.preprocessing import FlattenForEach # Flatten all columns and apply LabelEncoder encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
En fonction de vos besoins spécifiques, vous pouvez choisir la méthode d'étiquetage la plus appropriée encodage de plusieurs colonnes dans Scikit-Learn.
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!