支持向量机:缩放数据集的结果更差?

2024-04-27 04:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多类分类问题。我的数据集(我们称之为dataX和标签-y)表示640x480图像上的点集,因此X中的所有元素都是有效像素范围内的整数。我试着用支持向量机来解决这个问题。如果我对数据集按原样运行支持向量机,它的精确度为74%。然而,如果I将数据缩放到[0..1]范围,则结果会差得多,只有69%正确结果。在

我仔细检查了X中元素的直方图及其缩放版本{},它们是相同的。所以数据没有损坏,只是正常化了。了解了支持向量机背后的思想,我假设缩放不应该影响结果,但它确实影响了。那为什么会发生呢?在


以下是我的代码,以防我出错:

>>> 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

Tags: 数据fromimport元素valsklearnmeankernel
1条回答
网友
1楼 · 发布于 2024-04-27 04:15:01

缩放当然会影响结果,但也会改善结果。然而,支持向量机的性能严重依赖于它的C设置,这在训练集上的错误分类代价与模型简单性之间进行了权衡,并且应该使用例如grid search and nested cross-validation来确定。对于任何给定的问题,默认设置很少是最佳的。在

相关问题 更多 >