我是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
如果您能为我的计算提供帮助/解释,我将不胜感激!谢谢
要计算平均值,请使用
means = df.mean()
(带左括号和右括号),否则您将获得计算平均值的方法,这就是导致错误的原因另外,您正在覆盖求和操作
sum = 0
,我将使用total_sum = 0
相关问题 更多 >
编程相关推荐