Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Estimateur final | Pipelines
Quizzes & Challenges
Quizzes
Challenges
/
Introduction à l'Apprentissage Automatique avec Python

bookEstimateur 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.

Note
Remarque

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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

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

bookEstimateur 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.

Note
Remarque

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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
some-alt