使用160个样本的数据集实现PCA,每个样本的维度为8970。在计算协方差矩阵时会抛出一个异常,说明memory error
:
CovarianceMatrix=np.matmul(AdjustedData.T,AdjustedData)/(DataSize-1)
我还尝试手工进行矩阵乘法(不使用numpy)并修复了这个错误但是我再次在numpy.linalg.eig
我有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
希望你能在这个问题上给我指导。提前致谢。