Libsvm Python错误
我正在尝试弄清楚,给一个svm_problem函数输入的python列表应该是什么格式。我在网上,特别是StackOverflow上找到了以下程序。
我有以下内容:
from svm import *
x=[ [1,0,1],[-1,0,-1],[1,0,0]]
#x=[ [1,0,1],[-1,0,-1]]
prob = svm_problem( [1,-1],x )
param = svm_parameter(kernel_type = LINEAR, C = 10)
m = svm_model(prob, param)
print m.predict([ 1,1, 1])
但是它抛出了一个断言错误,提示说断言失败:assert len(x)==len(y)
。
不过如果我把x=[ [1,0,1],[-1,0,-1]]
,程序就能正常运行。难道我不应该提供一个长度超过2的训练数据吗?
另外,我也不明白在x=[[1,0,1],[-1,0,-1]]
中,什么是标签,什么是数据?
任何帮助都非常感谢。
2 个回答
0
如果你给出3个例子,那么你也需要为这三个输入提供对应的类,也就是说你需要这样做:
prob = svm_problem( [1,1,-1],x )
或者类似的做法。
2
svm_problem()
这个函数需要两个参数:第一个参数是一个标签的向量,第二个参数是一个特征的矩阵。你遇到这个错误是因为在调用 svm_problem
时,你只提供了两个标签 [1, -1]
作为第一个参数。
举个例子:
y = [1,-1,1,1]
x = [[1,0,1], [-1,0,-1], [1,2,3], [4,5,6]]
prob = svm_problem(y, x)