Construction de pipelines Scikit-Learn

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Ce laboratoire est un guide étape par étape sur la manière de construire et d'afficher des pipelines dans Scikit-Learn.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Construction d'un pipeline simple avec une étape de prétraitement et un classifieur

Dans cette étape, nous allons construire un pipeline simple avec une étape de prétraitement et un classifieur, et afficher sa représentation visuelle.

Tout d'abord, nous importons les modules nécessaires :

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn import set_config

Ensuite, nous définissons les étapes du pipeline :

steps = [
    ("prétraitement", StandardScaler()),
    ("classifieur", LogisticRegression()),
]

Ensuite, nous créons le pipeline :

pipe = Pipeline(steps)

Enfin, nous affichons la représentation visuelle du pipeline :

set_config(display="diagram")
pipe

Construction d'un pipeline enchaînant plusieurs étapes de prétraitement et un classifieur

Dans cette étape, nous allons construire un pipeline avec plusieurs étapes de prétraitement et un classifieur, et afficher sa représentation visuelle.

Tout d'abord, nous importons les modules nécessaires :

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import LogisticRegression

Ensuite, nous définissons les étapes du pipeline :

steps = [
    ("standard_scaler", StandardScaler()),
    ("polynôme", PolynomialFeatures(degree=3)),
    ("classifieur", LogisticRegression(C=2.0)),
]

Ensuite, nous créons le pipeline :

pipe = Pipeline(steps)

Enfin, nous affichons la représentation visuelle du pipeline :

pipe

Construction d'un pipeline avec une réduction de dimensionnalité et un classifieur

Dans cette étape, nous allons construire un pipeline avec une étape de réduction de dimensionnalité et un classifieur, et afficher sa représentation visuelle.

Tout d'abord, nous importons les modules nécessaires :

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA

Ensuite, nous définissons les étapes du pipeline :

steps = [("réduire_dim", PCA(n_components=4)), ("classifieur", SVC(kernel="linéaire"))]

Ensuite, nous créons le pipeline :

pipe = Pipeline(steps)

Enfin, nous affichons la représentation visuelle du pipeline :

pipe

Construction d'un pipeline complexe enchaînant un ColumnTransformer

Dans cette étape, nous allons construire un pipeline complexe avec un ColumnTransformer et un classifieur, et afficher sa représentation visuelle.

Tout d'abord, nous importons les modules nécessaires :

import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression

Ensuite, nous définissons les étapes de prétraitement pour les caractéristiques numériques et catégorielles :

preprocesseur_numerique = Pipeline(
    steps=[
        ("imputation_moyenne", SimpleImputer(missing_values=np.nan, strategy="mean")),
        ("scalage", StandardScaler()),
    ]
)

preprocesseur_categorique = Pipeline(
    steps=[
        (
            "imputation_constante",
            SimpleImputer(fill_value="manquant", strategy="constant"),
        ),
        ("onehot", OneHotEncoder(handle_unknown="ignore")),
    ]
)

Ensuite, nous créons le ColumnTransformer :

preprocesseur = ColumnTransformer(
    [
        ("catégorique", preprocesseur_categorique, ["état", "genre"]),
        ("numérique", preprocesseur_numerique, ["âge", "poids"]),
    ]
)

Ensuite, nous créons le pipeline :

pipe = make_pipeline(preprocesseur, LogisticRegression(max_iter=500))

Enfin, nous affichons la représentation visuelle du pipeline :

pipe

Construction d'une recherche en grille sur un pipeline avec un classifieur

Dans cette étape, nous allons construire une recherche en grille sur un pipeline avec un classifieur, et afficher sa représentation visuelle.

Tout d'abord, nous importons les modules nécessaires :

import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV

Ensuite, nous définissons les étapes de prétraitement pour les caractéristiques numériques et catégorielles :

preprocesseur_numerique = Pipeline(
    steps=[
        ("imputation_moyenne", SimpleImputer(missing_values=np.nan, strategy="mean")),
        ("scalage", StandardScaler()),
    ]
)

preprocesseur_categorique = Pipeline(
    steps=[
        (
            "imputation_constante",
            SimpleImputer(fill_value="manquant", strategy="constant"),
        ),
        ("onehot", OneHotEncoder(handle_unknown="ignore")),
    ]
)

Ensuite, nous créons le ColumnTransformer :

preprocesseur = ColumnTransformer(
    [
        ("catégorique", preprocesseur_categorique, ["état", "genre"]),
        ("numérique", preprocesseur_numerique, ["âge", "poids"]),
    ]
)

Ensuite, nous créons le pipeline :

pipe = Pipeline(
    steps=[("preprocesseur", preprocesseur), ("classifieur", RandomForestClassifier())]
)

Ensuite, nous définissons la grille de paramètres pour la recherche en grille :

param_grid = {
    "classifieur__n_estimators": [200, 500],
    "classifieur__max_features": ["auto", "sqrt", "log2"],
    "classifieur__max_depth": [4, 5, 6, 7, 8],
    "classifieur__criterion": ["gini", "entropie"],
}

Enfin, nous créons la recherche en grille :

grid_search = GridSearchCV(pipe, param_grid=param_grid, n_jobs=1)

Et affichons la représentation visuelle de la recherche en grille :

grid_search

Sommaire

Ce laboratoire a fourni un guide étape par étape sur la manière de construire et d'afficher des pipelines dans Scikit-Learn. Nous avons abordé des pipelines simples avec une étape de prétraitement et un classifieur, des pipelines enchaînant plusieurs étapes de prétraitement et un classifieur, des pipelines avec une réduction de dimensionnalité et un classifieur, des pipelines complexes enchaînant un ColumnTransformer et un classifieur, et des recherches en grille sur des pipelines avec un classifieur.