Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Automatisering van Preprocessing met Pipelines | Feature Engineering voor Machine Learning
Data Preprocessing en Feature Engineering

bookAutomatisering van Preprocessing met Pipelines

Automatiseer preprocessing en feature engineering met scikit-learn pipelines om consistente, reproduceerbare machine learning-resultaten te waarborgen. Pipelines maken het mogelijk om stappen zoals schalen, encoderen en feature selectie te koppelen, zodat elke transformatie altijd in dezelfde volgorde plaatsvindt.

Om een pipeline in scikit-learn te bouwen, definieer je een lijst van stappen, waarbij elke stap een tuple is met een unieke stapnaam (als string) en een transformer-object (zoals StandardScaler of SelectKBest). Bijvoorbeeld:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Vervolgens geef je deze lijst door aan het Pipeline-object:

pipeline = Pipeline(steps)

De pipeline past elke transformer in volgorde toe, waarbij de uitvoer van de ene stap als invoer voor de volgende dient. Deze aanpak bespaart niet alleen tijd, maar vermindert ook het risico op datalekken, waardoor experimenten betrouwbaarder en eenvoudiger te reproduceren zijn.

Gebruik van ColumnTransformer voor Feature Subsets

Met ColumnTransformer kun je verschillende preprocessing pipelines toepassen op verschillende subsets van features binnen je data. Bijvoorbeeld:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Hiermee kun je een enkele, uniforme pipeline bouwen die zowel numerieke als categorische datatypes correct verwerkt, waardoor je preprocessing-code overzichtelijk blijft en elke transformatie op de juiste kolommen wordt toegepast.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Opmerking

Het integreren van preprocessing in je trainingspipeline zorgt voor consistente transformaties en helpt datalekken te voorkomen tijdens zowel training als voorspelling.

question mark

Wat is een belangrijk voordeel van het gebruik van sklearn-pijplijnen voor preprocessing en feature engineering?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 8.33

bookAutomatisering van Preprocessing met Pipelines

Veeg om het menu te tonen

Automatiseer preprocessing en feature engineering met scikit-learn pipelines om consistente, reproduceerbare machine learning-resultaten te waarborgen. Pipelines maken het mogelijk om stappen zoals schalen, encoderen en feature selectie te koppelen, zodat elke transformatie altijd in dezelfde volgorde plaatsvindt.

Om een pipeline in scikit-learn te bouwen, definieer je een lijst van stappen, waarbij elke stap een tuple is met een unieke stapnaam (als string) en een transformer-object (zoals StandardScaler of SelectKBest). Bijvoorbeeld:

steps = [
    ("scaler", StandardScaler()),
    ("feature_selection", SelectKBest(score_func=f_classif, k=2))
]

Vervolgens geef je deze lijst door aan het Pipeline-object:

pipeline = Pipeline(steps)

De pipeline past elke transformer in volgorde toe, waarbij de uitvoer van de ene stap als invoer voor de volgende dient. Deze aanpak bespaart niet alleen tijd, maar vermindert ook het risico op datalekken, waardoor experimenten betrouwbaarder en eenvoudiger te reproduceren zijn.

Gebruik van ColumnTransformer voor Feature Subsets

Met ColumnTransformer kun je verschillende preprocessing pipelines toepassen op verschillende subsets van features binnen je data. Bijvoorbeeld:

# Define column types
numeric_features = ['age', 'fare']
categorical_features = ['embarked', 'sex']

# Preprocessing for numeric features: impute missing values and scale
numeric_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

# Preprocessing for categorical features: impute missing values and encode
categorical_transformer = Pipeline([
    ('imputer', SimpleImputer(strategy='most_frequent')),
    ('encoder', OneHotEncoder(handle_unknown='ignore'))
])

Hiermee kun je een enkele, uniforme pipeline bouwen die zowel numerieke als categorische datatypes correct verwerkt, waardoor je preprocessing-code overzichtelijk blijft en elke transformatie op de juiste kolommen wordt toegepast.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
import numpy as np import pandas as pd import seaborn as sns from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.feature_selection import SelectKBest, f_classif # Load the Titanic dataset from seaborn (no warnings!) df = sns.load_dataset('titanic') # Select features and target features = ['age', 'fare', 'embarked', 'sex'] X = df[features] y = df['survived'] # Target variable # Define column types numeric_features = ['age', 'fare'] categorical_features = ['embarked', 'sex'] # Preprocessing for numeric features: impute missing values and scale numeric_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='mean')), ('scaler', StandardScaler()) ]) # Preprocessing for categorical features: impute missing values and encode categorical_transformer = Pipeline([ ('imputer', SimpleImputer(strategy='most_frequent')), ('encoder', OneHotEncoder(handle_unknown='ignore')) ]) # Combine preprocessing steps preprocessor = ColumnTransformer([ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) # Build the full pipeline with preprocessing and feature selection pipeline = Pipeline([ ('preprocessing', preprocessor), ('feature_selection', SelectKBest(score_func=f_classif, k=3)) ]) # Fit and transform the data X_transformed = pipeline.fit_transform(X, y) print(f"Original shape: {X.shape}") print(f"Reduced from {X.shape[1]} features to {X_transformed.shape[1]} selected features")
copy
Note
Opmerking

Het integreren van preprocessing in je trainingspipeline zorgt voor consistente transformaties en helpt datalekken te voorkomen tijdens zowel training als voorspelling.

question mark

Wat is een belangrijk voordeel van het gebruik van sklearn-pijplijnen voor preprocessing en feature engineering?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 3. Hoofdstuk 3
some-alt