numpy中的cov(方差计算)简单介绍

本文详细介绍了如何使用NumPy库计算协方差矩阵,并通过具体实例展示了二维和三维数组的协方差矩阵计算过程。从计算公式到代码实现,为读者提供了全面的指导。

协方差矩阵的计算公式可以参考这一篇博文

协方差矩阵

官方文档介绍

简单使用介绍

有下面一个例子,计算数组[1,2,3]和[1,1,1]的协方差矩阵

import numpy as np

X = np.array([1,2,3])
Y = np.array([1,1,1])
A = np.stack((X, Y), axis=0)
print("source:\n", A)
print("cov:\n", np.cov(A))

结果如下:
结果

也可以根据公式自己实现这一函数
协方差公式

import numpy as np

X = np.array([1,2,3])
Y = np.array([1,1,1])
A = np.stack((X, Y), axis=0)

dim1 = np.mean(X)
dim2 = np.mean(Y)
cov11 = sum((X-dim1)*(X-dim1))/(A.shape[1]-1)
cov12 = sum((X-dim1)*(Y-dim2))/(A.shape[1]-1)
cov21 = sum((Y-dim2)*(X-dim1))/(A.shape[1]-1)
cov22 = sum((Y-dim2)*(Y-dim2))/(A.shape[1]-1)
cov = np.array([cov11, cov12, cov21, cov22]).reshape(2,2)
print(cov)

计算结果也是一致的
结果

我们再来一个3维数组的例子

import numpy as np

X = np.array([1,2,3,4])
Y = np.array([3,2,7,9])
Z = np.array([-1,0,-1,1])
A = np.stack((X, Y, Z), axis=0)
print("source:\n", A)
print("cov:\n", np.cov(A))
print("===============")

dim1 = np.mean(X)
dim2 = np.mean(Y)
dim3 = np.mean(Z)
cov11 = sum((X-dim1)*(X-dim1))/(A.shape[1]-1)
cov12 = sum((X-dim1)*(Y-dim2))/(A.shape[1]-1)
cov13 = sum((X-dim1)*(Z-dim3))/(A.shape[1]-1)
cov21 = sum((Y-dim2)*(X-dim1))/(A.shape[1]-1)
cov22 = sum((Y-dim2)*(Y-dim2))/(A.shape[1]-1)
cov23 = sum((Y-dim2)*(Z-dim3))/(A.shape[1]-1)
cov31 = sum((Z-dim3)*(X-dim1))/(A.shape[1]-1)
cov32 = sum((Z-dim3)*(Y-dim2))/(A.shape[1]-1)
cov33 = sum((Z-dim3)*(Z-dim3))/(A.shape[1]-1)
cov = np.array([cov11, cov12, cov13, cov21, cov22, cov23, cov31, cov32, cov33]).reshape(3, 3)
print(cov)

结果如下
计算结果
可以看出也是一致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值