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