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中实现对Timestamp和Datetime及UTC时间之间的转换
Apr 08 Python
5款非常棒的Python工具
Jan 05 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
Python3.7实现中控考勤机自动连接
Aug 28 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
使用python serial 获取所有的串口名称的实例
Jul 02 Python
Python笔记之facade模式
Nov 20 Python
Python 中的pygame安装与配置教程详解
Feb 10 Python
python 调用Google翻译接口的方法
Dec 09 Python
python控制台打印log输出重复的解决方法
May 14 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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
最省空间的计数器
2006/10/09 PHP
超级简单的发送邮件程序
2006/10/09 PHP
浅析PHP Socket技术
2013/08/02 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
php实现文件编码批量转换
2014/03/10 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
JObj预览一个JS的框架
2008/03/13 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
js创建数组的简单方法
2016/07/27 Javascript
初探nodeJS
2017/01/24 NodeJs
浅谈Vue.js
2017/03/02 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
Python3 queue队列模块详细介绍
2018/01/05 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
.net面试题
2016/09/17 面试题
董事长职责范文
2013/11/08 职场文书
运动会方阵解说词
2014/02/12 职场文书
明信片寄语大全
2014/04/08 职场文书
银行求职信范文
2014/05/26 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
干部考察材料范文
2014/12/24 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android