Standardisation des données avec StandardScaler

La standardisation est une étape clé dans le prétraitement des données, notamment en apprentissage automatique. Elle consiste à transformer les variables pour qu’elles aient une moyenne nulle et un écart-type égal à un. Cette transformation permet de rendre les données comparables entre elles, ce qui facilite l’apprentissage des modèles, surtout ceux sensibles à l’échelle des données comme la régression linéaire, les SVM ou les réseaux de neurones.

La classe StandardScaler de la bibliothèque scikit-learn est l’outil principal utilisé pour réaliser cette standardisation. Elle calcule la moyenne et l’écart-type de chaque variable du jeu de données, puis applique une transformation qui recentre et met à l’échelle les données. Ce processus améliore la performance et la convergence des algorithmes d’apprentissage.

Dans cet article, nous verrons comment utiliser StandardScaler pour standardiser vos données facilement, avec des exemples concrets et une explication détaillée du fonctionnement.

Fonctions :

  • StandardScaler()

    Cette fonction permet d'appliquer une transformation (par exemple, une normalisation ou une standardisation) uniquement sur un sous-ensemble de colonnes sélectionnées dans un DataFrame, en préservant les autres colonnes inchangées. C'est utile lorsque vous souhaitez appliquer des transformations mathématiques à des colonnes spécifiques, tout en gardant les autres colonnes (qui pourraient ne pas être numériques) intactes.

    Importation :

    from sklearn.preprocessing import StandardScaler

    Attributs :

    Paramètre Description
    copy (facultatif) Booléen, par défaut True. Si True, crée une copie des données avant la transformation. Si False, la transformation peut être effectuée sur place.
    with_mean (facultatif) Booléen, par défaut True. Si True, centre les données en soustrayant la moyenne. Nécessite des données numériques.
    with_std (facultatif) Booléen, par défaut True. Si True, met à l’échelle les données en divisant par l’écart-type.

    Exemple de code :

    import pandas as pd
    from sklearn.preprocessing import StandardScaler
    
    # Exemple de DataFrame
    data = {'age': [25, 30, 35, 40, 45, 50], 'salaire': [30000, 35000, 40000, 45000, 50000, 55000]}
    df = pd.DataFrame(data)
    
    # Initialisation du StandardScaler
    scaler = StandardScaler()
    
    # Standardisation de la colonne 'age'
    df['age_standardized'] = scaler.fit_transform(df[['age']])
    
    # Affichage des données standardisées
    print(df)
    Résultat du code

    Explication du code :

    import pandas as pd importe la bibliothèque pandas qui est utilisée pour la manipulation de données sous forme de DataFrame. from sklearn.preprocessing import StandardScaler importe la classe StandardScaler de la bibliothèque scikit-learn, qui est utilisée pour standardiser (normaliser) les données, c'est-à-dire les transformer de manière à ce qu'elles aient une moyenne de 0 et un écart-type de 1.

    Création d'un DataFrame
    Le dictionnaire data contient deux colonnes : 'age' et 'salaire', représentant respectivement l'âge et le salaire de plusieurs individus. Ces données sont converties en un DataFrame avec la méthode pd.DataFrame(data).
    Initialisation du StandardScaler
    scaler = StandardScaler() crée un objet StandardScaler, qui sera utilisé pour standardiser les données de la colonne 'age'.
    Standardisation de la colonne 'age'
    df['age_standardized'] = scaler.fit_transform(df[['age']]) applique le processus de standardisation à la colonne 'age'. La méthode fit_transform() calcule la moyenne et l'écart-type de la colonne 'age', puis effectue la transformation, créant une nouvelle colonne 'age_standardized' avec les valeurs standardisées de l'âge.
    Affichage des données standardisées
    print(df) affiche le DataFrame final, qui contient maintenant la colonne 'age_standardized' avec les valeurs standardisées de l'âge.