虽然libsvm提供了用于扩展数据的工具,但是使用Scikit-Learn(它应该基于用于SVC分类器的libSVM),我找不到扩展数据的方法。
基本上我想使用4个功能,其中3个范围从0到1,最后一个是“大”高度可变数字。
如果我在libSVM中包含第四个功能(使用自动扩展我的数据的easy.py脚本),我会得到一些非常好的结果(准确率为96%)。 如果我在Scikit-Learn中包含第四个变量,精度下降到~78% - 但是如果我将其排除,我得到的结果与排除该功能时的libSVM相同。因此,我很确定这是一个缺少扩展的问题。
如何以编程方式(即不调用svm-scale)复制SVM的缩放过程?
答案 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