2013-05-07 101 views
7

hereのように、Pythonのstatsmodelsライブラリを使って普通の最小二乗モデルを学習しようとしています。Python statsmodels OLS:学習したモデルをファイルに保存する方法

sm.OLS.fit()は学習モデルを返します。それをファイルに保存してリロードする方法はありますか?私の訓練データは膨大で、モデルを学ぶには約半分かかります。 OLSモデルにセーブ/ロード機能が存在するかどうかは疑問でした。

モデルオブジェクトでrepr()メソッドを試しましたが、有用な情報は返しません。

答えて

14

モデルと結果のインスタンスにはすべてsaveメソッドとloadメソッドがあるため、pickleモジュールを直接使用する必要はありません。

編集は例を追加する:

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

編集2あなただけさらに

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

を行うことができますように、我々は今、マスターにメインstatsmodels APIにload方法を追加しましたピクルされた結果とモデルのみを予測に使用すると、トレーニングデータを削除することができます(ただし、多くの方法はこれ以上使用できません)。statsmodels.sourceforge.net/devel/generated/statsmodels.regr ession.linear_model.RegressionResults.save.html – user333700

+0

@jseaboldあなたは例を挙げることができますか? – Nik

+0

例を追加するために編集しました。 – jseabold

5

私はstatsmodelsライブラリをインストールしました。そして、pickle moduleを使用してPythonで値を保存できることがわかりました。

モデルと結果は、セーブ/ロードによって選択可能で、必要に応じてモデルデータを保存します。ファイルを読むには

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

は、ファイルを保存するには:あなたは、変数の結果に保存された結果を持っていることを考えると

:例として[source]

import pickle 
with open('learned_model.pkl','r') as f: 
    model_results = pickle.load(f) 
関連する問題