ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python中np.random.multivariate_normal问题

2021-07-02 16:34:17  阅读:257  来源: 互联网

标签:multivariate plt cov Python normal num np 正态分布 mean


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

 

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

 

 再看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 np
import matplotlib.pyplot as plt
mean = np.array([3])
cov = np.eye(1)
dot_num = 100
Y = 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 np
import matplotlib.pyplot as plt
mean = np.array([3,0])
cov = np.eye(2) #协方差cov(X,Y)=0,方差D(X)=D(Y)=1
dot_num = 300

#len(mean) = 2,因此生成的正态矩阵维度为dot_num*len(mean)=300*2

f_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

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

 

标签:multivariate,plt,cov,Python,normal,num,np,正态分布,mean
来源: https://www.cnblogs.com/xcyjblog/p/14963821.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有