ruby - rb-libsvm 中的零概率

标签 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]));

如何缓解这种情况?

最佳答案

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

parameter.probability = 1

其中参数之前定义为

parameter = Libsvm::SvmParameter.new

关于ruby - rb-libsvm 中的零概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35115974/

相关文章:

ruby-on-rails - 在本地 url 中设置子域

javascript - 如何以编程方式处理英文缩写 [Regex, JS, Ruby]

ruby-on-rails - 服务器安装遇到错误:无法在任何源中找到 pg-0.17.1 (Bundler::GemNotFound)

machine-learning - SVM 作为一种基于实例的学习?

ruby - 构建乘客 apache2 模块 : no such file to load -- rubygems builder

python - 如何提高分类机器学习模型的真阳性率?

python - 如何使用经过训练的 Keras 模型来做出新的预测?

python - 回归结果不正确

Python:关于 SVM 编码格式的问题

machine-learning - 如何用SVM处理条件特征?