预测sklearn中的训练数据
我像这样使用scikit-learn的SVM:
clf = svm.SVC()
clf.fit(td_X, td_y)
我的问题是,当我使用分类器预测训练集成员的班级时,即使在scikit-
learns实现中,分类器也可能是错误的。(例如clf.predict(td_X[a])==td_Y[a]
)
-
是的,可以运行以下代码,例如:
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。