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实现socket端口重定向示例
Feb 10 Python
Python随机生成一个6位的验证码代码分享
Mar 24 Python
Python中的探索性数据分析(功能式)
Dec 22 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
Django 多语言教程的实现(i18n)
Jul 07 Python
Python、 Pycharm、Django安装详细教程(图文)
Apr 12 Python
django ManyToManyField多对多关系的实例详解
Aug 09 Python
Python标准库itertools的使用方法
Jan 17 Python
Python修改列表值问题解决方案
Mar 06 Python
python 对xml解析的示例
Feb 27 Python
Python进度条的使用
May 17 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 获取mysql数据库信息代码
2009/03/12 PHP
php htmlspecialchars加强版
2010/02/16 PHP
PHP实现根据浏览器跳转不同语言页面代码
2013/08/02 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
ASP SQL防注入的方法
2008/12/25 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
vue-router传参用法详解
2019/01/19 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python去掉空白行的多种实现代码
2018/03/19 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
pandas实现DataFrame显示最大行列,不省略显示实例
2019/12/26 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
化学教师自荐信范文
2013/12/28 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
护士自我评价范文
2014/01/25 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
60句有关成长的名言
2019/09/04 职场文书
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers