Ja, Sie müssen Normalisierung auf Testdaten anwenden, wenn Ihr Algorithmus mit normalisierten Trainingsdaten arbeitet oder diese benötigt *.
Das liegt daran, dass Ihr Modell mit der durch seine Eingabevektoren gegebenen Darstellung arbeitet. Die Skala dieser Zahlen ist Teil der Darstellung. Dies ist ein bisschen wie das Umrechnen zwischen Fuß und Metern. . . Ein Modell oder eine Formel würde normalerweise nur mit einem Einheitentyp funktionieren.
Sie benötigen nicht nur eine Normalisierung, sondern sollten auch genau die gleiche Skalierung wie für Ihre Trainingsdaten anwenden. Das bedeutet, dass Sie die Skala und den Versatz, die Sie für Ihre Trainingsdaten verwendet haben, speichern und wieder verwenden müssen. Ein häufiger Anfängerfehler besteht darin, Ihre Zug- und Testdaten separat zu normalisieren.
In Python und SKLearn können Sie Ihre Eingabe- / X-Werte mit dem Standard-Skalierer wie folgt normalisieren :
scaler = StandardScaler()
train_X = scaler.fit_transform( train_X )
test_X = scaler.transform( test_X )
Beachten Sie, wie sich die Konvertierung der train_X
Verwendung einer Funktion, die passt (berechnet die Parameter), normalisiert. Während dertest_X
Konvertierung nur umwandelt, werden dieselben Parameter verwendet, die sie aus den Zugdaten gelernt hat.
Die von Ihnen angewendete tf-idf-Normalisierung sollte ähnlich funktionieren, da sie einige Parameter aus dem gesamten Datensatz (Häufigkeit der Wörter in allen Dokumenten) sowie die in jedem Dokument enthaltenen Verhältnisse ermittelt.
* Einige Algorithmen (z. B. solche, die auf Entscheidungsbäumen basieren) benötigen keine normalisierten Eingaben und können mit Funktionen mit unterschiedlichen Maßstäben umgehen.