使用带有完整链接方法的聚集层次聚类(AHC)技术的R绘制树形图

时间:2019-07-19 09:36:36

标签: r hierarchical-clustering

我已经使用完整链接方法计算了距离矩阵,如下图所示:

enter image description here

聚类之间的成对距离

{0.5,1.12,1.5,3.61}

但是在使用以下代码在R中使用相同的矩阵实现时:

矩阵

x1,x2,x3,x4,x5
0,0.5,2.24,3.35,3
0.5,0,2.5,3.61,3.04
2.24,2.5,0,1.12,1.41
3.35,3.61,1.12,0,1.5
3,3.04,1.41,1.5,0

实施:

library(cluster)
dt<-read.csv("cluster.csv")
df<-scale(dt[-1])
dc<-dist(df,method = "euclidean")
hc1 <- hclust(dc, method = "complete" )
plot(hc1, labels = c("x1", "x2","x3","x4","x5"), 
     hang = 0.1, 
     main = "Cluster dendrogram", sub = NULL,
     xlab = NULL, ylab = "Height")
abline(h = hc1$height, lty = 2, col = "lightgrey")
str(hc1)

str(hc1)

List of 7
 $ merge      : int [1:4, 1:2] -1 -3 -5 1 -2 -4 2 3
 $ height     : num [1:4] 0.444 1.516 1.851 3.753
 $ order      : int [1:5] 1 2 5 3 4
 $ labels     : NULL
 $ method     : chr "complete"
 $ call       : language hclust(d = dc, method = "complete")
 $ dist.method: chr "euclidean"
 - attr(*, "class")= chr "hclust"

我的身高为:0.444 1.516 1.851 3.753

这意味着两种情况下的树状图都不同,为什么两种情况下都不同?可能我在两种方法的实现上都做错了吗?

1 个答案:

答案 0 :(得分:0)

由于提供的矩阵是欧几里得距离矩阵,所以我不需要计算距离矩阵:而是我应该将data.frame转换为dist.matrix。并转到as.dist(m)

以下代码将为我提供从纸张计算中获得的确切结果:

library(reshape)
dt<-read.csv("C:/Users/Aakash/Desktop/cluster.csv")
m <- as.matrix(dt)
hc1 <- hclust(as.dist(m), method = "complete" )
plot(hc1, labels = c("x1", "x2","x3","x4","x5"), 
     hang = 0.1, 
     main = "Complete Method Dendogram", sub = NULL,
     xlab = "Items", ylab = "Height")
abline(h = hc1$height, lty = 2, col = "lightgrey")
str(hc1)

height : num [1:4] 0.5 1.12 1.5 3.61

获得的树状图:

enter image description here