19

我正在尝试使用 Python 的 statsmodels 库学习一个普通的最小二乘模型,如此处所述

sm.OLS.fit() 返回学习模型。有没有办法将其保存到文件并重新加载?我的训练数据很大,学习模型大约需要半分钟。所以我想知道 OLS 模型中是否存在任何保存/加载功能。

我在模型对象上尝试了该repr()方法,但它没有返回任何有用的信息。

4

2 回答 2

42

模型和结果实例都有一个保存和加载方法,所以你不需要直接使用 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我们现在load在 master 中添加了一个方法到主 statsmodels API,所以你可以这样做

new_results = sm.load('longley_results.pickle')
于 2013-05-13T01:57:26.317 回答
6

我已经安装了 statsmodels 库,发现您可以使用python中的pickle 模块保存值。

模型和结果可通过保存/加载进行腌制,可选择保存模型数据。 [来源]

举个例子:

假设您将结果保存在变量 results 中:

要保存文件:

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

要读取文件:

import pickle
with open('learned_model.pkl','r') as f:
  model_results = pickle.load(f)
于 2013-05-07T11:48:26.740 回答