问题原因
这种错误通常出现在使用了不支持的核函数的情况下。Scikit-learn中支持的核函数有:线性核函数(linear)、多项式核函数(poly)、径向基函数核函数(rbf)、sigmoid核函数(sigmoid)和预计算核函数(precomputed)。
解决办法
-
检查使用的核函数是否在支持列表中,如果不是,请更改为支持的核函数。
-
如果核函数在支持列表中,可能是由于字符串格式的错误导致的。请确保你输入的字符串与核函数名称完全匹配,并且不包含任何额外的空格或标点符号。
-
如果仍然无法解决问题,可能是由于安装的scikit-learn库版本过旧或过新导致的。请尝试升级或降级scikit-learn版本,并确保你的代码与所选版本兼容。
示例代码:
from sklearn.svm import SVC
# 使用“my_kernel”核函数
svm = SVC(kernel='my_kernel') # 报错:ValueError: 'kernel' parameter should be one of {'linear', 'poly', 'rbf', 'sigmoid', 'precomputed'} but was 'my_kernel'
# 使用正确的核函数
svm = SVC(kernel='rbf') # 正确