libsvm 预测方法混淆

Posted

技术标签:

【中文标题】libsvm 预测方法混淆【英文标题】:libsvm predict method confusion 【发布时间】:2011-05-31 08:28:00 【问题描述】:

我对 libsvm 中的 svm_predict() 方法有疑问。

README 中有这个快速入门示例代码:

>>> y, x = [1,-1], [1:1, 3:1, 1:-1,3:-1]
>>> prob  = svm_problem(y, x)
>>> param = svm_parameter('-c 4 -b 1')
>>> m = svm_train(prob, param)

>>> p_label, p_acc, p_val = svm_predict(y, x, m)

现在我知道 y 是与 x 中的字典相关联的类别列表。我也了解 svm_train 部分。

没有意义的部分是在 svm_predict 中,我需要提供来自 y 的“真实值”以及 x 中的测试数据。我以为我的想法是我提前不知道测试数据的分类。

如果我的训练数据是:

y = [1, 2, 3]
x = [1:1, 1:10, 1:20]

但我的测试数据是:

z = [1:4, 1:12, 1:19]

那为什么我需要将 z 的真实值传递到 svm_predict() 中,例如:

a, b, c = svm_predict(y, z, m)

我不会知道 z 的真实值——这就是预测的目的。我应该在执行预测时为 y 输入任意分类值,还是完全遗漏了什么?

谢谢大家

【问题讨论】:

【参考方案1】:

它使用真实标签为您提供准确度统计数据,以防您进行样本外测试。

如果您“在线”运行它,即您实际上没有真正的标签,那么只需输入 [0]*len(z) 而不是 y

【讨论】:

【参考方案2】:

你可以考虑使用

http://scikit-learn.sourceforge.net/

这有一个很棒的 libsvm 的 python 绑定

【讨论】:

以上是关于libsvm 预测方法混淆的主要内容,如果未能解决你的问题,请参考以下文章

如何使用libsvm进行回归预测

如何使用 libsvm 计算多类预测的概率?

LibSVM 预测精度

Libsvm - 预测结果为 NULL

libsvm 可以将预测结果作为有符号距离返回吗?

LibSVM 预测不工作