Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Trasformatore di Colonne | Pipeline
Introduzione al Machine Learning con Python

bookTrasformatore di Colonne

Quando si richiama .fit_transform(X) su una Pipeline, ogni trasformatore viene applicato a tutte le colonne, il che non è sempre desiderabile. Alcune colonne possono richiedere encoder diversi — ad esempio, OrdinalEncoder per le variabili ordinali e OneHotEncoder per quelle nominali. ColumnTransformer risolve questo problema permettendo di assegnare trasformatori diversi a colonne specifiche utilizzando make_column_transformer.

make_column_transformer accetta tuple del tipo (transformer, [columns]). Ad esempio, applicare OrdinalEncoder a 'education' e OneHotEncoder a 'gender':

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']),
   remainder='passthrough'
)
Note
Nota

remainder controlla cosa succede alle colonne non specificate. Predefinito: 'drop'. Per mantenere tutte le altre colonne invariate, impostare remainder='passthrough'.

Ad esempio, considera il file exams.csv. Contiene diverse colonne nominali ('gender', 'race/ethnicity', 'lunch', 'test preparation course') e una colonna 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

Utilizzando ColumnTransformer, i dati nominali possono essere trasformati con OneHotEncoder e i dati ordinali con OrdinalEncoder in un solo passaggio.

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

Il ColumnTransformer è esso stesso un trasformatore, quindi fornisce i metodi standard .fit(), .fit_transform() e .transform().

question mark

Supponiamo di avere un dataset con le caratteristiche 'education', 'income', 'job'. Cosa succederà alla colonna 'income' dopo aver eseguito il seguente codice? (Nota che l'argomento remainder non è specificato)

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Can you explain what the `remainder='passthrough'` argument does?

How do I know which columns are nominal or ordinal in my own dataset?

Can you show how to use the transformed data in a machine learning model?

Awesome!

Completion rate improved to 3.13

bookTrasformatore di Colonne

Scorri per mostrare il menu

Quando si richiama .fit_transform(X) su una Pipeline, ogni trasformatore viene applicato a tutte le colonne, il che non è sempre desiderabile. Alcune colonne possono richiedere encoder diversi — ad esempio, OrdinalEncoder per le variabili ordinali e OneHotEncoder per quelle nominali. ColumnTransformer risolve questo problema permettendo di assegnare trasformatori diversi a colonne specifiche utilizzando make_column_transformer.

make_column_transformer accetta tuple del tipo (transformer, [columns]). Ad esempio, applicare OrdinalEncoder a 'education' e OneHotEncoder a 'gender':

ct = make_column_transformer(
   (OrdinalEncoder(), ['education']),
   (OneHotEncoder(), ['gender']),
   remainder='passthrough'
)
Note
Nota

remainder controlla cosa succede alle colonne non specificate. Predefinito: 'drop'. Per mantenere tutte le altre colonne invariate, impostare remainder='passthrough'.

Ad esempio, considera il file exams.csv. Contiene diverse colonne nominali ('gender', 'race/ethnicity', 'lunch', 'test preparation course') e una colonna 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

Utilizzando ColumnTransformer, i dati nominali possono essere trasformati con OneHotEncoder e i dati ordinali con OrdinalEncoder in un solo passaggio.

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

Il ColumnTransformer è esso stesso un trasformatore, quindi fornisce i metodi standard .fit(), .fit_transform() e .transform().

question mark

Supponiamo di avere un dataset con le caratteristiche 'education', 'income', 'job'. Cosa succederà alla colonna 'income' dopo aver eseguito il seguente codice? (Nota che l'argomento remainder non è specificato)

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 2
some-alt