使用凝聚算法绘制树状图

Posted

技术标签:

【中文标题】使用凝聚算法绘制树状图【英文标题】:Draw dendrogram using agglomerative algorithm 【发布时间】:2022-01-19 12:38:30 【问题描述】:

我尝试过制作树状图,但在我看来这是非常错误的。

我做了一对: XB, XBZ, XBZY

【问题讨论】:

【参考方案1】:

明显的问题是,您的 distance 矩阵不一致

如果AB的距离是3,BY的距离是2,那么AY的距离怎么可能是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,在树状图上绘制红色矩形框)

添加下拉菜单以绘制树状图

绘制聚类热图(带树状图)/Python

在 jupyter notebook 中使用 plotly python 绘制具有不等热图的交互式树状图

MATLAB | 全网唯一,使用MATLAB绘制矩形树状图

MATLAB | 全网唯一,使用MATLAB绘制矩形树状图