品尝贝叶斯

Python 中的贝叶斯数据分析

Michal Oleszak

Machine Learning Engineer

二项分布

  • 离散分布,仅取两值:
    • 成功 (1)
    • 失败 (0)
  • 单参数:成功概率。
  • 任务:给定抽样结果(成功/失败),估计成功概率。
Python 中的贝叶斯数据分析

在 Python 中的二项分布

100 次试验中的成功数:

import numpy as np
np.random.binomial(100, 0.5)
51

 

np.random.binomial(100, 0.5)
44

从二项分布抽样:

import numpy as np
np.random.binomial(1, 0.5, size=5)
array([1, 0, 0, 1, 1])
Python 中的贝叶斯数据分析

正面概率

  • get_heads_prob() —— 自定义函数
  • 输入:一次硬币抛掷列表
  • 输出:成功概率的分布(列表)

 

import numpy as np
tosses = np.random.binomial(1, 0.5, size=1000)
print(tosses)
[1 0 0 0 1 1 0 1 1 ... ]
Python 中的贝叶斯数据分析

正面概率

heads_prob = get_heads_prob(tosses)
print(heads_prob)
[0.47815295 0.51679212 0.51684779 ... ]
import matplotlib.pyplot as plt
import seaborn as sns

sns.kdeplot(heads_prob, 
            shade=True, 
            label="heads probabilty")
plt.show()

一个对称的钟形曲线,在 X 轴约 0.51 处达到峰值。

Python 中的贝叶斯数据分析

让我们抛些硬币!

Python 中的贝叶斯数据分析

Preparing Video For Download...