Fla*_*ash 6 python statistics numpy scipy
我假设numpy.cov(X)计算样本协方差矩阵为:
1/(N-1) * Sum (x_i - m)(x_i - m)^T (where m is the mean)
Run Code Online (Sandbox Code Playgroud)
即外部产品的总和.但是在文档中没有任何地方实际上这么说,它只是说"估计一个协方差矩阵".
任何人都可以确认这是否是内部的作用?(我知道我可以用bias参数改变前面的常量.)
正如您在查看源代码时所看到的,在最简单的情况下,没有掩码,每个N变量都带有M样本,它返回的(N, N)协方差矩阵计算如下:
(x-m) * (x-m).T.conj() / (N - 1)
Run Code Online (Sandbox Code Playgroud)
其中*代表矩阵乘积[1]
大致实现为:
X -= X.mean(axis=0)
N = X.shape[1]
fact = float(N - 1)
return dot(X, X.T.conj()) / fact
Run Code Online (Sandbox Code Playgroud)
如果您想查看源代码,请查看此处,而不是 E 先生的链接,除非您对屏蔽数组感兴趣。正如您所提到的,文档不是很好。
[1]在这种情况下,它实际上是(但不完全是)外积,因为(x-m)具有N长度的列向量M,因此(x-m).T具有同样多的行向量。最终结果是所有外积的总和。*如果顺序颠倒,同样会得到内积(标量)。但是,从技术上讲,这些都只是标准矩阵乘法,真正的外积只是列向量到行向量的乘积。
| 归档时间: |
|
| 查看次数: |
6369 次 |
| 最近记录: |