简单易学的机器学习算法——马尔可夫链蒙特卡罗方法MCMC








import random
from scipy.stats import norm
import matplotlib.pyplot as plt

def cauchy(theta):
    y = 1.0/(1.0 + theta ** 2)
    return y

T = 50 #循环的次数
sigma = 1
thetamin = -30
thetamax = 30
theta = [0.0] * (T + 1)
theta[0] = random.uniform(thetamin,thetamax)

t = 0
while t < T:
    t += 1
    theta_star = norm.rvs(loc=theta[t - 1], scale=sigma, size=1, random_state=None) #生成数据[] 一个

    alpha = min(1,cauchy(theta_star[0])/cauchy(theta[t - 1])) #调用上边的函数

    u = random.uniform(0,1)
    if u <= alpha: #随机值小于alpha则接受
        theta[t] = theta_star[0]

    else:
        theta[t] = theta[t-1]
print(theta)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值