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.

Cómo normalizar matrices NumPy: una guía rápida

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.

¡Entremos en ello!

Tabla de contenido

¿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.

Cómo normalizar matrices NumPy: una guía rápida

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:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Calculate the Frobenius norm
frobenius_norm = np.linalg.norm(matrix, 'fro')

# Normalize the matrix
normalized_matrix = matrix / frobenius_norm

print('Original Matrix:')
print(matrix)
print('nFrobenius Norm:')
print(frobenius_norm)
print('nNormalized Matrix:')
print(normalized_matrix)

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:

Cómo normalizar matrices NumPy: una guía rápida

¿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:

  1. Escalado mínimo-máximo

  2. Normalización L1

  3. 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:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform min-max scaling
min_val = np.min(matrix)
max_val = np.max(matrix)

scaled_matrix = (matrix - min_val) / (max_val - min_val)

print('Original Matrix:')
print(matrix)
print('nMin-Max Scaled Matrix:')
print(scaled_matrix)

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:

Cómo normalizar matrices NumPy: una guía rápida

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:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform L1 normalization
l1_norm = np.linalg.norm(matrix, 1, axis=1, keepdims=True)
l1_normalized_matrix = matrix / l1_norm

print('Original Matrix:')
print(matrix)
print('nL1 Normalized Matrix:')
print(l1_normalized_matrix)

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:

Cómo normalizar matrices NumPy: una guía rápida

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:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform L2 normalization
l2_norm = np.linalg.norm(matrix, 2, axis=1, keepdims=True)
l2_normalized_matrix = matrix / l2_norm

print('Original Matrix:')
print(matrix)
print('nL2 Normalized Matrix:')
print(l2_normalized_matrix)

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:

Cómo normalizar matrices NumPy: una guía rápida

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:

scaled_value = (value - min_value) / (max_value - min_value)

Para implementar el MinMaxScaler , puede seguir estos pasos:

  1. Importe las bibliotecas requeridas:

    import numpy as np
    from sklearn.preprocessing import MinMaxScaler
  2. Crea una matriz NumPy:

    data = np.array([[1., 2., 5.], [3., 6., 8.], [5., 10., 12.]])
  3. Crea una instancia del MinMaxScaler y ajústalo a los datos:

    scaler = MinMaxScaler()
    scaler.fit(data)
  4. 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:

Cómo normalizar matrices NumPy: una guía rápida

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:

from sklearn.preprocessing import normalize
import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=float)

# Apply in-place row normalization
normalize(matrix, norm='l2', copy=False)

print('L2 Normalized Matrix:')
print(matrix)

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:

Cómo normalizar matrices NumPy: una guía rápida

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!

Leave a Comment

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.