Estimador Final
Pipeline se utilizó anteriormente para el preprocesamiento, pero su propósito real es encadenar el preprocesamiento con un predictor final. El último paso en un pipeline puede ser cualquier estimador (normalmente un modelo) que genere predicciones.
Al llamar a .fit(), cada transformador ejecuta .fit_transform().
Al llamar a .predict(), el pipeline utiliza .transform() antes de enviar los datos al estimador final.
Esto es necesario porque los nuevos datos deben transformarse exactamente igual que los datos de entrenamiento.
¿Por qué .transform()?
Usar .fit_transform() en nuevos datos podría cambiar las codificaciones (por ejemplo, en OneHotEncoder), creando columnas desajustadas y predicciones poco fiables.
.transform() garantiza un preprocesamiento consistente, ignorando categorías no vistas y manteniendo el mismo orden de columnas.
Así es como se ve un conjunto de datos de entrenamiento codificado en one-hot:
Estas son las nuevas instancias a predecir:
Si se aplicara .fit_transform() a nuevas instancias, el OneHotEncoder podría generar columnas en un orden diferente o incluso introducir nuevas. Esto provocaría que los nuevos datos se transformaran de manera inconsistente con el conjunto de entrenamiento, haciendo que las predicciones sean no confiables.
Sin embargo, usar .transform() garantiza que los nuevos datos se codifiquen exactamente como los datos de entrenamiento, ignorando las categorías no vistas durante el entrenamiento:
Añadiendo el Estimador Final
Simplemente agregue el modelo como el último paso del pipeline:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Esto permite que todo el flujo de trabajo—preprocesamiento + predicción—se ejecute con una sola llamada.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Genial!
Completion tasa mejorada a 4.55
Estimador Final
Desliza para mostrar el menú
Pipeline se utilizó anteriormente para el preprocesamiento, pero su propósito real es encadenar el preprocesamiento con un predictor final. El último paso en un pipeline puede ser cualquier estimador (normalmente un modelo) que genere predicciones.
Al llamar a .fit(), cada transformador ejecuta .fit_transform().
Al llamar a .predict(), el pipeline utiliza .transform() antes de enviar los datos al estimador final.
Esto es necesario porque los nuevos datos deben transformarse exactamente igual que los datos de entrenamiento.
¿Por qué .transform()?
Usar .fit_transform() en nuevos datos podría cambiar las codificaciones (por ejemplo, en OneHotEncoder), creando columnas desajustadas y predicciones poco fiables.
.transform() garantiza un preprocesamiento consistente, ignorando categorías no vistas y manteniendo el mismo orden de columnas.
Así es como se ve un conjunto de datos de entrenamiento codificado en one-hot:
Estas son las nuevas instancias a predecir:
Si se aplicara .fit_transform() a nuevas instancias, el OneHotEncoder podría generar columnas en un orden diferente o incluso introducir nuevas. Esto provocaría que los nuevos datos se transformaran de manera inconsistente con el conjunto de entrenamiento, haciendo que las predicciones sean no confiables.
Sin embargo, usar .transform() garantiza que los nuevos datos se codifiquen exactamente como los datos de entrenamiento, ignorando las categorías no vistas durante el entrenamiento:
Añadiendo el Estimador Final
Simplemente agregue el modelo como el último paso del pipeline:
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Esto permite que todo el flujo de trabajo—preprocesamiento + predicción—se ejecute con una sola llamada.
¡Gracias por tus comentarios!