协方差矩阵 on python

协方差的定义

X, Y分别代表了两个维度上的随机变量或者说是分布,N,M代表了随机变量数和样本数,协方差矩阵的维度也是固定的,如果只有N个维度上的随机变量之间的协方差矩阵那么维度就是N*N阶的矩阵

对于给定四个样本来说的话

用一个矩阵来表示这四个样本的话

对于协方差矩阵中的每一个元素的计算公式就是

大白话就是

协方差(i,j)= (第i列的所有元素-第i列的均值)*(第j列的所有元素-第j列的均值)/(样本数-1)

计算过程

最终得到

python代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np

s1 = [1, 2]
s2 = [3, 6]
s3 = [4, 2]
s4 = [5, 2]

o = np.array([s1,
s2,
s3,
s4])

mean = np.mean(o, axis=0)
o = o-mean
cov = o.T.dot(o)/(o.shape[0]-1)

或者干脆用numpy中的cov函数

1
2
3
4
5
6
7
8
9
10
11
12
13
import numpy as np

s1 = [1, 2]
s2 = [3, 6]
s3 = [4, 2]
s4 = [5, 2]

o = np.array([s1,
s2,
s3,
s4])

cov = np.cov(o, rowvar=0)

注意numpy中的shape这一个函数返回的结果,shape[0]表示一个矩阵的高度,shape[1]表示一个矩阵的宽度

对于多维的情况也是一样的
假如有样本

表示是四维的随机变量间的协方差矩阵,给了三个样本,每个样本中每个元素分别是四个维度上的数值

然后按照上面的公式来计算协方差矩阵的每一个元素然后就可以得到最终的协方差矩阵了