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)