Python statsmodels OLS: cómo guardar el modelo aprendido en un archivo

Estoy tratando de aprender un modelo de mínimos cuadrados ordinarios utilizando la biblioteca de modelos de estadísticas de Python, como se describe aquí .

sm.OLS.fit () devuelve el modelo aprendido. ¿Hay una manera de guardarlo en el archivo y volver a cargarlo? Mis datos de entrenamiento son enormes y toma alrededor de medio minuto aprender el modelo. Así que me preguntaba si existe alguna capacidad de guardar / cargar en el modelo OLS.

repr() método repr() en el objeto modelo, pero no devuelve ninguna información útil.

Related of "Python statsmodels OLS: cómo guardar el modelo aprendido en un archivo"

Los modelos y las instancias de resultados tienen un método de guardar y cargar, por lo que no es necesario utilizar el módulo pickle directamente.

Editar para agregar un ejemplo:

 import statsmodels.api as sm data = sm.datasets.longley.load_pandas() data.exog['constant'] = 1 results = sm.OLS(data.endog, data.exog).fit() results.save("longley_results.pickle") # we should probably add a generic load to the main namespace from statsmodels.regression.linear_model import OLSResults new_results = OLSResults.load("longley_results.pickle") # or more generally from statsmodels.iolib.smpickle import load_pickle new_results = load_pickle("longley_results.pickle") 

Edit 2 Ahora hemos agregado un método de load a la API de statsmodels principal en master, así que simplemente puedes hacerlo

 new_results = sm.load('longley_results.pickle') 

He instalado la biblioteca de statsmodels y descubrí que puedes guardar los valores utilizando el módulo pickle en python.

Los modelos y los resultados son seleccionables a través de guardar / cargar, opcionalmente guardando los datos del modelo. [fuente]

Como ejemplo:

Dado que tienes los resultados guardados en la variable resultados:

Para guardar el archivo:

 import pickle with open('learned_model.pkl','w') as f: pickle.dump(results,f) 

Para leer el archivo:

 import pickle with open('learned_model.pkl','r') as f: model_results = pickle.load(f)