Мультикласс с использованием LIBSVM - PullRequest
1 голос
/ 24 января 2012

У меня мультиклассовая классификация svm (6 класс).Я хотел бы классифицировать его с помощью LIBSVM.Ниже приведены те, которые я пробовал, и у меня есть несколько вопросов относительно них.

Method1 (один против одного):

model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00154 -b 0.9');
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model);

Два вопроса об этом методе: 1) это все, что мне нужно сделать для задачи мультикласса 2) какое значение должно быть для n в'-б н'.Я не уверен,

Метод 2 (один против отдыха):

u=unique(TrainLabel); 
N=length(u); 
if(N>2)    
    itr=1;    
    classes=0;   
    while((classes~=1)&&(itr<=length(u)))   
        c1=(TrainLabel==u(itr));    
        newClass=double(c1); 
        tst = double((TestLabel == itr));
        model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154');  
        [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);    
        itr=itr+1;   
    end
    itr=itr-1;
end

Для второго метода, как мне прикрепить классификационные оценки.Я не могу голосовать.

Кроме того, это два метода, которые я попробовал.Какой метод лучше?

Хотелось бы услышать некоторые комментарии.Пожалуйста, поправьте меня, если я ошибаюсь.

1 Ответ

3 голосов
/ 25 января 2012

Относительно параметра '-b' в LIBSVM README говорится:

-b Вероятность_оценки: обучать ли модель SVC или SVR оценкам вероятности, 0 или 1 (по умолчанию 0)

Следовательно, вы должны указать '-b 1', если вы хотите, чтобы обученная модель возвращала вероятности класса, и '-b 0', если вы этого не сделаете.Вам нужно всего лишь позвонить svmtrain один раз.Кроме того, если вы указываете «-b 1» для обучения, вы также должны указать его для прогнозирования.

...