绘制虹膜数据的主要成分

时间:2014-01-13 15:04:57

标签: matlab plot linear-algebra pca

我们有以下命令来分析虹膜数据

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

我们也有想法

enter image description here

我们的任务是

请通过绘制前两个主要成分的计划中的数据相对于三个类别的三种颜色的投影来显示。

我们可以通过

调用前两个组件
x=pc(:,1);
y=pc(:,2);

但绘图怎么样?请帮帮我

1 个答案:

答案 0 :(得分:5)

主要组件上的投影数据在score变量中返回,因此情节很简单:

gscatter(score(:,1), score(:,2), species, [], [], [], 'on', 'PC1', 'PC2')
title('Projected Iris data'), grid on

当然你可以EIG使用SVDX = 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}}

projected_data