二项分布及Python实现——计算机视觉修炼之路(一) Love The Way You Lie 2022-10-04 12:53 133阅读 0赞 # 二项分布 # 二项分布是由伯努利提出的概念,指的是重复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)\}][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]` [P_C_X_n_times _pi_X_times _1-_pi _n-X]: https://latex.codecogs.com/gif.latex?P%3DC%28X%2Cn%29%5Ctimes%20%5Cpi%5EX%5Ctimes%20%281-%5Cpi%20%29%5E%7B%28n-X%29%7D
还没有评论,来说两句吧...