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 ansible服务及剧本编写
Dec 29 Python
django2 快速安装指南分享
Jan 05 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
使用Fabric自动化部署Django项目的实现
Sep 27 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
keras小技巧——获取某一个网络层的输出方式
May 23 Python
python能自学吗
Jun 18 Python
详解python tkinter 图片插入问题
Sep 03 Python
python 如何用terminal输入参数
May 25 Python
python playwright之元素定位示例详解
Jul 23 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
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
深入apache配置文件httpd.conf的部分参数说明
2013/06/28 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
用javascript获得地址栏参数的两种方法
2006/11/08 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Linux下Python获取IP地址的代码
2014/11/30 Python
python下读取公私钥做加解密实例详解
2017/03/29 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
详解numpy的argmax的具体使用
2019/05/27 Python
在django admin中添加自定义视图的例子
2019/07/26 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
python、Matlab求定积分的实现
2019/11/20 Python
django 读取图片到页面实例
2020/03/27 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python无损压缩图片的示例代码
2020/08/06 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
html5中使用hotcss.js实现手机端自适配的方法
2020/04/23 HTML / CSS
副总经理岗位职责
2014/03/16 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
维修工先进事迹
2014/05/29 职场文书
2014年小学教师工作总结
2014/11/10 职场文书
python办公自动化之excel的操作
2021/05/23 Python
vue使用echarts实现折线图
2022/03/21 Vue.js