百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

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

itomcoil 2025-06-08 21:53 3 浏览

作者:Runsen

二项分布

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

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



在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')


# 可以打印随机变量的值,按照定义,其值为出现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中,可以使用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')

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

几何分布(Geometric distribution)

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

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

其分布函数为:



在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')

泊松分布(Poisson distribution)

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

泊松分布的公式为:



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


在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')


正态分布(Normal Distribution)

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

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



则称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')


总结

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

相关推荐

蚂蚁金服用什么技术这么厉害?(蚂蚁金服是怎么赚钱的?)

阿里妹导读:本文来自蚂蚁金服人工智能部认知计算组的基础算法团队,文章提出一整套创新算法与架构,通过对TensorFlow底层的弹性改造,解决了在线学习的弹性特征伸缩和稳定性问题,并以GroupLass...

R数据分析:逻辑斯蒂回归与泊松回归

今天将逻辑回归和泊松回归放一起给大家写写,因为它两在R中的做法都非常的相似和非常的简单,同时还有两个回归的图形化表达。什么时候用逻辑回归Logisticregression,alsoknown...

想学好Python数据分析,一定要掌握的重要模块之Statsmodels

Statsmodels是Python中一个功能强大且广泛使用的统计建模和经济计量学库。它允许用户构建各种统计模型,执行假设检验,进行预测,并对模型结果进行详细的诊断和可视化。以下是statsmodel...

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

作者:Runsen二项分布包含n个相同的试验每次试验只有两个可能的结果:“成功”或“失败”。出现成功的概率p对每一次试验是相同的,失败的概率q也是如此,且p+q=1。试验是互相独立的。试验成功或失败...

60行代码实现经典论文:0.7秒搞定泊松盘采样,比Numpy快100倍

编辑整理自太极图形量子位|公众号QbitAI由随机均匀的点组成的图案,在动植物身上已经很常见了。像杨梅、草莓、荔枝、红毛丹这样的水果,表面都有颗粒或者毛发状的结构,它们随机、均匀地散布在水果表...

linux ubuntu 安装mongo教程(实践步骤)

最近需要在linux上安装mongdb由于之前没安装过。在网上搜索到很多安装方法,但有的按照步骤操作是不行的。前后共花费了半天时间找到一个可行的步骤,分享给大家,不必走弯路。如果安装过程遇到技术问题...

MongoDB 分片集群方案及其优缺点分析

一、MongoDB分片集群架构核心组件1.Mongos(路由节点)-无状态代理,客户端连接入口-负责查询路由、结果聚合-需部署多个以实现高可用2.ConfigServer(配置服务器)-...

CentOS7安装Mongodb 4.x.x(CentOS7安装yum源的方法)

1、下载安装包curl-Ohttps://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz2、解压安装包tar-zxvfmon...

MongoDB+GridFS存储文件方案(mongodb存储在哪里)

GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文...

如何使用 GridFS 、 Node.js、Mongodb和Multer 管理文件存储?

什么是GridFs?GridFs是用于存储音频、视频或图像等大型文件的mongodb规范……它最适用于存储超过mongodb文档大小限制(16MB)的文件。此外,无论文件大小如何,当您想...

Mongodb 集群搭建方法(mongodb集群状态startup2)

#大有学问#MongoDB是一个非关系型数据库(NoSQL),提供高性能、高可用性和自动扩展的特点。在MongoDB中,可以通过搭建集群实现这些特性。MongoDB集群主要有两种类型:副本集(...

记一次生产事故:MongoDB数据分布不均的解决方案

推荐阅读:我为什么放弃MySQL,选择了MongoDB?看到这个数据你就会明白了事故集合:可以很明显可以看到我们这个集合的数据严重分布不均匀。一共有8个分片,面对这个情况我首先想到的是手动拆分数据块,...

百万级高并发mongodb集群性能数十倍提升优化实践

背景线上某集群峰值TPS超过100万/秒左右(主要为写流量,读流量很低),峰值tps几乎已经到达集群上限,同时平均时延也超过100ms,随着读写流量的进一步增加,时延抖动严重影响业务可用性。该集群采用...

MongoDB 常见问题处理(二)(mongodb数据处理)

MongoDB数据库中,删除请求数超过阈值的处理方案?数据删除发生在文档迁移过程中,MongoDB4.0以上版本均衡阈值很小,容易发生迁移,频繁的迁移数据导致delete数据较大,同时还会导致CPU负...

实战:docker搭建FastDFS文件系统并集成SpringBoot

实战:docker搭建FastDFS文件系统并集成SpringBoot前言15年的时候,那时候云存储还远远没有现在使用的这么广泛,归根结底就是成本和安全问题,记得那时候我待的公司是做建站开发的,前期用...