ScikitLearn: Preprocesamiento de datos
El preprocesamiento de datos es una etapa esencial en el flujo de trabajo de aprendizaje automático, ya que los modelos suelen asumir ciertas propiedades de las características de entrada. En Scikit Learn, el submódulo sklearn.preprocessing
proporciona utilidades para la limpieza, la normalización y la transformación de los datos en una forma adecuada para los distintos estimadores. A lo largo de este proceso, se pueden aplicar escalados, codificaciones categóricas, tratamientos de valores perdidos y generación de variables polinómicas.
En primer lugar, el escalado de características ayuda a equilibrar la influencia de cada variable en el resultado final. Para ello, se dispone de clases como StandardScaler
, MinMaxScaler
o RobustScaler
. StandardScaler
ajusta cada característica para que tenga media 0 y desviación típica 1, mientras que MinMaxScaler
fuerza que cada variable quede acotada en un intervalo (por defecto, [0, 1]). A su vez, RobustScaler
es útil cuando existen valores atípicos que podrían distorsionar significativamente la media y la desviación. El escalado se ejecuta mediante los métodos fit
y transform
, asegurando que se calcule la información estadística únicamente sobre los datos de entrenamiento.
El tratamiento de valores perdidos también ocupa un lugar relevante en la limpieza previa de datos. Scikit Learn ofrece el transformador SimpleImputer
, que sustituye los valores ausentes con la media, la mediana o la moda de la columna, y KNNImputer
, que estima dichos valores en función de la cercanía con instancias vecinas. Un breve ejemplo para sustituir valores ausentes por la mediana sería:
from sklearn.impute import SimpleImputer
import numpy as np
data = np.array([[1, 2], [np.nan, 3], [7, np.nan], [6, 5]])
imputer = SimpleImputer(strategy='median')
imputer.fit(data)
transformed_data = imputer.transform(data)
Cuando se trabaja con variables categóricas, es conveniente transformarlas a un formato numérico para que los modelos puedan reconocer sus patrones. Con OneHotEncoder
se generan columnas binarias, asegurando que no se introduzca un orden artificial en variables nominales. De forma similar, OrdinalEncoder
asigna valores enteros a cada categoría, y puede resultar útil en casos donde existe un orden implícito (por ejemplo, tamaños de ropa como S, M, L).
La generación de características adicionales puede hacerse con PolynomialFeatures
, que crea interacciones y potencias de las variables originales. Esto puede incrementar la capacidad de ajuste de determinados modelos lineales, al introducir relaciones no lineales. Sin embargo, también incrementa el número de variables, lo que puede derivar en un mayor requerimiento computacional y riesgo de sobreajuste.
Por otro lado, es habitual encadenar distintos pasos de preprocesamiento dentro de un pipeline para asegurar que se realicen en el orden correcto y evitar fugas de información. Esto se logra con Pipeline
, que asocia transformaciones como escalado, imputación y codificación, y finaliza en un estimador. Este planteamiento mantiene cada paso bien definido y facilita la replicación de la misma secuencia de transformaciones en el conjunto de prueba.
La corrección de sesgos en las características o la selección de variables relevantes también se integran en esta fase. Existen métodos específicos en sklearn.feature_selection
para descartar columnas irrelevantes o altamente correlacionadas, lo que puede mejorar el rendimiento de modelos complejos. Al combinar la imputación de valores perdidos, la normalización y la selección de características, se obtiene un conjunto de datos más limpio y adecuado para tareas de clasificación, regresión o clustering.
El preprocesamiento de datos en Scikit Learn ofrece un ecosistema de transformadores y procedimientos que ayudan a preparar la información para un entrenamiento eficiente y una evaluación fiable. Con estas herramientas, se pueden corregir problemas de heterogeneidad en las escalas, manejar valores ausentes y variables categóricas, y añadir o eliminar características según resulte necesario. A través de las clases y métodos disponibles, cada paso se integra sin inconvenientes en un flujo coherente, manteniendo un enfoque modular y transparente en cada transformación aplicada.
Lecciones de este módulo de ScikitLearn
Lecciones de programación del módulo Preprocesamiento de datos del curso de ScikitLearn.
Identificación Y Tratamiento De Valores Faltantes
Escalado De Datos
Normalización De Datos
Ingeniería De Características
Particionamiento De Datos
Introducción Al Preprocesamiento De Datos
Extracción De Características
Preprocesamiento De Datos Desbalanceados
Codificación De Variables Categóricas
Selección De Características
Ejercicios de programación en este módulo de ScikitLearn
Evalúa tus conocimientos en Preprocesamiento de datos con ejercicios de programación Preprocesamiento de datos de tipo Test, Puzzle, Código y Proyecto con VSCode.