2015-05-29 121 views
-1

比方說,我們有以下數據集R:分層聚類

set.seed(144) 
dat <- matrix(rnorm(100), ncol=5) 

下面的函數創建列的所有可能的組合,並刪除第一

(combinations <- do.call(expand.grid, rep(list(c(F, T)), ncol(dat)))[-1,]) 
#  Var1 Var2 Var3 Var4 Var5 
# 2 TRUE FALSE FALSE FALSE FALSE 
# 3 FALSE TRUE FALSE FALSE FALSE 
# 4 TRUE TRUE FALSE FALSE FALSE 
# ... 
# 31 FALSE TRUE TRUE TRUE TRUE 
# 32 TRUE TRUE TRUE TRUE TRUE 

最後一步是運行K均值聚類爲每個列子集,這是一個簡單的應用程序(我們希望在每個kmeans模型中有3個聚類):

models <- apply(combinations, 1, function(x) kmeans(dat[,x], 3)) 

我的問題是如何運行的分層聚類,而不是K均值爲列的每個子集。任何想法?

回答

1

您可以使用hclust

models <- apply(combinations, 1, function(x) hclust(dist(dat[,x]))) 
clusters <- apply(combinations, 1, function(x) cutree(hclust(dist(dat[,x])), k = 3)) 
+0

輝煌,謝謝! –