我们有以下命令来分析虹膜数据
load fisheriris
gscatter(meas(:,1), meas(:,2), species,'rgb'); hold on
gscatter(meas(:,3), meas(:,4), species,'rgb');hold on
xlabel('Sepal length');
ylabel('Sepal width');
[pc,score,latent,tsquare] = princomp(meas);
pc,latent
cumsum(latent)./sum(latent)
我们得到结果
pc =
0.3614 0.6566 -0.5820 0.3155
-0.0845 0.7302 0.5979 -0.3197
0.8567 -0.1734 0.0762 -0.4798
0.3583 -0.0755 0.5458 0.7537
latent =
4.2282
0.2427
0.0782
0.0238
ans =
0.9246
0.9777
0.9948
1.0000
我们也有想法
我们的任务是
请通过绘制前两个主要成分的计划中的数据相对于三个类别的三种颜色的投影来显示。
我们可以通过
调用前两个组件x=pc(:,1);
y=pc(:,2);
但绘图怎么样?请帮帮我
答案 0 :(得分:5)
主要组件上的投影数据在score
变量中返回,因此情节很简单:
gscatter(score(:,1), score(:,2), species, [], [], [], 'on', 'PC1', 'PC2')
title('Projected Iris data'), grid on
当然你可以EIG
使用SVD
或X = meas;
X = bsxfun(@minus, X, mean(X)); % zero-centered data
[~,S,V] = svd(X,0); % singular value decomposition
[S,ord] = sort(diag(S), 'descend');
pc = V(:,ord); % principle components
latent = S.^2 ./ (size(X,1)-1) % variance explained
score = X*pc; % projected data
:
{{1}}