support sklearn score scikit rbf poly machine learn example python svm libsvm scikit-learn

python - sklearn - Escala de datos en Scikit-learn SVM



svm kernel (1)

Mientras que libsvm proporciona herramientas para escalar datos, con Scikit-Learn (que debe basarse en libSVM para el clasificador SVC) no encuentro forma de escalar mis datos.

Básicamente quiero usar 4 funciones, de las cuales 3 van de 0 a 1 y la última es un número "grande" altamente variable.

Si incluyo la cuarta característica en libSVM (usando el script easy.py que escala mis datos automáticamente) obtengo algunos resultados muy buenos (96% de precisión). Si incluyo la cuarta variable en Scikit-Learn, la precisión cae a ~ 78%, pero si la excluyo, obtengo los mismos resultados que obtengo en libSVM al excluir esa característica. Por lo tanto, estoy bastante seguro de que es un problema de falta de escala.

¿Cómo puedo replicar programáticamente (es decir, sin llamar a svm-scale) el proceso de escalado de SVM?


Usted tiene esa funcionalidad en 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...]])

Los datos tendrán cero media y varianza unitaria.