【问题标题】:How do I correctly plot the clusters produced from a cluster analysis in matlab?如何正确绘制 matlab 中聚类分析产生的聚类?
【发布时间】:2016-08-24 15:17:13
【问题描述】:

我想在 Matlab 中进行层次聚类并将聚类绘制在散点图上。我使用evalclusters 函数首先调查了使用不同标准值(例如Silhouette、CalinskiHarabasz)的“好”数量的集群。这是我用于评估的代码(x 是我的数据,包含 200 个观察值和 10 个变量):

E = evalclusters(x,'linkage','CalinskiHarabasz','KList',[1:10])
%store kmean optimal clusters
optk=E.OptimalK;
%save the outouts to a structure
clust_struc(1).Optimalk=optk;
clust_struc(1).method={'CalinskiHarabasz'}

然后我使用了类似于我在网上找到的代码:

gscatter(x(:,1),x(:,2),E.OptimalY,'rbgckmr','xod*s.p')
%OptimalY is a vector 200 long with the cluster numbers

这就是我得到的:

我的问题可能很愚蠢,但我不明白为什么我只使用前两列数据来生成散点图?我意识到集群本身是通过使用Optimal Y 合并的,但我不应该使用x 中的所有数据吗?

【问题讨论】:

  • 我的问题可能也很傻,但是这个散点图有二维,你为什么认为需要更多的数据?你会用它做什么?
  • 嗯,原来的数据中还有更多的数据是200x10,所以我想知道为什么只包括前两个变量?

标签: matlab cluster-analysis scatter-plot


【解决方案1】:

x 中的每一行都是具有size(x,2) 维度属性的观察值。所有这些维度都用于聚类x 行。

但是,在绘制集群时,我们不能绘制超过 2-3 个维度,因此我们尝试使用其关键属性来表示每个元素。我不确定x(:,1),x(:,2) 是最佳选择,但您必须为二维绘图选择 2。

通常你会有一些你想要绘制的感兴趣的属性。看看example in MATLAB docfisheriris 数据有 4 个不同的变量 - 三种鸢尾花的萼片和花瓣的长度和宽度测量值。由您决定要相互绘制哪个(在示例中,他们选择了花瓣长度和花瓣宽度)。

这是以花瓣测量值和萼片测量值作为绘制分组的轴之间的比较:

【讨论】:

  • 嗯,好的。我明白。我认为其他属性只是被忽略了,但在绘制此散点图之前,由用户确定哪些变量/属性在集群中最重要。这导致我问另一个问题:最重要或最有影响力的变量将是那些在集群之间差异最大的变量,对吧?有没有识别这些变量的好方法?我可以使用箱线图,使用我想的集群中每个变量的中值?
  • 没有最好的变量,这是上下文的问题。选择应该基于对您有用的信息,没有比其他变量更重要的变量,而是那些对聚类贡献更大的变量。我不确定这种方法是否会为您提供最佳轴选择。
  • 我的语言应该更清楚:当我提到上面最“影响”的变量时,我指的是那些对聚类贡献更大的变量。所以我要问的是,我如何识别使集群不同的变量。即。对创建两个集群之间的分区贡献最大的那些?
  • 嗯,这是一个有趣的问题,这个集群方法不会回答你。您可以发布另一个问题来解决此问题。但是,这是更多的统计问题而不是编程,所以也许你最好问一下here
猜你喜欢
  • 1970-01-01
  • 2013-02-28
  • 2021-03-19
  • 2019-04-15
  • 1970-01-01
  • 2022-01-21
  • 2011-12-22
相关资源
最近更新 更多