Pre-elaborazione Efficiente Dei Dati con Pipeline
Con la possibilità di trasformare le colonne separatamente utilizzando la funzione make_column_transformer
, il passo successivo è costruire delle pipeline. Una pipeline è un contenitore che organizza le fasi di pre-elaborazione e le applica sequenzialmente.
Una pipeline in Scikit-learn può essere creata utilizzando sia il costruttore della classe Pipeline
sia la funzione make_pipeline
dal modulo sklearn.pipeline
. Questo corso si concentrerà su make_pipeline
, in quanto è più semplice da applicare.
È sufficiente passare tutti i trasformatori come argomenti a una funzione. Creare pipeline è così semplice.
Tuttavia, quando si richiama il metodo .fit_transform(X)
sull'oggetto Pipeline
, viene applicato .fit_transform(X)
a ogni trasformatore all'interno della pipeline; quindi, se si desidera trattare alcune colonne in modo diverso, è opportuno utilizzare un ColumnTransformer
e passarlo a make_pipeline()
.
Costruire una pipeline utilizzando lo stesso file del capitolo precedente. La pipeline deve includere encoder per le caratteristiche categoriche insieme a SimpleImputer
. Poiché il dataset contiene sia caratteristiche nominali che ordinali, utilizzare un ColumnTransformer
per elaborarle separatamente.
1234567891011121314151617import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder from sklearn.impute import SimpleImputer from sklearn.pipeline import make_pipeline df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Making a column transformer 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' ) # Making a Pipeline pipe = make_pipeline(ct, SimpleImputer(strategy='most_frequent')) print(pipe.fit_transform(df))
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Can you explain what each step in the pipeline is doing?
What is the difference between OneHotEncoder and OrdinalEncoder?
Why do we use SimpleImputer with the 'most_frequent' strategy here?
Awesome!
Completion rate improved to 3.13
Pre-elaborazione Efficiente Dei Dati con Pipeline
Scorri per mostrare il menu
Con la possibilità di trasformare le colonne separatamente utilizzando la funzione make_column_transformer
, il passo successivo è costruire delle pipeline. Una pipeline è un contenitore che organizza le fasi di pre-elaborazione e le applica sequenzialmente.
Una pipeline in Scikit-learn può essere creata utilizzando sia il costruttore della classe Pipeline
sia la funzione make_pipeline
dal modulo sklearn.pipeline
. Questo corso si concentrerà su make_pipeline
, in quanto è più semplice da applicare.
È sufficiente passare tutti i trasformatori come argomenti a una funzione. Creare pipeline è così semplice.
Tuttavia, quando si richiama il metodo .fit_transform(X)
sull'oggetto Pipeline
, viene applicato .fit_transform(X)
a ogni trasformatore all'interno della pipeline; quindi, se si desidera trattare alcune colonne in modo diverso, è opportuno utilizzare un ColumnTransformer
e passarlo a make_pipeline()
.
Costruire una pipeline utilizzando lo stesso file del capitolo precedente. La pipeline deve includere encoder per le caratteristiche categoriche insieme a SimpleImputer
. Poiché il dataset contiene sia caratteristiche nominali che ordinali, utilizzare un ColumnTransformer
per elaborarle separatamente.
1234567891011121314151617import pandas as pd from sklearn.compose import make_column_transformer from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder from sklearn.impute import SimpleImputer from sklearn.pipeline import make_pipeline df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/exams.csv') # Making a column transformer 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' ) # Making a Pipeline pipe = make_pipeline(ct, SimpleImputer(strategy='most_frequent')) print(pipe.fit_transform(df))
Grazie per i tuoi commenti!