python中基于协方差矩阵的PCA和SVD的PCA如何得到相等的结果

2024-04-23 07:48:39 发布

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

我想对我的数据集进行PCA

XT.shape
->(2500,260)

复杂X的行包含样本(2500),X的列包含变量(260)。 我是这样执行SVD的:(Python)

^{pr2}$

我想这会让我把数据投影到第一个主成分上。但是,如果我使用协方差矩阵进行PCA:

cov = np.cov(XT, rowvar=False) 
eVals, eVecs = np.linalg.eigh(cov)

# Sort eigenvalues in decreasing order and eigenvectors alike
idx = np.argsort(np.abs(eVals))[::-1]
eVals = eVals[idx]
eVecs = eVecs[:,idx]

# Project data on eigenvectors
PCA_0 = np.dot(eVecs.T, XT.T).T[:,0]

然后PCA_0和proj_0不产生相同的结果。所以我错过了一些东西,但是呢?在


Tags: 数据npcov投影xtsvd成分样本