Wiem, że LIBSVM pozwala tylko na klasyfikację jeden vs w przypadku wielopoziomowej SVM. Chciałbym jednak nieco go zmodyfikować, aby wykonać klasyfikację jeden-na-wszystkie. Próbowałem wykonać jeden przeciwko wszystkim poniżej. Czy to jest właściwe podejście?SVM wielopoziomowy (jeden w porównaniu do wszystkich)
Kod:
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
mógłbym zrobić kilka błędów. Chciałbym usłyszeć jakąś opinię. Dzięki.
Druga część: Jako grapeot powiedział: Muszę zrobić Sumowanie (lub głosowanie jako uproszczone rozwiązanie), aby wymyślić ostateczną odpowiedź. Nie jestem pewien, jak to zrobić. Potrzebuję trochę pomocy; Widziałem plik Pythona, ale nadal nie jestem pewien. Potrzebuję pomocy.
Jakie jest dokładnie pytanie? Pytasz, jak wykonać klasyfikację jeden do wszystkich z LibSVM? Czy program wyprowadza oczekiwany rezultat? BTW, parametry LibSVM powinny wynosić '-c 1 -g 0,00153'' (brakowało ci pojedynczej oferty końcowej). – grapeot
Mam edytować pytanie ... – lakesh
@lakesh: Wysłałem odpowiedź na podobne pytanie, może się okazać przydatne: http://stackoverflow.com/a/9049808/97160 – Amro