Python中np.random.multivariate_normal问题

Python中np.random.multivariate_normal问题,第1张

概述首先看一下一维正态分布的公式:  其中μ为均值,σ为标准差,正态分布的草图如下图所示。  再看numpy提供的函数的参数:multivariate_normal(mean,cov,size=None,check_valid=None,tol=None)在一维正态分布中,第一个参数mean就是这里的均值μ,第二个参数cov就是方差【公式co

首先看一下一维正态分布的公式:

 

 其中μ为均值,σ为标准差,正态分布的草图如下图所示。

 

 再看numpy提供的函数的参数:

multivariate_normal(mean,cov,size=None,check_valID=None,tol=None)

在一维正态分布中,第一个参数mean就是这里的均值μ,第二个参数cov就是方差【公式cov(x,x)=D(x)】,第三个参数size就是生成的正态分布矩阵的维度。

如下图,均值设置为3,方差为1,然后取100个点生成一维矩阵Y来绘制散点图,打印出的方差接近设定的值1.

import numpy as npimport matplotlib.pyplot as pltmean = np.array([3])cov = np.eye(1)dot_num = 100Y = np.random.multivariate_normal(mean,cov,dot_num)X = np.linspace(0,dot_num-1,dot_num)plt.scatter(X,Y,c = 'r',marker = '+')plt.show()print(np.var(Y))

打印出结果如下:

 

 可以看到散点图如下,图中可以看出,100个散点的均值大致是3(看Y轴)

 

 再看二维正态分布的公式:

 

 这里μ1,μ2分别为变量X,Y的均值;σ1,σ2分别为变量X,Y的标准差,草图如下。

 

 再看协方差的定义,以及协方差与期望值的关系

 函数multivariate_normal(mean,cov,size = None,check_valID = None,tol =None)在二维正态分布中,mean是变量X和Y的均值,它的维度为一维。

cov是一个协方差矩阵,它的组成如下,在tensorflow中一般设置cov(x,y)=cov(y,x)=0

 

 

 size表示生成的正态分布矩阵的维度,如size维度为(1,3,2),那么生成的正态分布矩阵维度为:1*3*2*len(mean)

其他几个参数见链接

链接:https://blog.csdn.net/xc_zhou/article/details/86701549

接着设置mean = [3,0],cov = diag(1,1),使用300个点绘制散点图,打印出X和Y的方差均接近于设定的值1

import numpy as npimport matplotlib.pyplot as pltmean = np.array([3,0])cov = np.eye(2) #协方差cov(X,Y)=0,方差D(X)=D(Y)=1dot_num = 300#len(mean) = 2,因此生成的正态矩阵维度为dot_num*len(mean)=300*2f_xy = np.random.multivariate_normal(mean,cov,dot_num)print(f_xy.shape)print(np.var(f_xy[:,0]),np.var(f_xy[:,1]))plt.scatter(f_xy[:,0],f_xy[:,1],c='r')plt.xlabel("X")plt.ylabel("Y")plt.show()

 

可以看到散点图中,X和Y均值大致上分别是3和0

 可依次类推至多维正态分布中。

 

总结

以上是内存溢出为你收集整理的Python中np.random.multivariate_normal问题全部内容,希望文章能够帮你解决Python中np.random.multivariate_normal问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1185756.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存