Effektiv Datapreprocessering med Pipelines
Med möjligheten att transformera kolumner separat med funktionen make_column_transformer
är nästa steg att bygga pipelines. En pipeline är en behållare som organiserar förbehandlingssteg och tillämpar dem sekventiellt.
En pipeline i Scikit-learn kan skapas antingen med konstruktorn för klassen Pipeline
eller funktionen make_pipeline
från modulen sklearn.pipeline
. Denna kurs fokuserar på make_pipeline
, eftersom den är enklare att använda.
Du behöver bara skicka alla transformers som argument till en funktion. Att skapa pipelines är så enkelt.
När du däremot anropar metoden .fit_transform(X)
på Pipeline
-objektet, tillämpar den .fit_transform(X)
på varje transformer i pipelinen, så om du vill behandla vissa kolumner annorlunda bör du använda en ColumnTransformer
och skicka den till make_pipeline()
.
Bygg en pipeline med samma fil som i föregående kapitel. Pipen ska inkludera enkodrar för kategoriska variabler tillsammans med SimpleImputer
. Eftersom datasettet innehåller både nominella och ordnade variabler, använd en ColumnTransformer
för att bearbeta dem separat.
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))
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Effektiv Datapreprocessering med Pipelines
Svep för att visa menyn
Med möjligheten att transformera kolumner separat med funktionen make_column_transformer
är nästa steg att bygga pipelines. En pipeline är en behållare som organiserar förbehandlingssteg och tillämpar dem sekventiellt.
En pipeline i Scikit-learn kan skapas antingen med konstruktorn för klassen Pipeline
eller funktionen make_pipeline
från modulen sklearn.pipeline
. Denna kurs fokuserar på make_pipeline
, eftersom den är enklare att använda.
Du behöver bara skicka alla transformers som argument till en funktion. Att skapa pipelines är så enkelt.
När du däremot anropar metoden .fit_transform(X)
på Pipeline
-objektet, tillämpar den .fit_transform(X)
på varje transformer i pipelinen, så om du vill behandla vissa kolumner annorlunda bör du använda en ColumnTransformer
och skicka den till make_pipeline()
.
Bygg en pipeline med samma fil som i föregående kapitel. Pipen ska inkludera enkodrar för kategoriska variabler tillsammans med SimpleImputer
. Eftersom datasettet innehåller både nominella och ordnade variabler, använd en ColumnTransformer
för att bearbeta dem separat.
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))
Tack för dina kommentarer!