[英]Clustering in R levenshtein distance
我正在尝试使用 levenshtein 距离使用 kmeans 聚类。 我很难解释结果。
# courtesy: code is borrowed from the other thread listed below with some additions of k-means clustering
set.seed(1)
rstr <- function(n,k){ # vector of n random char(k) strings
sapply(1:n,function(i){do.call(paste0,as.list(sample(letters,k,replace=T)))})
}
str<- c(paste0("aa",rstr(10,3)),paste0("bb",rstr(10,3)),paste0("cc",rstr(10,3)))
# Levenshtein Distance
d <- adist(str)
rownames(d) <- str
hc <- hclust(as.dist(d))
plot(hc)
# to normalize the distances when there are unequal length sequences
max<- max(d)
data<- d/max
k.means.fit <- kmeans(data, 3)
library(cluster)
clusplot(d, k.means.fit$cluster, main='Clustering',
color=TRUE, shade=TRUE,
labels=5, lines=0, col.p = "dark green")
那么,聚类图是什么以及如何解释它? 我提到了他们讨论的其他线程,这些线程集中在两个主要组件上。 https://stats.stackexchange.com/questions/274754/how-to-interpret-the-clusplot-in-r
但是不清楚如何解释这个数字以及为什么这些点在那个椭圆/簇中? 有任何想法吗? 谢谢!!
这很简单。 您将字符串构建为三组。 您有十个以 'aa' 开头的字符串,十个以 'bb' 开头的字符串,十个以 'cc' 开头的字符串。 在这些开头之后,字符串的其余部分是随机的。 使用 Levenshtein 距离,您会期望这些以相同的前两个字母开头的字符串彼此接近。 当您查看层次聚类图时,很容易看到由字符串的前两个字母定义的三个主要组。 当您使用 k=3 的 kmeans 时,您会得到相同的集群。 您可以通过检查集群来看到这一点
k.means.fit$cluster
aagjo aaxfx aayrq aabfe aarju aamsz aajuy aafqd aagka aajwi bbmpm bbevr bbucs
1 1 1 1 1 1 1 1 1 1 3 3 3
bbkvq bbuon bbuam bbtsm bbwlg bbbci bbnrk ccxhl cciqg ccmtc ccwiv ccjim ccxwk
3 3 3 3 3 3 3 2 2 2 2 2 2
ccuyl ccski cctfs ccdgd
2 2 2 2
簇 1 是以 'aa' 开头的字符串,簇 2 以 'cc' 开头,簇 3 以 'bb' 开头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.