我正在尝试使用Python的statsmodels库学习普通的最小二乘模型,如here所述。
sm.OLS.fit()返回学习的模型。有没有办法将其保存到文件并重新加载?我的训练数据很大,学习模型大约需要半分钟。所以我想知道OLS模型中是否存在任何保存/加载功能。
我在模型对象上尝试了repr()
方法,但它没有返回任何有用的信息。
答案 0 :(得分:21)
模型和结果实例都有一个保存和加载方法,因此您不需要直接使用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 我们现在已经在master中为主statsmodels API添加了load
方法,因此您可以这样做
new_results = sm.load('longley_results.pickle')
答案 1 :(得分:5)
我已经安装了statsmodels库,发现可以使用python中的pickle module保存值。
模型和结果可通过保存/加载进行选择,可选择保存模型数据。 [source]
举个例子:
鉴于您已将结果保存在变量结果中:
保存文件:
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)