我是Matlab的新手,使用内置软件包进行PCA减少会遇到一些问题。我有37个对象,每个对象由161维向量表示,这意味着我有161 x 37矩阵称为P.我需要将向量维度减少到3.这样每个对象将由3维向量表示。我尝试过使用princomp(P),但我不知道要采取哪种输出。
[COEFF,SCORE] = princomp(P); newData = SCORE(:,1:3);
我认为newData不是正确的载体?
答案 0 :(得分:2)
您必须转置数据,因为princomp
期望对行进行观察:
[COEFF,SCORE] = princomp(P.');
newData=SCORE(1:3.:).';
或者,您可以使用pca
函数仅为您提供前3个主要组件:
[COEFF,SCORE] = pca(P.', 'NumComponents', 3)
newData=SCORE.';