2013-05-07 12 views
7

Próbuję nauczyć się zwykłego modelu najmniejszych kwadratów przy użyciu biblioteki statsmodels Pythona, zgodnie z opisem here.Python statsmodels OLS: jak zapisać wyuczony model do pliku

sm.OLS.fit() zwraca wyuczony model. Czy istnieje sposób na zapisanie pliku i ponowne załadowanie? Moje dane treningowe są ogromne i poznanie modelu zajmuje około pół minuty. Zastanawiałem się, czy w modelu OLS istnieje jakakolwiek możliwość zapisu/załadowania.

Próbowałem metody repr() na obiekcie modelu, ale nie zwraca żadnych użytecznych informacji.

Odpowiedz

14

Wszystkie modele i instancje wyników mają metodę zapisu i ładowania, więc nie trzeba bezpośrednio korzystać z modułu pikle.

Edit dodać przykład:

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") 

Edycja 2 Dodaliśmy metodę load do głównej statsmodels API w pana, więc można po prostu zrobić

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

Dodatkowo , jeśli używasz wyników marynowanych i model tylko do prognozowania, możliwe jest usunięcie danych treningowych (ale wiele metod już nie działa) statsmodels.sourceforge.net/devel/generated/statsmodels.regr ession.linear_model.RegressionResults.save.html – user333700

+0

@jseabold możesz podać przykład? – Nik

+0

Pewnie. Edytowane w celu dodania przykładu. – jseabold

5

Zainstalowałem bibliotekę statsmodels i stwierdziłem, że można zapisać wartości za pomocą pickle module w python.

Modele i wyniki można wybierać przez zapisanie/załadowanie, opcjonalnie zapisując dane modelu. [source]

Jako przykład:

Biorąc pod uwagę, że masz wyniki zapisane w zmiennej wyniki:

Aby zapisać plik:

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

odczytać pliku:

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