2016-04-13 7 views
1

Hallo Ich bin ziemlich neu im maschinellen Lernen mit Scikit-lernen, aber ich habe eine Frage.Sklearn - SVM gewichtete Funktionen

Ist es möglich, SVM einige Merkmale meiner Vektordaten mit höherer Wichtigkeit oder Gewicht zu erkennen. Ich weiß nicht, die richtige therm:/

Hier ist Beispiel dafür, was ich will:

Lasst uns sagen, dass wir Haufen vecotrs in 2D-Array haben:

dt = [ 
[x1, y1, z1, q1], 
[x2, y2, z2, q2], 
[x3, y3, z3, q3], 
[x4, y4, z4, q4]] 

und Zieldatenvektor:

Was ich wissen möchte, wie kann ich zum Beispiel alle q Funktionen für jeden der Vektoren in dt wichtiger als der Rest der Funktionen machen.

Ich weiß, wie man Daten nach Sätzen ausgleicht oder sample_weight setzt, aber keiner kann mir mit diesem Problem helfen.

Prost

Antwort

1

wenn Sie sklearn.svm.SVC zur Klassifizierung verwenden Sie coef_ atribute des Klassifikator Objekt zugreifen können. Zum Beispiel:

classifier = SVC(C=1.0, kernel='linear', random_state=241) 
classifier.fit(dt, target) 
coef = classifier.coef_ # here the weights of the features will be stored 

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html - Dokumentation für weitere Details.

+0

Ok Ich verstehe jetzt, wie man auf Daten zugreift, die Gewichtseigenschaften darstellen, aber gibt es eine Weise, die ich sie ändern kann. Die Dokumentation besagt eindeutig, dass coef_ eine Readonly-Eigenschaft ist. Ich möchte meinen Klassifikator dazu bringen, einige der Funktionen wichtiger mit Gewalt zu nehmen. – Domagoj

+1

Ich kann eine Annahme nur ohne Verwendung der Bibliothek ausdrücken. SVM - es ist lineare Methode und es ist empfindlich auf Funktionen skaliert. Sie können StandartScaler (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html) verwenden, um sie an eine Skalierung anzupassen (nicht notwendig, aber manchmal kann dies die Effizienz Ihrer Algorithmus). Dann können Sie Ihre Trainingsdaten selbst vorverarbeiten und alle Funktionen, die Sie als nicht wichtig ansehen, mit coef <1 skalieren (vergessen Sie nicht, diese zu speichern, um diese Skalierung auf die Testgruppe oder reale Daten anzuwenden). Sie brauchen mehr Experimente :) – mrEvgenX

+0

Danke Ich werde diesen Ansatz versuchen – Domagoj