二项分布及Python实现——计算机视觉修炼之路(一)

二项分布

二项分布是由伯努利提出的概念,指的是重复n次独立的伯努利试验。在每次试验中只有两种可能的结果,而且两种结果发生与否互相对立,与其它各次试验结果无关,事件发生与否的概率在每一次独立试验中都保持不变,则这一系列试验总称为n重伯努利实验,当试验次数为1时,二项分布服从 0−1 分布。

考虑只有两种可能结果的随机试验,当成功的概率(π)是恒定的,且各次试验相互独立,这种试验在统计学上称为伯努利试验(Bernoulli trial)。如果进行n次伯努利试验,取得成功次数为X(X=0,1,2…,n)的概率可用下面的二项分布概率公式来描述:

P=C(X,n)\times \pi^X\times (1-\pi )^{(n-X)}

其中,式中n为独立的伯努利试验次数,π为成功的概率,(1−π)为失败的概率。C(X,n)表示在n次试验中出现X的各种组合情况,在此称为二项系数。

二项分布的示例

抛硬币试验就是伯努利试验。在一次试验中硬币要么正面朝上,要么反面朝上,每次正面朝上的概率都一样p=0.5。且每次抛硬币的事件相互独立,即每次正面朝上的概率不受其他试验的影响。如果独立重复抛n=10次硬币,正面朝上的次数k可能为0,1,2,3,4,5,6,7,8,9,10中的任何一个,那么k显然是一个随机变量,这里就称随机变量k服从二项分布。

基于 scipy 的二分布计算

在 Python 中, scipy 包提供了丰富的可用函数。其中,计算每次观测的二项分布概率密度函数为: stats.binom.pmf(k,n,p) 其中n 表示测量次数, k 是目标结果的次数, p 为抽样概率。输出为k个元素的数组,数组的每个元素表示出现k次目标结果的概率。

下面我们通过一个具体例子来说明一下该函数的用法。 有一个质地均匀的骰子,投掷5次骰子,求出现3次点数为6的概率。

使用 scipy 进行求解为: binom.pmf(range(6), 5, 1/6) 得到输出: array([0.401878, 0.401878, 0.166751, 0.032150, 0.003215, 0.000129]) 由结果可知:出现0或1次6点的概率为40.2%,而出现3次6点的概率为3.215%。

编程示例

使用stats.binom.pmf伯努利分布函数解决实际问题,具体要求如下:

  • 从后台获取数据 n 和 p,n 为样本数,p 为抽样概率;
  • 已知实际问题为:抛硬币 n 次,现在每一次朝上的概率是 p,依次求出 0-n 次正面朝上的概率;
  • 通过stats.binom.pmf求出概率值,并打印结果。
import numpy as np
from scipy import stats

n = input()     #n是样本数
p = input()     #p是抽样概率
n = int(n)
p = float(p)
y = stats.binom.pmf(range(n+1),n,p)
print(y)

测试输入:

  1. 5
  2. 0.5

预期输出:

  1. [0.03125 0.15625 0.3125 0.3125 0.15625 0.03125]

 

你可能感兴趣的:(计算机视觉,二项分布,scipy,stats.binom.pmf)