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实现的AES双向对称加密解密与用法分析
May 02 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
Python制作动态字符图的实例
Jan 27 Python
谈谈Python中的while循环语句
Mar 10 Python
python微信撤回监测代码
Apr 29 Python
python进程和线程用法知识点总结
May 28 Python
python3.7简单的爬虫实例详解
Jul 08 Python
深入了解Python iter() 方法的用法
Jul 11 Python
Django框架表单操作实例分析
Nov 04 Python
Python web如何在IIS发布应用过程解析
May 27 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 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实现的迷你漂流瓶
2015/07/29 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
详解jQuery选择器
2016/12/21 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
Vue 实现从小到大的横向滑动效果详解
2019/10/16 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
JavaScript编码小技巧分享
2020/09/17 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Django开发中复选框用法示例
2018/03/20 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
Python骚操作之动态定义函数
2019/03/26 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
机关节能减排实施方案
2014/03/17 职场文书
初中英语课后反思
2014/04/25 职场文书
验房委托书
2014/08/30 职场文书
正风肃纪剖析材料范文
2014/10/10 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电