Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Automatisering af Forbehandling med Pipelines | Feature Engineering for Maskinlæring
Datapræprocessering og Feature Engineering

bookAutomatisering af Forbehandling med Pipelines

Automatisér forbehandling og feature engineering med scikit-learn pipelines for at sikre konsistente og reproducerbare resultater i maskinlæring. Pipelines gør det muligt at kæde trin som skalering, kodning og feature-udvælgelse sammen, så hver transformation altid udføres i samme rækkefølge.

For at opbygge en pipeline i scikit-learn defineres en liste af trin, hvor hvert trin er et tuple bestående af et unikt trin-navn (som streng) og et transformer-objekt (såsom StandardScaler eller SelectKBest). For eksempel:

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

Denne liste gives derefter til Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen anvender hver transformer i rækkefølge, hvor outputtet fra et trin bruges som input til det næste. Denne tilgang sparer ikke kun tid, men reducerer også risikoen for datalækage, hvilket gør dine eksperimenter mere pålidelige og lettere at reproducere.

Brug af ColumnTransformer til feature-undergrupper

Med ColumnTransformer kan du anvende forskellige forbehandlingspipelines på forskellige undergrupper af features i dine data. For eksempel:

# 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'))
])

Dette gør det muligt at opbygge en samlet pipeline, der håndterer både numeriske og kategoriske datatyper korrekt, hvilket holder din forbehandlingskode organiseret og sikrer, at hver transformation anvendes på de tilsigtede kolonner.

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
Bemærk

Integration af forbehandling i din træningspipeline sikrer konsistente transformationer og hjælper med at forhindre datalækage under både træning og forudsigelse.

question mark

Hvilket af følgende er en vigtig fordel ved at bruge sklearn pipelines til forbehandling og feature engineering?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 8.33

bookAutomatisering af Forbehandling med Pipelines

Stryg for at vise menuen

Automatisér forbehandling og feature engineering med scikit-learn pipelines for at sikre konsistente og reproducerbare resultater i maskinlæring. Pipelines gør det muligt at kæde trin som skalering, kodning og feature-udvælgelse sammen, så hver transformation altid udføres i samme rækkefølge.

For at opbygge en pipeline i scikit-learn defineres en liste af trin, hvor hvert trin er et tuple bestående af et unikt trin-navn (som streng) og et transformer-objekt (såsom StandardScaler eller SelectKBest). For eksempel:

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

Denne liste gives derefter til Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen anvender hver transformer i rækkefølge, hvor outputtet fra et trin bruges som input til det næste. Denne tilgang sparer ikke kun tid, men reducerer også risikoen for datalækage, hvilket gør dine eksperimenter mere pålidelige og lettere at reproducere.

Brug af ColumnTransformer til feature-undergrupper

Med ColumnTransformer kan du anvende forskellige forbehandlingspipelines på forskellige undergrupper af features i dine data. For eksempel:

# 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'))
])

Dette gør det muligt at opbygge en samlet pipeline, der håndterer både numeriske og kategoriske datatyper korrekt, hvilket holder din forbehandlingskode organiseret og sikrer, at hver transformation anvendes på de tilsigtede kolonner.

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
Bemærk

Integration af forbehandling i din træningspipeline sikrer konsistente transformationer og hjælper med at forhindre datalækage under både træning og forudsigelse.

question mark

Hvilket af følgende er en vigtig fordel ved at bruge sklearn pipelines til forbehandling og feature engineering?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3
some-alt