libsvm预测方法混乱

ape*_*dge 7 python machine-learning libsvm

我对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)
Run Code Online (Sandbox Code Playgroud)

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

没有意义的部分是在svm_predict中,我需要提供y中的'true values'以及x中的测试数据.我认为这个想法是我不知道测试数据的分类.

如果我的培训数据是:

y = [1, 2, 3]
x = [{1:1}, {1:10}, {1:20}]
Run Code Online (Sandbox Code Playgroud)

但我的测试数据是:

z = [{1:4}, {1:12}, {1:19}]
Run Code Online (Sandbox Code Playgroud)

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

a, b, c = svm_predict(y, z, m)
Run Code Online (Sandbox Code Playgroud)

我不会知道z的真实值 - 这就是预测的目的.我应该在执行预测时为y设置任意分类值,还是我完全遗漏了某些东西?

谢谢大家

Dr *_*r G 5

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

如果你"在线"运行它,即你实际上没有真正的标签,那么就把它[0]*len(z)代替y