Normaliser une liste de nombres en Python

Fariba Laiq 30 janvier 2023
  1. La formule de normalisation
  2. Normaliser une liste de nombres à l’aide de la fonction MinMaxScaler en Python sklearn
  3. Normaliser une liste de nombres manuellement en Python
Normaliser une liste de nombres en Python

La normalisation consiste à convertir une donnée donnée dans une autre échelle. Nous redimensionnons les données de manière à ce qu’elles se situent entre deux valeurs. La plupart du temps, les données sont remises à l’échelle entre 0 et 1. Nous remettons à l’échelle les données dans un but différent. Par exemple, les algorithmes d’apprentissage automatique fonctionnent mieux lorsque les valeurs de l’ensemble de données sont petites.

Disons que nous avons une liste {1,2,3} et après la normalisation de l’échelle de 0 et 1, la liste sera {0, 0.5, 1}. Nous pouvons également normaliser nos données à une autre échelle. Disons entre 2 et 6. Donc, encore une fois, si nous avons la liste {1,2,3} après normalisation, ce sera {2,4,6}.

La formule de normalisation

Comprendre comment fonctionne la normalisation. Nous verrons sa formule. Nous soustrayons la valeur minimale de chaque nombre et la divisons par la gamme c’est-à-dire : max-min. Ainsi, en sortie, nous obtenons la valeur normalisée de ce nombre spécifique.

$$ X_{norm} = {x-x_{min}\over x_{max}-x_{min}} $$

Nous pouvons utiliser deux méthodes pour normaliser une liste. Soit nous pouvons utiliser la fonction intégrée, qui est disponible dans le module de prétraitement du package sklearn. Ou nous pouvons faire notre logique pour cela qui fonctionne sur la même formule que celle décrite ci-dessus.

Normaliser une liste de nombres à l’aide de la fonction MinMaxScaler en Python sklearn

Une méthode intégrée nommée MinMaxScaler() est disponible dans le module preprocessing du package sklearn. Nous allons créer un tableau 1D NumPy et le passer à la fonction. Nous devons avoir les packages NumPy et sklearn installés pour utiliser cette fonction.

Exemple de code :

# python 3.x
import numpy as np
from sklearn import preprocessing

list = np.array([6, 1, 0, 2, 7, 3, 8, 1, 5]).reshape(-1, 1)
print("Original List:", list)
scaler = preprocessing.MinMaxScaler()
normalizedlist = scaler.fit_transform(list)
print("Normalized List:", normalizedlist)

Production :

Original List: [[6]
 [1]
 [0]
 [2]
 [7]
 [3]
 [8]
 [1]
 [5]]
Normalized List: [[0.75 ]
 [0.125]
 [0.   ]
 [0.25 ]
 [0.875]
 [0.375]
 [1.   ]
 [0.125]
 [0.625]]

Supposons maintenant que nous voulions spécifier notre plage de normalisation. Pour cela, nous préciserons notre range dans MinMaxScaler(). Par défaut, si nous ne spécifions pas la plage, ce sera 0 et 1. Mais nous pouvons définir notre plage de mise à l’échelle. Dans cet exemple, nous spécifions la plage 0 et 3.

Exemple de code :

# python 3.x
import numpy as np
from sklearn import preprocessing

list = np.array([6, 1, 0, 2, 7, 3, 8, 1, 5]).reshape(-1, 1)
print("Original List:", list)
scaler = preprocessing.MinMaxScaler(feature_range=(0, 3))
normalizedlist = scaler.fit_transform(list)
print("Normalized List:", normalizedlist)

Production :

Original List: [[6]
 [1]
 [0]
 [2]
 [7]
 [3]
 [8]
 [1]
 [5]]
Normalized List: [[2.25 ]
 [0.375]
 [0.   ]
 [0.75 ]
 [2.625]
 [1.125]
 [3.   ]
 [0.375]
 [1.875]]

Normaliser une liste de nombres manuellement en Python

Nous pouvons également normaliser manuellement la liste des nombres en écrivant le code complet correspondant, qui fonctionne sur la même formule que celle décrite ci-dessus pour la normalisation.

Exemple de code :

list = [6, 1, 0, 2, 7, 3, 8, 1, 5]
print("Original List:", list)
xmin = min(list)
xmax = max(list)
for i, x in enumerate(list):
    list[i] = (x - xmin) / (xmax - xmin)
print("Normalized List:", list)

Production :

Original List: [6, 1, 0, 2, 7, 3, 8, 1, 5]
Normalized List: [0.75, 0.125, 0.0, 0.25, 0.875, 0.375, 1.0, 0.125, 0.625]
Auteur: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

Article connexe - Python List