standardscaler standard sklearn preprocessing minmaxscaler imputer fit_transform python machine-learning scikit-learn normalization

python - standard - Guardar el modelo de MinMaxScaler en sklearn



standardscaler python 3 (3)

Estoy usando el modelo MinMaxScaler en sklearn para normalizar las características de un modelo.

training_set = np.random.rand(4,4)*10 training_set [[ 6.01144787, 0.59753007, 2.0014852 , 3.45433657], [ 6.03041646, 5.15589559, 6.64992437, 2.63440202], [ 2.27733136, 9.29927394, 0.03718093, 7.7679183 ], [ 9.86934288, 7.59003904, 6.02363739, 2.78294206]] scaler = MinMaxScaler() scaler.fit(training_set) scaler.transform(training_set) [[ 0.49184811, 0. , 0.29704831, 0.15972182], [ 0.4943466 , 0.52384506, 1. , 0. ], [ 0. , 1. , 0. , 1. ], [ 1. , 0.80357559, 0.9052909 , 0.02893534]]

Ahora quiero usar el mismo escalador para normalizar el conjunto de pruebas:

[[ 8.31263467, 7.99782295, 0.02031658, 9.43249727], [ 1.03761228, 9.53173021, 5.99539478, 4.81456067], [ 0.19715961, 5.97702519, 0.53347403, 5.58747666], [ 9.67505429, 2.76225253, 7.39944931, 8.46746594]]

Pero no quiero usar el scaler.fit () con los datos de entrenamiento todo el tiempo. ¿Hay una manera de guardar el escalador y cargarlo más tarde desde un archivo diferente?


Así que en realidad no soy un experto en esto, pero a partir de un poco de investigación y algunos links útiles, creo que pickle y sklearn.externals.joblib serán tus amigos aquí.

El paquete pickle permite guardar modelos o "volcar" modelos en un archivo.

Creo que este link también es útil. Habla de crear un modelo de persistencia. Algo que vas a querer probar es:

# could use: import pickle... however let''s do something else from sklearn.externals import joblib # this is more efficient than pickle for things like large numpy arrays # ... which sklearn models often have. # then just ''dump'' your file joblib.dump(clf, ''my_dope_model.pkl'')

Here es donde puede obtener más información sobre los aspectos externos de sklearn.

Avísame si eso no ayuda o si no entiendo algo sobre tu modelo.


Incluso mejor que pickle (que crea archivos mucho más grandes que este método), puedes usar la sklearn incorporada de sklearn :

from sklearn.externals import joblib scaler_filename = "scaler.save" joblib.dump(scaler, scaler_filename) # And now to load... scaler = joblib.load(scaler_filename)


Puedes usar pickle , para guardar el escalador:

import pickle scalerfile = ''scaler.sav'' pickle.dump(scaler, open(scalerfile, ''wb''))

Cargar de nuevo:

import pickle scalerfile = ''scaler.sav'' scaler = pickle.load(open(scalerfile, ''rb'')) test_scaled_set = scaler.transform(test_set)