在统计学和机器学习领域,Metropolis-Hastings算法是一种非常重要的马尔可夫链蒙特卡洛(MCMC)方法,用于从复杂的概率分布中抽样。今天,让我们用Python来实现一个简单的Metropolis采样器,并探索如何从目标分布中生成样本!💡
首先,我们需要定义一个目标分布函数,比如一个正态分布。然后,通过随机游走的方式逐步调整候选点,利用接受-拒绝规则决定是否保留该点。如果新点的概率密度比当前点高,则直接接受;否则,以一定概率接受或拒绝。
下面是一个基础代码框架👇:
```python
import numpy as np
import matplotlib.pyplot as plt
def target_distribution(x):
return np.exp(-x2 / 2) / np.sqrt(2 np.pi)
初始化参数
current_state = 0
samples = []
num_iterations = 10000
for _ in range(num_iterations):
提议新状态
proposed_state = current_state + np.random.normal(0, 1)
计算接受率
acceptance_ratio = target_distribution(proposed_state) / target_distribution(current_state)
if np.random.rand() < acceptance_ratio:
current_state = proposed_state
samples.append(current_state)
plt.hist(samples, bins=50, density=True, alpha=0.6, color='g')
plt.show()
```
运行这段代码后,你会看到一组符合目标分布的样本!🎉这种方法广泛应用于贝叶斯推断等领域,是理解MCMC算法的重要起点哦~🌟
免责声明:本文由用户上传,如有侵权请联系删除!