Estimador Final
Hasta este punto, el Pipeline
se ha utilizado principalmente para el preprocesamiento. Sin embargo, el preprocesamiento es solo un paso intermedio. Una vez que los datos han sido transformados, normalmente se pasan a un predictor (modelo) para producir resultados o predicciones.
La clase Pipeline
admite esto permitiendo que el estimador—a menudo un predictor—sea el paso final. La ilustración a continuación muestra cómo funciona un Pipeline
cuando su último componente es un predictor.
Cuando se llama al método .fit()
de un pipeline, cada transformador ejecuta .fit_transform()
. En cambio, cuando se llama a .predict()
, el pipeline aplica .transform()
a los datos antes de pasarlos al predictor.
El método .predict()
se utiliza principalmente para nuevas instancias, las cuales deben someterse a las mismas transformaciones que los datos de entrenamiento durante .fit()
.
¿Por qué .transform()
?
El pipeline aplica .transform()
en lugar de .fit_transform()
al manejar nuevas instancias de datos para la predicción. Esto garantiza una transformación consistente entre los conjuntos de entrenamiento y prueba.
Por ejemplo, considere un conjunto de datos con una característica categórica 'Color'
que debe ser codificada antes del entrenamiento del modelo:
Así es como se ve el conjunto de entrenamiento codificado con 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
Para utilizar el estimador final, solo es necesario añadirlo como el último paso del pipeline. Por ejemplo, en el siguiente capítulo, utilizaremos un modelo KNeighborsClassifier
como estimador final.
La sintaxis es la siguiente:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
¡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
Awesome!
Completion rate improved to 3.13
Estimador Final
Desliza para mostrar el menú
Hasta este punto, el Pipeline
se ha utilizado principalmente para el preprocesamiento. Sin embargo, el preprocesamiento es solo un paso intermedio. Una vez que los datos han sido transformados, normalmente se pasan a un predictor (modelo) para producir resultados o predicciones.
La clase Pipeline
admite esto permitiendo que el estimador—a menudo un predictor—sea el paso final. La ilustración a continuación muestra cómo funciona un Pipeline
cuando su último componente es un predictor.
Cuando se llama al método .fit()
de un pipeline, cada transformador ejecuta .fit_transform()
. En cambio, cuando se llama a .predict()
, el pipeline aplica .transform()
a los datos antes de pasarlos al predictor.
El método .predict()
se utiliza principalmente para nuevas instancias, las cuales deben someterse a las mismas transformaciones que los datos de entrenamiento durante .fit()
.
¿Por qué .transform()
?
El pipeline aplica .transform()
en lugar de .fit_transform()
al manejar nuevas instancias de datos para la predicción. Esto garantiza una transformación consistente entre los conjuntos de entrenamiento y prueba.
Por ejemplo, considere un conjunto de datos con una característica categórica 'Color'
que debe ser codificada antes del entrenamiento del modelo:
Así es como se ve el conjunto de entrenamiento codificado con 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
Para utilizar el estimador final, solo es necesario añadirlo como el último paso del pipeline. Por ejemplo, en el siguiente capítulo, utilizaremos un modelo KNeighborsClassifier
como estimador final.
La sintaxis es la siguiente:
# Creating a pipeline
pipe = make_pipeline(ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
# Training a model using pipeline
pipe.fit(X, y)
# Predicting new instances
pipe.predict(X_new)
¡Gracias por tus comentarios!