[PYTHON] Verstehen Sie den Inhalt der sklearn-Pipeline

Was ist das

Früher habe ich von Zeit zu Zeit die Pipeline von sklearn verwendet, aber als ich sie auf "pipe.fit_transform (X, y)" setzte, war ich neugierig, welche Art von Verarbeitung in der Pipeline durchgeführt wurde, also das offizielle Dokument ^ 1 und Ich beschloss, den Quellcode ^ 2 zu lesen und zu organisieren.

Darüber hinaus wird das Problembewusstsein, das ich hatte, im Kommentar des folgenden Codes beschrieben. Einige Leute denken vielleicht: "Es ist natürlich!", Aber ich war wirklich neugierig, also habe ich es nachgeschlagen.

#Problembewusstsein 1:In den Konverter einbauen_transform,Fit wird im Schätzer aufgerufen??
#Problembewusstsein 2:Was kann ich tun, wenn ich zu diesem Zeitpunkt Parameter an den Konverter oder Schätzer übergeben möchte? ??
#Problembewusstsein 3:Welche Anforderungen müssen erfüllt sein, wenn Sie einen eigenen Schätzer / Konverter installieren möchten???
pipe.fit(X, y)

#Problembewusstsein 4:In den Konverter einbauen_transform,Die Schätzeraufrufe sagen voraus??
pipe.predict(X)

1. Was ist eine Pipeline?

Bei Verwendung eines Schätzers, der eine Klassifizierung und Regression in einem maschinellen Lernprojekt durchführt, wird häufig ein Transformator zusammen verwendet. Die Pipeline wird als eine Funktion bereitgestellt, die die Verarbeitung von der Datenkonvertierung zum Lernen / Schätzen als einen Schätzer integrieren kann.

1.1. Beispiel für die Verwendung einer Pipeline

Die Pipeline besteht aus einer Liste mit (Schlüssel-, Wert-) Tapples als Elementen. Übergeben Sie den Namen des Schätzers / Konverters im Schlüssel und das Objekt des Schätzers / Konverters im Wert als Schritte an die Pipeline. Ein Anwendungsbeispiel ist unten dargestellt.

from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn import datasets

#Vorbereitung der Probendaten
iris = datasets.load_iris()
X, y = iris.data, iris.target

#Erstellen einer Pipeline
estimators = [('reduce_dim', PCA()), ('clf', SVC())]
pipe = Pipeline(steps=estimators)

#Lernen
pipe.fit(X, y)

#Prognose
pipe.predict(X)

2. Anforderungen an Schätzer / Konverter

Möglicherweise möchten Sie Ihren eigenen Schätzer / Konverter in die Pipeline aufnehmen. Beschreiben Sie die Anforderungen, die zu diesem Zeitpunkt erfüllt sein müssen. Die Anforderungen ändern sich am Ende der Pipeline-Schritte (final_estimator) oder am Ende anderer Schritte (not_final_estimator).

--final_estimator: Haben Sie eine Anpassungsmethode --not_final_estimator: Haben Fit- und Transformationsmethoden oder Fit_transform-Methoden

Abhängig von der von der Pipeline aufgerufenen Methode steigen die Anforderungen, die zu erfüllenden Mindestanforderungen liegen jedoch oben.

3. Verarbeitung in der Pipeline

Wie im Code in 1.1 gezeigt, habe ich die Verarbeitung in der Pipeline beim Aufrufen von Pipeline.fit und Pipeline.predict ^ 3 überprüft. Die Methoden, die in der Pipeline häufig verwendet werden, sind nachstehend zusammengefasst. Von links die Pipeline-Methode, die an sie übergebenen Parameter, die Methode not_final_estimator und die Methode final_estimator.

pipeline Parameter 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

Die zu beachtenden Punkte sind unten aufgeführt.

--Wenn die Methode fit_transform nicht definiert ist, werden die Methoden fit und transform nacheinander ausgeführt.

