2012-04-12 10 views

Odpowiedz

19

Tak to zrobiłem here. Jeśli dobrze pamiętam, jest to oparte na tym, jak działa optymalizacja SVM dual form.

model = svmtrain(...); 
w = (model.sv_coef' * full(model.SVs)); 

I stronniczość jest (i naprawdę nie pamiętam, dlaczego jego ujemny):

bias = -model.rho; 

Następnie zrobić klasyfikacji (dla liniowego SVM), na N-by-M „funkcje” DataSet przypadkach N i funkcji M,

predictions = sign(features * w' + bias); 

Jeśli jądro nie jest liniowy, to nie dać właściwą odpowiedź. Aby uzyskać więcej informacji, patrz How could I generate the primal variable w of linear SVM?, z instrukcji biblioteki libsvm.

+0

A jak dokładnie używam ich do ręcznej klasyfikacji? Mówię o przypadku 2 klas. – Trup

+0

Zmieniłem moje pytanie, aby wyjaśnić, chociaż nie ma sensu robić tego ... to zwróci dokładnie taki sam wynik jak 'probs' w' [guess, acc, probs] = svmpredict (...); '. – Richante

+0

Nie, to tak naprawdę nie zwróciło tego samego wyniku, zwraca tylko -1s. Wiem, że to nie ma sensu, ale chciałbym się upewnić, że jest poprawny, a następnie po prostu użyję wag w oddzielnej aplikacji, aby "ręcznie" wykonać klasyfikację bez jawnego wykonywania jakichkolwiek rzeczy SVM. Wielkie dzięki, to naprawdę wąskie gardło w moim projekcie. Czy możesz to sprawdzić i zobaczyć, gdzie jest błąd? – Trup

Powiązane problemy