2011-04-11 174 views
2

我想知道什么是一个python列表的正确格式是作为输入给python中的svm_problem函数。我从网上获得了以下程序,即stackoverflow。Libsvm蟒蛇错误

我有以下几点:

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

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) 
+0

我只是想通了。非常感谢你 – garak 2011-04-11 21:16:52

0

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

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

或类似的东西。