A的协方差可以用来计算A'*A吗?

2024-04-20 05:38:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python做一个基准测试,测试计算a'*a的不同方法,a是nxm矩阵。最快的方法之一是使用numpy.dot()。你知道吗

我很好奇,如果我能得到同样的结果,使用numpy.cov()(它给出协方差矩阵),通过某种方式改变权重或通过某种方式预处理A矩阵?但我没有成功。有人知道积A'*A和协方差A之间是否有关系吗,其中A是一个有N行/观测值和M列/变量的矩阵?你知道吗


Tags: 方法numpy关系方式基准矩阵covdot
1条回答
网友
1楼 · 发布于 2024-04-20 05:38:02

看看^{} source。在函数结束时,它会执行以下操作:

c = dot(X, X_T.conj())

基本上就是你想做的点积。然而,还有各种各样的操作:检查输入,减去平均值,归一化。。。你知道吗

简而言之,np.cov永远不会比np.dot(A.T, A)快,因为在内部它正好包含那个操作。你知道吗

也就是说covariance matrix is computed作为

enter image description here

或者在Python中:

import numpy as np

a = np.random.rand(10, 3)

m = np.mean(a, axis=0, keepdims=True)
x = np.dot((a - m).T, a - m) / (a.shape[0] - 1)

y = np.cov(a.T)

assert np.allclose(x, y)  # check they are equivalent

如您所见,如果减去每个变量的平均值并将结果除以样本数(减1),协方差矩阵就相当于原始点积。你知道吗

相关问题 更多 >