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
. SiTrue
, crée une copie des données avant la transformation. SiFalse
, la transformation peut être effectuée sur place.with_mean
(facultatif) Booléen, par défaut True
. SiTrue
, centre les données en soustrayant la moyenne. Nécessite des données numériques.with_std
(facultatif) Booléen, par défaut True
. SiTrue
, 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)
Explication du code :
import pandas as pd
importe la bibliothèque pandas qui est utilisée pour la manipulation de données sous forme deDataFrame
.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 dictionnairedata
contient deux colonnes :'age'
et'salaire'
, représentant respectivement l'âge et le salaire de plusieurs individus. Ces données sont converties en unDataFrame
avec la méthodepd.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éthodefit_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 leDataFrame
final, qui contient maintenant la colonne'age_standardized'
avec les valeurs standardisées de l'âge.