如何获得显着特征值的数量?

时间:2014-02-17 16:14:04

标签: matlab matrix pca

我在Matlab工作以计算PCA。我已经计算了特征值和特征向量。

我使用了这个matlab函数:

     [Eigen Vector, Eigen Value]=eigs(Matrix,k);

使用此eigs函数,我们将获得有序的特征值(从大到小)。

在这种情况下,我将确定 k (这是我想要保留的特征值的数量)。

我需要用这个公式计算k:

   Σ(from 1 to p) of eigen value
   ------------------------------------------------------- * 100 = our persentage
   Σ(from 1 to col of eigen value matrix) of eigen value

其中k = p

为了减少输入矩阵的维数,我只需要:

     (Eigen Vector*Eigen Value*Eigen Vector')

根据我们想要的信息,有人知道是否有matlab函数来获取 k 数字吗?

1 个答案:

答案 0 :(得分:1)

您可以使用cumsum

您可能希望在汇总之前获取特征值的绝对值:

P = 90; %// desired percentage
eigenValues = eigs(Matrix);
summation = cumsum(abs(eigenValues));
summation = summation/summation(end)*100; %// normalize to get percentage
k = find(summation>=P,1); %// first index for whith P is exceeded