簡體   English   中英

MATLAB LIBSVM的概率輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM