Transformateur de Colonnes
Lors de l'appel à .fit_transform(X) sur un Pipeline, chaque transformateur est appliqué à toutes les colonnes, ce qui n'est pas toujours souhaitable. Certaines colonnes peuvent nécessiter des encodeurs différents — par exemple, OrdinalEncoder pour les variables ordinales et OneHotEncoder pour les variables nominales.
ColumnTransformer résout ce problème en permettant d'assigner différents transformateurs à des colonnes spécifiques à l'aide de make_column_transformer.
make_column_transformer accepte des tuples de (transformer, [columns]).
Par exemple, appliquer OrdinalEncoder à 'education' et OneHotEncoder à 'gender' :
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder contrôle le traitement des colonnes non spécifiées.
Par défaut : 'drop'.
Pour conserver toutes les autres colonnes inchangées, définir remainder='passthrough'.
Par exemple, considérez le fichier exams.csv. Il contient plusieurs colonnes nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course') et une colonne ordinale, 'parental level of education'.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
En utilisant ColumnTransformer, les données nominales peuvent être transformées avec OneHotEncoder et les données ordinales avec OrdinalEncoder en une seule étape.
12345678910111213from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
Le ColumnTransformer est lui-même un transformateur, il fournit donc les méthodes standards .fit(), .fit_transform() et .transform().
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 3.13
Transformateur de Colonnes
Glissez pour afficher le menu
Lors de l'appel à .fit_transform(X) sur un Pipeline, chaque transformateur est appliqué à toutes les colonnes, ce qui n'est pas toujours souhaitable. Certaines colonnes peuvent nécessiter des encodeurs différents — par exemple, OrdinalEncoder pour les variables ordinales et OneHotEncoder pour les variables nominales.
ColumnTransformer résout ce problème en permettant d'assigner différents transformateurs à des colonnes spécifiques à l'aide de make_column_transformer.
make_column_transformer accepte des tuples de (transformer, [columns]).
Par exemple, appliquer OrdinalEncoder à 'education' et OneHotEncoder à 'gender' :
ct = make_column_transformer(
(OrdinalEncoder(), ['education']),
(OneHotEncoder(), ['gender']),
remainder='passthrough'
)
remainder contrôle le traitement des colonnes non spécifiées.
Par défaut : 'drop'.
Pour conserver toutes les autres colonnes inchangées, définir remainder='passthrough'.
Par exemple, considérez le fichier exams.csv. Il contient plusieurs colonnes nominales ('gender', 'race/ethnicity', 'lunch', 'test preparation course') et une colonne ordinale, 'parental level of education'.
12345import pandas as pd df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') print(df.head())
En utilisant ColumnTransformer, les données nominales peuvent être transformées avec OneHotEncoder et les données ordinales avec OrdinalEncoder en une seule étape.
12345678910111213from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder edu_categories = ['high school', 'some high school', 'some college', "associate's degree", "bachelor's degree", "master's degree"] ct = make_column_transformer( (OrdinalEncoder(categories=[edu_categories]), ['parental level of education']), (OneHotEncoder(), ['gender', 'race/ethnicity', 'lunch', 'test preparation course']), remainder='passthrough' ) print(ct.fit_transform(df))
Le ColumnTransformer est lui-même un transformateur, il fournit donc les méthodes standards .fit(), .fit_transform() et .transform().
Merci pour vos commentaires !