Wir haben unser Sklearn von dem alten 0,13-Git auf 0,14.1 aufgerüstet und fanden heraus, dass sich die Leistung unseres logistischen Regressionsklassifikators ziemlich geändert hat. Die beiden Klassifizierer, die mit denselben Daten trainiert werden, haben unterschiedliche Koeffizienten und ergeben daher oft unterschiedliche Klassifikationsergebnisse.Verschiedene Versionen von Sklearn geben ziemlich unterschiedliche Trainingsergebnisse
Als Experiment verwendete I 5 Datenpunkte (high dimensional) die LR-Klassifikator zu trainieren, und die Ergebnisse sind:
0,13-git:
clf.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', tol=0.0001)
np.sort(clf.coef_)
array([[-0.12442518, -0.11137502, -0.11137502, ..., 0.05428562,
0.07329358, 0.08178794]])
0.14.1:
clf1.fit(data_test.data, y)
LogisticRegression(C=10, class_weight='auto', dual=False, fit_intercept=True,
intercept_scaling=1, penalty='l2', random_state=None, tol=0.0001)
np.sort(clf1.coef_)
array([[-0.11702073, -0.10505662, -0.10505662, ..., 0.05630517,
0.07651478, 0.08534311]])
Ich würde sagen, der Unterschied ist ziemlich groß, im Bereich von 10^(- 2). Offensichtlich sind die Daten, die ich hier verwendet, nicht ideal, weil die Dimensionalität der Merkmale viel größer ist als die Anzahl der Einträge. In der Praxis ist dies jedoch häufig der Fall. Hat es etwas mit der Auswahl von Features zu tun? Wie kann ich die Ergebnisse so machen wie zuvor? Ich verstehe, dass die neuen Ergebnisse nicht unbedingt schlechter sind als vorher, aber jetzt liegt der Fokus darauf, sie so konsistent wie möglich zu machen. Danke.
In Ihrer 0.13.1 haben Sie nicht 'random_state = None', ist das ein Tippfehler? – EdChum
Version 0.13 hat diesen Parameter nicht. In 0.14.1 habe ich auch versucht, random_state = 0 zu setzen, und das Ergebnis ist dasselbe wie random_state = None. – ymeng
Es lohnt sich, die Dokumente zu überprüfen, da es manchmal Bugfixes in verschiedenen Versionen gibt. – EdChum