手动计算协方差矩阵(无Numpy np.cov)

2024-09-28 22:29:18 发布

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

我是Python新手,正在尝试手动计算3x3矩阵的协方差矩阵。下面是我的代码:

df = np.array([[1,2,3],[4,5,6],[7,8,9]]) # example 3x3 matrix
means = df.mean
cov = []
for j in range(len(means)):
    sum = 0
    covs = []
    for k in range(len(means)):
        terms = ( (df[i][j] - means[j]) * (df[i][k] - means[k]) for i in range(len(means)) )
        covariance  = sum(terms) / len(means)
        covs.append(covariance)

我得到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-83-3e38715077d0> in <module>
      1 means = df.mean
      2 Cov = []
----> 3 for j in range(len(means)):
      4     sum = 0
      5     covs = []

TypeError: object of type 'method' has no len()

编辑:我刚刚根据建议更新为df.mean(),但现在我收到以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-9d6e2f3103c9> in <module>
      6     for k in range(len(means)):
      7         terms = ( (df[i][j] - means[j]) * (df[i][k] - means[k]) for i in range(len(means)) )
----> 8         covariance  = sum(terms) / len(means)
      9         covs.append(covariance)

TypeError: 'int' object is not callable

如果您能为我的计算提供帮助/解释,我将不胜感激!谢谢


Tags: indfforlen错误range矩阵mean
1条回答
网友
1楼 · 发布于 2024-09-28 22:29:18

要计算平均值,请使用means = df.mean()(带左括号和右括号),否则您将获得计算平均值的方法,这就是导致错误的原因

另外,您正在覆盖求和操作sum = 0,我将使用total_sum = 0

相关问题 更多 >