Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Automatisering av Förbehandling med Pipelines | Feature Engineering för Maskininlärning
Datapreprocessering och Feature Engineering

bookAutomatisering av Förbehandling med Pipelines

Automatisera förbehandling och feature engineering med scikit-learn pipelines för att säkerställa konsekventa och reproducerbara resultat inom maskininlärning. Pipelines gör det möjligt att kedja steg som skalning, kodning och feature selection så att varje transformation alltid sker i samma ordning.

För att bygga en pipeline i scikit-learn definieras en lista av steg, där varje steg är en tuple som innehåller ett unikt stegnamn (som en sträng) och ett transformer-objekt (såsom StandardScaler eller SelectKBest). Till exempel:

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

Denna lista skickas sedan till Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen applicerar varje transformer i ordning, där utdata från ett steg blir indata till nästa. Detta tillvägagångssätt sparar inte bara tid utan minskar även risken för dataläckage, vilket gör experimenten mer tillförlitliga och enklare att reproducera.

Använda ColumnTransformer för feature-subset

Med ColumnTransformer kan du applicera olika förbehandlingspipelines på olika delmängder av features i dina data. Till exempel:

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

Detta gör det möjligt att bygga en enhetlig pipeline som hanterar både numeriska och kategoriska datatyper korrekt, håller förbehandlingskoden organiserad och säkerställer att varje transformation appliceras på avsedda kolumner.

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
Notering

Att integrera förbehandling i din träningspipeline säkerställer konsekventa transformationer och hjälper till att förhindra dataläckage under både träning och prediktion.

question mark

Vilken av följande är en viktig fördel med att använda sklearn-pipelines för förbehandling och feature engineering?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you explain how SelectKBest chooses the top features in this pipeline?

What would happen if I changed the value of k in SelectKBest?

How can I add a classifier to this pipeline after feature selection?

Awesome!

Completion rate improved to 8.33

bookAutomatisering av Förbehandling med Pipelines

Svep för att visa menyn

Automatisera förbehandling och feature engineering med scikit-learn pipelines för att säkerställa konsekventa och reproducerbara resultat inom maskininlärning. Pipelines gör det möjligt att kedja steg som skalning, kodning och feature selection så att varje transformation alltid sker i samma ordning.

För att bygga en pipeline i scikit-learn definieras en lista av steg, där varje steg är en tuple som innehåller ett unikt stegnamn (som en sträng) och ett transformer-objekt (såsom StandardScaler eller SelectKBest). Till exempel:

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

Denna lista skickas sedan till Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen applicerar varje transformer i ordning, där utdata från ett steg blir indata till nästa. Detta tillvägagångssätt sparar inte bara tid utan minskar även risken för dataläckage, vilket gör experimenten mer tillförlitliga och enklare att reproducera.

Använda ColumnTransformer för feature-subset

Med ColumnTransformer kan du applicera olika förbehandlingspipelines på olika delmängder av features i dina data. Till exempel:

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

Detta gör det möjligt att bygga en enhetlig pipeline som hanterar både numeriska och kategoriska datatyper korrekt, håller förbehandlingskoden organiserad och säkerställer att varje transformation appliceras på avsedda kolumner.

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
Notering

Att integrera förbehandling i din träningspipeline säkerställer konsekventa transformationer och hjälper till att förhindra dataläckage under både träning och prediktion.

question mark

Vilken av följande är en viktig fördel med att använda sklearn-pipelines för förbehandling och feature engineering?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 3
some-alt