2016-08-24 41 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