在scikit中学习数据 - 学习SVM

时间:2012-11-10 17:03:09

标签: python svm libsvm scikit-learn

虽然libsvm提供了用于扩展数据的工具,但是使用Scikit-Learn(它应该基于用于SVC分类器的libSVM),我找不到扩展数据的方法。

基本上我想使用4个功能,其中3个范围从0到1,最后一个是“大”高度可变数字。

如果我在libSVM中包含第四个功能(使用自动扩展我的数据的easy.py脚本),我会得到一些非常好的结果(准确率为96%)。 如果我在Scikit-Learn中包含第四个变量,精度下降到~78% - 但是如果我将其排除,我得到的结果与排除该功能时的libSVM相同。因此,我很确定这是一个缺少扩展的问题。

如何以编程方式(即不调用svm-scale)复制SVM的缩放过程?

2 个答案:

答案 0 :(得分:6)

您在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...]])

数据将具有零均值和单位方差。

答案 1 :(得分:0)

您也可以尝试import arcade SCREEN_WIDTH = 800 SCREEN_HEIGHT = 600 进行数据扩展:

StandardScaler