我已经标记了数据,我想评估聚类结果是否与这些标签一致。在层次聚类中,我可以使用以下命令来实现:
pheatmap(data,annotation_col=metadata,annotation_row=metadata,annotation_colors=anno_colors)是否也可以对kmeans结果执行此操作?我试过fviz_cluster,但我找不到如何根据每个点的注释而不是根据它的簇来给每个点着色。
发布于 2021-02-08 18:41:06
我没有发现如何使用fviz_cluster将已知标签与kmeans聚类结果进行比较。取而代之的是,我根据它们的标签给点着色,并根据它们的簇对点进行形状。
iris.scaled <- scale(iris[, 1:4])
pc <- prcomp(iris.scaled)
km <- kmeans(iris.scaled, 3, nstart = 100)
pca.var <- pc$sdev^2
pca.var.per <- round(pca.var/sum(pca.var)*100, 1)
# Color according to iris$Species
typeSp<-as.vector(iris$Species)
colvec<-typeSp
colvec[is.element(typeSp,"setosa")] = "red"
colvec[is.element(typeSp,"versicolor")] = "blue"
colvec[is.element(typeSp,"virginica")] = "magenta"
# Shape according to kmeans cluster
typeCl<-km$cluster
pchvec<-1:length(colvec)
pchvec[is.element(typeCl,1)] = 0
pchvec[is.element(typeCl,2)] = 19
pchvec[is.element(typeCl,3)] = 17
plot(pc$x[,1], pc$x[,2], col=colvec, pch=pchvec,
xlab = paste("PC1 (",pca.var.per[1],"%)"),
ylab = paste("PC2 (",pca.var.per[2],"%)"),
main="Compare known label (colors) to Kmeans cluster (shapes)")
legend("topright",legend=c("setosa","versicolor","virginica"),
col=c("blue","red","magenta"),
cex=0.9, pch=c(8,8,8))https://stackoverflow.com/questions/66034090
复制相似问题