Как сохранить объект PyStan в двоичном виде?

Я хочу сохранить промежуточные файлы на этапах вероятностного программирования с использованием Stan, таких как fit объект, см. SWE ниже, в файл, чтобы я мог загрузить его позже для дальнейшего использования. Стэн компилирует модели в C++, и после каждого запуска я не хотел бы снова запускать модели, я хотел бы сохранить их в файловой системе для последующего анализа.

Как лучше всего хранить объекты Stan с помощью PyStan? Другими словами, как я могу хранить объекты stan в двоичном формате и каков наиболее приемлемый способ сохранить результаты, поэтому нет необходимости запускать их снова позже?

Небольшой рабочий пример (источник здесь)

schools_code = """
data {
    int<lower=0> J; // number of schools
    real y[J]; // estimated treatment effects
    real<lower=0> sigma[J]; // s.e. of effect estimates
}
parameters {
    real mu;
    real<lower=0> tau;
    real eta[J];
}
transformed parameters {
    real theta[J];
    for (j in 1:J)
    theta[j] = mu + tau * eta[j];
}
model {
    eta ~ normal(0, 1);
    y ~ normal(theta, sigma);
}
"""

schools_dat = {'J': 8,
               'y': [28,  8, -3,  7, -1,  1, 18, 12],
               'sigma': [15, 10, 16, 11,  9, 11, 10, 18]}

sm = pystan.StanModel(model_code=schools_code)
fit = sm.sampling(data=schools_dat, iter=1000, chains=4)

1 ответ

У вас есть несколько вариантов... лучший из которых маринованный

import pickle
with open('fit.pkl', 'wb') as pickle_out:
    pickle.dump(fit, pickle_out)

Другой вариант - это pandas ... но пока он сохраняет образцы, он больше не является объектом StanFit4Model.

import pandas as pd
fit.to_dataframe().to_csv(‘fit.csv’, encoding='utf-8')
Другие вопросы по тегам