我对 libsvm 中的 svm_predict() 方法有疑问。
自述文件有这个快速入门示例代码:
>>> 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 输入任意分类值,还是我完全遗漏了什么?
谢谢大家