Escalado de datos en scikit-learn SVM

Si bien libsvm proporciona herramientas para escalar datos, con Scikit-Learn (que debería basarse en libSVM para el clasificador de SVC) no encuentro la 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 “variable” altamente variable.

Si incluyo la cuarta función 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 disminuye a ~ 78%, pero si la excluyo, obtengo los mismos resultados que obtengo en libSVM al excluir esa función. Por lo tanto, estoy bastante seguro de que es un problema de falta de escala.

¿Cómo puedo replicar mediante progtwigción (es decir, sin llamar a svm-scale) el proceso de escalado de SVM?

Tienes 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 entonces tendrán una media de cero y una variación de unidades.