2017-12-12 5 views
0

In Kapitel 7 dieses Buches "TensorFlow Machine Learning Cookbook" der Autor in Verarbeitung von Daten fit_transform Funktion von scikit lernen, tfidf Features des Textes für das Training zu bekommen. Autor gibt alle Textdaten vor dem Trennen von Zug und Test zur Funktion. Ist es eine echte Aktion oder müssen wir die Daten zuerst trennen und dann tfidf fit_transform auf Zug und transform auf Test durchführen?tfidf auf allen Datensatz oder auf Trainingsdaten

+1

Wenn Sie in solchen Szenarien immer denken, was in real-world Problem getan werden sollte. Dort behandeln Sie alle verfügbaren Daten als Zug und neue ungesehene Daten als Test. Jetzt, da die Testdaten in einem solchen Fall nicht verfügbar sind, was würden Sie tun. Der Prozess der Aufteilung der verfügbaren Daten in Zug und Test besteht darin, dieselben zu replizieren. –

+1

@Vivek Kumar Ja, in der Tat meinen Sie, dass der Ansatz von fit_transform auf alle Daten nicht wahr ist, weil wir keine Daten in realen Problemen testen. – keramat

+0

Ja. Passen Sie also nur fit() oder fit_transform() an Zugdaten an. –

Antwort

1

Ich habe das Buch nicht gelesen und bin mir nicht sicher, ob das tatsächlich ein Fehler im Buch ist, aber ich werde meine 2 Cent geben.

Gemäß der Dokumentation von Scikit-Learn, fit() wird, um

verwendet

Vokabeln lernen und idf von Trainingssatz.

Auf der anderen Seite, fit_transform() um

zu

verwendet wird Vokabeln lernen und idf, Begriff-Dokument-Matrix zurück.

während transform()

Dokumente zu dokumentieren Zeit Matrix Wandelt zu.

Auf der Ausbildung legen Sie beide fit() und transform() (oder nur fit_transform(), die beide Operationen schließt sich im Wesentlichen) anwenden müssen jedoch auf die Testinstanzen transform() die Tests müssen Sie nur dann gesetzt (das heißt die Dokumente). Denken Sie daran,

dass Trainingssätze zu Lernzwecken verwendet werden (Lernen durch fit() erreicht wird), während Set-Prüfung verwendet wird, um zu beurteilen, ob das gelernte Modell Datenpunkte gut an neuen ungesehen verallgemeinern kann.

+0

Ja, das stimmt, wir sollten Testdaten nicht im Training verwenden. Wenn wir den gesamten Datensatz anpassen, bedeutet dies, dass wir Testdaten auf Trainingsebene verwenden. Auch das resultierende Vokabular ist auf diese zwei Arten unterschiedlich. – keramat