使用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处理json数据中的中文
Mar 06 Python
Python之Web框架Django项目搭建全过程
May 02 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
Apr 23 Python
Python面向对象之继承和组合用法实例分析
Aug 27 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
python变量的存储原理详解
Jul 10 Python
如何在Django配置文件里配置session链接
Aug 06 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
Jun 23 Python
Python判断字符串是否为合法标示符操作
Sep 03 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
php中检查文件或目录是否存在的代码小结
2012/10/22 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
javascript 对象 与 prototype 原型用法实例分析
2019/11/11 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
轻松理解Python 中的 descriptor
2017/09/15 Python
Python 使用with上下文实现计时功能
2018/03/09 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
运行Python编写的程序方法实例
2020/10/21 Python
收藏!10个免费高清视频素材网站!【设计、视频剪辑必备】
2021/03/18 杂记
CSS3实现王者匹配时的粒子动画效果
2019/04/12 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
商务日语专业毕业生求职信
2013/10/26 职场文书
高中自我鉴定
2013/12/20 职场文书
小学毕业感言500字
2014/02/28 职场文书
理发店策划方案
2014/06/05 职场文书
异地恋情人节寄语
2015/02/28 职场文书
预备党员党支部意见
2015/06/02 职场文书