rb-libsvm中的零概率

时间:2016-01-31 16:09:19

标签: ruby machine-learning svm 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 个答案:

答案 0 :(得分:1)

rb-libsvm gem和底层libsvm需要将概率参数设置为true。因此,我只需添加此行并重新训练模型:

parameter.probability = 1

parameter之前定义为

parameter = Libsvm::SvmParameter.new