2016-01-31 48 views
0

我使用RB-LIBSVM用於預測使用零概率在RB-LIBSVM

x.each_with_index do |e, i| 
    predictions << model_w2v.predict_probability(e).to_i 
end 

它返回一個陣列,其中所述第一元件是所述標籤,並且所述第二是所有標籤的概率。例如。 [2.0, [0.0, 0.0, 0.0, 0.0, 0.0]]。標籤每次都有所不同,但概率始終爲零。我想知道是否因爲數字太小而在從c轉換爲ruby時四捨五入爲0.0。這裏的the relevant c code

estimates = rb_ary_new(); 
for (i = 0; i < model->nr_class; i++) 
    rb_ary_push(estimates, rx_from_double(c_estimates[i])); 

我該如何緩解這種情況?

回答

1

rb-libsvm寶石及其基礎libsvm要求設置概率參數爲真。因此,我不得不加入這行並重新訓練模型:

parameter.probability = 1 

parameter早先定義爲

parameter = Libsvm::SvmParameter.new 
+0

請使用您的問題編輯鏈接添加額外的信息。後回答按鈕應該只用於問題的完整答案。 - [來自評論](/ review/low-quality-posts/11103619) – Jakuje

+0

其實這是完整的答案,我只需要添加這一行來獲得概率。 – dimid

+1

好的。第一眼看起來並不像那樣。也許多解釋一下會對其他尋求解決方案的人有所幫助。 – Jakuje