Standardisation et normalisation avec Pipeline

Utiliser un Pipeline en machine learning permet de chaîner plusieurs étapes de traitement des données, telles que la normalisation ou la standardisation, tout en assurant la bonne gestion des transformations. Grâce à un Pipeline, vous pouvez appliquer des transformations comme StandardScaler ou MinMaxScaler de manière cohérente et ordonnée. Cela garantit que les mêmes transformations sont appliquées de manière uniforme à la fois lors de l’entraînement et lors de la prédiction, tout en simplifiant le processus et en réduisant le risque d’erreurs dans les différentes étapes du flux de travail.

Fonctions :

  • Pipeline()

    Pipeline permet de chaîner plusieurs étapes de transformation, telles que la normalisation ou la standardisation des données, et d'automatiser le prétraitement avant d'appliquer un modèle de machine learning. Cela garantit que chaque étape est appliquée dans le bon ordre, rendant le flux de travail plus lisible et moins sujet aux erreurs.

    Importation :

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import load_iris

    Attributs :

    Paramètre Type Description Valeur par défaut
    steps list of tuples Liste des étapes à effectuer, sous forme de tuples (nom, transformateur). Chaque transformateur peut être un modèle ou un préprocesseur. None
    scaler transformer object L'instance du transformateur utilisé pour standardiser ou normaliser les données (ex. StandardScaler ou MinMaxScaler). None
    data numpy.ndarray, pandas.DataFrame L'ensemble de données d'entrée qui sera transformé. Cela peut être un tableau de données sous forme de DataFrame ou numpy.ndarray. None

    Exemple de code :

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.datasets import load_iris
    
    # Charger l'exemple de jeu de données Iris
    data = load_iris()
    X = data.data  # Données d'entrée (features)
    y = data.target  # Labels (cibles)
    
    # Créer un pipeline qui applique la standardisation avec StandardScaler
    pipeline = Pipeline([
        ('scaler', StandardScaler())  # Étape de transformation : standardisation des données
    ])
    
    # Appliquer la standardisation sur les données
    X_scaled = pipeline.fit_transform(X)
    
    # Affichage des premières lignes des données standardisées
    print(X_scaled[:5])  # Affiche les 5 premières lignes des données standardisées

    Explication du code :

    1. Chargement des données : Nous chargeons l'ensemble de données Iris à l'aide de load_iris() depuis sklearn.datasets. Ce jeu de données contient 150 échantillons de fleurs avec 4 caractéristiques.
    2. Création du Pipeline : Le pipeline est créé avec une étape de prétraitement, ici le StandardScaler qui standardise les données en les ajustant à une moyenne de 0 et un écart-type de 1.
    3. Application de la transformation : Le pipeline est appliqué aux données X avec fit_transform(), qui effectue la transformation (standardisation) sur les données d'entrée.
    4. Affichage des résultats : Les 5 premières lignes des données standardisées sont affichées pour vérifier la transformation.

    Explication de la fonction :

    • La fonction Pipeline prend une liste de transformations à effectuer, et chaque transformation est désignée par un nom. Ici, nous appliquons une seule transformation avec StandardScaler(), mais plusieurs transformations peuvent être ajoutées.
    • L'avantage de l'utilisation de Pipeline est de garantir que toutes les étapes sont exécutées dans le bon ordre et de simplifier l'intégration avec des modèles de machine learning.

    Conseils d'utilisation :

    • Pipeline avec plusieurs transformations : Vous pouvez ajouter autant d'étapes que nécessaire dans un pipeline, y compris des étapes de prétraitement comme l'imputation des données manquantes ou l'encodage des variables catégorielles.
    • Facilité d'intégration avec un modèle : Une fois le pipeline défini, il peut être directement utilisé avec un modèle de machine learning, ce qui garantit une application cohérente des transformations à la fois sur les données d'entraînement et de test.