Как выполнить иерархическую кластеризацию с заранее определенными кластерами / классами? - PullRequest
1 голос
/ 30 марта 2020

У меня есть база данных, на которой я выполнял иерархическую кластеризацию (с agnes()), и она работала хорошо (я сделал это, как описано здесь: https://uc-r.github.io/hc_clustering. Теперь я хочу сравнить искусственные кластеры или классы в база данных с теми, которые обнаружил иерархическая кластеризация. Я думаю, что я могу сделать это с tanglegram(). Я не знаю, как генерировать дендрограмму / делать иерархическую кластеризацию, когда у меня уже есть группы. Как я могу рассказать R о группах? Было бы здорово, если бы вы могли ответить на этот методический вопрос. `

set.seed(73)
great <- data.frame(c0=c("r1","r2","r3","r4","r5","r6"),c1=c("0.89","46","0","0.56","12","0"),c2=c("0","0.45","45","79","0.45","4.4"))

#euclidean distance

great_dist <- dist(great)

#agglomerative with agnes()
#wards minimizes total within cluster variance
#minimum between-cluster-distance is merged

hc1_wards <- agnes(great,method ="ward")
 #agglomerative coefficient
hc1_wards$ac

hc1_wards_plot <- pltree(hc1_wards, cex = 0.6, hang = -1, main = "Dendrogram\nagglomerative clustering",labels=F) 

#cutting into a specific amount of clusters

#average silhouette method

fviz_nbclust(great, FUN = hcut, method = "silhouette")

# Cut tree into 2 groups

great_grp <-
agnes(great, method = "ward")
great_grp_cut <- cutree(as.hclust(great), k = 2)

#using the cutree output to add the cluster each observation belongs to sub

great_cluster <- mutate(great,cluster = great_grp_cut)  


#evaluating goodness of cluster with dunn()
#with count() how many obs. in one cluster

count(great_cluster,cluster)

dunn <- clValid::dunn(distance = great_dist,clusters = great_grp_cut)

`

Строки 1,2,4 и 3,5,6 - это искусственные скопления великих.

cl1 <- great[c(1,2,4), ]
cl2 <- great[c(3,5,6, ]

Я хочу сравнить иерархическую кластеризацию и искусственную кластеризацию. Как я могу выполнить дендрограмму с искусственной кластеризацией, чтобы сравнить их с tenglegram(). Есть ли другой способ сравнить их?

1 Ответ

1 голос
/ 30 марта 2020

Для визуального сравнения кластеров вы можете использовать функцию plotDendroAndColors() из пакета WGCNA. Функция просто отображает информацию о пользовательских цветах для каждого объекта в дендрограмме.

Я не могу воспроизвести ваш пример (пакеты, которые вы использовали в своем коде, не указаны), поэтому я демонстрирую это, используя простую кластеризацию iris набор данных:

library(WGCNA)

fit     <- hclust(dist(iris[,-5]), method="ward")
groups  <- cutree(fit, 3)
manmade <- as.numeric(iris$Species)

plotDendroAndColors(fit, cbind(clusters=labels2colors(groups), manmade=labels2colors(manmade)))

clusters

Поскольку вы используете какие-то сторонние пакеты для кластеризации, вам, возможно, придется сначала преобразовать их объекты в дендрограммы для этой функции построения графиков для работы. Может быть через:

fit <- as.dendrogram(hc1_wards)
plotDendroAndColors(fit, cbind(clusters=labels2colors(groups), manmade=labels2colors(manmade)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...