Fundamentos de Machine Learning · Machine Learning

Pipeline de scikit-learn

Encadenar preprocesado y modelo en un único objeto con la interfaz de scikit-learn, evitando fugas de datos y haciendo el flujo reproducible y ajustable.

Pipeline de scikit-learn

El pipeline es una máquina anti-fuga Un modelo entrenado con datos que «miró» al escalar es un modelo que miente sobre su rendimiento. El pipeline no es azúcar sintáctico: es la maquinaria que hace casi imposible contaminar la validación, porque obliga a ajustar cada paso solo con lo que debe.

Una interfaz común

Scikit-learn unifica casi todo detrás de los mismos métodos: fit para aprender, predict para aplicar, transform para los preprocesadores que devuelven datos. Esa regularidad permite intercambiar componentes y construir flujos complejos con piezas que encajan igual.

Estimadores y transformadores

Un transformador —imputador, escalador, codificador— se ajusta y transforma; un estimador —regresor, clasificador— además predice. Todos comparten fit. Los pasos de preprocesado se ajustan en entrenamiento y luego solo se aplican, sin volver a mirar etiquetas.

Encadenar en un pipeline

Un pipeline lista pasos en orden: imputar, escalar, modelo. Al hacer fit sobre datos, cada paso alimenta al siguiente automáticamente. El objeto resultante se comporta como un único estimador: se puede pasar a validación cruzada o a una rejilla como si fuera una pieza.

Por qué evita fugas

La clave: al validar cruzada sobre un pipeline, el escalado se reajusta desde cero en cada pliegue, usando solo el entrenamiento de ese pliegue. Hacerlo a mano sobre todo el conjunto antes de dividir filtraría información de validación al modelo. El pipeline lo impide por construcción.

Columnas distintas, tratamiento distinto

Un conjunto típico mezcla numéricas y categóricas. El transformador de columnas permite escalar las primeras y codificar las segundas dentro del mismo pipeline, y aunar el resultado. Preprocesado heterogéneo sin perder la garantía anti-fuga.

Una línea de ensamblaje: fragmentos dispersos de datos entran por la izquierda, atraviesan una malla filtradora y unos engranajes, y salen como un cubo ordenado por la derecha.
El pipeline como cadena única: la misma secuencia de limpiar, transformar y modelar que se diseña es literalmente la que se entrena, se valida y se despliega.

Ajuste en rejilla

Al exponer cada paso como un hiperparámetro nombrable, la rejilla busca simultáneamente por el preprocesado y el modelo: qué imputador, cuántas componentes, qué regularización. Un solo ajuste conjunto, en vez de optimizar a mano pieza a pieza.

Reproducibilidad y empaquetado

Un pipeline es un único artefacto serializable: se guarda, se versiona y se despliega entero, con el preprocesado pegado al modelo. Así no hay desajuste entre el escalado usado al entrenar y el que se aplica al predecir, una de las fuentes clásicas de errores silenciosos.

Errores frecuentes

Ejemplo resuelto: un pipeline sin fugas

Datos con columnas numéricas y categóricas, y una validación cruzada sospechosamente optimista. El protocolo:

  1. Dividir antes de nada: apartar prueba sin tocarla, y solo entonces mirar estadísticos.
  2. Montar la cadena: imputar, escalar las numéricas, codificar las categóricas y modelar, en un solo objeto.
  3. Separar por columnas: un transformador de columnas da a cada tipo el tratamiento que le toca.
  4. Validar cruzado sobre el todo: cada pliegue reaprende su escalado sin ver su validación.
  5. Buscar en rejilla por igual en preprocesado y modelo, y guardar el pipeline entero como artefacto.

¿Para qué sirve en la realidad?

En producción, el escalado usado al entrenar debe ser exactamente el aplicado al predecir: un desajuste ahí es un error silencioso que degrada el modelo sin avisar. El pipeline empaqueta todo junto y hace que la versión experimentada sea la versión desplegada.

¿Cuál es la ventaja central de usar un pipeline de scikit-learn al validar con validación cruzada?

Un pipeline de scikit-learn se puede tratar como un único estimador al pasarlo a una rejilla.

Del notebook a producción

El desorden de celdas sueltas —una transformación aquí, un modelo allá— es terreno fértil para fugas y para reproducir mal. Un pipeline captura el flujo completo como objeto: lo que se probó en la experimentación es, literalmente, lo mismo que se despliega.

Pipeline

Método que aprende parámetros
fit
Método que aplica y devuelve transformaciones
transform
Encadena preprocesado y modelo
pipeline
Trata distinto columnas numéricas y categóricas
transformador de columnas
Busca por hiperparámetros de todos los pasos
rejilla

Ordena los pasos de un pipeline típico de principio a fin:

Imputar
Escalar
Codificar
Modelo

scikit-learn: composing estimators
Documentación oficial de pipelines y transformadores de columnas.

Une cada pieza de scikit-learn con lo que hace en el flujo.

scikit-learn

# Pipeline
## Interfaz
### fit
### transform
### predict
## Pasos
### imputar
### escalar
### codificar
### modelar
## Garantías
### anti-fuga por pliegues
### un solo artefacto
## Extras
### transformador de columnas
### rejilla conjunta

Clase Pipeline
Documentación oficial de la clase Pipeline en scikit-learn.

Tu validación cruzada da un resultado sospechosamente perfecto. ¿Podrías estar escalando antes de dividir, y cómo lo arreglaría un pipeline?