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中使用logging模块代替print(logging简明指南)
Jul 09 Python
python获取指定路径下所有指定后缀文件的方法
May 26 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Python分布式进程中你会遇到的问题解析
May 28 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
python 装饰器功能与用法案例详解
Mar 06 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Python基于xlutils修改表格内容过程解析
Jul 28 Python
python 爬取B站原视频的实例代码
Sep 09 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
Jan 15 Python
Python办公自动化之教你如何用Python将任意文件转为PDF格式
Jun 28 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以ROOT权限执行系统命令的方法
2011/02/10 PHP
php FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
VueJs路由跳转——vue-router的使用详解
2017/01/10 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
2019/08/27 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python求crc32值的方法
2014/10/05 Python
Python中的super用法详解
2015/05/28 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Python常见字典内建函数用法示例
2018/05/14 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
对python读写文件去重、RE、set的使用详解
2018/12/11 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
详解Python 函数参数的拆解
2020/09/02 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
性能服装:HYLETE
2018/08/14 全球购物
幼儿园教师考核制度
2014/02/01 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js