So che LIBSVM consente solo la classificazione uno contro uno quando si tratta di SVM multi-classe. Tuttavia, mi piacerebbe modificarlo un po 'per eseguire una classificazione univoca. Ho provato a eseguire uno contro tutti sotto. È questo l'approccio corretto?SVM multi-classe (uno contro tutti)
Il codice:
TrainLabel;TrainVec;TestVec;TestLaBel;
u=unique(TrainLabel);
N=length(u);
if(N>2)
itr=1;
classes=0;
while((classes~=1)&&(itr<=length(u)))
c1=(TrainLabel==u(itr));
newClass=c1;
model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00154');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);
itr=itr+1;
end
itr=itr-1;
end
avrei potuto fare qualche errore. Mi piacerebbe sentire un feedback. Grazie.
Seconda parte: Come il moscone ha detto: Ho bisogno di fare Sum-pooling (o voto come soluzione semplificata) per fornire la risposta finale. Non sono sicuro di come farlo. Ho bisogno di aiuto su di esso; Ho visto il file Python ma non sono ancora molto sicuro. Ho bisogno di aiuto.
Qual è la domanda esattamente? Stai chiedendo come eseguire la classificazione one-vs-all con LibSVM? Il programma produce il risultato che ti aspettavi? A proposito, i parametri LibSVM dovrebbero essere ''-c 1 -g 0.00153'' (mancava la virgoletta singola finale). – grapeot
ho modificato la domanda ... – lakesh
@lakesh: Ho postato una risposta a una domanda simile, potresti trovare utile: http://stackoverflow.com/a/9049808/97160 – Amro