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第八周:详解网络编程基础(socket)
Dec 14 Python
Sanic框架安装与简单入门示例
Jul 16 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
python实现贪吃蛇小游戏
Mar 21 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
python celery分布式任务队列的使用详解
Jul 08 Python
Python调用C语言的实现
Jul 26 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
Python动态强类型解释型语言原理解析
Mar 25 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检测文件编码的函数
2014/04/21 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
基于CI(CodeIgniter)框架实现购物车功能的方法
2018/04/09 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
jquery日历控件实现方法分享
2014/03/07 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
Javascript验证方法大全
2015/09/21 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
2016/05/05 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
2019/04/20 Javascript
监控Nodejs的性能实例代码
2019/07/02 NodeJs
vant中的toast轻提示实现代码
2020/11/04 Javascript
python中xrange和range的区别
2014/05/13 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
python 实现逻辑回归
2020/12/30 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
美国孕妇装购物网站:Motherhood Maternity
2019/09/22 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
一年级学生评语
2014/04/23 职场文书
初三新学期计划书
2014/05/03 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
竞聘自述材料
2014/08/25 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
2015年元旦标语大全
2014/12/09 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
小学中队长竞选稿
2015/11/20 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书