Ilustración que muestra el proceso de normalización de datos en Python mediante tablas con valores originales y normalizados, acompañadas del logotipo de Python.

¿Qué es el escalado de características?

El escalado de características es un proceso clave en el preprocesamiento de datos para Machine Learning. Consiste en ajustar los valores de las variables para que estén dentro de un rango definido. Esto mejora el rendimiento de los modelos y reduce el coste computacional, especialmente en algoritmos que utilizan distancias (como k-NN o SVM) o el descenso por gradiente.

Cuando los datos tienen escalas diferentes, las variables con valores mayores pueden dominar a las otras, afectando negativamente los resultados. Para resolverlo, existen dos técnicas principales: normalización y estandarización de datos en Python.

¿Por qué es importante escalar los datos?

  • Evita que variables con diferentes escalas dominen el modelo.
  • Mejora la velocidad de convergencia en algoritmos de optimización.
  • Hace que las métricas de distancia (como en k-NN o clustering) sean más fiables.
  • Reduce el riesgo de sesgo en los resultados del modelo.

Técnicas comunes de escalado

Normalización (Min-Max Scaling)

La normalización (también conocida como Min-Max Scaling) transforma los valores de una variable para que estén en el rango [0, 1].

Fórmula:

La normalizacion de datos en python va a ser el proceso de comprimir los valores de una variable para que estén en un rango definido.

Útil cuando no se asume una distribución gaussiana y los datos deben conservar su forma.

Estandarización (Z-Score Scaling)

La estandarización ajusta los datos para que tengan media 0 y desviación estándar 1. Es ideal cuando los datos no están acotados y se distribuyen normalmente.

Fórmula:

La normalizacion de datos en python va a ser el proceso de comprimir los valores de una variable para que estén en un rango definido.

Recomendado cuando los datos siguen una distribución normal o cuando se usan modelos lineales.

Ejemplo 1: Escalado manual con NumPy

El siguiente ejemplo en Python muestra cómo aplicar escalado de características utilizando las librerías NumPy y Scikit-learn. Primero, se crea un arreglo de datos y se reestructura para ajustarse al formato requerido por los transformadores de Scikit-learn. Luego, se aplica la normalización con MinMaxScaler, que escala los valores al rango [0, 1], y la estandarización con StandardScaler, que ajusta los datos a una media de 0 y desviación estándar de 1. Este tipo de preprocesamiento es clave para mejorar el rendimiento de modelos de machine learning. Escalar correctamente tus datos garantiza resultados más precisos y estables.

import numpy as np
datos = np.array([1,2,3,4,5,6])
print('Estandarizacion: ',(datos - datos.mean())/datos.std())
print('Normalizacion: ',(datos - datos.min())/(datos.max() - datos.min()))

Salida:

Estandarización: [-1.46 -0.87 -0.29 0.29 0.87 1.46]

Normalización: [0. 0.2 0.4 0.6 0.8 1. ]

Este código demuestra cómo aplicar manualmente ambas técnicas usando solo NumPy.

Ejemplo 2: Escalado con Scikit-learn

El siguiente código utiliza las bibliotecas Numpy y Scikit-Learn para realizar la estandarización y la normalización de los datos. Los datos se transforman primero en una matriz de una sola columna, luego se crean objetos para realizar la estandarización y la normalización. Donde esos objetos se entrenan con un transformador o estimador en función de los datos proporcionados y, al mismo tiempo, aplican la transformación a esos datos

 

import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import MinMaxScaler
datos = np.array([1,2,3,4,5,6])
datos = datos.reshape(-1,1)
estandarizacion=StandardScaler()
normalizacion=MinMaxScaler()
datos_estandarizados = estandarizacion.fit_transform(datos)
datos_normalizados = normalizacion.fit_transform(datos)
print(‘Datos normalizados: ‘)
print(datos_normalizados)
print()
print(‘Datos estandarizados: ‘)
print(datos_estandarizados)

Resultado esperado:

Datos normalizados:

[[0. ] [0.2] [0.4] [0.6] [0.8] [1. ]]

Datos estandarizados:

[[-1.46] [-0.87] [-0.29] [0.29] [0.87] [1.46]]

Este ejemplo usa StandardScaler y MinMaxScaler de Scikit-learn para automatizar el proceso.

¿Cuándo usar normalización o estandarización?

Situación Técnica recomendada
Datos no distribuidos normalmente Normalización
Datos con outliers Estandarización
Modelos basados en distancia (KNN, SVM, PCA) Ambas pueden ser útiles
Modelos lineales (regresión, clasificación) Estandarización

Conclusión

La normalización de datos en Python es esencial para entrenar modelos de Machine Learning de forma efectiva. Elegir entre normalización o estandarización dependerá de la naturaleza del modelo y los datos. Herramientas como NumPy y Scikit-learn hacen que este proceso sea sencillo, eficiente y reproducible.

Recomendación

Utiliza estas técnicas de escalado en todos tus proyectos de clasificación o regresión para mejorar la precisión del modelo y reducir el tiempo de entrenamiento.