Estimateur final
Pipeline a été précédemment utilisé pour le prétraitement, mais son véritable objectif est de chaîner le prétraitement avec un prédicteur final. La dernière étape d'un pipeline peut être n'importe quel estimateur (généralement un modèle) qui produit des prédictions.
Lors de l'appel de .fit(), chaque transformateur exécute .fit_transform().
Lors de l'appel de .predict(), le pipeline utilise .transform() avant d'envoyer les données à l'estimateur final.
Cela est nécessaire car les nouvelles données doivent être transformées exactement comme les données d'entraînement.
Pourquoi .transform() ?
Utiliser .fit_transform() sur de nouvelles données pourrait modifier les encodages (par exemple, dans OneHotEncoder), créant des colonnes non correspondantes et des prédictions non fiables.
.transform() garantit un prétraitement cohérent, en ignorant les catégories inconnues et en conservant le même ordre de colonnes.
Voici à quoi ressemblent les données d'entraînement après l'encodage one-hot :
Voici les nouvelles instances à prédire :
Si .fit_transform() était appliqué à de nouvelles instances, le OneHotEncoder pourrait générer des colonnes dans un ordre différent, voire en introduire de nouvelles. Cela entraînerait une transformation des nouvelles données incohérente avec l'ensemble d'entraînement, rendant les prédictions non fiables.
Cependant, l'utilisation de .transform() garantit que les nouvelles données sont encodées exactement comme les données d'entraînement, en ignorant les catégories non observées lors de l'entraînement :
Ajout de l'estimateur final
Il suffit d'ajouter le modèle comme dernière étape du pipeline :
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Cela permet à l'ensemble du flux de travail—prétraitement + prédiction—de s'exécuter en une seule commande.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain why using `.fit_transform()` on new data is problematic?
How does `.transform()` handle unseen categories in new data?
Can you show an example of a pipeline with a different final estimator?
Awesome!
Completion rate improved to 3.13
Estimateur final
Glissez pour afficher le menu
Pipeline a été précédemment utilisé pour le prétraitement, mais son véritable objectif est de chaîner le prétraitement avec un prédicteur final. La dernière étape d'un pipeline peut être n'importe quel estimateur (généralement un modèle) qui produit des prédictions.
Lors de l'appel de .fit(), chaque transformateur exécute .fit_transform().
Lors de l'appel de .predict(), le pipeline utilise .transform() avant d'envoyer les données à l'estimateur final.
Cela est nécessaire car les nouvelles données doivent être transformées exactement comme les données d'entraînement.
Pourquoi .transform() ?
Utiliser .fit_transform() sur de nouvelles données pourrait modifier les encodages (par exemple, dans OneHotEncoder), créant des colonnes non correspondantes et des prédictions non fiables.
.transform() garantit un prétraitement cohérent, en ignorant les catégories inconnues et en conservant le même ordre de colonnes.
Voici à quoi ressemblent les données d'entraînement après l'encodage one-hot :
Voici les nouvelles instances à prédire :
Si .fit_transform() était appliqué à de nouvelles instances, le OneHotEncoder pourrait générer des colonnes dans un ordre différent, voire en introduire de nouvelles. Cela entraînerait une transformation des nouvelles données incohérente avec l'ensemble d'entraînement, rendant les prédictions non fiables.
Cependant, l'utilisation de .transform() garantit que les nouvelles données sont encodées exactement comme les données d'entraînement, en ignorant les catégories non observées lors de l'entraînement :
Ajout de l'estimateur final
Il suffit d'ajouter le modèle comme dernière étape du pipeline :
pipe = make_pipeline(
ct,
SimpleImputer(strategy='most_frequent'),
StandardScaler(),
KNeighborsClassifier()
)
pipe.fit(X, y)
pipe.predict(X_new)
Cela permet à l'ensemble du flux de travail—prétraitement + prédiction—de s'exécuter en une seule commande.
Merci pour vos commentaires !