1 基本用法

np.random.multivariate_normal(mean, cov, size=None, check_valid=None, tol=None)

根据均值和协方差矩阵的情况生成一个多元正态分布矩阵

2 参数说明

    mean mean是多维分布的均值,维度为1
  cov

协方差矩阵

注意:协方差矩阵必须是对称的且需为半正定矩阵;

size

指定生成的正态分布矩阵的维度

eg:若size=(1, 1, 2),则输出的矩阵的shape即形状为 1X1X2XN(N为mean的长度)

 check_valid

这个参数用于决定当cov即协方差矩阵不是半正定矩阵时程序的处理方式。

它一共有三个值:warn,raise以及ignore。

  • 当使用warn作为传入的参数时,如果cov不是半正定的程序会输出警告但仍旧会得到结果;
  • 当使用raise作为传入的参数时,如果cov不是半正定的程序会报错且不会计算出结果;
  • 当使用ignore时忽略这个问题即无论cov是否为半正定的都会计算出结果。

3 举例说明

import numpy as np;
mean = (1, 2)
#均值向量
alpha=[[1. , 0. ],[0. , 0.5]]
#精度矩阵,协方差矩阵的倒数
cov=np.linalg.inv(alpha)
#协方差矩阵x = np.random.multivariate_normal(mean, cov)
x
#array([1.52666855, 1.77005564])x1 = np.random.multivariate_normal(mean, cov,size=(3,2))
x1
#一个3*3*N, 即3*2*2的矩阵,每一行表示一个样本
'''
array([[[ 0.34648623, -0.45031679],[-0.04902216,  0.76346656]],[[ 3.45690489,  1.88220564],[-0.20572284,  1.36394544]],[[ 0.62486475, -0.56346348],[ 1.53072488,  3.5600083 ]]])
'''

4 “手动”采样

看到一种别的思路,从精度矩阵(协方差矩阵的倒数)出发,来进行采样的

数据还是这几个:

import numpy as np;
mean = (1, 2)
#均值向量
alpha=[[1. , 0. ],[0. , 0.5]]
#精度矩阵,协方差矩阵的倒数
cov=np.linalg.inv(alpha)
#协方差矩阵

大致思路是:

我们以一维高斯分布N(μ,σ^2)为例,对于满足这个分布的x,我可以通过这种方式进行归一化:。那么相反地,我们从N(0,1)出发的x',可以通过以下方式转换成满足N(μ,σ^2)的分布:

那么多维的运算就是,我们找到协方差矩阵Σ,然后对他进行cholesky分解(线性代数笔记: Cholesky分解_UQI-LIUWJ的博客-CSDN博客),得到L和L^T,然后用L*X+μ 来采样(这里的X满足N(0,I),+μ操作可能是一个广播操作)

【我们这里使用精度矩阵α来实现的,所以进行cholesky分解前/后,需要进行矩阵求逆操作】

import scipy
src=np.random.normal(size=(2,5))
#从N(0,1)里面采样,每一列是一个样本
print(src)
'''
[[-1.73043484  0.97310463 -1.26852045  0.18902608  0.46363832][ 1.17343672 -1.10486709 -1.19307965  0.72384929 -0.17661455]]
'''L_upp=scipy.linalg.cholesky(alpha,check_finite = False)
print(L_upp)
#将精度矩阵转换成L*L^T的形式(其中L是下三角矩阵)
'''
[[1.         0.        ][0.         0.70710678]]
'''x3=scipy.linalg.solve_triangular(L_upp,src,lower=False,check_finite = False)
#这里直接用np.linalg.inv(L_upp) @ src 也可以
#找x3,使得L_upp*x3=srcprint(x3)
'''
[[-1.73043484  0.97310463 -1.26852045  0.18902608  0.46363832][ 1.65949013 -1.56251802 -1.68726942  1.02367749 -0.24977069]]
'''x3=x3.T+mean
#加上均值
x3
'''
array([[-0.73043484,  3.65949013],[ 1.97310463,  0.43748198],[-0.26852045,  0.31273058],[ 1.18902608,  3.02367749],[ 1.46363832,  1.75022931]])
'''

