2011-04-11 172 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 ) 

或類似的東西。