如何正确绘制由 matlab 中的聚类分析生成的聚类?

How do I correctly plot the clusters produced from a cluster analysis in matlab?

我想在Matlab中进行层次聚类,并将聚类绘制在散点图上。我使用 evalclusters 函数首先研究了 'good' 数量的集群将使用不同的标准值,例如 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 中的所有数据吗?

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

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

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

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