gpt4 book ai didi

r - cutree 和 cluster 分支之间的分歧

转载 作者:行者123 更新时间:2023-12-02 01:05:16 24 4
gpt4 key购买 nike

我有一个数据集,其中包含一些属于 4 种不同基因型的小鼠的每日饮水量。我正在尝试编写一个脚本,以便使用层次聚类分析根据它们的饮水模式对这些动物进行分类,然后创建一个纵向图,绘制每个集群在几天内的平均饮水量。

为此,我首先按如下方式创建分层集群:

library("dendextend")
library("ggplot2")
library("reshape2")
data=read.csv("data.csv", header=T, row.names=1)
trimmed=data[, -ncol(data)]

hc <- as.dendrogram(hclust(dist(trimmed)))
labels.drk=data[,ncol(data)]
groups.drk=labels.drk[order.dendrogram(hc)]
genotypes=as.character(unique(data[,ncol(data)]))
k=4
cluster_cols=rainbow(k)

hc <- hc %>%
color_branches(k = k, col=cluster_cols) %>%

set("branches_lwd", 1) %>%

set("leaves_pch", rep(c(21, 19), length(genotypes))[groups.drk]) %>%
set("leaves_col", palette()[groups.drk])

plot(hc, main="Total animals" ,horiz=T)

legend("topleft", legend=genotypes,
col=palette(), pch = rep(c(21,19), length(genotypes)),
title="Genotypes")

legend("bottomleft", legend=1:k,
col=cluster_cols, lty = 1, lwd = 2,
title="Drinking group")

然后我使用 cutree 函数来评估哪只动物属于哪一组,以便绘制每组的平均饮水量。

groups<-cutree(hc, k=k, order_clusters_as_data = FALSE))
x<-cbind(data,groups)
intake_avg=aggregate(data[, -ncol(data)], list(x$groups), mean, header=T)

df <- melt(intake_avg, id.vars = "Group.1")
ggplot(df, aes(variable, value, group=factor(Group.1))) + geom_line(aes(color=factor(Group.1)))

问题是我从层次集群获得的数字与 cutree 函数分配的数字不一致。当集群从 1 到 4 对分支进行自下而上的排序时,cutree 函数使用了一些我不熟悉的其他排序参数。因此,聚类图中的标签和摄入量图中的标签不匹配。

我是编码的新手,所以我肯定使用了太多冗余行和循环,因此我的代码可以缩短,但如果你们能帮助我解决这个具体问题,我将非常高兴。

Data set

集群:Cluster

进气图 Intake graph

最佳答案

要在树状图中绘制相同的簇,您需要使用:

groups <- dendextend:::cutree(hc, k=k, order_clusters_as_data = FALSE)
idx <- match(rownames(data), names(groups))
x <- cbind(data,groups[idx])
intake_avg <- aggregate(data[, -ncol(data)], list(x$groups), mean, header=T)

df <- melt(intake_avg, id.vars = "Group.1")
ggplot(df, aes(variable, value, group=factor(Group.1))) +
geom_line(aes(color=factor(Group.1)), lwd=1)

这是摄入量图:

enter image description here

关于r - cutree 和 cluster 分支之间的分歧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com