[PYTHON] [Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.1. Pipeline- und Feature-Union: Kombination von Schätzern

google übersetzte http://scikit-learn.org/0.18/modules/pipeline.html [scikit-learn 0.18 Benutzerhandbuch 4. Datensatzkonvertierung](http://qiita.com/nazoking@github/items/267f2371757516f8c168#4-%E3%83%87%E3%83%BC%E3%82%BF % E3% 82% BB% E3% 83% 83% E3% 83% 88% E5% A4% 89% E6% 8F% 9B)


4.1. Pipeline- und Feature-Union: Schätzerkombination

4.1.1 Pipeline: Kettenschätzung

Mit der Pipeline (http://scikit-learn.org/0.18/modules/generated/sklearn.pipeline.Pipeline.html#sklearn.pipeline.Pipeline) können Sie mehrere Schätzer zu einem kombinieren. Ich kann es schaffen Dies ist praktisch, da die Schritte zum Verarbeiten der Daten, wie z. B. Auswahl, Normalisierung und Klassifizierung von Merkmalen, häufig festgelegt sind. Die Pipeline dient hier zwei Zwecken.

Alle Schätzer in der Pipeline mit Ausnahme der letzten Pipeline müssen Transformatoren sein (erfordert die Transformationsmethode). Der endgültige Schätzer kann von einem beliebigen Typ sein (Konverter, Klassifizierer usw.).

4.1.1.1. Verwendung

Die Pipeline wird mithilfe einer Liste von "(Schlüssel, Wert)" - Paaren erstellt. key ist die Namenszeichenfolge für diesen Schritt und value ist die Schätzerinstanz.

>>> from sklearn.pipeline import Pipeline
>>> from sklearn.svm import SVC
>>> from sklearn.decomposition import PCA
>>> estimators = [('reduce_dim', PCA()), ('clf', SVC())]
>>> pipe = Pipeline(estimators)
>>> pipe 
Pipeline(steps=[('reduce_dim', PCA(copy=True, iterated_power='auto',
n_components=None, random_state=None, svd_solver='auto', tol=0.0,
whiten=False)), ('clf', SVC(C=1.0, cache_size=200, class_weight=None,
coef0=0.0, decision_function_shape=None, degree=3, gamma='auto',
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False))])

Die Dienstprogrammfunktion make_pipeline ist eine Abkürzung für das Erstellen einer Pipeline. Gibt eine Pipeline mit mehreren Schätzern als Argumente zurück. Der Name wird automatisch festgelegt:

>>> from sklearn.pipeline import make_pipeline
>>> from sklearn.naive_bayes import MultinomialNB
>>> from sklearn.preprocessing import Binarizer
>>> make_pipeline(Binarizer(), MultinomialNB()) 
Pipeline(steps=[('binarizer', Binarizer(copy=True, threshold=0.0)),
                ('multinomialnb', MultinomialNB(alpha=1.0,
                                                class_prior=None,
                                                fit_prior=True))])

Die Schätzer in der Pipeline werden als Liste im Attribut "Schritte" gespeichert.

>>> pipe.steps[0]
('reduce_dim', PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False))

Auch als dict to named_steps:

>>> pipe.named_steps['reduce_dim']
PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,
  svd_solver='auto', tol=0.0, whiten=False)

Auf geschätzte Parameter in der Pipeline kann mit der Syntax <estimator> __ <parameter> zugegriffen werden.

>>> pipe.set_params(clf__C=10) 
Pipeline(steps=[('reduce_dim', PCA(copy=True, iterated_power='auto',
    n_components=None, random_state=None, svd_solver='auto', tol=0.0,
    whiten=False)), ('clf', SVC(C=10, cache_size=200, class_weight=None,
    coef0=0.0, decision_function_shape=None, degree=3, gamma='auto',
    kernel='rbf', max_iter=-1, probability=False, random_state=None,
    shrinking=True, tol=0.001, verbose=False))])

Dies ist besonders wichtig bei der Rastersuche.

>>> from sklearn.model_selection import GridSearchCV
>>> params = dict(reduce_dim__n_components=[2, 5, 10],
...               clf__C=[0.1, 10, 100])
>>> grid_search = GridSearchCV(pipe, param_grid=params)

Einzelne Schritte werden ebenfalls als Parameter ersetzt, nicht endgültige Schritte werden ignoriert und auf "Keine" gesetzt.

>>>
>>> from sklearn.linear_model import LogisticRegression
>>> params = dict(reduce_dim=[None, PCA(5), PCA(10)],
...               clf=[SVC(), LogisticRegression()],
...               clf__C=[0.1, 10, 100])
>>> grid_search = GridSearchCV(pipe, param_grid=params)

--Beispiel:

4.1.1.2. Hinweise

Das Aufrufen von "fit" in der Pipeline entspricht dem Aufrufen von "fit" für jeden Schätzer, wobei die Eingabe transformiert und an den nächsten Schritt übergeben wird. Die Pipeline verfügt über alle Methoden, über die der letzte Schätzer in der Pipeline verfügt. Das heißt, wenn der letzte Schätzer ein Klassifizierer ist, kann die Pipeline als Klassifizierer verwendet werden. Wenn der letzte Schätzer ein Konverter ist, ist dies auch die Pipeline.

