首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以根据kmeans结果的注释而不是聚类结果对其进行着色?

是否可以根据kmeans结果的注释而不是聚类结果对其进行着色?
EN

Stack Overflow用户
提问于 2021-02-04 03:05:09
回答 1查看 105关注 0票数 0

我已经标记了数据,我想评估聚类结果是否与这些标签一致。在层次聚类中,我可以使用以下命令来实现:

代码语言:javascript
复制
pheatmap(data,annotation_col=metadata,annotation_row=metadata,annotation_colors=anno_colors)

是否也可以对kmeans结果执行此操作?我试过fviz_cluster,但我找不到如何根据每个点的注释而不是根据它的簇来给每个点着色。

EN

回答 1

Stack Overflow用户

发布于 2021-02-08 18:41:06

我没有发现如何使用fviz_cluster将已知标签与kmeans聚类结果进行比较。取而代之的是,我根据它们的标签给点着色,并根据它们的簇对点进行形状。

代码语言:javascript
复制
    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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66034090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档