Während libsvm Werkzeuge zum Skalieren von Daten bietet, mit Scikit-Learn (das auf libSVM für den SVC-Klassifikator basieren sollte), finde ich keine Möglichkeit, meine Daten zu skalieren.Skalieren von Daten in scikit-learn SVM
Grundsätzlich möchte ich 4 Funktionen verwenden, von denen 3 von 0 bis 1 reichen und die letzte ist eine "große" stark variable Zahl.
Wenn ich das vierte Feature in libSVM einfüge (mit dem Skript easy.py, das meine Daten automatisch skaliert), bekomme ich einige sehr schöne Ergebnisse (96% Genauigkeit). Wenn ich die vierte Variable in Scikit-Learn einfüge, sinkt die Genauigkeit auf ~ 78% - aber wenn ich sie ausschließe, erhalte ich die gleichen Ergebnisse wie in libSVM, wenn ich diese Funktion ausschließe. Daher bin ich mir ziemlich sicher, dass es ein Problem der fehlenden Skalierung ist.
Wie repliziere ich programmgesteuert (d. H. Ohne Aufruf von SVM-Scale) den Skalierungsprozess von SVM?
Gut zu wissen, danke. Soll ich die Testdaten zusammen mit den Zugdaten vereinheitlichen und anschließend zerlegen oder sollte ich Testdaten nur selbst durchführen? – luke14free
Das wird in der [Dokumentation] (http://scikit-learn.org/stable/modules/preprocessing.html#standardization- or- me- removal-and-variance-scaling) erwähnt. Ich schätze, du solltest es separat machen, sonst würden die Trainingsdaten von den Testproben beeinflusst werden. Mit der Klasse "Scaler" können Sie den Mittelwert und die Standardabweichung der Trainingsdaten berechnen und dann die gleiche Transformation auf die Testdaten anwenden. – Maehler
Sie sollten dafür einen 'Scaler' verwenden, nicht die freistehende Funktion' scale'. Ein "Scaler" kann in eine "Pipeline", z. 'scaling_svm = Pipeline ([(" scaler ", Scaler()), (" svm ", SVC (C = 1000))])'. –