问题描述
我想看看一些已知标签如何解释,或者根据我从 UMAP 获得的数据调整到二维表示。
我尝试使用 silhouette
函数,但必须以数字向量形式提供集群信息,然后这些是 plot(sil)
显示的。有没有办法使用集群名称或至少在图中显示这些名称而不是数字?
(与 here 类似的问题,但我想更改集群标签而不是示例标签)
例如:
# run hierarchical clustering
if(!require("cluster")) { install.packages("cluster"); require("cluster") }
tmp <- matrix(c( 0,20,40,60,100,120,30,50,80,140,0),nr=12,dimnames=list(LETTERS[1:12],LETTERS[1:12]))
cl <- hclust(as.dist(tmp,diag = TRUE,upper = TRUE),method= 'single')
cluster_labels<-cutree(cl,h=25)
#here I would like to change the cluster labels from numbers to letters,for example:
#cluster_labels<-LETTERS[1:length(unique(cluster_labels))][cluster_labels]
sil_cl <- silhouette( cluster_labels,as.dist(tmp),title=title(main = 'Good'))
plot(sil_cl)#the plot should show the cluster labels instead of the numbers
解决方法
我发现这可以使用 factoextra
包来完成。但是,如果有人找到使用常规 plot()
函数的方法
if(!require("cluster")) { install.packages("cluster"); require("cluster") }
if(!require("factoextra")) { install.packages("factoextra"); require("factoextra") }
tmp <- matrix(c( 0,20,40,60,100,120,30,50,80,140,0),nr=12,dimnames=list(LETTERS[1:12],LETTERS[1:12]))
cl <- hclust(as.dist(tmp,diag = TRUE,upper = TRUE),method= 'single')
cluster_labels<-cutree(cl,h=25)
sil_cl <- silhouette( cluster_labels,as.dist(tmp),title=title(main = 'Good'))
fviz_silhouette(sil_cl)+scale_fill_discrete(labels=LETTERS[1:12])+guides(col=FALSE)