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递归计算N!的方法
May 05 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
Pyorch之numpy与torch之间相互转换方式
Dec 31 Python
pandas之分组groupby()的使用整理与总结
Jun 18 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
pytorch Dropout过拟合的操作
May 27 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 25 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 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
phpinfo 系统查看参数函数代码
2009/06/05 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
JQuery中的$.getJSON 使用说明
2011/03/10 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
用Python的urllib库提交WEB表单
2009/02/24 Python
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python中使用 Selenium 实现网页截图实例
2014/07/18 Python
Python中多线程的创建及基本调用方法
2016/07/08 Python
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
Django中的ajax请求
2018/10/19 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
python中get和post有什么区别
2020/06/19 Python
python如何变换环境
2020/07/21 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
Python修改DBF文件指定列
2020/12/19 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
SQL语言面试题
2013/08/27 面试题
高中军训感言500字
2014/02/24 职场文书
房地产广告词大全
2014/03/19 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
兴趣班停课通知
2015/04/24 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
Hive日期格式转换方法总结
2022/06/25 数据库