关于数据挖掘:Python贝叶斯推断MetropolisHastingsMHMCMC采样算法的实现

30次阅读

共计 1301 个字符,预计需要花费 4 分钟才能阅读完成。

原文链接:http://tecdat.cn/?p=25376

Metropolis-Hastings 算法对概率分布进行采样以产生一组与原始散布 成比例的轨迹。

首先,指标是什么?MCMC 的指标是从某个概率分布中抽取样本,而不须要晓得它在任何一点的确切概率。MCMC 实现这一指标的形式是在该散布上 “ 彷徨 ”,使在每个地点破费的工夫与散布的概率成正比。如果 “ 彷徨 “ 过程设置正确,你能够确保这种比例关系(破费的工夫和散布的概率之间)得以实现

为了可视化算法的工作原理,咱们在二维中实现它

plt.style.use('ggplot')

首先,让咱们创立并绘制任意指标散布

tart = np.append
plt.hist
plt.text

当初让咱们写出算法。请留神,咱们将原始数据分箱计算给定点的概率。这是算法如何工作的粗略概念

  • 抉择散布上的一个随机地位
  • 提议散布上的一个新地位
  • 如果提议的地位比以后的地位有更高的绝对概率,就跳到这个地位(即把以后地位设置为新地位)
  • 如果不是,兴许还是跳。依然跳的概率与新地位的概率低多少成正比
  • 返回算法所到过的所有地位 
def gees:

    daa = d.astype
    np.bincount # 产生一个范畴为 (i,i+1) 的计数数组
    np.array(\[\])
    
    crnt = int
    for i in xrange(n_ms):
        trs = np.append
        # 最终创立一个函数,抉择一个好的跳跃间隔
        # 如果以后地位的 p 很低,就把跳转的间隔变大
        poo = int
        # 确保咱们不来到边界
        while rood  data.max or ppsd < data.min:
            pood = int

      
        if a > 1:
            cuent = prosed
        else:
            if np.random.random<= a:
                curnt = ppse
traces = get_traces(target, 5000)
# 绘制指标分布图和轨迹分布图

plt.hist
plt.subplot(2,1,2)
plt.hist
plt.tight_layout
plt.show

不仅轨迹的散布十分靠近理论散布,样本均值也十分靠近。绘制的样本点少于 5000 个,咱们十分靠近于近似指标散布的形态。


最受欢迎的见解

1.matlab 应用贝叶斯优化的深度学习

2.matlab 贝叶斯隐马尔可夫 hmm 模型实现

3.R 语言 Gibbs 抽样的贝叶斯简略线性回归仿真

4.R 语言中的 block Gibbs 吉布斯采样贝叶斯多元线性回归

5.R 语言中的 Stan 概率编程 MCMC 采样的贝叶斯模型

6.Python 用 PyMC3 实现贝叶斯线性回归模型

7.R 语言应用贝叶斯 层次模型进行空间数据分析

8.R 语言随机搜寻变量抉择 SSVS 预计贝叶斯向量自回归(BVAR)模型

9.matlab 贝叶斯隐马尔可夫 hmm 模型实现

正文完
 0