Для иерархической кластеризации, как найти центр в каждом кластере в R

Я знаю, как найти центр в каждом кластере в кластеризации K-средних. Но для иерархической кластеризации я не уверен, как это сделать в R. Вот мои коды: сначала я создал свою матрицу расстояний, используя DTW Distance, и ввел ее в 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, кто-нибудь может мне помочь? Большое тебе спасибо!


person Yiyang    schedule 02.03.2016    source источник


Ответы (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 
person Neal Fultz    schedule 02.03.2016
comment
Ошибка в as.data.frame.default (data): невозможно привести класс dist к data.frame - person Yiyang; 04.03.2016