Python实现的各种常见分布算法示例


Posted in Python onDecember 13, 2018

本文实例讲述了Python实现的各种常见分布算法。分享给大家供大家参考,具体如下:

#-*- encoding:utf-8 -*-
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
#####################
#二项分布
#####################
def test_binom_pmf():
  '''
  为离散分布
  二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?
  '''
  n = 10#独立实验次数
  p = 0.5#每次正面朝上概率
  k = np.arange(0,11)#0-10次正面朝上概率
  binomial = stats.binom.pmf(k,n,p)
  print binomial#概率和为1
  print sum(binomial)
  print binomial[2]
  plt.plot(k, binomial,'o-')
  plt.title('Binomial: n=%i , p=%.2f' % (n,p),fontsize=15)
  plt.xlabel('Number of successes')
  plt.ylabel('Probability of success',fontsize=15)
  plt.show()
def test_binom_rvs():
  '''
  为离散分布
  使用.rvs函数模拟一个二项随机变量,其中参数size指定你要进行模拟的次数。我让Python返回10000个参数为n和p的二项式随机变量
  进行10000次实验,每次抛10次硬币,统计有几次正面朝上,最后统计每次实验正面朝上的次数
  '''
  binom_sim = data = stats.binom.rvs(n=10,p=0.3,size=10000)
  print len(binom_sim)
  print "mean: %g" % np.mean(binom_sim)
  print "SD: %g" % np.std(binom_sim,ddof=1)
  plt.hist(binom_sim,bins=10,normed=True)
  plt.xlabel('x')
  plt.ylabel('density')
  plt.show()
#####################
#泊松分布
#####################
def test_poisson_pmf():
  '''
  泊松分布的例子:已知某路口发生事故的比率是每天2次,那么在此处一天内发生4次事故的概率是多少?
  泊松分布的输出是一个数列,包含了发生0次、1次、2次,直到10次事故的概率。
  '''
  rate = 2
  n = np.arange(0,10)
  y = stats.poisson.pmf(n,rate)
  print y
  plt.plot(n, y, 'o-')
  plt.title('Poisson: rate=%i' % (rate), fontsize=15)
  plt.xlabel('Number of accidents')
  plt.ylabel('Probability of number accidents', fontsize=15)
  plt.show()
def test_poisson_rvs():
  '''
  模拟1000个服从泊松分布的随机变量
  '''
  data = stats.poisson.rvs(mu=2, loc=0, size=1000)
  print "mean: %g" % np.mean(data)
  print "SD: %g" % np.std(data, ddof=1)
  rate = 2
  n = np.arange(0,10)
  y = stats.poisson.rvs(n,rate)
  print y
  plt.plot(n, y, 'o-')
  plt.title('Poisson: rate=%i' % (rate), fontsize=15)
  plt.xlabel('Number of accidents')
  plt.ylabel('Probability of number accidents', fontsize=15)
  plt.show()
#####################
#正态分布
#####################
def test_norm_pmf():
  '''
  正态分布是一种连续分布,其函数可以在实线上的任何地方取值。
  正态分布由两个参数描述:分布的平均值μ和方差σ2 。
  '''
  mu = 0#mean
  sigma = 1#standard deviation
  x = np.arange(-5,5,0.1)
  y = stats.norm.pdf(x,0,1)
  print y
  plt.plot(x, y)
  plt.title('Normal: $\mu$=%.1f, $\sigma^2$=%.1f' % (mu,sigma))
  plt.xlabel('x')
  plt.ylabel('Probability density', fontsize=15)
  plt.show()
#####################
#beta分布
#####################
def test_beta_pmf():
  '''
  β分布是一个取值在 [0, 1] 之间的连续分布,它由两个形态参数α和β的取值所刻画。
  β分布的形状取决于α和β的值。贝叶斯分析中大量使用了β分布。
  '''
  a = 0.5#
  b = 0.5
  x = np.arange(0.01,1,0.01)
  y = stats.norm.pdf(x,a,b)
  print y
  plt.plot(x, y)
  plt.title('Beta: a=%.1f, b=%.1f' % (a,b))
  plt.xlabel('x')
  plt.ylabel('Probability density', fontsize=15)
  plt.show()
#####################
#指数分布(Exponential Distribution)
#####################
def test_exp():
  '''
  指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔。
  比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等。
  '''
  lambd = 0.5#
  x = np.arange(0,15,0.1)
  y =lambd * np.exp(-lambd *x)
  print y
  plt.plot(x, y)
  plt.title('Exponential: $\lambda$=%.2f' % (lambd))
  plt.xlabel('x')
  plt.ylabel('Probability density', fontsize=15)
  plt.show()
def test_expon_rvs():
  '''
  指数分布下模拟1000个随机变量。scale参数表示λ的倒数。函数np.std中,参数ddof等于标准偏差除以 $n-1$ 的值。
  '''
  data = stats.expon.rvs(scale=2, size=1000)
  print "mean: %g" % np.mean(data)
  print "SD: %g" % np.std(data, ddof=1)
  plt.hist(data, bins=20, normed=True)
  plt.xlim(0,15)
  plt.title('Simulating Exponential Random Variables')
  plt.show()
test_expon_rvs()

测试运行结果如下:

Python实现的各种常见分布算法示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
python 链接和操作 memcache方法
Mar 04 Python
详谈python read readline readlines的区别
Sep 22 Python
Python爬虫中urllib库的进阶学习
Jan 05 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
浅谈Pandas中map, applymap and apply的区别
Apr 10 Python
python3安装speech语音模块的方法
Dec 24 Python
Python常用模块之requests模块用法分析
May 15 Python
详解Python3 pandas.merge用法
Sep 05 Python
tensorflow 实现自定义梯度反向传播代码
Feb 10 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 Python
Python线性拟合实现函数与用法示例
Dec 13 #Python
Python基于百度云文字识别API
Dec 13 #Python
Python3实现获取图片文字里中文的方法分析
Dec 13 #Python
在matplotlib的图中设置中文标签的方法
Dec 13 #Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 #Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 #Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 #Python
You might like
实用函数7
2007/11/08 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP解析RSS的方法
2015/03/05 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
文本链接逐个出现的js脚本
2007/12/12 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
Python isinstance函数介绍
2015/04/14 Python
windows下安装Python和pip终极图文教程
2017/03/05 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
2018/06/09 Python
python打印异常信息的两种实现方式
2019/12/24 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
Python项目跨域问题解决方案
2020/06/22 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
在线服装零售商:SheIn
2016/07/22 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
优秀校长事迹材料
2014/12/24 职场文书
检讨书范文1000字
2015/01/28 职场文书
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android