我想在由特征 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 不能以这种形式输入
clf.fit(X,Y) 它给出了以下形式的错误:意味着 X 不能采用这种形式 array = np.array(array, dtype=dtype, order=order, copy=copy) ValueError: setting an array element with a顺序。
你基本上有两个选择:
将您的数据转换为常规格式并运行典型的 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 都适用于常规向量,因此您可以以任意方式定义它们,并将它们的总和用作您的“联合”核函数。这种方法更复杂,但在如何定义处理复杂数据的方式方面为您提供了很大的自由。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句