我想为我的非线性可分离数据实现SVM RBF内核。我将内核定义为:

def rbf(va, vb):
    gamma = 0.7
    return exp(-gamma * linalg.norm(va - vb) ** 2)
clf = svm.SVC(kernel=rbf)
clf.fit(va, vb)


它显示错误:


  如果X.shape [0]!= X.shape [1]:
  IndexError:元组索引超出范围


怎么解决呢?

最佳答案

vavb的形状不匹配。它们必须具有相同的形状。
rbf内核的语法应采用以下形式:


  def rbf(va,vb),其中va是样本的特征,例如X和vb是样本说X的特征。


va和vb不是功能和标签。

您可以检查this link on Github以获得类似的实现。您可以看到他正在将所有样本对传递给rbf内核,而不是样本的特征和标签。转到行号95。

08-24 23:30