Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Automatisering av Forhåndsbehandling med Pipelines | Funksjonsutvikling for Maskinlæring
Dataprosessering og Feature Engineering

bookAutomatisering av Forhåndsbehandling med Pipelines

Automatiser forhåndsbehandling og feature engineering med scikit-learn pipelines for å sikre konsistente og reproduserbare resultater i maskinlæring. Pipelines lar deg kjede sammen steg som skalering, koding og feature selection slik at hver transformasjon alltid skjer i samme rekkefølge.

For å bygge en pipeline i scikit-learn, definer en liste med steg, der hvert steg er et tuppel som inneholder et unikt stegnavn (som streng) og et transformer-objekt (for eksempel StandardScaler eller SelectKBest). For eksempel:

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

Du sender deretter denne listen til Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen anvender hver transformer i rekkefølge, og sender utdataene fra ett steg som inndata til neste. Denne tilnærmingen sparer ikke bare tid, men reduserer også risikoen for datalekkasje, noe som gjør eksperimentene dine mer pålitelige og enklere å reprodusere.

Bruk av ColumnTransformer for feature-undergrupper

Med ColumnTransformer kan du anvende ulike forhåndsbehandlingspipelines på forskjellige undergrupper av features i datasettet ditt. 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 lar deg bygge en samlet pipeline som håndterer både numeriske og kategoriske datatyper korrekt, holder forhåndsbehandlingskoden organisert og sikrer at hver transformasjon anvendes på de tiltenkte kolonnene.

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
Merk

Integrering av forhåndsbehandling i treningspipen din sikrer konsistente transformasjoner og bidrar til å forhindre datalekkasje både under trening og prediksjon.

question mark

Hva er en sentral fordel med å bruke sklearn-pipelines for forhåndsbehandling og feature engineering?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 8.33

bookAutomatisering av Forhåndsbehandling med Pipelines

Sveip for å vise menyen

Automatiser forhåndsbehandling og feature engineering med scikit-learn pipelines for å sikre konsistente og reproduserbare resultater i maskinlæring. Pipelines lar deg kjede sammen steg som skalering, koding og feature selection slik at hver transformasjon alltid skjer i samme rekkefølge.

For å bygge en pipeline i scikit-learn, definer en liste med steg, der hvert steg er et tuppel som inneholder et unikt stegnavn (som streng) og et transformer-objekt (for eksempel StandardScaler eller SelectKBest). For eksempel:

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

Du sender deretter denne listen til Pipeline-objektet:

pipeline = Pipeline(steps)

Pipelinen anvender hver transformer i rekkefølge, og sender utdataene fra ett steg som inndata til neste. Denne tilnærmingen sparer ikke bare tid, men reduserer også risikoen for datalekkasje, noe som gjør eksperimentene dine mer pålitelige og enklere å reprodusere.

Bruk av ColumnTransformer for feature-undergrupper

Med ColumnTransformer kan du anvende ulike forhåndsbehandlingspipelines på forskjellige undergrupper av features i datasettet ditt. 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 lar deg bygge en samlet pipeline som håndterer både numeriske og kategoriske datatyper korrekt, holder forhåndsbehandlingskoden organisert og sikrer at hver transformasjon anvendes på de tiltenkte kolonnene.

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
Merk

Integrering av forhåndsbehandling i treningspipen din sikrer konsistente transformasjoner og bidrar til å forhindre datalekkasje både under trening og prediksjon.

question mark

Hva er en sentral fordel med å bruke sklearn-pipelines for forhåndsbehandling og feature engineering?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 3
some-alt