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 prueba:
[[ 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 scaler.fit() con los datos de entrenamiento todo el tiempo. ¿Hay alguna forma de guardar el escalador y cargarlo más tarde desde un archivo diferente?
Actualización: sklearn.externals.joblib está en desuso. Instale y use el joblib puro en su lugar. Consulte la respuesta de Engineero a continuación , que por lo demás es idéntica a la mía.
Incluso mejor que pickle (que crea archivos mucho más grandes que este método), puede usar la herramienta integrada 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)Así que en realidad no soy un experto en esto, pero a partir de un poco de investigación y algunos enlaces útiles, creo que pickle y sklearn.externals.joblib serán tus amigos aquí.
El paquete pickle le permite guardar modelos o "volcar" modelos en un archivo.
Creo que este enlace 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')Aquí es donde puede obtener más información sobre los aspectos externos de sklearn.
Avíseme si eso no ayuda o si no entiendo algo sobre su modelo.
Nota: sklearn.externals.joblib está en desuso. Instale y use el joblib puro en su lugar
Solo una nota de que sklearn.externals.joblib ha quedado obsoleto y ha sido reemplazado por el simple y antiguo joblib , que se puede instalar con pip install joblib :
import joblib joblib.dump(my_scaler, 'scaler.gz') my_scaler = joblib.load('scaler.gz') Tenga en cuenta que las extensiones de archivo pueden ser cualquier cosa, pero si es una de ['.z', '.gz', '.bz2', '.xz', '.lzma'] , se utilizará el protocolo de compresión correspondiente. Documentos parajoblib.dump() yjoblib.load() .