首页 文章

如何在Matlab中减少PCA

提问于
浏览
2

我是Matlab的新手,使用内置软件包进行PCA减少会遇到一些问题 . 我有37个对象,每个对象由161维向量表示,这意味着我有161 x 37矩阵称为P.我需要将向量维度减少到3.这样每个对象将由3维向量表示 . 我尝试过使用princomp(P),但我不知道要采用哪种输出 .

[COEFF,SCORE] = princomp(P); newData = SCORE(:,1:3);

我认为newData不是正确的载体?

1 回答

  • 2

    您必须转置数据,因为 princomp 期望对行进行观察:

    [COEFF,SCORE] = princomp(P.');
    newData=SCORE(1:3.:).';
    

    或者,您可以使用 pca 函数仅为您提供前3个主要组件:

    [COEFF,SCORE] = pca(P.', 'NumComponents', 3)
    newData=SCORE.';
    

相关问题