2013-08-06 82 views
1

我有一个510x6的数据矩阵,并希望对此进行K均值聚类分析。我在绘制2维的所有不同集群时遇到了问题。是不是可以在两个维度上绘制6个不同的集群?K均值聚类图

回答

8

让我们先看看150x4的一些数据,然后尝试将其拆分为6个不同的集群。该fisheriris数据集有四列(你的具有6),其对应于萼片长度,萼片宽度,花瓣长度和花瓣宽度,并且可以被加载到MATLAB这样的:

load fisheriris 

然后,我们可以把数据分解成六组有:

clusters = kmeans(meas, 6); 

cluster1 = meas(clusters == 1, :); 
cluster2 = meas(clusters == 2, :); 
cluster3 = meas(clusters == 3, :); 
cluster4 = meas(clusters == 4, :); 
cluster5 = meas(clusters == 5, :); 
cluster6 = meas(clusters == 6, :); 

既然我们有四块每个数据点的信息,以显现每次我们需要选择我们想看看集群。例如,我可能想看看针对萼片宽度的萼片长度的簇。这是前两列,我可以看到他们:

figure 
axes 

plot(cluster1(:, [1, 2]), '*'); hold all 
plot(cluster2(:, [1, 2]), '*') 
plot(cluster3(:, [1, 2]), '*') 
plot(cluster4(:, [1, 2]), '*') 
plot(cluster5(:, [1, 2]), '*') 
plot(cluster6(:, [1, 2]), '*') 

xlabel('Sepal Length') 
ylabel('Sepal Width') 

enter image description here

如果我想看看在一次列,我们需要去建立一个维度:

figure 
axes 
hold all 

plot3(cluster1(:, 1), cluster1(:, 2), cluster1(:, 3),'*') 
plot3(cluster2(:, 1), cluster2(:, 2), cluster2(:, 3),'*') 
plot3(cluster3(:, 1), cluster3(:, 2), cluster3(:, 3),'*') 
plot3(cluster4(:, 1), cluster4(:, 2), cluster4(:, 3),'*') 
plot3(cluster5(:, 1), cluster5(:, 2), cluster5(:, 3),'*') 
plot3(cluster6(:, 1), cluster6(:, 2), cluster6(:, 3),'*') 

grid on 
box on 

enter image description here

您的数据有六个维度,因此更难以直观地了解群集。

plotmatrix(meas) 

enter image description here

+1

+1的详细信息:你可以在做类似plotmatrix功能的东西一展身手! – Schorsch