python - 在 scikit-learn SVM 中缩放数据

标签 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 的缩放过程?

最佳答案

您在 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/

相关文章:

Python 文件 write() 没有正确写入/格式化

python - 用于 scikit learn 的 SVM 轻型加载器

opencv - 如何加快 svm.predict 的速度?

machine-learning - 如何在 Weka 中以编程方式为 SVM 进行网格搜索

machine-learning - libsvm 返回一个简单的解决方案

machine-learning - 如何从Weka的GUI中获取SVM的权重?

python - youtube_dl 使用 Python 获取音频链接

python - 如何使用python运行cmd windows netsh命令?

nlp - 使用SVM时需要TF-IDF吗?

python - 字典列表中的 Nan 值