我想在图片上给出类似的图表:
我正在使用Fisher Iris数据并使用PCA来降低维数。 这是代码:
load fisheriris
[pc,score,latent,tsquare,explained,mu] = princomp(meas);
我猜这些特征值是在Latent中给出的,它只显示了四个特征,并且是关于减少的数据。
我的问题是如何显示原始矩阵的所有特征值,这不是二次方(150x4)?请帮忙!非常感谢你提前!
答案 0 :(得分:6)
简短(无用)的答案是[V,D] eig(_)函数给出了特征向量和特征值。但是,我担心我有坏消息。特征值和特征向量仅适用于方形矩阵,因此对于150x4矩阵,存在 no 特征向量。
一切都不会丢失。 PCA实际上使用协方差矩阵的特征值,而不是原始矩阵的特征值,并且协方差矩阵总是方形的。也就是说,如果你有一个矩阵A,协方差矩阵是AA T 。
协方差矩阵不仅是方形的,而且是对称的。这很好,因为矩阵的奇异值与它的协方差矩阵的特征值有关。检查以下Matlab代码:
A = [10 20 35; 5 7 9]; % A rectangular matrix
X = A*A'; % The covariance matrix of A
[V, D] = eig(X); % Get the eigenvectors and eigenvalues of the covariance matrix
[U,S,W] = svd(A); % Get the singular values of the original matrix
V是包含特征向量的矩阵,D包含特征值。现在,关系:
SS T ~D
U~V
我用'〜'表明虽然他们是“平等”,但标志和顺序可能会有所不同。没有"正确"为特征向量排序或签名,因此要么是有效的。不幸的是,你只有四个功能(除非你的阵列是另一种方式)。