scikit-learn报”ValueError: ‘kernel’ parameter should be one of {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} but was ‘{kernel}’. “的原因以及解决办法

  • Post category:Python

这个错误是 Scikit-Learn 中 SVM 预测模型中常见的错误之一。它通常表示所调用的 kernel 参数无效。

SVM 中的 kernel 可以是 ‘linear’、’poly’、’rbf’、’sigmoid’ 或 ‘precomputed’。如果 kernel 被设置为一个无效的值,Scikit-Learn 将会抛出这个错误“ValueError: ‘kernel’ parameter should be one of {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’} buw was ‘{kernel}’.”

解决此问题的方法是检查代码中的 SVM 建模段落,确保 kernel 的取值符合 Scikit-Learn 的规范。

另外,还可以考虑升级 Scikit-Learn 到最新版本来解决问题。如果问题依然存在并且 kernel 参数值符合规范,则可能是其他问题导致该错误的出现,这种情况下,最好查看其他部分的代码,以确认问题的原因。

以下是一个正确设置 kernel 参数的示例代码:

from sklearn import svm

X = [[0, 0], [1, 1]]
y = [0, 1]

clf = svm.SVC(kernel='linear')
clf.fit(X, y)
print(clf.predict([[2., 2.]]))

在上面的代码中,使用了线性核(linear)作为 SVM 模型的 kernel 参数,因此不会出现该错误。