Python statsmodels OLS:如何将学习的模型保存到文件中

Nik*_*Nik 11 python least-squares statsmodels

我想学习使用Python的statsmodels库中的普通最小二乘模型,描述在这里.

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

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

jse*_*old 26

模型和结果实例都有一个保存和加载方法,因此您不需要直接使用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")
Run Code Online (Sandbox Code Playgroud)

编辑2我们现在已经load在master中为main statsmodels API 添加了一个方法,所以你可以这样做

new_results = sm.load('longley_results.pickle')
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果仅将腌制的结果和模型用于预测,则可以剥离训练数据(但是许多方法将不再起作用) .save.html (2认同)

RMc*_*McG 5

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

模型和结果可通过保存/加载进行选择,可选择保存模型数据. [资源]

举个例子:

鉴于您已将结果保存在变量结果中:

要保存文件:

import pickle    
with open('learned_model.pkl','w') as f:
  pickle.dump(results,f)
Run Code Online (Sandbox Code Playgroud)

要阅读文件:

import pickle
with open('learned_model.pkl','r') as f:
  model_results = pickle.load(f)
Run Code Online (Sandbox Code Playgroud)