计算协方差矩阵的特征向量时的记忆误差

时间:2018-03-13 17:03:20

标签: python-2.7 numpy memory pca

使用160个样本的数据集实现PCA,每个样本的维度为8970。在计算协方差矩阵时会抛出一个异常,说明memory error

CovarianceMatrix=np.matmul(AdjustedData.T,AdjustedData)/(DataSize-1)

我还尝试手工进行矩阵乘法(不使用numpy)并修复了这个错误但是我再次在numpy.linalg.eig

的eigVectors计算中遇到了另一个内存错误

我有8GB内存,我使用pycharm之前消耗700 MG 提出“记忆错误”。

以下是PCA计算的完整代码:

def ImplementPCA(InputData,OutputDimension):
    INPUTDATA=np.array(InputData)
    Mean=INPUTDATA.mean(axis=0)
    AdjustedData=InputData-Mean
    AdjustedDataT=AdjustedData.T
    DATASize=len(AdjustedData)
    CoverianceMatrix=[]
    for i in range(0,len(AdjustedDataT)):
       CoverianceMatrix.append(np.matmul(AdjustedDataT[i],AdjustedData)/DATASize-1)
    eigVls,eigVecs= LA.eig(CoverianceMatrix)

    idx = eigenValues.argsort()[::-1]
    eigenValues = eigenValues[idx]
    eigenVectors = eigenVectors[:, idx]
    eigenVectors=eigenVectors*-1
    eigenVectors=eigenVectors.T
    eigenVectors=eigenVectors[:OutputDimension]
    eigenVectors=eigenVectors.T
    Y=np.matmul(INPUTDATA,eigenVectors)
    return Y

希望你能在这个问题上给我指导。提前致谢。

0 个答案:

没有答案