Home
» Power BI
»
Cómo normalizar matrices NumPy: una guía rápida
Cómo normalizar matrices NumPy: una guía rápida
Si ha estado trabajando con Python para el análisis de datos o el aprendizaje automático, es probable que haya encontrado matrices NumPy. Son una herramienta poderosa para el manejo de datos numéricos, pero a veces, los datos dentro de estas matrices deben ajustarse o "normalizarse" para poder usarlos de manera efectiva en sus algoritmos. Pero, ¿qué significa normalizar una matriz?
Para normalizar una matriz NumPy, debe ajustar los valores de la matriz para que estén dentro de un cierto rango, generalmente entre 0 y 1, o para que tengan una distribución normal estándar con una media de 0 y una desviación estándar de 1 Esto se hace a menudo en el campo del aprendizaje automático y el análisis de datos para garantizar que todas las características de entrada tengan la misma escala.
En este artículo, exploraremos cómo puede normalizar una matriz NumPy en Python. Veremos los diferentes métodos que puede usar para normalizar una matriz NumPy y también veremos ejemplos para ayudarlo a comprender mejor el concepto.
¿Cuáles son los conceptos básicos de la normalización en Python?
Antes de implementar la normalización en Python, debe comprender qué significa la normalización.
Por lo tanto, en esta sección, repasaremos qué es la normalización y sus conceptos básicos.
¿Qué es la Normalización?
La normalización es un proceso que escala y transforma los datos en un rango estandarizado. Esto se hace dividiendo cada elemento de los datos por un parámetro. El parámetro puede ser el valor máximo, el rango o alguna otra norma.
Puede normalizar la matriz NumPy utilizando la norma euclidiana (también conocida como norma L2). Además, también puede normalizar las matrices NumPy cambiando la escala de los valores entre un cierto rango, generalmente de 0 a 1.
En Python, la biblioteca NumPy proporciona una forma eficiente de normalizar matrices. Esto incluye también arreglos y matrices multidimensionales.
¿Por qué es importante la normalización?
La normalización es importante ya que garantiza que las diferentes características se traten por igual al comparar y analizar datos. Puede usarlo para eliminar posibles sesgos o discrepancias que puedan surgir debido a las diferentes escalas.
¿Qué son las normas?
El parámetro que utiliza para la normalización puede ser diferentes normas , como la norma euclidiana (L2), la norma de Manhattan (L1) o la norma máxima (L_inf). Usas normas para calcular la magnitud de un vector o matriz . Estos se utilizan luego como un factor de escala para normalizar los datos.
Cuando trabajamos con matrices, a menudo usamos la norma de Frobenius , que es una generalización de la norma euclidiana para matrices multidimensionales.
El siguiente ejemplo muestra la normalización de una matriz utilizando la norma de Frobenius:
Este código de Python primero importará la biblioteca NumPy y la usará para crear una matriz. Luego calcula la norma de Frobenius de la matriz y luego divide cada elemento de la matriz por este valor para normalizarlo.
La salida de este código se muestra a continuación:
¿Qué es la normalización en el aprendizaje automático?
En el aprendizaje automático , la normalización es un paso de preprocesamiento importante, ya que mejora el rendimiento de los algoritmos.
Al realizar técnicas de optimización basadas en gradientes, encontrará que las características optimizadas tienden a converger de manera más rápida y eficiente. Esto se debe a que reduce el riesgo de un escalado deficiente o gradientes que se desvanecen.
¿Cuáles son las Técnicas de Normalización en Python?
Puede realizar la normalización de matrices NumPy de varias maneras. Sin embargo, algunos métodos son más populares que otros debido a su alta eficiencia.
Para esta sección, veremos las tres técnicas de normalización ampliamente utilizadas:
Escalado mínimo-máximo
Normalización L1
Normalización L2
1. Cómo realizar escalado mínimo-máximo
El escalado mínimo-máximo también se conoce como normalización lineal o escalado de características. En la escala min-max, escalamos los valores de una matriz NumPy para que se encuentren dentro de un rango específico, generalmente entre 0 y 1.
Para hacer esto, resta el valor mínimo de cada elemento y divide el resultado por la diferencia entre los valores máximo y mínimo.
Puede representar la escala min-max matemáticamente como:
x' = (x - min(x)) / (max(x) - min(x))
El siguiente ejemplo demuestra cómo puede realizar escalado mínimo-máximo utilizando la biblioteca NumPy:
Este código primero importará NumPy y luego calculará los valores mínimo y máximo en la matriz, que luego escalará de manera que todos los valores estén entre 0 (correspondiente al valor mínimo original) y 1 (correspondiente al valor máximo original).
La salida de este código se muestra a continuación:
Min-max scaling is a very common form of scaling in machine learning and data preprocessing.
2. How to Perform L1 Normalization
L1 normalization employs the L1-norm, which is the sum of the absolute values of the array elements. This is particularly useful for sparse matrices. It ensures that the sum of the absolute values of the normalized array elements equals 1.
The formula for L1 normalization is:
x' = x / sum(|x|)
The following example shows how you can perform L1 normalization using NumPy:
In this code, np.linalg.norm(matrix, 1, axis=1, keepdims=True) calculates the L1 norm for each row (this is done by specifying axis=1).
This operation will return a column vector where each element is the L1 norm of the corresponding row. By dividing the original matrix by these norms (performing the division element-wise), we obtain the L1 normalized version of the matrix.
The output is given below:
3. How to Perform L2 Normalization
L2 normalization uses the L2-norm, which is the square root of the sum of the squared array elements.
This method converts the normalized array into a unit vector with a 2-norm of 1. L2 normalization is useful for dimensional reduction and ensures equal importance for all features.
The formula for L2 normalization is:
x' = x / sqrt(sum(x^2))
This is how you can perform L2 normalization using NumPy:
En este código, np.linalg.norm(matrix, 2, axis=1, keepdims=True) calcula la norma L2 (norma euclidiana) para cada fila (esto se hace especificando axis=1). Esta operación devolverá un vector columna donde cada elemento es la norma L2 de la fila correspondiente.
Al dividir la matriz original por estas normas (realizando la división por elementos), obtenemos la versión normalizada L2 de la matriz.
La salida se da a continuación:
Muy bien, ahora que hemos repasado las formas populares de crear una matriz normalizada usando NumPy, echemos un vistazo a cómo puedes hacer lo mismo usando otras bibliotecas de Python en la siguiente sección.
Cómo usar Scikit-Learn para la normalización en Python
Scikit-learn es una poderosa biblioteca de Python para el aprendizaje automático. Proporciona varias herramientas para el preprocesamiento de datos.
Una herramienta que puede usar es el módulo sklearn.preprocessing , que ofrece varias técnicas para realizar la normalización. Hay muchas funciones diferentes de escalador, transformadores y normalizadores disponibles. Sin embargo, nos centraremos en MinMaxScaler y la función de normalización .
Para preprocesar datos con scikit-learn, utiliza principalmente la API del transformador. Esto incluye los métodos fit , transform y fit_transform .
1. Cómo normalizar una matriz usando MinMaxScaler
El MinMaxScaler es un escalador que normaliza los datos a un rango específico, generalmente [0, 1].
La fórmula para MinMaxScalar se da a continuación:
Crea una instancia del MinMaxScaler y ajústalo a los datos:
scaler = MinMaxScaler()
scaler.fit(data)
Transforme los datos utilizando el método transform o fit_transform :
normalized_data = scaler.transform(data)
La salida de este código se muestra a continuación:
Como puede ver en el resultado, MinMaxScalarMatrix solo tiene valores que van de 0 a 1.
2. Cómo realizar la normalización de filas en el lugar
También puede utilizar la normalización de filas in situ como alternativa, utilizando la función de normalización .
Este método normaliza cada matriz o función de entrada de forma independiente escalando el vector a una norma unitaria. De forma predeterminada, la función de normalización utiliza la norma L2 para realizar una normalización simple, pero puede elegir otras opciones de norma.
El siguiente ejemplo demuestra la normalización de filas en el lugar:
En este código, llamamos a la función de normalización de sklearn , definimos la norma a usar ('l2' en este caso) y configuramos copy=False para realizar la normalización en el lugar.
La salida de este código se muestra a continuación:
Para obtener más información sobre el aprendizaje automático en Python , consulte el siguiente video:
Pensamientos finales
A medida que explore más la ciencia de datos y el aprendizaje automático, descubrirá que el proceso de normalización es un paso esencial en su proceso de preprocesamiento de datos.
En primer lugar, coloca diferentes características en una escala común. Esto hace que sus modelos sean menos sensibles a la escala de las entradas. Puede mejorar en gran medida el rendimiento de muchos algoritmos de aprendizaje automático.
En segundo lugar, le ayuda a acelerar el proceso de formación. Algunos algoritmos, especialmente aquellos basados en cálculos de distancia calculados, convergen más rápido cuando los datos se normalizan.
Al aprender a normalizar los datos, se equipa con una habilidad crucial. La normalización es una herramienta práctica que se utiliza habitualmente en aplicaciones del mundo real. Le ayudará a reducir la probabilidad de resultados inesperados debido a valores atípicos o diferencias en las unidades.
Como cualquier herramienta, la clave para dominar la normalización está en la práctica. Por lo tanto, no dude en ensuciarse las manos y experimentar con diferentes conjuntos de datos y valores aleatorios. El mundo de la ciencia de datos está a tu alcance. ¡Feliz codificación!