python - NumPy cov(协方差)函数的简单实现

标签 python numpy covariance

我试图实现numpy.cov()函数,如下所示:numpy cov (covariance) function, what exactly does it compute? ,但我得到了一些奇怪的结果。请纠正我:

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.]]  
"""

出了什么问题?

最佳答案

您的函数和 np.cov(默认情况下)均假定 X 的行对应于变量,列对应于观察

当您通过减去平均值来居中 X 时,您需要计算观测值的平均值,即 X 的列而不是行:

X -= X.mean(axis=1)[:, None]

关于python - NumPy cov(协方差)函数的简单实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23761604/

相关文章:

c# - 在 C# 中使字典只读

python - pynamodb 亚马逊凭据异常

python - 获取文件的最后n行——解码错误

python - 如何在 Pandas 中考虑 NaN 生成序列

python - SciPy 0.12.0 和 Numpy 1.6.1 - numpy.core.multiarray 导入失败

c# - 我如何转换到 ObservableCollection<object>

algorithm - 协方差矩阵计算

python - 调用 flask restful API 资源方法

python - 如何在Python中创建三角形内核?

python - C++ Boost Python numpy 数组初始化