服务器网站怎么用,tornado做网站,手机卡顿优化软件,seo长尾关键词【1】引言
前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式#xff0c;它们作为基础#xff0c;解释了事件发生及其概率的对应关系#xff0c;相关文章链接为#xff1a;
神经网络|(四)概率论基础知识-古典概型-CSDN博客
神经网络|(五)概率论基础知识-条件概…【1】引言
前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式它们作为基础解释了事件发生及其概率的对应关系相关文章链接为
神经网络|(四)概率论基础知识-古典概型-CSDN博客
神经网络|(五)概率论基础知识-条件概率-CSDN博客
神经网络|(六)概率论基础知识-全概率公式_部分概率和总概率的关系-CSDN博客
神经网络|(七)概率论基础知识-贝叶斯公式-CSDN博客
在此基础上我们更进一步学习二项分布。
【2】概念分析
【2.1】随机变量
时间的发生可以用符号来记录例如事件A事件B等等。每个时间具体发生的情况又可以用数量来表达例如事件A发生时记录为1事件B发生时有5只小猫在玩耍3只小猫在睡觉等总而言之千般万物各有对应的表征。
进一步各个事件发生时真正改变的那个因素才是我们关心的这个因素就是变量。
随机变量就是随机试验中事件发生时会改变的因素。
随机试验的特点是试验可以在相同的条件下重复每次试验的结果不止一个且能明确所有可能的结果但实际上不能提前预知哪个结果会出现。
所以随机变量就是可在相同条件下重复的试验中虽然知道所有可能结果但无法确定具体哪种结果可能出现时具体出现的那个结果的表征随机变量代表了具体的试验结果。
随机变量有离散和连续两种形式此处我们先研究离散形式的随机变量。
【2.2】离散型随机变量及其分布
虽然定义了离散型随机变量这个名字但还是要强调
随机变量是随机试验的结果表征因为只有随机试验完成才知道具体的结果所以这个结果的取值随着试验次数的增加不断变化又因为试验都是在相同的条件下重复进行所以每次出现的结果彼此独立、互不影响。
离散型的随机变量就是指这些相互独立的随机变量的取值是跳跃的在数学上的呈现是离散的点而非练成一条线。
如果记X为随机变量以x记录具体的随机变量取值就可以简写随机试验的概率
P{Xx}p
在全概率公式的分析中已知各个分概率对应的事件是彼此互斥但总体互补的关系它们互不隶属但总体上能凑成一个完整的试验。所以各个分概率加起来总和应该是1。
所以随机试验的概率详细写可以为 具体的解释为随机变量X取值为时的概率为。
同时也一定会满足 【2.3】二项分布-伯努利分布
如果一个随机试验只有两种结果A或者非这种试验可以称为伯努利试验。
伯努利试验的概率可以记作P(A)p(0p1)和P()1-P。
伯努利试验重复n次成为n重伯努利试验。如果想计算这n次试验中A发生k次的概率就可以分析
a.用X记录A发生
b.用Xk表征A发生k次。
所以有 刚好上式就是二项式的第n项所以n重伯努利试验结果的分布规律也称为二项分布。
本质上二项分布涉及三个量代表事件的X记录事件的x以及时间对应的概率p。
当n1时二项分布也称为(0-1)分布。
有时候为了让公式更好看和便于书写可以记录q1-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重伯努利试验 基于此函数的特点先引入必要模块和定义所需参数
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,axsplt.subplots(1,2) #定义一行两列的图像绘制
axs[0].hist(data_binomial, binsn1, densityFalse, alpha0.6, colorg) #按数量绘制生成的数字分布图
axs[1].hist(data_binomial, binsn1, densityTrue, alpha0.6, colory) #按概率回执生成的数字分布图
fig.suptitle(Binomial Distribution Simulation,y0.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(bars100)-CSDN博客
puthon画图|hist()函数深度探索-CSDN博客
代码使用了10次伯努利试验单次成功率为0.5然后对这10次c重伯努利试验打包dabao重复1000次获得的试验成功次数和概率为 图2 伯努利仿真
图2的显示效果非常类似于正态分布其中仿真结果等于5的次数出现了大概250次在所有渠道的数据中的占比大约为0.28。
此时的完整代码为
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,axsplt.subplots(1,2) #定义一行两列的图像绘制
axs[0].hist(data_binomial, binsn1, densityFalse, alpha0.6, colorg) #按数量绘制生成的数字分布图
axs[1].hist(data_binomial, binsn1, densityTrue, alpha0.6, colory) #按概率回执生成的数字分布图
fig.suptitle(Binomial Distribution Simulation,y0.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()函数进行了二项分布效果仿真。