2016-07-19 12 views
0

Vom documentation I alles bereit lesen:Für was ist nützlich scikit-lernen FunctionTransformer?

A FunctionTransformer seine X leitet (und optional y) Argumente auf eine benutzerdefinierte Funktion oder Funktionsobjekt und gibt das Ergebnis der diese Funktion. Dies ist nützlich für staatenlos Transformationen wie das Protokoll der Frequenzen nehmen, individuelle Skalierung zu tun, usw.

Allerdings verstehe ich nicht, was kann diese Funktion nützlich sein. Kann jemand den Zweck dieser Funktion erklären?

+1

Ein Anwendungsfall, an den ich denken könnte: Fügen Sie eine * zustandslose Transformation * hinzu, wie das Skalieren auf eine nicht einfache Pipeline (z. B. Dimensionsreduktion -> Klassifizierer innerhalb der Kreuzvalidierung). Diese abstrakte Funktion sollte die für diese Pipeline erforderliche Schnittstelle (Fit, Transform und Co) bereitstellen, ohne dass Sie dies selbst schreiben müssen. – sascha

Antwort

1

Neben einfach eine bestimmte benutzerdefinierte Funktion Umwickeln die FunctionTransformer einige Standardverfahren der anderen sklearn Schätzern liefert (z.B. fit und transform). Der Vorteil davon ist, dass Sie beliebige, zustandslose Transformationen in einen Sklearn Pipeline einführen können, der mehrere Verarbeitungsstufen kombiniert. Dies erleichtert das Ausführen einer Verarbeitungspipeline, da Sie Ihre Daten (X) einfach an die fit- und transform-Methoden des Objekts Pipeline übergeben können, ohne jede Stufe der Pipeline einzeln explizit anwenden zu müssen. Hier

ist ein Beispiel direkt aus der sklearn Dokumentation kopiert (befindet here):

def all_but_first_column(X): return X[:, 1:] def drop_first_component(X, y): """ Create a pipeline with PCA and the column selector and use it to transform the dataset. """ pipeline = make_pipeline( PCA(), FunctionTransformer(all_but_first_column), ) X_train, X_test, y_train, y_test = train_test_split(X, y) pipeline.fit(X_train, y_train) return pipeline.transform(X_test), y_test

Beachten Sie, dass die erste Hauptkomponente nicht explizit aus den Daten entfernt wurde. Die Pipeline kettet die Transformationen automatisch zusammen, wenn pipeline.transform aufgerufen wird.

+0

Danke für die Hilfe. Könnten Sie ein Beispiel geben? – tumbleweed

+0

@ml_student Siehe das Beispiel, das ich meiner Antwort hinzugefügt habe. – bogatron

+0

Danke für die Hilfe! – tumbleweed

1

Here ist ein schönes Beispiel. Es ist wirklich, was es sagt: gegeben X Eingabe, wendet es Ihre Funktion auf X an und gibt das Ergebnis zurück. Der wichtigste Teil davon ist seine Staatenlosigkeit. Here und here können Sie finden, was Staatenlosigkeit ist und here können Sie eine Diskussion über ihre Vorteile lesen.