Encodage d'étiquettes sur plusieurs colonnes dans Scikit-Learn
Lorsque vous traitez des ensembles de données contenant plusieurs colonnes de données catégorielles, il devient nécessaire de les encoder étiquettes numériquement à utiliser dans les algorithmes d’apprentissage automatique. Scikit-learn fournit la classe LabelEncoder à cet effet. Cependant, l'appliquer directement à un DataFrame comportant de nombreuses colonnes (par exemple, 50) peut entraîner une erreur due à une forme d'entrée incorrecte.
Pour surmonter ce défi, une manière élégante d'effectuer un encodage d'étiquettes sur toutes les colonnes simultanément. est :
df.apply(LabelEncoder().fit_transform)
Comme alternative, en particulier pour les versions scikit-learn 0.20 et supérieures, pensez à utiliser OneHotEncoder :
OneHotEncoder().fit_transform(df)
OneHotEncoder prend en charge nativement les entrées de chaîne et génère des vecteurs codés à chaud.
Alternativement, si vous avez besoin de contrôler les instances de LabelEncoder pour différentes colonnes ou si vous avez uniquement besoin d'encoder un sous-ensemble de colonnes, vous pouvez utiliser ColumnTransformer :
from sklearn.compose import ColumnTransformer from sklearn.preprocessing import LabelEncoder transformer = ColumnTransformer( transformers=[('labels', LabelEncoder(), ['column1', 'column2'])], ) transformed_data = transformer.fit_transform(df)
En utilisant ColumnTransformer, vous pouvez spécifier les colonnes à encoder et conserver des instances LabelEncoder distinctes, permettant une plus grande flexibilité dans la préparation de vos données.
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!