Fitting Daten vs. transformieren von Daten in scikit-learn
In scikit-learn, alle Schätzer haben eine fit()
Methode, und je nachdem, ob Sie werden beaufsichtigt oder unbeaufsichtigt, Sie haben auch eine predict()
oder transform()
Methode.
Ich bin in den Prozess des Schreibens ein Transformator für ein unüberwachtes lernen Aufgabe und Frage mich, ob es eine Faustregel, wo welche Art des Lernens Logik. Die offizielle Dokumentation ist nicht sehr hilfreich in diesem Zusammenhang:
fit_transform(X, y=None, **fit_params)
Fit auf die Daten, dann verwandeln.
In diesem Zusammenhang, was gemeint ist mit beiden fitting Daten und die Umwandlung von Daten?
- Ist es wahr, dass "je nachdem, ob Sie werden beaufsichtigt oder unbeaufsichtigt, Sie haben auch ein predict ()) oder transform () - Methode". Ist erklärt, dass in docs irgendwo? Scheint, dass die meisten Modelle haben beide Methoden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Passend findet die internen Parameter von einem Modell, das verwendet wird, um Daten zu transformieren. Die Umwandlung gilt der Parameter an die Daten. Sie können die Passform ein Modell, zu einem Satz von Daten, und dann verwandeln Sie es auf ein völlig anderes set.
Zum Beispiel, Sie passen ein lineares Modell zu den Daten zu bekommen, eine Steigung und Achsenabschnitt. Dann verwenden Sie diese Parameter zu transformieren (D. H., anzeigen) neuen oder bereits vorhandenen Werte der
x
zuy
.fit_transform
ist gerade dabei die beiden Schritte auf die gleichen Daten.Einen scikit Beispiel: Sie passen die Daten zu finden, die die wichtigsten Komponenten. Dann verwandeln Sie Ihre Daten, um zu sehen, wie Sie Karten auf die folgenden Komponenten:
PLSRegression
als ein Beispiel. Es hat sowohltransform
undpredict
Methoden.predict(X)
gilt, das Gelernte Modell zuX
und zurücky_pred
.transform(X)
gilt dimensionsreduktion zuX
und zurückX_reduced
.transform(X, y)
gibt die beidenX_reduced
undy_pred
Anderen Antworten erklären, es
fit
nicht brauchen, um etwas zu tun, (außer von der Rückkehr der transformer-Objekt). Es ist es so, dass alle Transformatoren die gleiche Schnittstelle und funktionieren gut mit Sachen wie Rohrleitungen.Natürlich werden einige Transformatoren benötigen eine
fit
Methode (denke, tf-idf, PCA,...), die tatsächlich etwas tut.Die
transform
Methode zurückgeben muss, die transformierten Daten.fit_transform
ist eine bequeme Methode, die Ketten, die Passform und die transform-Operationen. Sie können es kostenlos zu bekommen (!) durch Ableitung Ihrer benutzerdefinierten Transformator Klasse ausTransformerMixin
und Umsetzungfit
undtransform
.Hoffe, das klärt es ein bisschen.
In diesem Fall den Aufruf der
fit
Methode tut nichts. Wie Sie sehen können, in dieses Beispiel, nicht alle Transformatoren müssen, um wirklich etwas zu tun mitfit
odertransform
Methoden. Meine Vermutung ist, dass jede Klasse in scikit-learn implementieren sollte das passen, transformieren und/oder Vorhersagen, damit es konsistent mit dem rest des Pakets. Aber ich denke, das ist in der Tat ziemlich übertrieben.