Automatisering 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.
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")
Integrering av forhåndsbehandling i treningspipen din sikrer konsistente transformasjoner og bidrar til å forhindre datalekkasje både under trening og prediksjon.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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
Automatisering 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.
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")
Integrering av forhåndsbehandling i treningspipen din sikrer konsistente transformasjoner og bidrar til å forhindre datalekkasje både under trening og prediksjon.
Takk for tilbakemeldingene dine!