簡體   English   中英

hclust 的集群列表 function

[英]Clustering list for hclust function

使用plot(hclust(dist(x)))方法,我能夠繪制出簇樹 map。 有用。 然而,我想獲得所有集群的列表,而不是樹形圖,因為我有大量數據(如 150K 節點)並且 plot 變得混亂。

換句話說,假設ab c是一個集群,如果defg是一個集群,那么我想得到這樣的東西:

1 a,b,c
2 d,e,f,g

請注意,這並不是我想要的“輸出”。 這只是一個例子。 我只是希望能夠獲得集群列表而不是樹 plot 它可以是向量、矩陣或只是顯示元素所屬組的簡單數字。

這怎么可能?

我將使用 R 中可用的數據集來演示如何將一棵樹切割成所需的數量。 結果是一個表格。

構造一個 hclust object。

hc <- hclust(dist(USArrests), "ave")
#plot(hc)

您現在可以根據需要將樹切割成任意數量的樹枝。 對於我的下一個技巧,我將把樹分成兩組。 您可以使用k參數設置切割次數。 請參閱?cutree和可能對您更有用的參數h的使用(請參閱cutree(hc, k = 2) == cutree(hc, h = 110) )。

cutree(hc, k = 2)
       Alabama         Alaska        Arizona       Arkansas     California 
             1              1              1              2              1 
      Colorado    Connecticut       Delaware        Florida        Georgia 
             2              2              1              1              2 
        Hawaii          Idaho       Illinois        Indiana           Iowa 
             2              2              1              2              2 
        Kansas       Kentucky      Louisiana          Maine       Maryland 
             2              2              1              2              1 
 Massachusetts       Michigan      Minnesota    Mississippi       Missouri 
             2              1              2              1              2 
       Montana       Nebraska         Nevada  New Hampshire     New Jersey 
             2              2              1              2              2 
    New Mexico       New York North Carolina   North Dakota           Ohio 
             1              1              1              2              2 
      Oklahoma         Oregon   Pennsylvania   Rhode Island South Carolina 
             2              2              2              2              1 
  South Dakota      Tennessee          Texas           Utah        Vermont 
             2              2              2              2              2 
      Virginia     Washington  West Virginia      Wisconsin        Wyoming 
             2              2              2              2              2

可以說,

y<-dist(x)
clust<-hclust(y)
groups<-cutree(clust, k=3)
x<-cbind(x,groups)

現在您將獲得每條記錄的集群組。 您也可以對數據集進行子集化:

x1<- subset(x, groups==1)
x2<- subset(x, groups==2)
x3<- subset(x, groups==3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM