我有一个矩阵M,其中列是数据点,行是要素。现在我想做PCA并且只选择具有最高方差的第一个组件。
我知道我可以在matlab中用[coeff,score,latent] = pca(M')来做。首先,我认为我必须转置矩阵M.
如何选择第一个组件?我不确定三种不同的输出矩阵。
其次,我还想计算每个组件所解释的方差百分比。我怎么能这样做?
答案 0 :(得分:2)
实际上,您应该将输入转置为将行作为数据点和列作为要素:
[coeff, score, latent, ~, explained] = pca(M');
主要组件由coeff
的列按顺序递减的顺序给出,因此第一列包含最重要的组件。每个组成部分的差异在latent
中给出,解释的总方差百分比在explained
中给出。
firstCompCoeff = coeff(:,1);
firstCompVar = latent(1);
有关详细信息:pca
documentation。
请注意,pca
函数需要统计工具箱。如果您没有,可以在互联网上搜索替代方案,也可以使用svd
自行实施。