Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Transformateur de Colonnes | Pipelines
Introduction à l'Apprentissage Automatique avec Python

bookTransformateur 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'
)
Note
Remarque

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'.

12345
import 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())
copy

En utilisant ColumnTransformer, les données nominales peuvent être transformées avec OneHotEncoder et les données ordinales avec OrdinalEncoder en une seule étape.

12345678910111213
from 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))
copy

Le ColumnTransformer est lui-même un transformateur, il fournit donc les méthodes standards .fit(), .fit_transform() et .transform().

question mark

Supposons que vous disposez d'un jeu de données avec les caractéristiques 'education', 'income', 'job'. Que va-t-il se passer avec la colonne 'income' après l'exécution du code suivant ? (Remarquez que l'argument remainder n'est pas spécifié)

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

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

bookTransformateur 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'
)
Note
Remarque

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'.

12345
import 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())
copy

En utilisant ColumnTransformer, les données nominales peuvent être transformées avec OneHotEncoder et les données ordinales avec OrdinalEncoder en une seule étape.

12345678910111213
from 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))
copy

Le ColumnTransformer est lui-même un transformateur, il fournit donc les méthodes standards .fit(), .fit_transform() et .transform().

question mark

Supposons que vous disposez d'un jeu de données avec les caractéristiques 'education', 'income', 'job'. Que va-t-il se passer avec la colonne 'income' après l'exécution du code suivant ? (Remarquez que l'argument remainder n'est pas spécifié)

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 2
some-alt