2014-01-26 82 views
3

我對scikit和ML有點新興。我試圖訓練一個SVM分類器爲一個VS所有分類。我使用下面的代碼。使用scikit進行SVM訓練時出現輸入形狀錯誤

g=list() 
for i in range(0,120): 
    g.append(1) 
for i in range(120,240): 
    g.append(2) 

u=set(g) 
numclasses=len(u) 

lin_clf = svm.LinearSVC() 
lin_clf.fit(features,u) 

功能是一個72900 * 120陣列。我從不同的Python代碼獲取功能並在此調用。它會引發以下警告和錯誤。

/usr/lib/python2.7/dist-packages/scipy/misc/pilutil.py:279: 
DeprecationWarning: fromstring() is deprecated. Please call frombytes() instead. 
image = Image.fromstring(mode, shape, strdata) 

錯誤

ValueError: bad input shape() 

,如果你需要進行特徵提取的代碼請評論。先謝謝你。

回答

9

哪一行代碼會拋出錯誤?是lin_clf.fit(features,u)

根據LinearSVC的documentation,對於fit(X,y)參數是

X:{陣列狀,稀疏矩陣},形狀= [N_SAMPLES次,n_features]

訓練向量,其中N_SAMPLES次在樣本的數量和n_features是特徵的數量。

Y:陣列狀,形狀=

目標相對於X

[N_SAMPLES次]向量然而,在代碼中u是一個python set。它應該是一個長度爲72900的數組。

相關問題