首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >K-均值聚类图

K-均值聚类图
EN

Stack Overflow用户
提问于 2013-08-07 06:39:36
回答 1查看 10.4K关注 0票数 1

我有一个510x6的数据矩阵,并希望对其执行K-means聚类分析。我有问题,在绘制所有不同的集群在2个维度。在2个维度上绘制6个不同的集群是不可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-07 15:38:02

让我们首先查看一些150x4的数据,并尝试将其划分为6个不同的集群。fisheriris数据集有4列(您的有6列),它们对应于花冠长度、花瓣宽度、花瓣长度和花瓣宽度,可以像这样加载到MATLAB中:

代码语言:javascript
复制
load fisheriris

然后,我们可以使用以下命令将数据分解为六个集群:

代码语言:javascript
复制
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, :);

假设我们对每个数据点都有四条信息,为了可视化每个集群,我们需要选择我们想要查看的内容。例如,我可能想要查看花冠长度与花冠宽度之间的关系。这是前两列,我可以用以下命令查看它们:

代码语言:javascript
复制
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')

如果我想一次查看列,我们需要增加一个维度:

代码语言:javascript
复制
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

您的数据有六个维度,因此更难从视觉上了解集群。您可以尝试执行类似于plotmatrix函数的操作:

代码语言:javascript
复制
plotmatrix(meas)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18091728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档