在pheatmap中使用kmeans_k时,如何选择哪个是行的最佳集群或顶级集群?

时间:2017-05-09 13:48:25

标签: r cluster-analysis k-means pheatmap

在我之前的一篇文章中,我在pheatmap包中的迭代过程中进行了kmeans_k聚类,以将我的行(基因)从90减少到更严格的子集。这是我自从我尝试使用factoextraclusterNbClust的行测试行上的最佳聚类时所做的,其中最佳数量的kmeans聚类非常低。所以我对包含90行和15列的数据进行了迭代kmeans_k,并保持行和列群集的开启,列的相关性和行的默认值。这让我觉得集群已经排名了。群集在pheatmap中排名是真的吗?或者来自pheatmap的cluster1应该是顶级集群。我根据我的输出选择了顶级聚类,因为我的数据包含了具有最高SD的那些上下基因,所以它是排名的。我正在做的事情是否正确?现在我正在分离我的上下基因列表并计算最佳kmeans,我发现了更好的聚类。现在,如果我用pheatmap绘制它们,我将如何选择哪个应该是顶部簇?因为我现在根据方向性绘制2个与kemans分开的热图。现在从这些到具有最佳聚类的热图,我将如何选择哪个是顶级聚类?我应该计算每个集群的SD吗?上一篇文章link

基于方向分离的代码

o.90.df<-90.df[order(90.df$logFC),]
ind<-which(o.90.df$logFC>1) 
up.o.90.df<-o.90.df[ind,]
ind<-which(o.90.df$logFC<1) 
down.o.90.df<-o.90.df[ind,]

现在创建将计算最佳群集的数据帧 需要导入值的源数据框是

tpm #source dataframe
tpm.up.o.90.df<-tpm[(rownames(tpm) %in% genes.up.o.90.names),]

tpm.down.o.90.df<-tpm[(rownames(tpm) %in% genes.down.o.90.names),]

mydata1<-scale(tpm.up.o.90.df)
my_data2<-scale(tpm.down.o.90.df)

fviz_nbclust(my_data1, kmeans, method = "gap_stat") ## 3 clusters optimal
fviz_nbclust(my_data2, kmeans, method = "gap_stat") ## 5 clusters optimal

now based on what clusters I get am plotting pheatmap:
pheatmap(tpm.up.o.90.df,scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=annote,cluster_col=T,fontsize_row = 6,fontsize_col = 7,clustering_method = "ward.D2",border_color = NA,cellwidth = NA,cellheight = NA,kmeans_k = 3)

pheatmap(tpm.down.o.90.df,scale="row",clustering_distance_cols = "correlation",show_rownames= T,show_colnames=T,color=col,annotation=annote,cluster_col=T,fontsize_row = 6,fontsize_col = 7,clustering_method = "ward.D2",border_color = NA,cellwidth = NA,cellheight = NA,kmeans_k = 5)

由于有2个单独的热图,我如何从这个顶级星团的热图中选择。使用kmeans_k在这里使用行和列的聚类并使用pheatmap制作热图是否正确?如果是这样,我该如何检测最佳群集?通过计算群集的SD并查看群集的SD最高并选择它?如果有人有任何想法。如果需要数据和数字,我可以上传到Dropbox链接。至少我在做pheatmap的数据。在分离基因方向和maknig kmeans的同时,概念上已经破坏了。 感谢一些专家建议。

0 个答案:

没有答案