使用凝聚算法绘制树状图
Posted
技术标签:
【中文标题】使用凝聚算法绘制树状图【英文标题】:Draw dendrogram using agglomerative algorithm 【发布时间】:2022-01-19 12:38:30 【问题描述】:我尝试过制作树状图,但在我看来这是非常错误的。
我做了一对: XB, XBZ, XBZY
【问题讨论】:
【参考方案1】:明显的问题是,您的 distance 矩阵不一致。
如果A
到B
的距离是3,B
到Y
的距离是2,那么A
到Y
的距离怎么可能是6?
如果你稍微调整你的矩阵,使它对应于真实空间中点的距离,你会得到更好的结果。
使用 R 的示例
data <- c(0,3,3.3,1,3,
3,0,3.3,1,3,
3.3,3.3,0,3,6,
1,1,3,0,3,
3,3,6,3,0)
dim_names <- c("X","Z","Y","B","A")
mat <- matrix(data,nrow=5,ncol=5,byrow=TRUE, dimnames = list(dim_names,dim_names) )
dist <- as.dist(mat)
dist
X Z Y B
Z 3.0
Y 3.3 3.3
B 1.0 1.0 3.0
A 3.0 3.0 6.0 3.0
hc <- hclust(dist)
plot(hc, hang = -1)
生产
【讨论】:
嘿,非常感谢...以上是关于使用凝聚算法绘制树状图的主要内容,如果未能解决你的问题,请参考以下文章
R语言层次聚类(hierarchical clustering):使用scale函数进行特征缩放hclust包层次聚类(创建距离矩阵聚类绘制树状图dendrogram,在树状图上绘制红色矩形框)