Automatisering 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.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import 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")
Het integreren van preprocessing in je trainingspipeline zorgt voor consistente transformaties en helpt datalekken te voorkomen tijdens zowel training als voorspelling.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 8.33
Automatisering 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.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import 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")
Het integreren van preprocessing in je trainingspipeline zorgt voor consistente transformaties en helpt datalekken te voorkomen tijdens zowel training als voorspelling.
Bedankt voor je feedback!