R语言ConsensusClusterPlus包无监督聚类






R语言ConsensusClusterPlus包无监督聚类

小果  生信果  2022-12-17 19:00:02

收录于话题

#r语言#代码


一致法无监督聚类广泛应用于癌症分子亚型分型中,我们在查看文献这部分分析中经常看到以下几个图


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)
#运行ConsensusClusterPlus

library(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,]


至此,结束


关注小果,小果将会持续为你带来更多生信干货哦。