2016-08-24 461 views
1

我想在Matlab中执行层次聚类并将散点图绘制在散点图上。我已使用evalclusters函数来首先调查“好”数量的群集将使用不同的标准值,例如Silhouette,CalinskiHarabasz。下面是我用于评估的代码(x是我与200周的观察和10个变量数据):如何正确绘制从matlab中的聚类分析生成的聚类?

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 

这是我所得到的:

clusters

我的问题可能是愚蠢的,但为什么我只使用了前两列Ø我不明白f数据产生散点图?我意识到,通过使用Optimal Y这些簇本身正在被合并,但我是否应该不使用x中的所有数据?

+0

我的问题也可能是愚蠢的,但这个散点图有2个维度,为什么你想需要更多数据?你会用它做什么? – EBH

+0

嗯,原始数据中有更多的数据是200x10,所以我想知道为什么只包含前两个变量? – new2matlab

回答

0

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

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

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

这里是采取花瓣测量和萼片测量为轴心密谋分组之间的比较:

clustering examples

+0

好的。我明白。我认为其他属性只是被忽略,但在绘制散点图之前,要确定哪些变量/属性是集群中最重要的属性。这导致我提出另一个问题:最重要的或有影响力的变量将会是集群权利中差异最大的变量吗?有没有一种很好的方法来识别这些变量?我可以使用boxplot来使用集群中每个变量的中位数,我想呢? – new2matlab

+0

没有最好的变量,这是一个背景问题。选择应基于对您有用的信息,没有比其他更重要的变量,但是对聚类贡献更大的那些变量。我不确定这种方法是否会给你最好的选择轴。 – EBH

+0

我的语言应该更加清晰:当我提到上面最有影响力的变量时,我指的是那些对聚类贡献更大的变量。所以我问的是,我如何识别使群集变异的变量。那些对创建两个集群之间的分区贡献最大的那些? – new2matlab