[PYTHON] Comprendre le contenu du pipeline sklearn

Qu'est-ce que c'est

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)

1. Qu'est-ce que le pipeline

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.

1.1. Exemple d'utilisation du pipeline

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)

2. Exigences relatives aux estimateurs / convertisseurs

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.

3. Traitement en cours

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.

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

Comprendre le contenu du pipeline sklearn
Simulation du contenu du portefeuille
Voir le contenu de Kumantic Segumantion
J'ai vérifié le contenu du volume du docker
Comprendre la commodité de Django Rest Framework
[Python3] Comprendre les bases de Beautiful Soup
Comprendre la partie "temporaire" d'UNIX / Linux
Lire tout le contenu de proc / [pid]
[Python3] Comprendre les bases des opérations sur les fichiers
Contenu de __name__
Le contenu du didacticiel Python (chapitre 5) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 4) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 2) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 8) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 1) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 10) est résumé dans une puce.
À propos du contenu de développement de l'apprentissage automatique (exemple)
Vider le contenu de la base de données redis avec lua
Le contenu du didacticiel Python (chapitre 6) est résumé dans une puce.
Le contenu du didacticiel Python (chapitre 3) est résumé dans une puce.
Le début de cif2cell
Modèle de script python pour lire le contenu du fichier
Un mémo pour comprendre visuellement l'axe des pandas.
Le sens de soi
Obtention du contenu de sosreport
Pipeline ML: met en évidence les défis de l'extraction manuelle de fonctionnalités
[Statistiques] Comprendre le mécanisme des graphiques Q-Q avec animation.
le zen de Python
L'histoire de sys.path.append ()
Je veux bien comprendre les bases de Bokeh
Ne pas être conscient du contenu des données en python
Essayez d'obtenir le contenu de Word avec Golang
[Note] Contenu de la forme [0], forme [1], forme [2]
[Ev3dev] Comprenons le mécanisme de contrôle LCD (écran)
[Maya Python] Écraser le contenu du script 2 ~ list Notes
14 quiz pour comprendre la portée étonnamment compliquée de Python
Comprendre l'état de la perte de données - Python vs R
Lisez également le contenu de arch / arm / kernel / swp_emulate.c
Comprendre les attributs des fichiers Linux (commande ls -l)
La vengeance des types: la vengeance des types
J'ai recherché le contenu de l'agent CloudWatch Logs
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comprenez le processus de tri par fusion. Démontez finement en suivant le flux.
Django renvoie le contenu du fichier sous forme de réponse HTTP
Facilitez la compréhension de l'affichage des exceptions du module Python
[Maya Python] Écraser le contenu du script 3 ~ Liste des plugins inconnus
[Maya Python] Écraser le contenu du script 1 ~ Camera Speed Editor
Paramètres pour entrer et déboguer le contenu de la bibliothèque avec VS Code
Afficher le contenu de la file d'attente à l'aide de l'API Web de gestion RabbitMQ
Comment voir le contenu du fichier ipynb du notebook Jupyter
Script Python qui compare le contenu de deux répertoires
Comment connecter le contenu de la liste dans une chaîne de caractères
Aligner la version de chromedriver_binary
Grattage du résultat de "Schedule-kun"
Comprendre le produit tensoriel (numpy.tensordot)
10. Compter le nombre de lignes
L'histoire de la construction de Zabbix 4.4