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批量提取word内信息
Aug 09 Python
python非递归全排列实现方法
Apr 10 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
对python 命令的-u参数详解
Dec 03 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
如何使用pyinstaller打包32位的exe程序
May 26 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
详解Python中Pyyaml模块的使用
Oct 08 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
javascript第一课
2007/02/27 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
VueJS全面解析
2016/11/10 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
2020/11/11 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
营业员岗位职责
2015/02/11 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
电工实训心得体会
2016/01/14 职场文书
幼儿教师继续教育培训心得体会
2016/01/19 职场文书