我像这样使用scikit-learn的SVM:
clf = svm.SVC()
clf.fit(td_X, td_y)
我的问题是,当我使用分类器来预测训练集成员的类时,即使在scikit-learn实现中分类器也可能出错。 (例如clf.predict(td_X[a])==td_Y[a]
)
答案 0 :(得分:2)
是的,运行此代码,例如:
from sklearn import svm
import numpy as np
clf = svm.SVC()
np.random.seed(seed=42)
x=np.random.normal(loc=0.0, scale=1.0, size=[100,2])
y=np.random.randint(2,size=100)
clf.fit(x,y)
print(clf.score(x,y))
得分为0.61,因此近40%的训练数据被错误分类。部分原因是即使默认内核是'rbf'
(理论上应该能够完美地对任何训练数据集进行分类,只要你没有两个相同的训练点和不同的标签),那里也是正规化,以减少过度拟合。默认正则化程序为C=1.0
。
如果您运行与上述相同的代码,但将clf = svm.SVC()
切换为clf = svm.SVC(C=200000)
,则会获得0.94的准确度。