如何正确绘制由 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 doc:fisheriris
数据有 4 个不同的变量 - 三种鸢尾花的萼片和花瓣的长度和宽度测量值。由您决定要绘制哪个(在示例中,他们选择了“花瓣长度”和“花瓣宽度”)。
以下是将花瓣测量值和萼片测量值作为绘制分组轴的比较:
我想在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 doc:fisheriris
数据有 4 个不同的变量 - 三种鸢尾花的萼片和花瓣的长度和宽度测量值。由您决定要绘制哪个(在示例中,他们选择了“花瓣长度”和“花瓣宽度”)。
以下是将花瓣测量值和萼片测量值作为绘制分组轴的比较: