Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Automatisation du Prétraitement avec des Pipelines | Ingénierie des Caractéristiques pour l'Apprentissage Automatique
Prétraitement des Données et Ingénierie des Variables

bookAutomatisation du Prétraitement avec des Pipelines

Automatiser la prétraitement et l’ingénierie des caractéristiques avec les pipelines scikit-learn afin de garantir des résultats de machine learning cohérents et reproductibles. Les pipelines permettent de chaîner des étapes telles que la normalisation, l’encodage et la sélection de caractéristiques, assurant ainsi que chaque transformation s’effectue toujours dans le même ordre.

Pour construire un pipeline dans scikit-learn, définir une liste d’étapes, où chaque étape est un tuple contenant un nom d’étape unique (sous forme de chaîne de caractères) et un objet transformateur (tel que StandardScaler ou SelectKBest). Par exemple :

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

Cette liste est ensuite transmise à l’objet Pipeline :

pipeline = Pipeline(steps)

Le pipeline applique chaque transformateur dans l’ordre, transmettant la sortie d’une étape comme entrée à la suivante. Cette approche permet non seulement de gagner du temps, mais aussi de réduire le risque de fuite de données, rendant les expérimentations plus fiables et plus faciles à reproduire.

Utilisation de ColumnTransformer pour des sous-ensembles de caractéristiques

Avec ColumnTransformer, il est possible d’appliquer différents pipelines de prétraitement à différents sous-ensembles de caractéristiques dans les données. Par exemple :

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

Cela permet de construire un pipeline unifié qui gère correctement à la fois les types de données numériques et catégorielles, maintenant le code de prétraitement organisé et garantissant que chaque transformation est appliquée aux colonnes prévues.

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
Remarque

L’intégration du prétraitement dans le pipeline d’entraînement garantit des transformations cohérentes et aide à prévenir la fuite de données lors de l’entraînement comme de la prédiction.

question mark

Lequel des éléments suivants constitue un avantage clé de l'utilisation des pipelines sklearn pour le prétraitement et l'ingénierie des caractéristiques ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 8.33

bookAutomatisation du Prétraitement avec des Pipelines

Glissez pour afficher le menu

Automatiser la prétraitement et l’ingénierie des caractéristiques avec les pipelines scikit-learn afin de garantir des résultats de machine learning cohérents et reproductibles. Les pipelines permettent de chaîner des étapes telles que la normalisation, l’encodage et la sélection de caractéristiques, assurant ainsi que chaque transformation s’effectue toujours dans le même ordre.

Pour construire un pipeline dans scikit-learn, définir une liste d’étapes, où chaque étape est un tuple contenant un nom d’étape unique (sous forme de chaîne de caractères) et un objet transformateur (tel que StandardScaler ou SelectKBest). Par exemple :

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

Cette liste est ensuite transmise à l’objet Pipeline :

pipeline = Pipeline(steps)

Le pipeline applique chaque transformateur dans l’ordre, transmettant la sortie d’une étape comme entrée à la suivante. Cette approche permet non seulement de gagner du temps, mais aussi de réduire le risque de fuite de données, rendant les expérimentations plus fiables et plus faciles à reproduire.

Utilisation de ColumnTransformer pour des sous-ensembles de caractéristiques

Avec ColumnTransformer, il est possible d’appliquer différents pipelines de prétraitement à différents sous-ensembles de caractéristiques dans les données. Par exemple :

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

Cela permet de construire un pipeline unifié qui gère correctement à la fois les types de données numériques et catégorielles, maintenant le code de prétraitement organisé et garantissant que chaque transformation est appliquée aux colonnes prévues.

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
Remarque

L’intégration du prétraitement dans le pipeline d’entraînement garantit des transformations cohérentes et aide à prévenir la fuite de données lors de l’entraînement comme de la prédiction.

question mark

Lequel des éléments suivants constitue un avantage clé de l'utilisation des pipelines sklearn pour le prétraitement et l'ingénierie des caractéristiques ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 3
some-alt