2015-07-04 49 views
2

我有這個東西。我是從一個文本文件中挑一些數據,使一個列表這樣緩衝區錯誤sklearn SVM工具包

d3list=[] 
d4list=[] 
for i in range (0,99): 
    d3list.append(data3[i,:]) 
for i in range (0,99): 
    d4list.append(data4[i,:]) 

X = [d3list,d4list] 
y = [0,1] 
msv = svm.SVC() 
msv.fit(X,y) 

但是當我嘗試運行此我,如果這是錯誤的得到這個錯誤

ValueError: Buffer has wrong number of dimensions (expected 2, got 3) 

我不知道在X部分或Y部分。據我所知,列表被列爲X部分的輸入。

問候

回答

1

據說,你d3listd4list包含numpy的數組列表。你應該有一個一維的數字矢量,而不是列表。

以下在我的機器中正常工作。

from sklearn import svm 
import numpy as np 

data3 = np.random.rand(100,2) 
data4 = np.random.rand(100,2) 

d3list=[] 
d4list=[] 

for i in range (0,99): 
    d3list += list(data3[i,:]) #d3list is the concatenation 
for i in range (0,99): 
    d4list += list(data4[i,:]) #d4list is the concatenation 

X = [d3list,d4list] 
y = [0,1] 
msv = svm.SVC() 
msv.fit(X,y) 

要精心,

>>> myList = [] 
>>> myList.append([1,2,3]) 
>>> myList.append([4,5,6]) 
>>> myList 
[[1,2,3],[4,5,6]] 
>>> myList = [] 
>>> myList += [1,2,3] 
>>> myList += [4,5,6] 
>>> myList 
[1,2,3,4,5,6] 
+0

好吧,我得到它在某種程度上,但事情是這樣的。 data3或data4是這樣的 data3 = [[1 2 3 4 5 6 7 8 9],[1 2 3 4 5 6 7 8 9],[1 2 3 4 5 6 7 8 9]] –

+0

@JesusRincon SVM本質上需要一維向量。 – Sait

+0

因此,這樣做的輸入實際上是不可能的?任何其他方式來做到這一點? –