我有一个
多类别分类
问题我的数据集(我们称之为数据
X
和标签-
y
)表示640x480图像上的点集,因此
十、
是有效像素范围内的整数。我正在尝试使用SVM来解决这个问题。如果我对数据集运行SVM
按原样
,其精度为
74%
。然而,如果我
规模
数据到范围
[0..1]
,结果要差得多-仅
69%
正确的结果。
我仔细检查了元素的直方图
十、
及其缩放版本
Xs
,并且它们是相同的。所以数据没有损坏,只是正常化了。我知道支持向量机背后的想法,我认为缩放不会影响结果,但它确实会影响结果。那么为什么会发生这种情况呢?
这是我的代码,以防我出错:
>>> from sklearn.cross_validation import cross_val_score
>>> from sklearn.svm import SVC
>>>
>>> X, y = ...
>>> Xs = X.astype(np.float32) / (X.max() - X.min())
>>> cross_val_score(SVC(kernel='linear'), X, y, cv=10).mean()
0.74531073446327667
>>> cross_val_score(SVC(kernel='linear'), Xs, y, cv=10).mean()
0.69485875706214695