2017-09-26 118 views
1

我想爲我的非線性可分數據實現SVM RBF內核。我定義我的內核:SVM自定義RBF內核IndexError

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

如何解決呢?

+1

你能打印'va'和'vb'的形狀嗎? –

+0

va是100x2,vb是100x1 – kashf34Kashf

回答

1

您的形狀爲vavb不匹配。他們需要具有相同的形狀。 的RBF內核的語法應爲以下形式:

def rbf(va,vb) , where va are the feature of sample,say X and vb are the features of sample say X`.

VA和VB而不是功能和標籤。

你可以檢查this link on Github類似的實現。您可以看到他將所有樣本對傳遞給了rbf內核,而不是樣本的特徵和標籤。去行號。 95.

+0

爲什麼這麼說? va是生成標籤vb(1列)的特徵數(即(2列)) – kashf34Kashf

+0

@ kashf34Kashf我更新了我的答案。如果這個答案對你有幫助,你能否接受它作爲正確的答案。 –