hrs*_*hrs 1 python numpy covariance
我试图实现numpy.cov()这里给出的函数: numpy cov (covariance) function,它到底计算什么?,但我得到了一些奇怪的结果。请纠正我:
import numpy as np
def my_covar(X):
X -= X.mean(axis=0)
N = X.shape[1]
return np.dot(X, X.T.conj())/float(N-1)
X = np.asarray([[1.0,1.0],[2.0,2.0],[3.0,3.0]])
## Run NumPy's implementation
print np.cov(X)
"""
NumPy's output:
[[ 0. 0. 0.]
[ 0. 0. 0.]
[ 0. 0. 0.]]
"""
## Run my implementation
print my_covar(X)
"""
My output:
[[ 2. 0. -2.]
[ 0. 0. 0.]
[ -2. 0. 2.]]
"""
Run Code Online (Sandbox Code Playgroud)
出了什么问题?
您的函数和np.cov(默认情况下)都假定 的行X对应于variables,而列对应于views。
当您X通过减去平均值来居中时,您需要计算观测值的平均值,即列X而不是行:
X -= X.mean(axis=1)[:, None]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2588 次 |
| 最近记录: |