2017-03-18 95 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都在正则向量上工作,所以你可以以任意方式定义它们,并且只用它们的和作为你的“联合”内核函数。这种方法比较复杂,但如何定义处理复杂数据的方式,使您有很大的自由度。