Comment encoder efficacement plusieurs colonnes DataFrame avec Scikit-Learn ?

Barbara Streisand
Libérer: 2024-11-25 10:23:11
original
253 Les gens l'ont consulté

How to Efficiently Encode Multiple DataFrame Columns with Scikit-Learn?

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)
Copier après la connexion

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)
Copier après la connexion

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 :

  1. Maintenir un dictionnaire de LabelEncoders :
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))
Copier après la connexion
  1. Utiliser ColumnTransformer pour colonnes spécifiques :
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)
Copier après la connexion
  1. Utilisez l'étape FlattenForEach de Neuraxle :
from neuraxle.preprocessing import FlattenForEach

# Flatten all columns and apply LabelEncoder
encoded_df = FlattenForEach(LabelEncoder(), then_unflatten=True).fit_transform(df)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal