Wie zu normalisieren, die Trainieren und Testen von Daten mit MinMaxScaler sklearn
So, ich habe diese Zweifel und die Suche nach Antworten. Die Frage ist also, wenn ich,
from sklearn import preprocessing
min_max_scaler = preprocessing.MinMaxScaler()
df = pd.DataFrame({'A':[1,2,3,7,9,15,16,1,5,6,2,4,8,9],'B':[15,12,10,11,8,14,17,20,4,12,4,5,17,19],'C':['Y','Y','Y','Y','N','N','N','Y','N','Y','N','N','Y','Y']})
df[['A','B']] = min_max_scaler.fit_transform(df[['A','B']])
df['C'] = df['C'].apply(lambda x: 0 if x.strip()=='N' else 1)
Nach dem ich trainieren und testen des Modells (A
,B
als Funktionen C
als Label) und bekommen eine Genauigkeit Punkten. Nun meine Frage ist, was passiert, wenn ich Vorhersage das Etikett für den neuen Satz von Daten. Sagen,
df = pd.DataFrame({'A':[25,67,24,76,23],'B':[2,54,22,75,19]})
Weil wenn ich Normalisiere die Spalte für die Werte A
und B
wird geändert werden entsprechend der neuen Daten, nicht die Daten, die das Modell trainiert wird.
So, nun meine Daten nach der Aufbereitung der Daten Schritt, dass ist, wie unten, werden.
data[['A','B']] = min_max_scaler.fit_transform(data[['A','B']])
Werte A
und B
ändern wird mit Bezug auf die Max
und Min
Wert von df[['A','B']]
. Die Daten prep von df[['A','B']]
ist mit Respekt zu Min Max
von df[['A','B']]
.
Wie kann die Aufbereitung der Daten gültig ist mit Bezug auf unterschiedliche zahlen beziehen? Ich verstehe nicht, wie die Vorhersage richtig hier.
- Sie wird die Art von den gleichen scaler, wenn Sie möchten, verwenden Sie das trainierte Modell..speichern der scaler und erneut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie passen die
MinMaxScaler
mit dertraining
Daten und wenden Sie dann den scaler auf dietesting
Daten vor der Vorhersage.In der Zusammenfassung:
scaler
auf dieTRAINING data
scaler
zutransform the training data
transformed training data
zufit the predictive model
scaler
zutransform the TEST data
predict
mit dertrained model
und dietransformed TEST data
Beispiel mit deinen Daten:
Beispiel mithilfe der iris-Daten:
Hoffe, das hilft.
df[['A','B']] = min_max_scaler.fit_transform(df[['A','B']])
Hier die minmax-scaler übernimmt die Aufbereitung der Daten mit Hilfe der Formel Xnorm = X-Xmin/Xmax-Xmindf_test[['A','B']] = min_max_scaler.transform(df_test[['A','B']])
Hier ist Es jedoch nicht verwenden, die Formel, wie genau sind die Daten skaliert hier? mit welcher Formel? Die Ausgabe für die oben ist,df_test= pd.DataFrame({'A':[25,67,24,76,23],'B':[2,54,22,75,19]})
df_test[['A','B']]=min_max_scaler.transform(df_test[['A','B']])
istA = [1.60,4.40,1.53,5.00,1.46] B = [-0.125,3.125,1.125,4.437,0.937]
Wie werden die Daten skalieren, was hier passiert? Weil es nicht mit Xnorm = X-Xmin/Xmax-Xmin die Formel für die Daten zu skalieren.X_min
undX_max
aus dem Trainings-set (die, die verwendet wurde, um zu passenmin_max_scaler
)Xmin
undXmax
berechnet werden, aus der trainingsmenge, dann die Trainings-Daten werden normalisiert und schließlich die gleichen Werte verwendet werden, um eine Normalisierung der Testdaten.y_pred = model.predict(X_test_scaled)
, sollte es nicht?Beste Weg ist, trainieren und speichern MinMaxScaler Modell und laden Sie die gleichen, wenn es erforderlich ist.
Speichern Modell:
Laden des gespeicherten Modell: