大矩阵协方差

2024-04-25 17:50:18 发布

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

我有一个大矩阵(70000x784),我想计算它的协方差矩阵(70000x700000)。我试过用numpy.cov公司(),但我得到了一个内存错误,因为观察太多(是的,我正在62位计算机上运行一个62位版本的Python)。你知道吗

我试图使用嵌套for循环计算协方差矩阵(这非常慢),但我知道这是不正确的,因为得到的协方差矩阵是不对称的(X[I,j]!=X[j,i])。你知道吗

当然,必须有一个更容易和更快的方法来做到这一点?你知道吗

以下是我的尝试,其中尺寸为70000x784的输入矩阵是X_缩放的:

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)

Tags: infornp矩阵valmeancovone