Utilisation de Pipeline avec ColumnTransformer (scikit-learn / Python)
ColumnTransformer est un outil très puissant de la bibliothèque scikit-learn en Python qui permet de traiter différemment les différentes colonnes d’un dataset dans un pipeline de transformation. Il est souvent utilisé en conjonction avec la classe Pipeline pour simplifier et automatiser le processus de prétraitement des données avant de les utiliser dans un modèle d’apprentissage automatique.
Voici comment utiliser Pipeline avec ColumnTransformer dans scikit-learn:
- Importer les bibliothèques nécessaires:
<pre> import numpy as np import pandas as pd from sklearn.compose import ColumnTransformer from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder </pre>
- Créer un pipeline de transformation en spécifiant les traitements à appliquer à chaque colonne:
<pre> numeric_features = ['age', 'income'] numeric_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler()) ]) categorical_features = ['gender', 'education'] categorical_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='most_frequent')), ('onehot', OneHotEncoder()) ]) preprocessor = ColumnTransformer( transformers=[ ('num', numeric_transformer, numeric_features), ('cat', categorical_transformer, categorical_features) ]) </pre>
- Utiliser le pipeline dans un modèle de machine learning, par exemple une régression logistique:
<pre> from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = Pipeline(steps=[('preprocessor', preprocessor), ('classifier', LogisticRegression())]) clf.fit(X_train, y_train) clf.score(X_test, y_test) </pre>
En utilisant ColumnTransformer avec Pipeline, vous pouvez facilement gérer et automatiser le prétraitement des données dans vos modèles d’apprentissage automatique, en veillant à ce que chaque colonne soit traitée de la manière appropriée avant d’être utilisée dans le processus d’apprentissage.