2

我试图弄清楚作为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 failed: assert len(x)==len(y)

但如果x=[ [1,0,1],[-1,0,-1]],程序完美运行。我不应该给出长度超过 2 的火车数据问题吗?

我也不明白 x=[[1,0,1],[-1,0,-1]] 中的标签是什么,数据是什么?

非常感谢任何帮助。

4

2 回答 2

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)
于 2011-04-11T21:13:49.100 回答
0

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

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

或类似的东西。

于 2011-04-11T21:16:09.350 回答