2017-03-18 90 views
0

我想訓練包含特徵p1,p2,p3的數據集上的svm。 p1是矢量,p2和p3是我想訓練的整數。例如p1 = [1,2,3],p2 = 4,p3 = 5 X = [p1,p2,p3],但p1本身是一個向量,所以X = [[1,2,3],4 ,5]和Y是輸出命名標籤
但X不能把輸入以這種形式如何在多種類型功能上訓練svm

clf.fit(X,Y) 它給出的形式的錯誤下面:意爲X可以不以這種形式 陣列取= np.array(array,dtype = dtype,order = order,copy = copy) ValueError:使用序列設置數組元素。

+0

p1的長度是否固定? – slonopotam

+0

是p1的長度是固定的 –

回答

0

你基本上有兩種選擇:

  1. 您的數據轉換爲普通格式和運行典型的SVM內核,在你的情況下,如果P1始終是3元,只需壓平表示由此[1,2, 3],4,5]變成[1,2,3,4,5],你很好走。因爲兩個內核的總和仍然是一個內核,所以你可以例如定義K(x,y)= K([p1,p2,p3]),這樣就可以實現自己定製的內核函數。 [q1,q2,q3]):= K1(p1,q1)+ K2([p2,p3],[q2,q3])。現在K1和K2都在正則向量上工作,所以你可以以任意方式定義它們,並且只用它們的和作爲你的「聯合」內核函數。這種方法比較複雜,但如何定義處理複雜數據的方式,使您有很大的自由度。