2016-03-11 24 views
5

Desidero applicare il modulo di scaling sklearn.preprocessing.scale che scikit-learn offre per centrare un set di dati che userò per addestrare un classificatore svm.Come memorizzare i parametri di ridimensionamento per un uso successivo

Come posso quindi memorizzare i parametri di standardizzazione in modo che sia possibile applicarli anche ai dati che voglio classificare?

So che posso usare il standarScaler ma posso in qualche modo serializzarlo su un file in modo che non debba adattarlo ai miei dati ogni volta che voglio eseguire il classificatore?

risposta

2

Penso che il modo migliore sia di metterlo sotto vuoto fit, poiché questa è l'opzione più generica. Forse in seguito creerai una pipeline composta da un estrattore di caratteristiche e uno scalatore. Con il pickling di una fase (possibilmente composta), stai rendendo le cose più generiche. Il sklearn documentation on model persistence discute come fare questo.

Detto questo, è possibile interrogare sklearn.preprocessing.StandardScaler per i parametri fit:

scale_: ndarray, forma (n_features,) Per caratteristica relativa scalatura dei dati. Nuovo nella versione 0.17: scale_ è raccomandato invece di deprecato std_. mean_: matrice di float con forma [n_features] Valore medio per ciascuna funzione nel set di allenamento.

Il seguente breve frammento illustra questo:

from sklearn import preprocessing 
import numpy as np 

s = preprocessing.StandardScaler() 
s.fit(np.array([[1., 2, 3, 4]]).T) 
>>> s.mean_, s.scale_ 
(array([ 2.5]), array([ 1.11803399]))