¿Cómo normalizar una array NumPy para que los valores oscilen exactamente entre 0 y 1?

En este artículo, cubriremos cómo normalizar una array NumPy para que los valores oscilen exactamente entre 0 y 1.

La normalización se realiza en los datos para transformar los datos para que aparezcan en la misma escala en todos los registros. Después de la normalización, el valor mínimo en los datos se normalizará a 0 y el valor máximo se normalizará a 1. Todos los demás valores variarán de 0 a 1. La normalización es necesaria para los datos representados en diferentes escalas. Porque los modelos de aprendizaje automático pueden verse demasiado influenciados por el parámetro con valores más altos. Hay diferentes formas de normalizar los datos. Uno de los procedimientos estándar es el enfoque de valor mínimo-máximo.

Normalización usando valores Min Max

Aquí, la normalización de los datos se puede realizar restando los datos con el valor mínimo en los datos y dividiendo el resultado por la diferencia entre el valor máximo y el valor mínimo en los datos dados. profundizaremos más en el código para una mejor comprensión.

Ejemplo

El valor máximo y el valor mínimo en una array NumPy se pueden determinar mediante min() y max(). La fórmula para la normalización usando valores min-max se da a continuación

Datos normalizados= (datos-min(datos))/(max(datos)-min(datos))

Python3

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40], 
                 [5, 15], [0, 10]])
  
normalizedData = (data-np.min(data))/(np.max(data)-np.min(data))
  
# normalized data using min max value
print(normalizedData)

Producción

[[0.25  0.5  ]
[0.75  1.   ]
[0.125 0.375]
[0.    0.25 ]]

También hay otras formas de normalizar los datos. Están:

  • Normalización usando sklearn MinMaxScaler
  • Normalización usando numpy.linalg.norm
  • Normalización usando fórmula matemática

Normalización usando sklearn MinMaxScaler

En Python, el módulo sklearn proporciona un objeto llamado MinMaxScaler que normaliza los datos proporcionados utilizando valores mínimos y máximos. Aquí el método fit_tranform escala los datos entre 0 y 1 usando el objeto MinMaxScaler.

Python3

# import necessary packages
import numpy as np
from sklearn import preprocessing as p
  
# create an array
data = np.array([[10, 20], [30, 40],
                 [5, 15], [0, 10]])
  
min_max_scaler = p.MinMaxScaler()
normalizedData = min_max_scaler.fit_transform(data)
  
# normalized data using MinMaxScaler
print(normalizedData)

Producción 

[[0.33333333 0.33333333]
 [1.         1.        ]
 [0.16666667 0.16666667]
 [0.         0.        ]]

Normalización usando numpy.linalg .norm

La biblioteca NumPy proporciona un método llamado norma que devuelve una de ocho normas de array diferentes o una de un número infinito de normas de vector. Depende completamente del parámetro ord en el método de norma. Por defecto, la norma considera la norma de Frobenius. Los datos aquí se normalizan dividiendo los datos proporcionados con la norma devuelta por el método de norma.

Python3

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40],
                 [5, 15], [0, 10]])
  
normalizedData = data/np.linalg.norm(data)
  
# normalized data using linalg.norm
print(normalizedData)

Producción

[[0.17277369 0.34554737]
 [0.51832106 0.69109474]
 [0.08638684 0.25916053]
 [0.         0.17277369]]

Normalización usando fórmula matemática

Aquí los datos se normalizan sumergiendo los datos con la raíz cuadrada de la suma de los cuadrados de los datos dados. Para implementar esto, se requiere una biblioteca NumPy simple que proporcione métodos de suma y raíz cuadrada que ayuden a reducir las líneas de código. A continuación se muestra el código implementado para normalizar los datos utilizando la suma de cuadrados de datos

Python3

# import necessary packages
import numpy as np
  
# create an array
data = np.array([[10, 20], [30, 40], 
                 [5, 15], [0, 10]])
  
normalizedData = data/np.sqrt(np.sum(data**2))
  
# normalized data using sum of squares
print(normalizedData)

Producción

[[0.17277369 0.34554737]
 [0.51832106 0.69109474]
 [0.08638684 0.25916053]
 [0.         0.17277369]]

Publicación traducida automáticamente

Artículo escrito por akhilvasabhaktula03 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *