Python实现的概率分布运算操作示例


Posted in Python onAugust 14, 2017

本文实例讲述了Python实现的概率分布运算操作。分享给大家供大家参考,具体如下:

1. 二项分布(离散)

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
'''
# 二项分布 (binomial distribution)
# 前提:独立重复试验、有放回、只有两个结果
# 二项分布指出,随机一次试验出现事件A的概率如果为p,那么在重复n次试验中出现k次事件A的概率为:
# f(n,k,p) = choose(n, k) * p**k * (1-p)**(n-k)
'''
# ①定义二项分布的基本信息
p = 0.4 # 事件A概率0.4
n = 5  # 重复实验5次
k = np.arange(n+1) # 6种可能出现的结果
#k = np.linspace(stats.binom.ppf(0.01,n,p), stats.binom.ppf(0.99,n,p), n+1) #另一种方式
# ②计算二项分布的概率质量分布 (probability mass function)
# 之所以称为质量,是因为离散的点,默认体积(即宽度)为1
# P(X=x) --> 是概率
probs = stats.binom.pmf(k, n, p)
#array([ 0.07776, 0.2592 , 0.3456 , 0.2304 , 0.0768 , 0.01024])
#plt.plot(k, probs)
# ③计算二项分布的累积概率 (cumulative density function)
# P(X<=x) --> 也是概率
cumsum_probs = stats.binom.cdf(k, n, p)
#array([ 0.07776, 0.33696, 0.68256, 0.91296, 0.98976, 1.   ])
# ④根据累积概率得到对应的k,这里偷懒,直接用了上面的cumsum_probs
k2 = stats.binom.ppf(cumsum_probs, n, p)
#array([0, 1, 2, 3, 4, 5])
# ⑤伪造符合二项分布的随机变量 (random variates)
X = stats.binom.rvs(n,p,size=20)
#array([2, 3, 1, 2, 2, 2, 1, 2, 2, 3, 3, 0, 1, 1, 1, 2, 3, 4, 0, 3])
#⑧作出上面满足二项分布随机变量的频数直方图(类似group by)
plt.hist(X)
#⑨作出上面满足二项分布随机变量的频率分布直方图
plt.hist(X, normed=True)
plt.show()

2. 正态分布(连续)

'''
标准正态分布
密度函数:f(x) = exp(-x**2/2)/sqrt(2*pi)
'''
x = np.linspace(stats.norm.ppf(0.01), stats.norm.ppf(0.99), 100)
# 概率密度分布函数(Probability density function)
# 之所以称为密度,是因为连续的点,默认体积为0
# f(x) --> 不是概率
probs = norm.pdf(x)
# plt.plot(x, probs, 'r-', lw=5, alpha=0.6, label='norm pdf')
# 累积概率密度函数 Cumulative density function
# 定积分 ∫_-oo^a f(x)dx --> 是概率
cumsum_probs = stats.norm.cdf(x)
# 伪造符合正态分布的随机变量X
# 通过loc和scale参数可以指定随机变量的偏移和缩放参数。对于正态分布的随机变量来说,这两个参数相当于指定其期望值和标准差:
X = stats.norm.rvs(loc=1.0, scale=2.0, size=1000)
#⑨作出上面正态分布随机变量的频率分布直方图
plt.hist(X, normed=True, histtype='stepfilled', alpha=0.2)
plt.legend(loc='best', frameon=False)
plt.show()
# 对给定的数据进行参数估计。这里偷懒了,就用上面的X
mean, std = stats.norm.fit(X)
#array(1.01810091), array(2.00046946)

附:NumPy、SciPy与MatPlotLib模块下载地址:

NumPy: http://sourceforge.net/projects/numpy/files/NumPy/1.9.2/
SciPy: http://sourceforge.net/projects/scipy/files/scipy/0.15.1/
MatPlotLib: http://matplotlib.org/downloads.html

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python编程之属性和方法实例详解
May 19 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
python3+PyQt5自定义视图详解
Apr 24 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
Jun 11 Python
对python中的os.getpid()和os.fork()函数详解
Aug 08 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
如何使用Python抓取网页tag操作
Feb 14 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
python实现取余操作的简单实例
Aug 16 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 #Python
python的mysqldb安装步骤详解
Aug 14 #Python
python制作小说爬虫实录
Aug 14 #Python
python安装Scrapy图文教程
Aug 14 #Python
基于python时间处理方法(详解)
Aug 14 #Python
关于Django外键赋值问题详解
Aug 13 #Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 #Python
You might like
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP进程同步代码实例
2015/02/12 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
jQuery之ajax技术的详细介绍
2013/06/19 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
Vue组件tree实现树形菜单
2017/04/13 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
详解js的视频和音频采集
2018/08/09 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
简单谈谈Python的pycurl模块
2018/04/07 Python
一份python入门应该看的学习资料
2018/04/11 Python
详解Python 函数如何重载?
2019/04/23 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Python和Sublime整合过程图示
2019/12/25 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
深入了解NumPy 高级索引
2020/07/24 Python
Python3如何实现Win10桌面自动切换
2020/08/11 Python
视图的作用
2014/12/19 面试题
酒店管理求职信范文
2014/04/06 职场文书
python数据库批量插入数据的实现(executemany的使用)
2021/04/30 Python
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
2021/07/01 MySQL
cypress测试本地web应用
2022/06/01 Javascript