1

マルチクラスのsvm分類(6クラス)があります。LIBSVMを使って分類したいと思います。以下は私が試したものであり、それらに関していくつか質問があります。

方法1(1対1):

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

この方法に関する2つの質問:1)マルチクラス問題に対して行う必要があるのは2)'-bn'のnの値はどうあるべきかということです。わからない

方法2(1対残り):

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

2番目の方法では、分類スコアを添付するにはどうすればよいですか。投票できません。

それ以外に、これらは私が試した2つの方法です。どちらの方法が良いですか?

コメントを聞きたいです。私が間違っている場合は訂正してください。

4

1 に答える 1

3

'-b'パラメーターに関しては、LIBSVMREADMEに次のように記載されています。

-b Probability_estimates:確率推定のためにSVCまたはSVRモデルをトレーニングするかどうか、0または1(デフォルトは0)

したがって、トレーニング済みモデルでクラス確率を返す場合は「-b 1」を指定し、返さない場合は「-b0」を指定する必要があります。一度だけ電話する必要がありますsvmtrain。また、トレーニングに「-b 1」を指定する場合は、予測にも指定する必要があります。

于 2012-01-25T01:16:08.133 に答える