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动态监控日志内容的示例
Feb 16 Python
使用python装饰器验证配置文件示例
Feb 24 Python
python提取内容关键词的方法
Mar 16 Python
初步剖析C语言编程中的结构体
Jan 16 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
python 保存float类型的小数的位数方法
Oct 17 Python
python集合是否可变总结
Jun 20 Python
python实现梯度下降和逻辑回归
Mar 24 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
python调用win32接口进行截图的示例
Nov 11 Python
如何利用pygame实现打飞机小游戏
May 30 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+Ajax实现表单验证的详解
2013/06/25 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
js判断数组key是否存在(不用循环)的简单实例
2016/08/03 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
Vue递归实现树形菜单方法实例
2018/11/06 Javascript
详解JavaScript 为什么要有 Symbol 类型?
2019/04/03 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
django xadmin 管理器常用显示设置方式
2020/03/11 Python
pycharm导入源码的具体步骤
2020/08/04 Python
python读取xml文件方法解析
2020/08/04 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
印度购物网站:TATA CLiQ
2017/11/23 全球购物
诉讼代理人授权委托书
2014/10/11 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
PHP RabbitMQ消息列队
2022/05/11 PHP