Libsvm python错误

时间:2011-04-11 21:04:04

标签: python libsvm

我正在试图弄清楚 python list 的正确格式是什么,作为python中 svm_problem 函数的输入。我从网上获得了以下程序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 :(得分:2)

svm_problem()有两个参数:标签矢量的第一个参数,第二个是特征矩阵。您收到此断言错误是因为您只指定了2个标签[1, -1],作为调用svm_problem的第一个参数。

示例:

y = [1,-1,1,1]
x = [[1,0,1], [-1,0,-1], [1,2,3], [4,5,6]]
prob = svm_problem(y, x)

答案 1 :(得分:0)

如果你给出3个例子,你需要给出三个输入的类,所以你需要做

prob = svm_problem( [1,1,-1],x  )

或类似的东西。