关于numpy中cov(x)与cover(x,y)的一些理解

来源:互联网 发布:阿里云网站建设方案 编辑:程序博客网 时间:2024/05/27 20:15

1. np.cov(x)

x=[1,2,3,4]np.cov(x)

输出为 array(1.6666666666666665),一开始我以为当x为一个行向量时,cov(x)计算的就是x的方差。但是通过观察发现

np.var(x)*4     #output:5np.cov(x)*3     #output:5

np.cov(x)这种情况计算的是x方差的无偏估计,即s2=ni=1(xx^)n1,而np.var(x)计算的则是s2=ni=1(xx^)n

接着我们再假设x为一个4*3的矩阵

X=np.array([[1 ,5 ,6] ,[4 ,3 ,9 ],[ 4 ,2 ,9],[ 4 ,7 ,2]])np.cov(x)

首先不同于matlab。在numpy中,将x的每一列视作一个独立的变量,因此这里一共有3个4维的变量,因此将会输出一个4*4的协方差矩阵
这里写图片描述
其中对角线元素是每个维度的方差,非对角线上的元素则是不同维度间的协方差。

2. np.cov(x,y)

在学习的过程中还有一点比较困惑的是np.cov(x)和np.cov(x,y)的区别,以下用代码来进行说明:

X=np.array([[1 ,5 ,6] ,[4 ,3 ,9 ],[ 4 ,2 ,9],[ 4 ,7 ,2]])x=X[0:2]y=X[2:4]print(np.cov(X))print(np.cov(x,y))

输出为
这里写图片描述
可以看出两者的输出是相同的。因此所谓的np.cov(X)其实就是把np.cov(x,y)中两个变量所有的维度纵向拼接在一起作为X参与运算。

4 0
原创粉丝点击