MCMC(Markov Chain Monte Carlo)的理解与实践(Python)

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       
 

Markov Chain Monte Carlo (MCMC) methods are a class of algorithms for sampling from a probability distribution based on constructing a Markov chain that has the desired distribution as its stationary distribution. The state of the chain after a number of steps is then used as a sample of the desired distribution. The quality of the sample improves as a function of the number of steps.

   

With MCMC, we draw samples from a (simple) proposal distribution so that each draw depends only on the state of the previous draw (i.e. the samples form a Markov chain, θp=θ+Δθ,ΔθN(0,σ),否则不接受

  • repeated

  • import numpy as npimport scipy.special as ssimport matplotlib.pyplot as pltdef beta_s(x, a, b):    return x**(a-1)*(1-x)**(b-1)def beta(x, a, b):    return beta_s(x, a, b)/ss.beta(a, b)def plot_mcmc(a, b):    cur = np.random.rand()    states = [cur]    for i in range(10**5):        next, u = np.random.rand()        if u < np.min((beta_s(next, a, b)/beta_s(cur, a, b), 1)):            states.append(next)            cur = next    x = np.arange(0, 1, .01)    plt.figure(figsize=(10, 5))    plt.plot(x, beta(x, a, b), lw=2, label='real dist: a={}, b={}'.format(a, b))    plt.hist(states[-1000:], 25, normed=True, label='simu mcmc: a={}, b={}'.format(a, b))    plt.show()if __name__ == '__main__':    plot_mcmc(0.1, 0.1)    plot_mcmc(1, 1)    plot_mcmc(2, 3)
        
        
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27







               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述

    猜你喜欢

    转载自blog.csdn.net/hftytf/article/details/84195308
    今日推荐