您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

Python实现概率分布,学数据统计的需要收藏

时间:2020-06-24 13:39:15  来源:  作者:

作者:Runsen

二项分布

包含n个相同的试验 每次试验只有两个可能的结果:“成功”或“失败”。出现成功的概率p对每一次试验是相同的,失败的概率q也是如此,且p+q=1。试验是互相独立的。试验成功或失败可以计数,即试验结果对应于一个离散型随机变量。

以X表示n次重复独立试验中事件A(成功)出现的次数,则

Python实现概率分布,学数据统计的需要收藏

 

Python中,可以使用scipy.stats模块中的binom.rvs()方法生成符合二项分布的离散随机变量。该方法的参数n表示n次重复独立试验,p表示事件A出现的次数。size表示做多少次二项分布试验。

同时,本文中使用seaborn的distplot方法绘制随机变量分布的直方图。在大数据量的试验下,通过随机变量出现的频率除以试验的次数,可以得到特定离散随机变量出现的概率。

from scipy.stats import binom
import seaborn as sns
data_binom = binom.rvs(n=10,p=0.5,size=10000)
ax = sns.distplot(data_binom,
                  kde=False,
                  color='green',
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Binomial Distribution', ylabel='Frequency')
Python实现概率分布,学数据统计的需要收藏

 

# 可以打印随机变量的值,按照定义,其值为出现A事件的次数,范围肯定在[0,1]
print(data_binom)
[2 3 6 ... 5 4 3]

以抛硬币试验解析上图,得出连续抛10次硬币,5次为正面的概率最高,概率趋近于2500/10000=25%。

贝努里分布(Bernoulli Distribution)

贝努里分布为特殊的二项分布,即每次执行一次试验(n=1),然后获取单次试验的随机变量的值,为0或1。所以贝努里分布也被称为0-1分布。其分布函数为:

Python实现概率分布,学数据统计的需要收藏

 

在python中,可以使用scipy.stats模块中的bernoulli.rvs()方法生成符合二项分布的离散随机变量。其它参数同二项分布。

from scipy.stats import bernoulli
data_bern = bernoulli.rvs(size=10000,p=0.5)
ax= sns.distplot(data_bern,
                 kde=False,
                 color="green",
                 hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Bernoulli Distribution', ylabel='Frequency')
Python实现概率分布,学数据统计的需要收藏

 

以抛硬币试验解析上图,得出正面和反面出现的概率,趋近于5000/10000=50%。

几何分布(Geometric distribution)

几何分布是指在n次贝努里试验中,经过k次获得1次成功的概率。

 几何分布的特点:
(1)进行一系列相互独立的试验;
(2)每一次试验既有成功的可能,也有失败的可能,且单次试验的成功概率相同;
(3)主要是为了取得第一次成功需要进行多少次试验。

其分布函数为:

Python实现概率分布,学数据统计的需要收藏

 

在python中,可以使用scipy.stats模块中的geom.rvs()方法得出几何分布的离散随机变量。

from scipy.stats import geom
data_geom = geom.rvs(size=10000,p=0.5)
ax= sns.distplot(data_geom,
                 kde=False,
                 color="green",
                 hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Geometric Distribution', ylabel='Frequency')
Python实现概率分布,学数据统计的需要收藏

 

泊松分布(Poisson distribution)

泊松分布是用来描述在一指定时间范围内或在指定的面积或体积之内某一事件出现的次数的分布,例如某企业每月发生事故的次数。

泊松分布的公式为:

Python实现概率分布,学数据统计的需要收藏

 

式中,为给定的时间间隔内事件的平均数。

在python中,可以使用scipy.stats模块中的poisson.rvs()方法得出泊松分布的连续随机变量。其中参数mu即为公式中的,其它参数同上文方法。

from scipy.stats import poisson
data_poisson = poisson.rvs(mu=3, size=10000)
ax = sns.distplot(data_poisson,
                  bins=30,
                  kde=False,
                  color="green",
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Poisson Distribution', ylabel='Frequency')
Python实现概率分布,学数据统计的需要收藏

 

正态分布(Normal Distribution)

在连续型随机变量中,最重要的一种随机变量是具有钟形概率分布的随机变量。人们称它为正态随机变量,相应的概率分布称为正态分布。

如果随机变量X的概率密度为:

Python实现概率分布,学数据统计的需要收藏

 

则称X服从正态分布,记作,其中,,, 为随机变量X的均值,为随机变量X的标准差,它们是正态分布的两个参数。

在python中,可以使用scipy.stats模块中的norm.rvs()方法产生符合二项分布的连续随机变量。其中参数loc代表随机变量的均值,size变量代表随机变量的标准差。

from scipy.stats import norm
# 生成标准正态分布,N(0,1)
data_normal = norm.rvs(size=10000,loc=0,scale=1)
ax = sns.distplot(data_normal,
                  bins=100,
                  kde=True,
                  color="green",
                  hist_kws={"linewidth": 15,'alpha':1})
ax.set(xlabel='Normal Distribution', ylabel='Frequency')
Python实现概率分布,学数据统计的需要收藏

 

总结

本文通过scipy.stats包中的随机分布函数rvs方法(Random variates),执行10000次随机变量的计算,通过随机变量值个数直方图的绘制得出特定分布的图形。另外,也可以通过随机分布函数的pmf方法直接获得指定参数下的概率值,然后画出参数与概率的对应关系,但在本文中不做展开。



Tags:Python 概率分布   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
包含n个相同的试验 每次试验只有两个可能的结果:“成功”或“失败”。出现成功的概率p对每一次试验是相同的,失败的概率q也是如此,且p+q=1。试验是互相独立的。试验成功或失败可以计数,即试验结果对应于一个离散型随机变...【详细内容】
2020-06-24  Tags: Python 概率分布  点击:(33)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(8)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条