2016-04-14 6 views
0

Ich kann Sequentialfs Funktion verwenden, um die SFS mit Zwei-Klassen-SVM zu berechnen. (bedeutet die binäre Ausgabe [0 1])Wie SFS (Sequential Feature-Auswahl) mit "multiple class" SVM zu berechnen?

unten ist mein Code:

%% x=features, y=binary response. 
c = cvpartition(y,'k',10); 
opts = statset('display','iter'); [fs,history] = sequentialfs(fun,x,y,'cv',c,'options',opts) 

function err = SVM_class_fun(xTrain, yTrain, xTest, yTest) 
model = svmtrain(xTrain,yTrain,'Kernel_Function','polynomial','polyorder',2, 'boxconstraint', 1); 
err = sum(svmclassify(model, xTest) ~= yTest); end 

Meine Frage ist, wie SFS zu berechnen, wenn y nicht binär ist.

Ich kann es nicht erfolgreich arbeiten.

Antwort

0

Ich denke, Ihr Problem ist, dass die svmtrain nur für binäre Klassifizierung ist. Wenn Sie die Fehlermeldung erhalten, die Sie erhalten, wenn y nicht binär ist, dann könnten wir wissen.

Es gibt verschiedene Implementierungen von Multi-Class-SVM in Matlab einschließlich:

(1) This aus dem Dateiaustausch, die offenbar eine Syntax ähnlich wie svmtrain verwendet, (2) and this von Mathworks selbst, die verwendet eine leicht unterschiedliche Struktur.

Ich habe es nicht persönlich verwendet, aber ich würde mit (1) beginnen, da die Syntax genau das gleiche wie svmtrain ist, aber es mag die Kernel und Boundary-Optionen, die Sie verwenden, fehlen. Viel Glück!

+0

jetzt habe ich die Funktion für svm, die "fitcecoc" ist, ausgetauscht, aber die kompilierte Antwort war nicht gute Leistung, und ich kann nicht sicher sein, die Antwort richtig sein, –