神经网络|(八)概率论基础知识-二项分布及python仿真

【1】引言

前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式,它们作为基础,解释了事件发生及其概率的对应关系,相关文章链接为:

神经网络|(四)概率论基础知识-古典概型-CSDN博客

神经网络|(五)概率论基础知识-条件概率-CSDN博客

神经网络|(六)概率论基础知识-全概率公式_部分概率和总概率的关系-CSDN博客

神经网络|(七)概率论基础知识-贝叶斯公式-CSDN博客

在此基础上,我们更进一步,学习二项分布。

【2】概念分析

【2.1】随机变量

时间的发生可以用符号来记录,例如事件A,事件B等等。每个时间具体发生的情况又可以用数量来表达,例如事件A发生时记录为1,事件B发生时有5只小猫在玩耍3只小猫在睡觉等,总而言之千般万物各有对应的表征。

进一步,各个事件发生时,真正改变的那个因素才是我们关心的,这个因素就是变量。

随机变量就是随机试验中,事件发生时会改变的因素。

随机试验的特点是:试验可以在相同的条件下重复;每次试验的结果不止一个,且能明确所有可能的结果;但实际上不能提前预知哪个结果会出现。

所以,随机变量就是:可在相同条件下重复的试验中,虽然知道所有可能结果,但无法确定具体哪种结果可能出现时,具体出现的那个结果的表征,随机变量代表了具体的试验结果。

随机变量有离散和连续两种形式,此处我们先研究离散形式的随机变量。

【2.2】离散型随机变量及其分布

虽然定义了离散型随机变量这个名字,但还是要强调:

随机变量是随机试验的结果表征,因为只有随机试验完成,才知道具体的结果,所以这个结果的取值随着试验次数的增加不断变化,又因为试验都是在相同的条件下重复进行,所以每次出现的结果彼此独立、互不影响。

离散型的随机变量,就是指这些相互独立的随机变量的取值是跳跃的,在数学上的呈现是离散的点,而非练成一条线。

如果记X为随机变量,以x记录具体的随机变量取值,就可以简写随机试验的概率:

P{X=x}=p

在全概率公式的分析中已知:各个分概率对应的事件,是彼此互斥但总体互补的关系,它们互不隶属,但总体上能凑成一个完整的试验。所以各个分概率加起来,总和应该是1。

所以随机试验的概率,详细写可以为:

具体的解释为:随机变量X取值为时的概率为

同时也一定会满足:

【2.3】二项分布-伯努利分布

如果一个随机试验只有两种结果:A或者非,这种试验可以称为伯努利试验。

伯努利试验的概率,可以记作:P(A)=p(0<p<1)和P()=1-P。

伯努利试验重复n次,成为n重伯努利试验。如果想计算这n次试验中,A发生k次的概率,就可以分析:

a.用X记录A发生;

b.用X=k表征A发生k次。

所以有:

刚好,上式就是二项式的第n项,所以n重伯努利试验结果的分布规律,也称为二项分布。

本质上,二项分布涉及三个量:代表事件的X,记录事件的x,以及时间对应的概率p。

当n=1时,二项分布也称为(0-1)分布。

有时候为了让公式更好看和便于书写,可以记录q=1-p。

【3】二项分布python仿真

使用python语言,调用numpy模块中的numpy.random.binomial()函数,可以实现对多重伯努利试验概率分布即二项分布的数学仿真。

numpy.random.binomial()函数的官网链接为:

https://numpy.org/doc/stable/reference/random/generated/numpy.random.binomial.html

这个函数是按照伯努利试验概率分布的形式生成随机数,官网对此的说明为:

++图1 numpy.random.binomial()函数生成随机数工作原理++

numpy.random.binomial()函数的参数解释为:

random.binomial(n, p, size)

n:伯努利试验的次数

p:伯努利试验的成功概率

size:把上述n次伯努利试验看成一个完整的大型伯努利试验,size代表对这个大型伯努利试验重复的次数,实际上就是打包重复n重伯努利试验

基于此函数的特点,先引入必要模块和定义所需参数:

python 复制代码
import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块

# 二项分布参数
n = 10  # 试验次数
p = 0.5  # 成功的概率
size = 1000  # 生成随机数的数量

然后生成伯努利随机数:

python 复制代码
# 生成符合二项分布的随机数
data_binomial = np.random.binomial(n, p, size) #随机数分布符合二项分布的形式

