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)<-colname
rownames(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, 就是consensusMatrix
results[[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,]
至此,结束
关注小果,小果将会持续为你带来更多生信干货哦。