我有一个大的矩阵(70000x784),我想计算其协方差矩阵(70000x70000)。我尝试使用numpy.cov(),但由于有太多观察结果而出现内存错误(是的,我在62位计算机上运行的是62位版本的Python)。
我尝试使用嵌套的for循环(确实很慢)来计算协方差矩阵,但是我知道这是不正确的,因为所得的协方差矩阵不是对称的(X [i,j]!= X [j,i ])。
当然,必须有一种更简便快捷的方法吗?
这是我的尝试,其中尺寸为70000x784的输入矩阵的X_scaled是:
Xt = np.transpose(X_scaled)
aveRows = np.mean(Xt,axis=0)
for i, val in enumerate(X[:,0]):
for j, val in enumerate(X[:,0]):
cov_matrix[i,j] = np.mean((X_scaled[i,:]-aveRows[i])*(X_scaled[j,:]-aveRows[j]),axis=0)
#increase cov_matrix by one row and one column:
cov_matrix = np.lib.pad(cov_matrix, ((0,1),(0,1)), 'constant', constant_values=(0))
print(cov_matrix.shape)