J'avais l'habitude d'utiliser le pipeline de sklearn de temps en temps, mais quand je le réglais sur pipeline.fit_transform (X, y)
, j'étais curieux de savoir quel type de traitement était effectué dans le pipeline, donc le document officiel [^ 1] et J'ai décidé de lire le code source [^ 2] et de l'organiser.
De plus, la prise de conscience du problème que j'avais est décrite dans le commentaire du code ci-dessous. Certaines personnes peuvent penser: «C'est naturel!», Mais j'étais vraiment curieuse, alors j'ai cherché.
#Prise de conscience du problème 1:Monter dans le convertisseur_transform,L'ajustement est appelé dans l'estimateur??
#Sensibilisation aux problèmes 2:Que dois-je faire si je veux transmettre des paramètres au convertisseur ou à l'estimateur à ce moment? ??
#Sensibilisation aux problèmes 3:Quelles sont les conditions à remplir si vous souhaitez installer votre propre estimateur / convertisseur???
pipe.fit(X, y)
#Sensibilisation aux problèmes 4:Monter dans le convertisseur_transform,L'estimateur appelle prédire??
pipe.predict(X)
Lors de l'utilisation d'un estimateur qui effectue la classification et la régression dans un projet d'apprentissage automatique, un transformateur est souvent utilisé ensemble. Le pipeline est fourni en tant que fonction qui peut intégrer le traitement de la conversion des données à l'apprentissage / estimation comme un estimateur.
Le pipeline se compose d'une liste dont les éléments sont des tapples de (clé, valeur). Passez le nom de l'estimateur / convertisseur en clé et l'objet de l'estimateur / convertisseur en valeur comme étapes de pipeline. Un exemple d'utilisation est présenté ci-dessous.
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn import datasets
#Préparation d'échantillons de données
iris = datasets.load_iris()
X, y = iris.data, iris.target
#Créer un pipeline
estimators = [('reduce_dim', PCA()), ('clf', SVC())]
pipe = Pipeline(steps=estimators)
#Apprentissage
pipe.fit(X, y)
#Prévoir
pipe.predict(X)
Vous voudrez peut-être mettre votre propre estimateur / convertisseur dans le pipeline. Décrivez les exigences qui doivent être remplies à ce moment-là. Les exigences changent à la fin des étapes du pipeline (final_estimator) ou à la fin d'autres étapes (not_final_estimator).
--final_estimator: avoir une méthode d'ajustement --not_final_estimator: avoir des méthodes d'ajustement et de transformation, ou des méthodes fit_transform
En fonction de la méthode appelée par pipeline, les exigences augmenteront, mais les exigences minimales à respecter sont ci-dessus.
Comme indiqué dans le code en 1.1., J'ai vérifié le traitement dans le pipeline lors de l'appel de pipeline.fit et pipeline.predict [^ 3]. Les méthodes qui seront fréquemment utilisées dans le pipeline sont résumées ci-dessous. À gauche, la méthode du pipeline, les paramètres qui lui sont passés, la méthode appelée not_final_estimator et la méthode appelée final_estimator.
pipeline | Paramètres | not_final_estimator | final_estimator |
---|---|---|---|
fit | X, y=None, **fit_params | fit_transform | fit |
fit_transform | X, y=None, **fit_params | fit_transform | fit_transform |
predict | X, **predict_params | transform | predict |
fit_predict | X, y=None, **fit_params | fit_transform | fit_predict |
score | X, y=None, sample_weight=None | transform | score |
Les points à noter sont énumérés ci-dessous.
--Si la méthode fit_transform n'est pas définie, les méthodes fit et transform sont exécutées en séquence.
nom de l'étape cible (partie clé de taple) __ nom de paramètre
.pipeline.fit (X, y, key1__param1 = True)
pipeline.predict (X, param1 = True)
En passant, le modèle compatible sklearn ne doit pas être conçu pour accepter des paramètres lorsque la méthode d'ajustement est exécutée. Par conséquent, il vaut mieux éviter autant que possible de passer des paramètres en utilisant \ * \ * fit_params. Le modèle compatible sklearn est décrit en détail dans ici.
[^ 1]: Guide de l'utilisateur [^ 2]: Code source [^ 3]: documentation du pipeline
Recommended Posts