[英]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.