2016-04-26 1 views
0

Ich habe ein Modell, das ich mit zwei Datensätzen verwende, Training & Testen. Ich muss die Prädiktoren vor dem Erstellen eines Modells mit scikit-learn normalisieren.Wie normalisiert man die Vorhersagedaten in einem zweiten Testdatensatz mit sigma/mu im Training?

Lets für mein Modell Trainingsdaten sagen:

Training[X1] has mean=10,stddev=1.5 
    Training[X2] has mean=45,stddev=17 
    etc... 

Und meine für die Testdatendatei

Testing[X1] has mean=9,stddev=1.8 
    Testing[X2] has mean=40,stddev=13 
    etc... 

Wie kann ich die Testdatendatei normalisieren, so dass es den gleichen Maßstab wie das Original mit Datensatz?

ich versucht, diesen Code verwenden, aber es scheint nicht richtig auf den ersten Blick aussehen:

from sklearn.preprocessing import StandardScaler 
scaler = StandardScaler() 
scaler.fit(X_train) 
X_train = scaler.transform(X_train) 
X_test = scaler.transform(X_test) 

Antwort

0

Der vorliegende Code ist der richtige Ansatz, Sie passen mittlere/std während der Ausbildung und später nur verwenden es während der Testphase. Die Tatsache, dass mu/sigma zwischen Zug und Test unterschiedlich ist, ist normal und man muss damit umgehen. Der einzige Grund für eine solche Situation ist ein zu kleiner Datensatz. Bei genügend Datenpunkten würden diese beiden Werte konvergieren (unter der Annahme, dass Daten korrekt erfasst werden).

+0

Richtig, mein Testdatensatz (weniger als 1k Datensätze) ist im Vergleich zum Trainingssatz (65k Datensätze) ziemlich klein. Danke für die Bestätigung, ich muss genauer in das Modell schauen, um zu sehen, ob etwas anderes schief ist. – NumericOverflow