numpy笔记整理 multivariate_normal(多元正态分布采样)相关推荐

  1. 【ML学习笔记】17:多元正态分布下极大似然估计最小错误率贝叶斯决策

    简述多元正态分布下的最小错误率贝叶斯 如果特征的值向量服从d元正态分布,即其概率密度函数为: 即其分布可以由均值向量和对称的协方差矩阵 唯一确定. 如果认为样本的特征向量在类内服从多元正态分布: 即对 ...

  2. 多元正态分布的后验采样(包含程序)

    原文来自师兄的博客:http://blog.csdn.net/wjj5881005/article/details/53535613 均值和方差未知的多元正态分布的后验Multivariate nor ...

  3. 多元正态分布的后验采样

    均值和方差未知的多元正态分布的后验Multivariate normal with unknown mean and variance 从后验分布中采样均值mu和方差Sigma 1. 均值和方差未知的 ...

  4. 《多元统计分析》学习笔记之多元正态分布

    鄙人笔记,记一些知识点. 文章目录 多元正态分布 1.1多元分布的基本概念 1.2统计距离 1.3多元正态分布 1.5常用分布及抽样分布 多元正态分布 1.1多元分布的基本概念 随机变量 假定所讨论的 ...

  5. numpy 笔记: random模块

    1 基本应用 randint 随机生成大小为size的正整数ndarray low.high.size三个参数.默认high是None,如果只有low,那范围就是[0,low).如果有high,范围就 ...

  6. 正态分布、正态分布采样及Python实现

    正态分布.正态分布采样及Python实现 多元正态分布(多元高斯分布) 协方差矩阵 协方差分解 变量的线性变换(正态分布采样原理) python实现 参考文献 多元正态分布(多元高斯分布) 直接从多元 ...

  7. 机器学习总结——机器学习课程笔记整理

    机器学习笔记整理 说明 基础点整理 1. 基础数学知识 (1) 一些零七八碎的基础知识 (2) 最优化相关问题 (3) 概率论相关问题 (4) 矩阵相关问题 2. 回归(线性回归.Logistic回归 ...

  8. NumPy - np.random.multivariate_normal()

    np.random.multivariate_normal(mean, cov, size=None, check_valid=None, tol=None) 生成一个多元正态分布矩阵. o. mea ...

  9. Deep Learning(深度学习)学习笔记整理系列之常用模型

    Deep Learning(深度学习)学习笔记整理系列之常用模型(四.五.六.七) 九.Deep Learning的常用模型或者方法 9.1.AutoEncoder自动编码器 Deep Learnin ...

最新文章

  1. ajax得到后端数据一直提示为[object Object]解决方法
  2. Spring Cloud Data Flow手动安装
  3. 超轻型的数据库sqlite
  4. ubuntu rpm安装_为什么说Ubuntu是一个值得尊敬的Linux发行版
  5. jquery 性能优化与实践
  6. 【转】NB-IoT移远BC95使用小结
  7. 量子纠缠1——量子比特、Bell态、EPR佯谬
  8. dying relu 和weight decay
  9. html表格标题标签_HTML标题标签
  10. 计算机通信中ip,macid的主要作用和区别
  11. ggplot绘制小提琴图
  12. oracle查看当前的数据库实例名称,主机名称
  13. 中国RV减速器行业竞争格局与发展趋势预测报告2022-2028年
  14. 统计输入字符串中大写字母、小写字母、阿拉伯数字个数和特殊符号的个数
  15. c语言用迭代法求最大公约数,用迭代法求两个数的最大公约数和最小公倍数
  16. CRM——验证码(JWT技术)、接口资源鉴权
  17. 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置
  18. JS:Vue项目浏览器直接上传文件到阿里云OSS
  19. HTTP-FLV协议
  20. 高完整性系统(4)Formal Logic (形式逻辑和 Alloy 简介)

热门文章

  1. 如何让一个类可以被foreach枚举?
  2. Hadoop RPC protocol description--转
  3. TCP-IP详解:重传机制
  4. 算法提高课-图论-负环-AcWing 904. 虫洞:spfa求负环裸题
  5. 大创项目实施方案模板范文_27篇互联网电商创业计划书范文+34个电商行业商业计划书模板下载...
  6. Android 实训:日志(基于外部存储音乐播放器V01)
  7. fedora21 mysql_在fedora21 上的php+mysql+apache环境搭建
  8. python递归函数讲解_Python递归函数实例讲解
  9. 电阻应用电路之指示灯电路的设计
  10. python中数字应该用什么表示_Python