Data Preprocessing
El preprocesamiento de datos convierte tablas, texto e imágenes sin procesar en entradas limpias, escaladas y con formato fijo, tal como espera un modelo. Explica los pasos habituales, las reglas para evitar fugas y el código.
El preprocesamiento de datos es el conjunto de transformaciones que convierte los datos sin procesar en la entrada numérica limpia y con un formato coherente que espera un modelo de aprendizaje automático (ML), y se aplica del mismo modo durante el entrenamiento y la inferencia. En los datos tabulares, consiste en gestionar los valores ausentes, codificar las categorías como números y escalar las características. En las imágenes, consiste en decodificar los archivos, cambiarles el tamaño al de entrada de la red, ordenar los canales de color y escalar los valores de los píxeles. En la práctica, el preprocesamiento forma parte del modelo: una red entrenada con imágenes RGB escaladas entre 0 y 1 produce predicciones poco fiables cuando recibe imágenes BGR con valores entre 0 y 255, aunque sus pesos no hayan cambiado.
Pasos habituales de preprocesamiento#
- Limpieza de datos: Eliminar duplicados, archivos dañados y valores imposibles, y corregir etiquetas o unidades incoherentes.
- Imputación: Rellenar los valores ausentes con una estadística, como la mediana de la columna, una estimación basada en un modelo o una categoría «ausente» independiente, o eliminar las filas con demasiados valores ausentes.
- Codificación: Convertir las categorías en números mediante codificación one-hot para categorías sin orden, como el color; códigos ordinales para categorías ordenadas, como la talla; e índices enteros para los nombres de clase.
- Escalado y normalización: El escalado mínimo-máximo asigna a una característica un valor entre 0 y 1, y la estandarización resta la media y divide por la desviación estándar. Así, una característica medida en milímetros no eclipsa a otra medida en metros en modelos basados en distancias, y el descenso de gradiente converge más rápido. Muchos modelos preentrenados con ImageNet en torchvision esperan que cada canal RGB esté estandarizado con las medias 0,485, 0,456 y 0,406 y las desviaciones estándar 0,229, 0,224 y 0,225.
- Cambio de tamaño: Adaptar todas las imágenes al tamaño de entrada de la red estirándolas, recortándolas por el centro o usando letterboxing, que escala la imagen para ajustarla y rellena el espacio restante para mantener las proporciones de los objetos.
- Tokenización: Dividir el texto en tokens y asignar a cada uno un identificador entero de un vocabulario fijo.
Además, se aplican pasos específicos del dominio. Las tomografías computarizadas se someten a un ajuste de ventana, que asigna un intervalo de unidades Hounsfield —por ejemplo, el intervalo que muestra el tejido pulmonar— a las intensidades de visualización que ve un modelo; el audio se remuestrea a una frecuencia fija y, a menudo, se convierte en un espectrograma.
Ajustar con los datos de entrenamiento y aplicar a todos#
Las estadísticas utilizadas en el preprocesamiento, como las medias y desviaciones estándar de las características, los valores de imputación y los vocabularios de categorías, se calculan solo con la partición de entrenamiento, se guardan y después se aplican sin cambios a los datos de validación, prueba y producción. Calcularlas en todo el conjunto de datos antes de dividirlo permite que la información del conjunto de prueba condicione las entradas de entrenamiento, una forma de fuga de datos que infla las puntuaciones de evaluación. Una Pipeline de scikit-learn hace cumplir esta regla al ajustar sus pasos de preprocesamiento solo con los datos que se pasan a fit. Aplicar un preprocesamiento distinto al servir el modelo, como otro método de cambio de tamaño o un decodificador de imágenes diferente, provoca un desajuste entre entrenamiento y servicio: el modelo obtiene buenos resultados sin conexión y peores en producción.
Preprocesamiento de imágenes para modelos de visión#
Los modelos de imágenes necesitan un diseño fijo de tensor. OpenCV decodifica las imágenes como matrices de enteros de 8 bits de alto × ancho × canal, en orden BGR, mientras que las redes PyTorch esperan lotes de tensores flotantes en orden RGB y con los canales primero. La predicción de YOLO26 en Ultralytics ejecuta estos pasos automáticamente: cambia el tamaño de cada imagen para que su lado más largo coincida con imgsz —640 píxeles de forma predeterminada— sin deformarla; la rellena con píxeles grises de valor 114 hasta formar un cuadrado de 640 × 640 para los modelos exportados de forma fija, o solo hasta el siguiente múltiplo del stride de 32 píxeles en el caso de los modelos PyTorch; invierte el orden BGR a RGB, reorganiza la matriz para poner primero los canales y divide entre 255. El siguiente script de OpenCV y NumPy realiza manualmente el letterboxing cuadrado:
import urllib.request
import cv2
import numpy as np
# Download a sample photo and read it as a BGR uint8 array of shape (height, width, 3)
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
image = cv2.imread("bus.jpg")
# Resize so the longer side is 640 pixels, keeping the aspect ratio
scale = 640 / max(image.shape[:2])
resized = cv2.resize(image, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR)
# Letterbox: center the resized image on a 640x640 canvas of gray (114) padding
canvas = np.full((640, 640, 3), 114, dtype=np.uint8)
top, left = (640 - resized.shape[0]) // 2, (640 - resized.shape[1]) // 2
canvas[top : top + resized.shape[0], left : left + resized.shape[1]] = resized
# Reorder BGR to RGB and HWC to CHW, scale pixels to 0-1, and add a batch dimension
tensor = canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0
batch = tensor[None]
print(f"{image.shape} uint8 -> {batch.shape} float32 in [{batch.min():.1f}, {batch.max():.1f}]")El script imprime (1080, 810, 3) uint8 -> (1, 3, 640, 640) float32 in [0.0, 1.0]: la foto de 1080 × 810 se convierte en un lote de una sola imagen con el diseño y el intervalo de valores que espera un detector PyTorch, con bandas grises que rellenan los 80 píxeles de cada lado.
Preprocesamiento de datos y términos relacionados#
- Etiquetado de datos: Crear los valores de referencia, como clases y cuadros, que el preprocesamiento convierte después al formato numérico que utiliza el entrenamiento.
- Ingeniería de características: Crear nuevas variables de entrada a partir del conocimiento del dominio, como el índice de masa corporal a partir de las columnas de altura y peso.
- Normalización por lotes: Una capa dentro de la red que estandariza las activaciones intermedias durante el entrenamiento y la inferencia. La normalización de entrada del preprocesamiento se realiza una sola vez, antes de que los datos lleguen a la red.
- Aumento de datos: Transformaciones aleatorias, como volteos, cambios de color y mosaicos, que se aplican solo durante el entrenamiento para crear copias variadas de cada ejemplo. El preprocesamiento es determinista e idéntico durante el entrenamiento y la inferencia.










