Статистические модели Python OLS: как сохранить изученную модель в файл

Я пытаюсь изучить обычную модель наименьших квадратов, используя библиотеку Python statsmodels, как описано здесь.

sm.OLS.fit() возвращает изученную модель. Есть ли способ сохранить его в файл и перезагрузить? Мои обучающие данные огромны, и изучение модели занимает около полминуты. Поэтому мне было интересно, существует ли какая-либо возможность сохранения/загрузки в модели OLS.

Я попробовал метод repr() для объекта модели, но он не возвращает никакой полезной информации.


person Nik    schedule 07.05.2013    source источник


Ответы (2)


Все экземпляры моделей и результатов имеют метод сохранения и загрузки, поэтому вам не нужно напрямую использовать модуль 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 в API основных статистических моделей в мастере, так что вы можете просто сделать

new_results = sm.load('longley_results.pickle')
person jseabold    schedule 13.05.2013
comment
Кроме того, если вы используете маринованные результаты и модель только для прогнозирования, то можно удалить обучающие данные (но многие методы больше не будут работать) statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.RegressionResults .save.html - person Josef; 16.05.2013
comment
@jseabold не могли бы вы привести пример? - person Nik; 18.05.2013
comment
Конечно. Отредактировано, чтобы добавить пример. - person jseabold; 19.05.2013
comment
jseabold: я попробовал метод sm.load, но интерпретатор жалуется, что модуль не имеет атрибута load. Есть ли новая версия statsmodels, которую мне следует использовать? - person Nik; 04.06.2013
comment
Он находится в мастере на github и будет в следующем выпуске. Вам нужно установить из исходного кода, если вы хотите использовать его сейчас. - person jseabold; 06.06.2013
comment
любая альтернативная стратегия для сохранения, например, в файле json? - person Denis C; 29.08.2013
comment
Вы можете использовать модуль json (или pandasjson) так же, как и модуль pickle, для вывода объектов результатов в json. У нас есть планы сделать что-то встроенное для следующего релиза. - person jseabold; 30.08.2013

Я установил библиотеку statsmodels и обнаружил, что вы можете сохранять значения с помощью модуля 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)
person RMcG    schedule 07.05.2013