首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用预定义的簇/类执行分层聚类?

如何使用预定义的簇/类执行分层聚类?
EN

Stack Overflow用户
提问于 2020-03-30 19:51:15
回答 1查看 117关注 0票数 1

我有一个数据库,我在上面做了分层聚类(使用agnes()),它工作得很好(我就像这里描述的那样:https://uc-r.github.io/hc_clustering。现在,我想将数据库中的人工集群或类与层次聚类找到的集群或类进行比较。我想我可以用tanglegram()做到这一点。我不知道如何生成树状图/在已经有组的情况下进行分层聚类。我如何告诉R有关组的信息?如果你能有条不紊地回答这个问题,那就太好了。`

代码语言:javascript
复制
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是人造的大簇。

代码语言:javascript
复制
cl1 <- great[c(1,2,4), ]
cl2 <- great[c(3,5,6, ]

我想比较一下层次聚类和人工聚类。如何使用人工聚类执行树状图,以便将它们与tenglegram()进行比较。有没有其他方法来比较它们呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 20:08:43

要直观地比较集群,可以使用WGCNA包中的plotDendroAndColors()函数。该函数仅显示树状图下每个对象的自定义颜色信息。

我不能重现您的示例(您在代码中使用的包没有指定),所以我使用一个简单的iris数据集集群来演示这一点:

代码语言:javascript
复制
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)))

由于您正在使用某种类型的第三方软件包进行集群,因此您可能必须首先将它们的对象转换为树状图,以便此绘图功能工作。也许是通过:

代码语言:javascript
复制
fit <- as.dendrogram(hc1_wards)
plotDendroAndColors(fit, cbind(clusters=labels2colors(groups), manmade=labels2colors(manmade)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60929910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档