Standardisation

La standardisation est une technique de transformation des données visant à rendre les différentes variables comparables en les ramenant à une échelle commune. Elle est particulièrement utile lorsque les variables ont des unités ou des plages de valeurs très différentes, ce qui pourrait biaiser les résultats de certaines méthodes statistiques ou d’apprentissage automatique.

La standardisation consiste à transformer chaque valeur d’une variable pour qu’elle ait une moyenne égale à 0 et un écart-type égal à 1. Cette transformation, aussi appelée z-score, permet d’exprimer les données en termes d’écart à la moyenne. Elle est indispensable dans les algorithmes basés sur les distances (comme le k-means, la régression logistique ou les SVM) ou les modèles sensibles à la variance.

La formule mathématique de la standardisation est la suivante :

z = (x - μ) / σ

x est une valeur individuelle, μ est la moyenne de la variable, et σ son écart-type.

En Python, la bibliothèque scikit-learn fournit une méthode simple et rapide pour standardiser les données via StandardScaler, tandis que pandas permet également de le faire manuellement.

Dans cette page, vous apprendrez quand et pourquoi utiliser la standardisation, comment l’appliquer correctement à vos données, et quels types de modèles bénéficient particulièrement de ce prétraitement. Des exemples concrets et des visualisations vous aideront à comprendre les effets de cette transformation.

Fonctions :

  • StandardScaler()

    StandardScaler() est une classe de scikit-learn utilisée pour standardiser les données. Elle supprime la moyenne et divise par l'écart type pour que chaque caractéristique ait une moyenne de 0 et un écart type de 1. Cela améliore la performance de nombreux algorithmes d'apprentissage automatique sensibles à l’échelle des données (ex. : SVM, KNN, régression linéaire).

    Attributs :

    Paramètre Type Description Valeur par défaut
    copy bool Si False, évite de copier les données d'entrée si possible. True
    with_mean bool Centre les données avant de les transformer (moyenne = 0). True
    with_std bool Échelle les données pour qu'elles aient un écart type = 1. True

    Exemple de code :

    import pandas as pd
    from sklearn.preprocessing import StandardScaler
    
    # Création d'un DataFrame
    data = {
        'taille': [150, 160, 170, 180, 190],
        'poids': [50, 60, 70, 80, 90]
    }
    
    df = pd.DataFrame(data)
    
    # Initialisation du StandardScaler
    scaler = StandardScaler()
    
    # Application de la standardisation
    df_scaled = scaler.fit_transform(df)
    
    # Conversion en DataFrame pour lisibilité
    df_scaled = pd.DataFrame(df_scaled, columns=['taille', 'poids'])
    
    print(df_scaled)
    Résultat du code

    Explication du code :

    importe pandas et la classe StandardScaler de scikit-learn pour la normalisation.
    
    
    Création du DataFrame
    Le dictionnaire data contient les colonnes 'taille' et 'poids'. df = pd.DataFrame(data) crée un tableau de données avec ces colonnes.
    Initialisation du scaler
    scaler = StandardScaler() prépare un standardiseur qui va centrer et réduire les données.
    Standardisation
    scaler.fit_transform(df) calcule la moyenne et l’écart type pour chaque colonne, puis applique la transformation pour donner une moyenne de 0 et un écart type de 1.
    Conversion en DataFrame
    Les données transformées sont remises dans un DataFrame avec les noms d’origine.
    Affichage
    print(df_scaled) affiche les données normalisées.