![](/img/trans.png)
[英]Probability estimate for multi class classification in libsvm for matlab
[英]Probability outputs of MATLAB LIBSVM
我正在為Matlab使用LIBSVM工具箱。 我的問題是標簽為1(真)和0(假)的二進制分類問題。 當我使用此功能訓練系統時:
svmstruct = svmtrain(TrainTargets, TrainInputs,['-t 2 ' '-g ' SIGMA ' -c ' P ' -q' ' -b 1']);
並使用此功能測試我的測試准確性:
[TestOutputs, ~, ~] = svmpredict(TestTargets, TestInputs, svmstruct,'-b 1 -q');
現在,我想使用指定的SVM模型輸出樣本數據。 所以我使用這個功能:
[OUT, ~, Prob_Out] = svmpredict(zeros(size(Outsample_DATA,1),1), Outsample_DATA, svmstruct,'-q -b 1');
對於我的第一個訓練模型(我訓練了具有不同參數的SVM模型),我具有以下輸出(在兩種情況下,Out樣本數據集都相同):[Prob_Out OUT]
0.8807 0.1193 0
0.8717 0.1283 0
0.0860 0.9140 1.0000
0.7846 0.2154 0
0.7685 0.2315 0
0.7916 0.2084 0
0.0326 0.9674 1.0000
0.7315 0.2685 0
0.3550 0.6450 1.0000
對於第二個我有這個:
0.4240 0.5760 0
0.4090 0.5910 0
0.7601 0.2399 1.0000
0.5000 0.5000 1.0000
0.4646 0.5354 0
0.4589 0.5411 0
假設我想找到具有這些概率的1類。 在第一組數據中,當列2大於列1時,此樣本屬於1類;而在第二組數據中,當列1大於列2時,該樣本屬於1類。
這兩個樣本數據的結構相同。 問題是什么?
謝謝。
PS。 在訓練這些模型中的模型后檢查SVMstruct參數時,標簽為[0; 1],另一個標簽為[1; 0]!
正如您已經注意到的,差異是由於標簽的映射不同。
LIBSVM在內部使用其自己的標簽,因此需要在內部標簽和您提供的標簽之間進行映射。
此映射中的標簽是使用標簽在訓練數據中出現的順序生成的。 因此,如果您的訓練數據中第一個元素的標簽更改,則標簽映射也會更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.