Normalisation des données avec MinMaxScaler
MinMaxScaler() est une classe de la bibliothèque scikit-learn utilisée pour effectuer une normalisation min-max des données numériques. Cette transformation met à l’échelle chaque caractéristique (chaque colonne) pour que ses valeurs soient comprises dans un intervalle défini, par défaut entre 0 et 1.
La formule appliquée est la suivante pour chaque valeur de la colonne :
où et sont respectivement la valeur minimale et maximale de la colonne.
Objectif :
-
Uniformiser l’échelle des variables, en réduisant l’impact des différences de grandeur.
-
Préparer les données pour des algorithmes sensibles à l’échelle, notamment ceux utilisant des mesures de distances (ex. KNN, réseaux de neurones, SVM).
Principales caractéristiques :
-
Par défaut, met à l’échelle les données dans l’intervalle , mais cet intervalle peut être personnalisé avec les paramètres
feature_range
. -
La transformation est calculée à partir des données d’entraînement (méthode
fit
) et appliquée sur de nouvelles données (méthodetransform
). -
Sensible aux valeurs extrêmes (outliers) puisque l’échelle est déterminée par les valeurs minimales et maximales.
Fonctions :
-
MinMaxScaler()
MinMaxScaler() est une classe de scikit-learn qui normalise les données en les mettant à l’échelle entre une valeur minimale et maximale spécifiée (par défaut entre 0 et 1). Elle transforme chaque valeur selon la formule ( 𝑥 − 𝑥 min ) / ( 𝑥 max − 𝑥 min ) (x−x min )/(x max −x min ), ce qui permet d’uniformiser les variables pour améliorer la performance de certains algorithmes sensibles à l’échelle, comme les réseaux de neurones ou les méthodes basées sur la distance.
Importation :
from sklearn.preprocessing import MinMaxScaler
Attributs :
Paramètre Description feature_range
Tuple (min, max) définissant l'intervalle dans lequel les données seront mises à l'échelle. Par défaut, (0, 1)
.copy
(facultatif) Booléen. Si True
(par défaut), crée une copie des données avant transformation. SiFalse
, la transformation est faite sur place.clip
(facultatif) Booléen. Si True
, les valeurs transformées seront limitées à l'intervalle spécifié parfeature_range
. Par défaut,False
.Exemple de code :
from sklearn.preprocessing import MinMaxScaler import numpy as np # Exemple de données : 2 caractéristiques, 5 échantillons data = np.array([[10, 200], [15, 220], [20, 240], [25, 260], [30, 280]]) # Création du scaler scaler = MinMaxScaler() # Calcul des min et max, et transformation des données data_scaled = scaler.fit_transform(data) print("Données originales :") print(data) print("\nDonnées mises à l'échelle entre 0 et 1 :") print(data_scaled)
Explication du code :
-
Importation de la bibliothèque : La ligne
from sklearn.preprocessing import MinMaxScaler
importe la classeMinMaxScaler
depuis le modulesklearn.preprocessing
. Cette classe est utilisée pour mettre à l'échelle les données numériques entre une plage donnée. -
Définition des données : Le tableau
data
contient un ensemble d'échantillons à une seule caractéristique. Ici, c'est une liste de listes avec des valeurs numériques que l'on souhaite normaliser. -
Initialisation du scaler : La création d'un objet
scaler = MinMaxScaler(feature_range=(0, 1))
initialise un scaler qui transformera toutes les valeurs pour qu'elles soient comprises entre 0 et 1. Le paramètrefeature_range
définit cette plage cible. -
Apprentissage et transformation : La méthode
fit_transform()
effectue deux opérations :- fit : calcule les valeurs minimum et maximum de la donnée d'origine.
- transform : applique la transformation pour que les valeurs soient mises à l’échelle entre 0 et 1 selon la formule :
x_scaled = (x - min) / (max - min)
-
Affichage du résultat : La fonction
print(data_scaled)
affiche la version transformée des données. Chaque valeur initiale est convertie proportionnellement dans la plage [0, 1].
-
Importation de la bibliothèque : La ligne