4.1.2. FeatureUnion: Zusammengesetzter Feature-Space

FeatureUnion kombiniert mehrere Konverterobjekte mit ihrer Ausgabe. Mit einem neuen Konverter kombinieren. FeatureUnion erstellt eine Liste der Konverterobjekte. Während der Anpassung passt jede dieser Daten einzeln zu den Daten. Um die Daten zu transformieren, werden die Transformationen parallel angewendet und die von ihnen ausgegebenen Abtastvektoren werden Ende-zu-Ende in große Vektoren verkettet. FeatureUnion dient demselben Zweck wie Pipeline-Komfort und gemeinsame Parameterschätzung und -validierung. Sie können Feature Union und Pipelines kombinieren, um komplexe Modelle zu erstellen. (FeatureUnion kann nicht überprüfen, ob zwei Transformationen dasselbe Feature erzeugen. Nur wenn die Feature-Sets nicht verbunden sind, wird nur eine Union generiert und sichergestellt, dass der Anrufer dafür verantwortlich ist.)

4.1.2.1. Verwendung

FeatureUnions werden unter Verwendung einer Liste von (Schlüssel, Wert) Paaren erstellt. Wobei "Schlüssel" der Name ist, den Sie der Konvertierung geben (er funktioniert nur als beliebige Zeichenfolge, Kennung). value ist ein Schätzobjekt.

>>> from sklearn.pipeline import FeatureUnion
>>> from sklearn.decomposition import PCA
>>> from sklearn.decomposition import KernelPCA
>>> estimators = [('linear_pca', PCA()), ('kernel_pca', KernelPCA())]
>>> combined = FeatureUnion(estimators)
>>> combined 
FeatureUnion(n_jobs=1, transformer_list=[('linear_pca', PCA(copy=True,
    iterated_power='auto', n_components=None, random_state=None,
    svd_solver='auto', tol=0.0, whiten=False)), ('kernel_pca',
    KernelPCA(alpha=1.0, coef0=1, copy_X=True, degree=3,
    eigen_solver='auto', fit_inverse_transform=False, gamma=None,
    kernel='linear', kernel_params=None, max_iter=None, n_components=None,
    n_jobs=1, random_state=None, remove_zero_eig=False, tol=0))],
    transformer_weights=None)

Feature-Unions erfordern wie Pipelines keine explizite Benennung der Komponenten make_union Es gibt einen prägnanten Konstruktor namens .pipeline.make_union.

>>> combined.set_params(kernel_pca=None) 
FeatureUnion(n_jobs=1, transformer_list=[('linear_pca', PCA(copy=True,
      iterated_power='auto', n_components=None, random_state=None,
      svd_solver='auto', tol=0.0, whiten=False)), ('kernel_pca', None)],
    transformer_weights=None)

Ähnlich wie bei der Pipeline werden einzelne Schritte durch "set_params" ersetzt und ignoriert, wenn sie auf "None" gesetzt werden.

--Beispiel:


[scikit-learn 0.18 Benutzerhandbuch 4. Datensatzkonvertierung](http://qiita.com/nazoking@github/items/267f2371757516f8c168#4-%E3%83%87%E3%83%BC%E3%82%BF % E3% 82% BB% E3% 83% 83% E3% 83% 88% E5% A4% 89% E6% 8F% 9B)

© 2010 - 2016, Entwickler von Scikit-Learn (BSD-Lizenz).

Recommended Posts

[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.1. Pipeline- und Feature-Union: Kombination von Schätzern
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.7. Erkennung von Neuheiten und Ausreißern
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.2 Merkmalsextraktion
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.13 Funktionsauswahl
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch Inhaltsverzeichnis
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.2. Optimieren der Hyperparameter des Schätzers
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.1. Kreuzvalidierung: Bewerten Sie die Leistung des Schätzers
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.5. Zufällige Projektion
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.11. Ensemble-Methode
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.16. Wahrscheinlichkeitskalibrierung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.8. Dichteschätzung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.3. Datenvorverarbeitung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.3. Modellbewertung: Quantifizieren Sie die Qualität der Vorhersage
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 4.4. Unüberwachte Dimensionsreduzierung
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 1.4. Support Vector Machine
Pandas Benutzerhandbuch "Zusammenführen und Verbinden und Verketten" (offizielles Dokument Japanische Übersetzung)
Kombination von rekursiv und Generator
Kombination von anyenv und direnv
[Übersetzung] scikit-learn 0.18 Tutorial Inhaltsverzeichnis
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 3.5. Verifizierungskurve: Zeichnen Sie die Punktzahl, um das Modell zu bewerten
[Übersetzung] scikit-learn 0.18 Benutzerhandbuch 2.5. Zerlegen von Signalen in Komponenten (Matrixzerlegungsproblem)