Для иерархической кластеризации, как найти «центр» в каждом кластере в R - PullRequest
1 голос
/ 11 марта 2020

Я хотел бы знать центральную точку каждого кластера с помощью метода иерархической кластеризации в программном обеспечении R. Ниже кодов, которые я получил, чтобы найти кластеры, теперь я хотел бы знать центральную точку каждого из них. Спасибо!

library (readxl)
B1 <- read_excel ("C: / Users / Jovani / Google Drive / Google Drive PC / Work / Clustering /test.xlsx")
> A<-scale (B1)
> d<-dist(A)
> fit.average<-hclust(d,method="average")
> plot(fit.average,hang=-1,cex=.8,main="Average Linkage Clustering")
> clusters<-cutree(fit.average, k=5)
> plot(fit.average)
> rect.hclust(fit.average,k=5)

enter image description here

graphic image
> library (factoextra)
> fviz_cluster (list (data = A, cluster = clusters))

enter image description here

1 Ответ

0 голосов
/ 12 марта 2020

Вы можете вычислить, что приблизительно является центром, суммируя средние значения. Сначала смоделируйте некоторые данные и кластер:

set.seed(123)
A<-matrix(rnorm(400),20,20)
d<-dist(A)
fit.average<-hclust(d,method="average")
clusters<-cutree(fit.average, k=5)

Вы получите среднее значение для каждой переменной в каждом кластере:

cluster_center = aggregate(A,list(cluster=clusters),mean)
 cluster_center[,1:4]
  cluster         V1          V2         V3
1       1 -0.2665343 -0.51417960  0.9057041
2       2  0.1564301  0.07446027 -0.3107495
3       3 -0.8689263 -0.11354894 -0.1253569
4       4  0.7617505 -0.05818998  0.1162087
5       5  1.7869131  0.68864025  1.5164706

Расстояние между каждым центром:

dist(cluster_center[,-1])


         1        2        3        4
2 3.807366                           
3 4.868791 4.270748                  
4 4.334099 3.897603 4.976135         
5 6.629191 5.515162 6.876456 6.548609
...