我在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 数字吗?
答案 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