Efficiënte Gegevensvoorverwerking met Pipelines
Met de mogelijkheid om kolommen afzonderlijk te transformeren met de functie make_column_transformer
, is de volgende stap het bouwen van pipelines. Een pipeline is een container die preprocessingsstappen organiseert en deze achtereenvolgens toepast.
Een pipeline in Scikit-learn kan worden gemaakt met de constructor van de Pipeline
-klasse of de functie make_pipeline
uit de module sklearn.pipeline
. In deze cursus ligt de focus op make_pipeline
, omdat deze eenvoudiger toe te passen is.
Het enige wat nodig is, is het doorgeven van alle transformers als argumenten aan een functie. Pipelines maken is zo eenvoudig.
Wanneer echter de methode .fit_transform(X)
wordt aangeroepen op het Pipeline
-object, wordt .fit_transform(X)
toegepast op elke transformer binnen de pipeline. Als bepaalde kolommen anders behandeld moeten worden, gebruik dan een ColumnTransformer
en geef deze door aan make_pipeline()
.
Stel een pipeline samen met hetzelfde bestand als in het vorige hoofdstuk. De pipeline dient encoders voor categorische kenmerken te bevatten samen met SimpleImputer
. Aangezien de dataset zowel nominale als ordinale kenmerken bevat, gebruik een ColumnTransformer
om deze apart te verwerken.
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))
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Efficiënte Gegevensvoorverwerking met Pipelines
Veeg om het menu te tonen
Met de mogelijkheid om kolommen afzonderlijk te transformeren met de functie make_column_transformer
, is de volgende stap het bouwen van pipelines. Een pipeline is een container die preprocessingsstappen organiseert en deze achtereenvolgens toepast.
Een pipeline in Scikit-learn kan worden gemaakt met de constructor van de Pipeline
-klasse of de functie make_pipeline
uit de module sklearn.pipeline
. In deze cursus ligt de focus op make_pipeline
, omdat deze eenvoudiger toe te passen is.
Het enige wat nodig is, is het doorgeven van alle transformers als argumenten aan een functie. Pipelines maken is zo eenvoudig.
Wanneer echter de methode .fit_transform(X)
wordt aangeroepen op het Pipeline
-object, wordt .fit_transform(X)
toegepast op elke transformer binnen de pipeline. Als bepaalde kolommen anders behandeld moeten worden, gebruik dan een ColumnTransformer
en geef deze door aan make_pipeline()
.
Stel een pipeline samen met hetzelfde bestand als in het vorige hoofdstuk. De pipeline dient encoders voor categorische kenmerken te bevatten samen met SimpleImputer
. Aangezien de dataset zowel nominale als ordinale kenmerken bevat, gebruik een ColumnTransformer
om deze apart te verwerken.
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))
Bedankt voor je feedback!