Effiziente Datenvorverarbeitung mit Pipelines
Mit der Möglichkeit, Spalten separat mit der Funktion make_column_transformer
zu transformieren, besteht der nächste Schritt darin, Pipelines zu erstellen. Eine Pipeline ist ein Container, der Vorverarbeitungsschritte organisiert und diese sequenziell anwendet.
Eine Pipeline in Scikit-learn kann entweder mit dem Konstruktor der Pipeline
-Klasse oder mit der Funktion make_pipeline
aus dem Modul sklearn.pipeline
erstellt werden. In diesem Kurs liegt der Fokus auf make_pipeline
, da diese Methode einfacher anzuwenden ist.
Es genügt, alle Transformer als Argumente an eine Funktion zu übergeben. Das Erstellen von Pipelines ist so einfach.
Wenn jedoch die Methode .fit_transform(X)
am Pipeline
-Objekt aufgerufen wird, wird .fit_transform(X)
auf jeden Transformer innerhalb der Pipeline angewendet. Wenn bestimmte Spalten unterschiedlich behandelt werden sollen, sollte ein ColumnTransformer
verwendet und an make_pipeline()
übergeben werden.
Erstellen Sie eine Pipeline unter Verwendung derselben Datei wie im vorherigen Kapitel. Die Pipeline sollte Encoder für kategoriale Merkmale zusammen mit SimpleImputer
enthalten. Da der Datensatz sowohl nominale als auch ordinale Merkmale umfasst, verwenden Sie einen ColumnTransformer
, um diese separat zu verarbeiten.
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))
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Effiziente Datenvorverarbeitung mit Pipelines
Swipe um das Menü anzuzeigen
Mit der Möglichkeit, Spalten separat mit der Funktion make_column_transformer
zu transformieren, besteht der nächste Schritt darin, Pipelines zu erstellen. Eine Pipeline ist ein Container, der Vorverarbeitungsschritte organisiert und diese sequenziell anwendet.
Eine Pipeline in Scikit-learn kann entweder mit dem Konstruktor der Pipeline
-Klasse oder mit der Funktion make_pipeline
aus dem Modul sklearn.pipeline
erstellt werden. In diesem Kurs liegt der Fokus auf make_pipeline
, da diese Methode einfacher anzuwenden ist.
Es genügt, alle Transformer als Argumente an eine Funktion zu übergeben. Das Erstellen von Pipelines ist so einfach.
Wenn jedoch die Methode .fit_transform(X)
am Pipeline
-Objekt aufgerufen wird, wird .fit_transform(X)
auf jeden Transformer innerhalb der Pipeline angewendet. Wenn bestimmte Spalten unterschiedlich behandelt werden sollen, sollte ein ColumnTransformer
verwendet und an make_pipeline()
übergeben werden.
Erstellen Sie eine Pipeline unter Verwendung derselben Datei wie im vorherigen Kapitel. Die Pipeline sollte Encoder für kategoriale Merkmale zusammen mit SimpleImputer
enthalten. Da der Datensatz sowohl nominale als auch ordinale Merkmale umfasst, verwenden Sie einen ColumnTransformer
, um diese separat zu verarbeiten.
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))
Danke für Ihr Feedback!