之后就是对随机数的分布情况进行绘图:

python 复制代码
# 绘制直方图
fig,axs=plt.subplots(1,2) #定义一行两列的图像绘制
axs[0].hist(data_binomial, bins=n+1, density=False, alpha=0.6, color='g') #按数量绘制生成的数字分布图
axs[1].hist(data_binomial, bins=n+1, density=True, alpha=0.6, color='y') #按概率回执生成的数字分布图
fig.suptitle('Binomial Distribution Simulation',y=0.95) #设置图像名称
axs[0].set_xlabel('Number of Successes') #设置X轴标签
axs[0].set_ylabel('Probability') #设置Y轴标签
axs[1].set_xlabel('Number of Successes') #设置X轴标签
plt.savefig('binomial.png') #保存图像
plt.show() #显示图像

在这里调用了hist()函数进行数据的概率分布画图,如果不是很熟悉,可以参考链接回忆:

python画图|hist()函数画直方图初探_python hist()-CSDN博客

python画图|hist()函数画直方图进阶_ax.hist()函数-CSDN博客

python画图|hist()函数深层体验_python hist函数-CSDN博客

python画图|hist()函数高阶探索_python 画图.hist(bars=100)-CSDN博客

puthon画图|hist()函数深度探索-CSDN博客

代码使用了10次伯努利试验,单次成功率为0.5,然后对这10次c重伯努利试验打包dabao重复1000次,获得的试验成功次数和概率为:

++图2 伯努利仿真++

图2的显示效果非常类似于正态分布,其中仿真结果等于5的次数出现了大概250次,在所有渠道的数据中的占比大约为0.28。

此时的完整代码为:

python 复制代码
import numpy as np #引入numpy模块
import matplotlib.pyplot as plt #引入matplotlib模块

# 二项分布参数
n = 10  # 试验次数
p = 0.5  # 成功的概率
size = 1000  # 生成随机数的数量

# 生成符合二项分布的随机数
data_binomial = np.random.binomial(n, p, size) #随机数分布符合二项分布的形式

# 绘制直方图
fig,axs=plt.subplots(1,2) #定义一行两列的图像绘制
axs[0].hist(data_binomial, bins=n+1, density=False, alpha=0.6, color='g') #按数量绘制生成的数字分布图
axs[1].hist(data_binomial, bins=n+1, density=True, alpha=0.6, color='y') #按概率回执生成的数字分布图
fig.suptitle('Binomial Distribution Simulation',y=0.95) #设置图像名称
axs[0].set_xlabel('Number of Successes') #设置X轴标签
axs[0].set_ylabel('Probability') #设置Y轴标签
axs[1].set_xlabel('Number of Successes') #设置X轴标签
plt.savefig('binomial.png') #保存图像
plt.show() #显示图像

【4】细节说明

使用python语言调用numpy模块中的numpy.random.binomial()函数时,生成的数据本身按照二项分布的形式出现,实际代码没有去编写二项分布函数。

【5】总结

回顾了二项分布的基础知识,使用python语言调用numpy模块中的numpy.random.binomial()函数进行了二项分布效果仿真。

相关推荐
云和数据.ChenGuang16 天前
metrics的解释 人工智能
人工智能·深度学习·学习·机器学习·概率论
AI科技星17 天前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
AI科技星17 天前
第六卷:量天尺传奇(几何学)
网络·人工智能·算法·概率论·学习方法·几何学·拓扑学
AI科技星18 天前
数术江湖·全卷合集 - 硬核江湖・数理史诗
android·人工智能·架构·概率论·学习方法
AI科技星19 天前
第三卷:质数王朝志(全卷定稿)
c语言·开发语言·汇编·electron·概率论
AI科技星19 天前
第四卷:橡皮泥江湖(拓扑学)――诸同奥义,九同立境贯拓扑
网络·人工智能·线性代数·架构·概率论·学习方法·拓扑学
AI科技星19 天前
第三卷:质数王朝志 第四章:RSA护国玄阵,质数锁天地,一数镇万法
android·人工智能·架构·概率论·学习方法
AI科技星20 天前
《全域数学/数术工坊》体系总览
c语言·开发语言·汇编·electron·概率论
lhjcsubupt20 天前
第二十二篇 从随机过程到IMU噪声模型
算法·机器学习·概率论
做cv的小昊21 天前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论