Comment normaliser les données en Python
Souvent, en statistiques et en apprentissage automatique, nous normalisons les variables de telle sorte que la plage des valeurs soit comprise entre 0 et 1.
La raison la plus courante pour normaliser les variables est lorsque nous effectuons un certain type d’analyse multivariée (c’est-à-dire que nous voulons comprendre la relation entre plusieurs variables prédictives et une variable de réponse) et que nous voulons que chaque variable contribue de manière égale à l’analyse.
Lorsque les variables sont mesurées à différentes échelles, elles ne contribuent souvent pas de la même manière à l’analyse. Par exemple, si les valeurs d’une variable vont de 0 à 100 000 et les valeurs d’une autre variable de 0 à 100, la variable avec la plus grande plage se verra attribuer un poids plus important dans l’analyse.
En normalisant les variables, nous pouvons être sûrs que chaque variable contribue de manière égale à l’analyse.
Pour normaliser les valeurs entre 0 et 1, nous pouvons utiliser la formule suivante :
x norme = (x je – x min ) / (x max – x min )
où:
- x norm : la ième valeur normalisée dans l’ensemble de données
- x i : la ième valeur de l’ensemble de données
- x max : La valeur minimale dans l’ensemble de données
- x min : La valeur maximale dans l’ensemble de données
Les exemples suivants montrent comment normaliser une ou plusieurs variables en Python.
Exemple 1 : normaliser un tableau NumPy
Le code suivant montre comment normaliser toutes les valeurs d’un tableau NumPy :
import numpy as np #create NumPy array data = np.array([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]]) #normalize all values in array data_norm = (data - data.min())/ (data.max() - data.min()) #view normalized values data_norm array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379, 0.43103448, 0.5862069 , 0.74137931, 0.77586207, 0.86206897, 0.89655172, 0.98275862, 1. ]])
Chacune des valeurs du tableau normalisé est désormais comprise entre 0 et 1.
Exemple 2 : normaliser toutes les variables dans Pandas DataFrame
Le code suivant montre comment normaliser toutes les variables dans un DataFrame pandas :
import pandas as pd #create DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #normalize values in every column df_norm = (df-df.min())/ (df.max() - df.min()) #view normalized DataFrame df_norm points assists rebounds 0 0.764706 0.125 0.857143 1 0.000000 0.375 0.428571 2 0.176471 0.375 0.714286 3 0.117647 0.625 0.142857 4 0.411765 1.000 0.142857 5 0.647059 0.625 0.000000 6 0.764706 0.625 0.571429 7 1.000000 0.000 1.000000
Chacune des valeurs de chaque colonne est désormais comprise entre 0 et 1.
Exemple 3 : normaliser des variables spécifiques dans Pandas DataFrame
Le code suivant montre comment normaliser une variable spécifique dans un DataFrame pandas :
import pandas as pd #create DataFrame df = pd.DataFrame({'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) define columns to normalize x = df.iloc[:,0:2] #normalize values in first two columns only df.iloc[:,0:2] = (x-x.min())/ (x.max() - x.min()) #view normalized DataFrame df points assists rebounds 0 0.764706 0.125 11 1 0.000000 0.375 8 2 0.176471 0.375 10 3 0.117647 0.625 6 4 0.411765 1.000 6 5 0.647059 0.625 5 6 0.764706 0.625 9 7 1.000000 0.000 12
Notez que seules les valeurs des deux premières colonnes sont normalisées.
Ressources additionnelles
Les didacticiels suivants fournissent des informations supplémentaires sur la normalisation des données :
Comment normaliser les données entre 0 et 1
Comment normaliser les données entre 0 et 100
Standardisation ou normalisation : quelle est la différence ?