R语言ConsensusClusterPlus包无监督聚类

一致法无监督聚类广泛应用于癌症分子亚型分型中,我们在查看文献这部分分析中经常看到以下几个图
Tracking plot ,可以看到不同K之下各个样本的亚型分组情况,如果该样本在不同的k值下亚型分组不变,就说明该样本比较稳定,反之则不稳定,如果一种亚型含有很多不稳定样本,则说明该亚型不稳定。

小果之前给大家分享过多篇双疾病的研究思路文章
Delta area,根据此图我们可以依据拐点法判断最佳分组,拐点后随着聚类数的增加,损失函数的收益越来越小,因此通常选择拐点作为最佳K值,这种方法也被形象的称为手肘法。

CDF图,展示各个K值下的曲线下面积

一致性矩阵热图,聚类效果好的话,下图中的蓝色和白色也就是矩阵对应的0和1会分割的很清楚,看起来比较干净。

下面小果就把对应的代码贴出来
rm(list=ls());gc();BiocManager::install("ConsensusClusterPlus")#准备输入数据library(data.table)express<-fread("express.CSV")express<-as.data.frame(express)rownames(express)<-express[,1]express<-express[,-1]class(express)colname<-colnames(express)#保存行名rowname<-rownames(express)#保存列名express<-as.data.frame(lapply(express,as.numeric))#数据框转换为数值型colnames(express)<-colnamerownames(express)<-rowname#归一化express = sweep(express,1, apply(express,1,median,na.rm=T))express<-as.matrix(express)#运行ConsensusClusterPluslibrary(ConsensusClusterPlus)title="untitled_consensus_cluster"results = ConsensusClusterPlus(express,maxK=10,reps=1000,pItem=0.8,pFeature=1,title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="pdf", writeTable = TRUE)#1. pItem, 选择80%的样本进行重复抽样#2. pfeature, 选择80%的基因进行重复抽样#3. maxK, 最大的K值,形成一系列梯度#4. reps, 重复抽样的数目#5. clusterAlg, 层次聚类的算法#6. distanc, 距离矩阵的算法#7. title, 输出结果的文件夹名字,包含了输出的图片#8. seed, 随机种子,用于重复结果str(results[[2]])# 一致性矩阵,样本的邻接矩阵dim(d)dim(results[[2]][["consensusMatrix"]])results[[2]][["consensusMatrix"]][1:5,1:5]# 样本的聚类树results[[2]][["consensusTree"]]# ml, 就是consensusMatrixresults[[2]][["ml"]][1:5,1:5]results[[2]][["consensusMatrix"]][1:5,1:5]# clrs, 颜色results[[2]][["clrs"]]#收集cluster-consensus和item-consensus 矩阵icl = calcICL(results,title=title,plot="pdf",writeTable=TRUE)icl[["clusterConsensus"]]dim(icl[["itemConsensus"]])icl[["itemConsensus"]][1:5,]
至此,结束
关注小果,小果将会持续为你带来更多生信干货哦。