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 ?

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *