Normalizar una lista de números en Python

Fariba Laiq 30 enero 2023
  1. La fórmula para la normalización
  2. Normalice una lista de números usando la función MinMaxScaler en Python sklearn
  3. Normalizar una lista de números manualmente en Python
Normalizar una lista de números en Python

La normalización significa convertir un dato dado a otra escala. Cambiamos la escala de los datos de tal manera que se encuentran entre dos valores. La mayoría de las veces, los datos se reescalan entre 0 y 1. Reescalamos los datos para un propósito diferente. Por ejemplo, los algoritmos de aprendizaje automático funcionan mejor cuando los valores del conjunto de datos son pequeños.

Digamos que tenemos una lista {1,2,3} y luego de la normalización de la escala de 0 y 1, la lista será {0, 0.5, 1}. También podemos normalizar nuestros datos a alguna otra escala. Digamos entre 2 y 6. Entonces, nuevamente, si tenemos la lista {1,2,3} después de la normalización, será {2,4,6}.

La fórmula para la normalización

Entender cómo funciona la normalización. Echaremos un vistazo a su fórmula. Restamos el valor mínimo de cada número y lo dividimos por el range, es decir: max-min. Entonces, en la salida, obtenemos el valor normalizado de ese número específico.

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

Podemos usar dos métodos para normalizar una lista. O podemos usar la función incorporada, que está disponible en el módulo de preprocesamiento del paquete sklearn. O podemos hacer que nuestra lógica funcione con la misma fórmula que se discutió anteriormente.

Normalice una lista de números usando la función MinMaxScaler en Python sklearn

Un método incorporado llamado MinMaxScaler() está disponible en el módulo de preprocesamiento del paquete sklearn. Crearemos un array 1D NumPy y la pasaremos a la función. Debemos tener instalados los paquetes NumPy y sklearn para usar esta función.

Código de ejemplo:

# 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)

Producción :

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]]

Ahora digamos que queremos especificar nuestro rango para la normalización. Para ello especificaremos nuestro range en MinMaxScaler(). Por defecto, si no especificamos el rango, será 0 y 1. Pero podemos definir nuestro rango para escalar. En este ejemplo, especificamos el rango 0 y 3.

Código de ejemplo:

# 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)

Producción :

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]]

Normalizar una lista de números manualmente en Python

También podemos normalizar la lista de números manualmente escribiendo el código completo, que funciona con la misma fórmula que se discutió anteriormente para la normalización.

Código de ejemplo:

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)

Producción :

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]
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

Artículo relacionado - Python List