0

我知道如何在 K-means 聚类中找到每个聚类的中心。但是对于层次聚类,我不确定如何在 R 中做到这一点。这是我的代码:首先,我使用 DTW 距离制作了距离矩阵,并将其输入到 R 中:

DTW<-read.csv(file.choose(), head=T, row.names=1)
DTWS2N <- as.dist(as(DTW, "matrix"))

然后,我做了层次聚类(K=10):

hc <- hclust(DTWS2N)
plot(hc)
groups <- cutree(hc, k=10)
rect.hclust(hc, k=10, border="red")

我还可以通过以下方式查看每个集群中的元素:

d = data.frame(Cluster_ID = cutree(hc,k=10))

现在,我想查看每个集群中的“中心”(集群内与其他人距离最小的那个),我找不到 R 代码,有人可以帮我吗?非常感谢!

4

1 回答 1

1

继以下示例?hclust

data(UScitiesD)
mds2 <- -cmdscale(UScitiesD)
hcity.D2 <- hclust(UScitiesD, "ward.D2")

您可以按集群计算距离,然后找到每个集群的平均距离最小的点。您可以将所有这些组合成一个匿名函数:

lapply(by(mds2, cutree(hcity.D2, 4), dist), 
  function(x) which.min(colMeans(as.matrix(x))))
$`1`
Washington.DC 
            4 

$`2`
Denver 
     1 

$`3`
SanFrancisco 
           2 

$`4`
Miami 
    1 
于 2016-03-02T22:06:48.467 回答