我正在尝试使用PCA降低数据的维度。
所以我致电[COEFF, SCORE] = princomp(data);
根据this answer,我可以使用SCORE * COEFF' + Mean
重建我的数据,并且它可以正常工作。
但我正在尝试找到投影矩阵P
,其中任何给定的矢量x
都可以转换为其在PCA空间中的投影。
我的直觉告诉我,我应该能够通过以下方式投射x
:
proj = ((x-m) * inv(C)) + m
其中m
是我的数据的平均值。
所以我选择x
作为我数据的第一次观察来测试这一点,我希望proj
应该非常接近SCORE
的第一行。但事实并非如此。
那我在哪里做错了?我怎样才能找到投影矩阵?
感谢您的帮助!
答案 0 :(得分:0)
首先,COEFF是正交的(不确定)所以inv(COEFF) == COEFF'
,投影由
找到proj = COEFF' * (x-m)