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数组遍历的简单实现方法小结
Apr 27 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
django中send_mail功能实现详解
Feb 06 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
May 29 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
使用python去除图片白色像素的实例
Dec 12 Python
Django框架获取form表单数据方式总结
Apr 22 Python
python Matplotlib模块的使用
Sep 16 Python
Python内置数据结构列表与元组示例详解
Aug 04 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
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
如何实现JS函数的重载
2006/09/22 Javascript
Javascript & DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
jQuery基本过滤选择器用法示例
2016/09/09 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
JS实现动态星空背景效果
2019/11/01 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
利用Python如何生成随机密码
2016/04/20 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
Python学习笔记之open()函数打开文件路径报错问题
2018/04/28 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python调用Windows命令打印文件
2020/02/07 Python
Python 绘制可视化折线图
2020/07/22 Python
应届大学生简历中的自我评价
2014/01/15 职场文书
企业员工薪酬方案
2014/06/04 职场文书
财会专业大学生求职信
2014/09/26 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
基层党支部承诺书
2015/04/30 职场文书
同意报考证明
2015/06/17 职场文书
PHP遍历数组的6种方式总结
2021/11/17 PHP
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电