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