Matlab - 绘制PCA分析

时间:2014-12-27 17:37:15

标签: matlab analysis pca

我有一个21x5大小的矩阵(top5features),包含从21个癌症结节中提取的5种不同特征类型的值。我正在尝试对我的数据应用主成分分析并绘制结果,但我很难理解如何这样做。以下是我的代码到目前为止,但它只绘制了一部分数据,我不相信它是我想要的:

top5features = features(1:21,[42 55 61 62 60]);
[W, pc] = princomp(top5features);
pc = pc'; W = W';
plot(pc(1,:),pc(2,:),'.');
title('{\bf PCA} of Top 5 Features')

我的目标是制作情节,使其有21个点,每个点与特定的结节有关。这21个结节也分为两组,如果可能的话,我想根据它们所属的组对它们进行颜色编码。我有点像使用Matlab的初学者,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

鉴于您的评论,PCA分解数据的前10列表示一组,而PCA分解数据的最后11列表示另一组。这可以简单地在一个plot命令中完成,使用您之前的代码:

%// Your code
top5features = features(1:21,[42 55 61 62 60]);    
[W, pc] = princomp(top5features);    
pc = pc'; W = W';

%// Group 1
group1 = pc(:,1:10);
%// Group 2
group2 = pc(:,11:21);

%// Plot as separate colours
plot(group1(1,:), group1(2,:), 'b.', group2(1,:), group2(2,:), 'r.');    
title('{\bf PCA} of Top 5 Features')
legend('Group 1', 'Group 2');

上面的代码首先将您的PCA缩减数据分成您指定的两个组。接下来,我们使用单个plot命令在一个图上将两个组一起绘制,但我们对它们进行颜色区分。蓝色表示组1,红色表示组2.我们在每个点上放置点标记。作为奖励,我们添加一个图例,表示每个点属于哪个组。

希望这有帮助!