Sklearn SVM: SVR und SVC, immer die gleiche Vorhersage für jeden Eingang.
Hier ist ein einfügen der code: SVM-sample-code
Ich habe ein paar von den anderen Antworten auf dieses problem...und es scheint, wie diese bestimmte iteration das problem ist ein bisschen anders.
First off, meine Eingänge sind normalisiert, und ich habe fünf Eingängen pro Punkt. Die Werte sind alle ziemlich große (gesunde 0,5 s und 0,7 s etc-paar in der Nähe von null oder nahe 1 zahlen).
Habe ich etwa 70 x Eingänge entsprechend Ihrer 70 y-Eingänge ein. Die y-Eingänge sind ebenfalls normalisiert (Sie sind prozentuale Veränderungen der Funktion nach jedem Zeit-Schritt).
Initialisiere ich meine SVR (und SVC), Sie zu trainieren, und dann testen Sie mit 30 out-of-sample-Eingänge...und die genau die gleiche Vorhersage für jeden Eingang (und die Eingaben ändern, indem Sie angemessene Mengen--0.3, 0.6, 0.5, etc.). Ich würde denken, daß der Sichter (mindestens) hätte eine Differenzierung...
Hier ist der code den ich habe:
# train svr
my_svr = svm.SVR()
my_svr.fit(x_training,y_trainr)
# train svc
my_svc = svm.SVC()
my_svc.fit(x_training,y_trainc)
# predict regression
p_regression = my_svr.predict(x_test)
p_r_series = pd.Series(index=y_testing.index,data=p_regression)
# predict classification
p_classification = my_svc.predict(x_test)
p_c_series = pd.Series(index=y_testing_classification.index,data=p_classification)
Und hier sind Beispiele meiner Eingänge:
x_training = [[ 1.52068627e-04 8.66880301e-01 5.08504362e-01 9.48082047e-01
7.01156322e-01],
[ 6.68130520e-01 9.07506250e-01 5.07182647e-01 8.11290634e-01
6.67756208e-01],
... x 70 ]
y_trainr = [-0.00723209 -0.01788079 0.00741741 -0.00200805 -0.00737761 0.00202704 ...]
y_trainc = [ 0. 0. 1. 0. 0. 1. 1. 0. ...]
Und die x_test
matrix (5x30) ist ähnlich wie die x_training
matrix in Bezug auf die Größenordnung und Varianz der Eingänge...dasselbe für y_testr
und y_testc
.
Derzeit, die Prognosen für alle tests sind genau die gleichen (0.00596 für die regression, und 1 für die Einstufung...)
Wie bekomme ich den SVR und SVC-Funktionen ausspucken relevanten Vorhersagen? Oder zumindest verschiedene Prognosen auf der Grundlage der Eingänge...
Zumindest, die classifier in der Lage sein sollten, Entscheidungen zu treffen. Ich meine, auch wenn ich noch nicht genug Maße für die regression...
- Sie müssen eine eigenständige, ausführbare Beispiel mit Beispiel-Daten, die eigentlich das problem veranschaulicht.
- Okay. Eine Sekunde (oder etwa 10 min =)
- gibt es einen link zu einem pastebin code. Ich habe die kompletten Daten...
- würden Sie mir helfen, mit dieser Liebe? stackoverflow.com/questions/40357805/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, die Steigerung Ihrer C aus dem Standard. Es scheint, Sie sind underfitting.
p_classification wird dann:
Für die
SVR
Fall, dass Sie wollen auch reduzieren Sie Ihre epsilon.p_regression wird dann:
Sollten Sie schauen, um tunen Sie Ihr C-parameter unter Verwendung der Kreuzvalidierung, so dass es in der Lage ist, um beste Leistung, auf welche Metrik wichtigste für Sie. Möchten Sie vielleicht Blick auf
GridSearchCV
zu helfen, Sie dies tun.GridSearchCV
, dann können Sie entscheiden, ob Sie weitere Daten benötigen.gamma
. Dieser Effekt kann ziemlich dramatisch.Ich hatte das gleiche Problem, aber eine völlig andere Ursache, und daher einen völlig anderen Ort, eine Lösung zu suchen.
Wenn Ihre Vorhersage Eingänge sind falsch skaliert aus irgendeinem Grund, Sie können dieselben Symptome auftreten, finden Sie hier. Dies könnte zu vergessen (oder fehlcodierung) die Skalierung der Eingabewerte in einer späteren Vorhersage, oder aufgrund der Eingaben in der falschen Reihenfolge.
In meinem Fall musste ich skalieren meiner Daten mit der StandardScaler in der sklearn Paket.
Außerdem musste ich skalieren die einzelnen Funktionen unabhängig voneinander in meinem Fall zwei Arten von Entfernungen jedes einzeln skaliert.