我有一个多类分类问题。我的数据集(我们称之为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
缩放当然会影响结果,但也会改善结果。然而,支持向量机的性能严重依赖于它的
C
设置,这在训练集上的错误分类代价与模型简单性之间进行了权衡,并且应该使用例如grid search and nested cross-validation来确定。对于任何给定的问题,默认设置很少是最佳的。在相关问题 更多 >
编程相关推荐