Масштабирование данных в scikit-learn SVM

в то время как libsvm предоставляет инструменты для масштабирования данных, с помощью Scikit-Learn (который должен быть основан на libSVM для классификатора SVC) я не нахожу способа масштабировать свои данные.

в основном я хочу использовать 4 функции, из которых 3 варьируются от 0 до 1, а последний - "большое" число с высокой переменной.

Если я включаю четвертую функцию в libSVM (используя easy.py скрипт, который автоматически масштабирует мои данные) я получаю очень хорошие результаты (точность 96%). Если я включу четвертый переменная в Scikit-узнайте, что точность падает до ~78% - но если я исключу ее, я получу те же результаты, что и в libSVM при исключении этой функции. Поэтому я уверен, что это проблема отсутствия масштабирования.

Как я могу реплицировать программно (т. е. без вызова svm-scale) процесс масштабирования SVM?

1 ответов


у вас есть эта функциональность в 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...]])
данные будут иметь нулевое среднее и единичную дисперсию.