Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Estimateur Final | Pipelines
Introduction au ML Avec Scikit-Learn

bookEstimateur Final

Jusqu'à présent, le Pipeline a été principalement utilisé pour la prétraitement. Cependant, le prétraitement n'est qu'une étape intermédiaire. Une fois les données transformées, elles sont généralement transmises à un prédicteur (modèle) pour produire des résultats ou des prédictions.

La classe Pipeline prend en charge cela en permettant à l'estimateur—souvent un prédicteur—d'être l'étape finale. L'illustration ci-dessous montre comment un Pipeline fonctionne lorsque son dernier composant est un prédicteur.

Note
Remarque

Lorsque la méthode .fit() d'un pipeline est appelée, chaque transformateur exécute .fit_transform(). En revanche, lorsque .predict() est appelé, le pipeline applique .transform() aux données avant de les transmettre au prédicteur.

La méthode .predict() est principalement utilisée pour nouvelles instances, qui doivent subir les mêmes transformations que les données d'entraînement lors de .fit().

Pourquoi .transform() ?

Le pipeline applique .transform() au lieu de .fit_transform() lors du traitement de nouvelles instances de données pour la prédiction. Cela garantit une transformation cohérente entre les ensembles d'entraînement et de test.

Par exemple, considérez un ensemble de données avec une caractéristique catégorielle 'Color' qui doit être encodée avant l'entraînement du modèle :

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

Pour utiliser l'estimateur final, il suffit de l'ajouter comme dernière étape du pipeline. Par exemple, dans le chapitre suivant, nous utiliserons un modèle KNeighborsClassifier comme estimateur final.

La syntaxe est la suivante :

# 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)
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

Awesome!

Completion rate improved to 3.13

bookEstimateur Final

Glissez pour afficher le menu

Jusqu'à présent, le Pipeline a été principalement utilisé pour la prétraitement. Cependant, le prétraitement n'est qu'une étape intermédiaire. Une fois les données transformées, elles sont généralement transmises à un prédicteur (modèle) pour produire des résultats ou des prédictions.

La classe Pipeline prend en charge cela en permettant à l'estimateur—souvent un prédicteur—d'être l'étape finale. L'illustration ci-dessous montre comment un Pipeline fonctionne lorsque son dernier composant est un prédicteur.

Note
Remarque

Lorsque la méthode .fit() d'un pipeline est appelée, chaque transformateur exécute .fit_transform(). En revanche, lorsque .predict() est appelé, le pipeline applique .transform() aux données avant de les transmettre au prédicteur.

La méthode .predict() est principalement utilisée pour nouvelles instances, qui doivent subir les mêmes transformations que les données d'entraînement lors de .fit().

Pourquoi .transform() ?

Le pipeline applique .transform() au lieu de .fit_transform() lors du traitement de nouvelles instances de données pour la prédiction. Cela garantit une transformation cohérente entre les ensembles d'entraînement et de test.

Par exemple, considérez un ensemble de données avec une caractéristique catégorielle 'Color' qui doit être encodée avant l'entraînement du modèle :

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

Pour utiliser l'estimateur final, il suffit de l'ajouter comme dernière étape du pipeline. Par exemple, dans le chapitre suivant, nous utiliserons un modèle KNeighborsClassifier comme estimateur final.

La syntaxe est la suivante :

# 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)
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5
some-alt