Abgesehen davon sollte das sklearn-kompatible Modell nicht so ausgelegt sein, dass es Parameter akzeptiert, wenn die Anpassungsmethode ausgeführt wird. Daher ist es besser, die Übergabe von Parametern mit \ * \ * fit_params so weit wie möglich zu vermeiden. Das sklearn-kompatible Modell wird ausführlich in [hier] beschrieben (https://qiita.com/shota-imazeki/items/e09ea39660bb4d5d0a90).

Recommended Posts

Verstehen Sie den Inhalt der sklearn-Pipeline
Simulation des Inhalts der Brieftasche
Siehe den Inhalt von Kumantic Segumantion
Ich habe den Inhalt des Docker-Volumes überprüft
Verstehen Sie den Komfort des Django Rest Framework
[Python3] Verstehe die Grundlagen von Beautiful Soup
Verstehen Sie den "temporären" Teil von UNIX / Linux
Lesen Sie den gesamten Inhalt von proc / [pid]
[Python3] Grundlegendes zu Dateivorgängen
Inhalt von __name__
Der Inhalt des Python-Tutorials (Kapitel 5) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 4) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 2) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 8) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 1) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 10) ist in einem Aufzählungszeichen zusammengefasst.
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
Entleere den Inhalt der Redis-Datenbank mit Lua
Der Inhalt des Python-Tutorials (Kapitel 6) ist in einem Aufzählungszeichen zusammengefasst.
Der Inhalt des Python-Tutorials (Kapitel 3) ist in einem Aufzählungszeichen zusammengefasst.
Der Beginn von cif2cell
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Ein Memo zum visuellen Verstehen der Achse von Pandas.Panel
Die Bedeutung des Selbst
Erhaltene Inhalte von sosreport
ML-Pipeline: Hebt die Herausforderungen der manuellen Merkmalsextraktion hervor
[Statistik] Verstehen Sie den Mechanismus von Q-Q-Plots mit Animation.
der Zen von Python
Die Geschichte von sys.path.append ()
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Den Inhalt der Daten in Python nicht kennen
Versuchen Sie, den Inhalt von Word mit Golang zu erhalten
[Anmerkung] Inhalt der Form [0], Form [1], Form [2]
[Ev3dev] Lassen Sie uns den Mechanismus der LCD-Steuerung (Bildschirmsteuerung) verstehen
[Maya Python] Crush den Inhalt des Skripts 2 ~ Liste Notizen
14 Tests, um den überraschend verwirrenden Umfang von Python zu verstehen
Verstehen Sie den Status des Datenverlusts - Python vs. R.
Lesen Sie auch den Inhalt von arch / arm / kernel / swp_emulate.c
Verstehen Sie die Attribute von Linux-Dateien (Befehl ls -l)
Rache der Typen: Rache der Typen
Ich habe nach dem Inhalt von CloudWatch Logs Agent gesucht
[Ubuntu] So löschen Sie den gesamten Inhalt des Verzeichnisses
Verstehen Sie den Prozess der Sortierung von Zusammenführungen. Nach dem Durchfluss fein zerlegen.
Django gibt den Inhalt der Datei als HTTP-Antwort zurück
Erleichtern Sie die Anzeige von Python-Modulausnahmen
[Maya Python] Crush den Inhalt des Skripts 3 ~ Liste unbekannter Plugins
[Maya Python] Zerquetsche den Inhalt des Skripts 1 ~ Camera Speed Editor
Einstellungen zum Eingeben und Debuggen des Inhalts der Bibliothek mit VS-Code
Zeigen Sie den Inhalt der Warteschlange mithilfe der RabbitMQ Management-Web-API an
So sehen Sie den Inhalt der ipynb-Datei des Jupyter-Notizbuchs
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
Richten Sie die Version von chromedriver_binary aus
Scraping das Ergebnis von "Schedule-Kun"
Verstehe das Tensorprodukt (numpy.tensordot)
10. Zählen der Anzahl der Zeilen
Die Geschichte des Baus von Zabbix 4.4