虽然 libsvm 提供了用于缩放数据的工具,但使用 Scikit-Learn(对于 SVC 分类器应该基于 libSVM)我找不到缩放数据的方法。
基本上我想使用 4 个特征,其中 3 个从 0 到 1,最后一个是一个“大”高度可变的数字。
如果我在 libSVM 中包含第四个功能(使用自动缩放我的数据的 easy.py 脚本),我会得到一些非常好的结果(96% 的准确率)。 如果我在 Scikit-Learn 中包含第四个变量,准确度会下降到 ~78% - 但如果我排除它,我得到的结果与在排除该特征时在 libSVM 中得到的结果相同。因此,我很确定这是缺少缩放的问题。
如何以编程方式(即不调用 svm-scale)复制 SVM 的缩放过程?
最佳答案
您在 sklearn.preprocessing
中拥有该功能:
>>> from sklearn import preprocessing
>>> X = [[ 1., -1., 2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]]
>>> X_scaled = preprocessing.scale(X)
>>> X_scaled
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])
数据将具有零均值和单位方差。
关于python - 在 scikit-learn SVM 中缩放数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324071/