在 R 中,您可以在聚类之前使用各种度量来构建距离矩阵,例如二进制距离、曼哈顿距离等……但是,在选择链接方法时(完整、平均、单一等…… ),这些链接都使用欧几里得距离。如果您依赖差异度量来构建距离矩阵,这似乎并不特别合适。
在构建聚类树时,有没有办法(或库......)将其他距离应用于链接方法?
谢谢!
在 R 中,您可以在聚类之前使用各种度量来构建距离矩阵,例如二进制距离、曼哈顿距离等……但是,在选择链接方法时(完整、平均、单一等…… ),这些链接都使用欧几里得距离。如果您依赖差异度量来构建距离矩阵,这似乎并不特别合适。
在构建聚类树时,有没有办法(或库......)将其他距离应用于链接方法?
谢谢!
我真的不明白你的问题。例如,假设我有以下数据:
x <- matrix(rnorm(100), nrow=5)
然后我可以使用建立一个距离矩阵dist
##Changing the distance measure
d_e = dist(x, method="euclidean")
d_m = dist(x, method="maximum")
然后我可以按照我的意愿聚集:
##Changing the clustering method
hclust(d_m, method="median")
如果您已经构建了一个已经表示成对距离的矩阵,请使用例如
hclust(as.dist(mx), method="single")
您可能想尝试使用agnes
, 而不是hclust
, 并给它一个距离矩阵。这里有一个很好的教程:http:
//strata.uga.edu/software/pdf/clusterTutorial.pdf
在本教程中,以下是生成和使用距离矩阵进行聚类的方法:
> library(vegan)
# load library for distance functions
> mydata.bray <- vegdist(mydata, method="bray")
# calculates bray (=Sørenson) distances among samples
> mydata.bray.agnes <- agnes(mydata.bray)
# run the cluster analysis
我自己使用 Daniel Müllner 教授的fastcluster 库agnes
,它具有与大型数据集完全相同的 API,但速度要快几个数量级。