首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[python][pymc3]使用变分法来完成后验分布求解

[python][pymc3]使用变分法来完成后验分布求解

作者头像
云未归来
发布2025-07-20 11:40:05
发布2025-07-20 11:40:05
7500
代码可运行
举报
运行总次数:0
代码可运行

测试环境:

pymc3==3.10.0

代码部分:

代码语言:javascript
代码运行次数:0
运行
复制
import pymc3 as pm
from scipy import stats

class variational_method(object):

    def __init__(self):
        pass
    
    def fit(self,data,sigma_true,mu_prior_mu,sigma_prior_mu,samples,iter_num):
        with pm.Model() as variational_model:
            mu = pm.Normal('mu', mu=mu_prior_mu, sigma=sigma_prior_mu)
            pm.Normal('x', mu=mu, sigma=sigma_true, observed=data)
            approx = pm.fit(n=iter_num,method=pm.ADVI(),obj_optimizer=pm.adam(learning_rate=0.01))
        trace = approx.sample(draws=samples)
        pm.plot_trace(trace)
        return pm.summary(trace)

### 样本分布的假设 正态
mu_true = 1.5
sigma_true = 2
data = stats.norm.rvs(mu_true, sigma_true, size=200)

### mu的先验分布设置 正态
mu_prior_mu = 0.5
sigma_prior_mu = 1

### mu更新的初始值设置
mu_init = 0  

### 变分法其它参数
samples = 120
iter_num = 50000

vm = variational_method()
vm.fit(data,sigma_true,mu_prior_mu,sigma_prior_mu,samples,iter_num)

输出结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档