如何在 MATLAB 中找到 PCA 的投影矩阵?

How to find projection matrix for PCA in MATLAB?

我正在尝试使用 PCA 降低数据的维度。

所以我调用 [COEFF, SCORE] = princomp(data); 根据 this answer,我可以用 SCORE * COEFF' + Mean 重建我的数据,并且它有效。

但我试图找到投影矩阵 P,其中任何给定的向量 x 都可以转换为其在 PCA space 中的投影。

我的直觉告诉我,我应该能够通过以下方式投射 x

proj = ((x-m) * inv(C)) + m

其中 m 是我的数据的平均值。

所以我通过选择 x 作为我的数据的第一个观察来测试它,我希望 proj 应该非常接近 SCORE 的第一行。然而事实并非如此。

所以我哪里做错了?我怎样才能找到投影矩阵?

感谢您的帮助!

糟糕,现在我明白我的错误了。

首先,COEFF 是正交的(不确定)所以 inv(COEFF) == COEFF'

投影是由

找到的
proj = COEFF' * (x-m)