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下载FTP上的文件夹的实现代码
Feb 10 Python
Python实现批量下载图片的方法
Jul 08 Python
基于python yield机制的异步操作同步化编程模型
Mar 18 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python实现随机生成任意数量车牌号
Jan 21 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
python小白学习包管理器pip安装
Jun 09 Python
如何利用Python 进行边缘检测
Oct 14 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
python实现发送QQ邮件(可加附件)
Dec 23 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
给海燕B411配件机起死回生配上件
2021/03/02 无线电
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
基于jQuery实现仿微博发布框字数提示
2016/07/27 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
微信小程序实现左侧滑栏过程解析
2019/08/26 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
使用python进行波形及频谱绘制的方法
2019/06/17 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
2014村书记党建工作汇报材料
2014/11/02 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
Python3 类型标注支持操作
2021/06/02 Python
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers