我想为我的非线性可分数据实现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)
它显示了以下错误:
if X.shape[0] != X.shape[1]: IndexError: tuple index out of range
如何解决这个问题?
回答:
你的va
和vb
的形状不匹配。它们需要具有相同的形状。RBF核函数的语法应该如下形式:
def rbf(va,vb),其中
va
是样本的特征,比如X,vb
是样本的特征,比如X`。
va和vb不是特征和标签。
你可以查看这个Github链接来查看类似的实现。你会看到他将所有样本对传递给RBF核函数,而不是样本的特征和标签。请查看第95行。