2013-05-07 13 views
7

Sto cercando di imparare un modello ordinario dei minimi quadrati usando la libreria statsmodels di Python, come descritto in here.Python statsmodels OLS: come salvare il modello appreso su file

sm.OLS.fit() restituisce il modello appreso. C'è un modo per salvarlo nel file e ricaricarlo? I miei dati di allenamento sono enormi e ci vuole circa mezzo minuto per apprendere il modello. Quindi mi chiedevo se esiste qualche possibilità di salvataggio/caricamento nel modello OLS.

Ho provato il metodo repr() sull'oggetto modello ma non restituisce alcuna informazione utile.

risposta

14

I modelli e le istanze di risultati hanno tutti un metodo di salvataggio e caricamento, quindi non è necessario utilizzare direttamente il modulo pickle.

Modifica per aggiungere un esempio:

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 Abbiamo aggiunto un metodo per load statsmodels principale API in master, quindi si può solo fare

new_results = sm.load('longley_results.pickle') 
Inoltre
+1

, se si utilizzano i risultati in pickled e il modello solo per la previsione, è possibile rimuovere i dati di allenamento (ma molti metodi non funzioneranno più) statsmodels.sourceforge.net/devel/generated/statsmodels.regr ession.linear_model.RegressionResults.save.html – user333700

+0

@jseabold potresti fare un esempio? – Nik

+0

Sicuro. Modificato per aggiungere un esempio. – jseabold

5

Ho installato la libreria statsmodels e ho scoperto che è possibile salvare i valori utilizzando pickle module in python.

Modelli e risultati sono selezionabili tramite salvataggio/caricamento, salvando facoltativamente i dati del modello. [source]

Per fare un esempio:

Dato che si hanno i risultati salvati nei risultati variabili:

Per salvare il file:

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

Per leggere il file:

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