Estimateur 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.
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)
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
Awesome!
Completion rate improved to 3.13
Estimateur 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.
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)
Merci pour vos commentaires !