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 相关文章推荐
python实现dnspod自动更新dns解析的方法
Feb 14 Python
python中迭代器(iterator)用法实例分析
Apr 29 Python
Python urllib、urllib2、httplib抓取网页代码实例
May 09 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
图解python全局变量与局部变量相关知识
Nov 02 Python
python生成器用法实例详解
Nov 22 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
python切片作为占位符使用实例讲解
Feb 17 Python
Python采集爬取京东商品信息和评论并存入MySQL
Apr 12 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
1.PHP简介
2006/10/09 PHP
php db类库进行数据库操作
2009/03/19 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
js 兼容多浏览器的回车和鼠标焦点事件代码(IE6/7/8,firefox,chrome)
2010/04/14 Javascript
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
javascript 通过键名获取键盘的keyCode方法
2017/12/31 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
星球大战与Python之间的那些事
2016/01/07 Python
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python代码能做成软件吗
2020/07/24 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
咨询公司各岗位职责
2013/12/02 职场文书
法制报告会主持词
2014/04/02 职场文书
政治思想表现评语
2014/05/04 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
解决Python字典查找报Keyerror的问题
2021/05/26 Python