主观贝叶斯推理实例以及python代码
时间: 2023-10-13 14:18:02 浏览: 230
python 实现朴素贝叶斯算法的示例
假设我们有一个袋子,里面装有红色球和蓝色球,但我们不知道它们的数量和比例。我们希望使用主观贝叶斯推理来预测从袋子中随机取出一个球是红色的概率。
首先,我们需要有一个先验概率分布。在这种情况下,我们可以假设我们对于红色球的比例没有任何信息,因此我们选择一个均匀分布,即先验概率为0.5。
接下来,我们需要一个似然函数。假设我们从袋子中随机取出一个球,发现它是红色的。因此,似然函数可以表示为从袋子中随机取出一个红色球的概率,这取决于红色球和蓝色球的比例。
最后,我们需要一个后验分布,它表示我们在观察到数据(红色球)后对于红色球的比例的新信念。这可以通过贝叶斯公式计算得到:
后验概率 = 先验概率 × 似然函数 / 标准化常数
其中,标准化常数是使得后验概率分布的所有值相加等于1的常数。
下面是使用Python进行主观贝叶斯推理的代码:
```
import numpy as np
# 先验概率
prior = 0.5
# 似然函数
def likelihood(ratio):
return ratio
# 标准化常数
def normalizer(likelihoods):
return np.sum(likelihoods)
# 后验分布
def posterior(prior, likelihoods, normalizer):
unnormalized_posterior = prior * likelihoods
posterior = unnormalized_posterior / normalizer(likelihoods)
return posterior
# 假设我们从袋子中随机取出一个球,发现它是红色的
# 这意味着我们的似然函数为红色球的比例
likelihoods = np.array([likelihood(ratio) for ratio in np.linspace(0, 1, 101)])
# 计算后验概率分布
posterior_distribution = posterior(prior, likelihoods, normalizer)
# 打印结果
print(posterior_distribution)
```
这将输出一个包含101个元素的数组,表示红球比例的后验概率分布。我们可以使用这个分布来计算任何关于袋子中球的比例的问题的概率。例如,我们可以计算取出一个红色球的概率为:
```
red_probability = np.sum(posterior_distribution * np.linspace(0, 1, 101))
print(red_probability)
```
阅读全文