使用Python实现正态分布、正态分布采样


Posted in Python onNovember 20, 2019

多元正态分布(多元高斯分布)

直接从多元正态分布讲起。多元正态分布公式如下:

使用Python实现正态分布、正态分布采样

这就是多元正态分布的定义,均值好理解,就是高斯分布的概率分布值最大的位置,进行采样时也就是采样的中心点。而协方差矩阵在多维上形式较多。

协方差矩阵

一般来说,协方差矩阵有三种形式,分别称为球形、对角和全协方差。以二元为例:

使用Python实现正态分布、正态分布采样

为了方便展示不同协方差矩阵的效果,我们以二维为例。(书上截的图,凑活着看吧,是在不想画图了)

使用Python实现正态分布、正态分布采样

其实从这个图上可以很好的看出,协方差矩阵对正态分布的影响,也就很好明白了这三个协方差矩阵是哪里来的名字了。可以看出,球形协方差矩阵,会产生圆形(二维)或者球形(三维)的等高线,对角协方差矩阵和全协方差矩阵,会产生椭圆形的等高线。更一般地,在一个D维空间中,球形协方差矩阵,会产生一个D维球面等高线;对角协方差矩阵,会产生一个坐标轴对其的椭球型等高线;全协方差矩阵,会在任意位置产生一个坐标轴对其的椭球型等高线。

当协方差矩阵是球形的或者是对角的,单独的变量之间是独立的

协方差分解

时间不足,具体解释以后再补

下面是协方差分解的原理图

使用Python实现正态分布、正态分布采样

变量的线性变换(正态分布采样原理)

使用Python实现正态分布、正态分布采样

python实现

多元正态分布在python的numpy库中有很方便一个函数:

np.random.multivariate_normal(mean=mean, cov=conv, size=N)

这个函数中,mean代表均值,是在每个维度中的均值。cov代表协方差矩阵,就像上面讲的那种形式,协方差矩阵值的大小将决定采样范围的大小。size代表需要采样生成的点数,此时输出大小为(N*D)的坐标矩阵。

另外,其他参数包括:check_valid,这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式,它一共有三个值:warn,raise以及ignore。当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果

tol:检查协方差矩阵奇异值时的公差,float类型。

下面是一个小demo

import numpy as np
import matplotlib.pyplot as plt

mean = np.array([2,1])    # 均值
conv = np.array([[0.5, 0.0],  # 协方差矩阵
     [0.0, 0.5]])
axis = np.random.multivariate_normal(mean=mean, cov=conv, size=200)
x, y = np.random.multivariate_normal(mean=mean, cov=conv, size=1000).T

# print(axis[:])

plt.plot(axis[:, 0], axis[:, 1], 'ro')
plt.show()
plt.plot(x, y, 'ro')
plt.show()

注意,单独取出每个坐标轴的坐标数组时,需要在最后加上.T,否则会报错 效果展示:

使用Python实现正态分布、正态分布采样

协方差值的大小对采样的影响:

mean = np.array([2,1])    # 均值
conv = np.array([[0.5, 0.0],  # 协方差矩阵
     [0.0, 0.5]])

conv2 = np.array([[10, 0.0],  # 协方差矩阵
     [0.0, 10]])
axis = np.random.multivariate_normal(mean=mean, cov=conv, size=200)
x, y = np.random.multivariate_normal(mean=mean, cov=conv2, size=200).T

# print(axis[:])

plt.plot(axis[:, 0], axis[:, 1], 'ro')
plt.show()
plt.plot(x, y, 'ro')
plt.show()

效果如下:

使用Python实现正态分布、正态分布采样

这里没有设定随机种子店,每次随机数会有所不同。

以上这篇使用Python实现正态分布、正态分布采样就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中装饰器的一个妙用
Feb 08 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
详解Python数据分析--Pandas知识点
Mar 23 Python
一篇文章搞定Python操作文件与目录
Aug 13 Python
Python 共享变量加锁、释放详解
Aug 28 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
如何基于线程池提升request模块效率
Apr 18 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
Python 列表推导式需要注意的地方
Oct 23 Python
Python pandas自定义函数的使用方法示例
Nov 20 #Python
Python求正态分布曲线下面积实例
Nov 20 #Python
复化梯形求积分实例——用Python进行数值计算
Nov 20 #Python
Python实现数值积分方式
Nov 20 #Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 #Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 #Python
利用python实现AR教程
Nov 20 #Python
You might like
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
JS文字球状放大效果代码分享
2015/08/19 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Vue-router编程式导航的两种实现代码
2021/03/04 Vue.js
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
土耳其时尚潮流在线购物网站:Trendyol
2017/10/10 全球购物
JSF界面控制层技术
2013/06/17 面试题
岗位职责的定义
2013/11/10 职场文书
学生宿舍管理制度
2014/01/30 职场文书
专业求职信撰写要诀
2014/02/18 职场文书
会计的岗位职责
2014/03/15 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
C++程序员求职信范文
2014/04/14 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
家长会标语
2014/06/24 职场文书
公司活动总结怎么写
2014/06/25 职场文书
2015大学生实训报告
2014/11/05 职场文书
单位政审意见范文
2015/06/04 职场文书