一致性聚類ConsensusClusterPlus

介紹

一致性聚類是一種為確定數據集中可能的聚類的數量和成員提供定量證據的方法,例如作為微陣列基因表達。這種方法在癌癥基因組學中得到了廣泛應用,在那里發現了新的疾病分子亞類。

一致性聚類方法包括從一組項目中進行次抽樣,例如微陣列,并確定特定簇計數(k)的簇。然后,對共識值,兩個項目占在同一子樣本中發生的次數中有相同的聚類,計算并存儲在每個k的對稱一致矩陣中。

ConsensusClusterPlus是我見過比較簡單的包了,基本上只有一步就可以對基因進行聚類。

對于這類算法我們比較頭疼的是K值的確定,可以使用一些其他算法輔助K值的確定。

代碼

首先導入數據并進行預處理,之后一步ConsensusClusterPlus函數出圖

##使用ALL示例數據
library(ALL)
data(ALL)
d=exprs(ALL)
d[1:5,1:5]

             01005    01010    03002    04006    04007
1000_at   7.597323 7.479445 7.567593 7.384684 7.905312
1001_at   5.046194 4.932537 4.799294 4.922627 4.844565
1002_f_at 3.900466 4.208155 3.886169 4.206798 3.416923
1003_s_at 5.903856 6.169024 5.860459 6.116890 5.687997
1004_at   5.925260 5.912780 5.893209 6.170245 5.615210

#篩選前5000標準差的基因
mads=apply(d,1,mad)
d=d[rev(order(mads))[1:5000],]

#sweep函數減去中位數進行標準化
d = sweep(d,1, apply(d,1,median,na.rm=T))

#一步完成聚類
library(ConsensusClusterPlus)
title=tempdir()
results = ConsensusClusterPlus(d,maxK=6,reps=50,pItem=0.8,pFeature=1,
 title=title,clusterAlg="hc",distance="pearson",seed=1262118388.71279,plot="png")

之后進行提取基因集等后續操作,ConsensusClusterPlus的輸出是一個列表,其中列表對應于來自KTH集群的結果,例如,results[[2]]是結果k=2。consensusMatrix輸出一致矩陣。

#輸出K=2時的一致性矩陣
results[[2]][["consensusMatrix"]][1:5,1:5]

          [,1]      [,2]      [,3]      [,4]     [,5]
[1,] 1.0000000 1.0000000 0.8947368 1.0000000 1.000000
[2,] 1.0000000 1.0000000 0.9142857 1.0000000 1.000000
[3,] 0.8947368 0.9142857 1.0000000 0.8857143 0.969697
[4,] 1.0000000 1.0000000 0.8857143 1.0000000 1.000000
[5,] 1.0000000 1.0000000 0.9696970 1.0000000 1.000000

#hclust選項
results[[2]][["consensusTree"]]

Call:
hclust(d = as.dist(1 - fm), method = finalLinkage)

Cluster method   : average 
Number of objects: 128 

#樣本分類
results[[2]][["consensusClass"]][1:5]

01005 01010 03002 04006 04007 
    1     1     1     1     1 

#計算聚類一致性 (cluster-consensus) 和樣品一致性 (item-consensus)
icl <- calcICL(results, title = title,
               plot = "png")
## 返回了具有兩個元素的list,然后分別查看一下
dim(icl[["clusterConsensus"]])
 [1] 20  3
icl[["clusterConsensus"]] 

dim(icl[["itemConsensus"]])
 [1] 2560    4
icl[["itemConsensus"]][1:5,] 

部分結果展示

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前言 這篇筆記是StatQuest系列教程的第47,48,49節。第47節與第48節有很在一部分內容是重復的,主要...
    backup備份閱讀 2,364評論 1 11
  • 聚類算法 前面介紹的集中算法都是屬于有監督機器學習方法,這章和前面不同,介紹無監督學習算法,也就是聚類算法。在無監...
    飄涯閱讀 41,477評論 3 52
  • 寫在之前 因簡書導入公式很麻煩,如果想獲得更好的觀看體驗請移步https://www.zybuluo.com/ha...
    hainingwyx閱讀 6,921評論 2 13
  • 1. 章節主要內容 “聚類”(clustering)算法是“無監督學習”算法中研究最多、應用最廣的算法,它試圖將數...
    閃電隨筆閱讀 5,078評論 1 24
  • A 看著搬家公司的人,把最后零散的炊具放進屋子,我長長地出了口氣。終于,我在這個陌生的城市擁有了自己的家了。 無論...
    藏瀧臥虎閱讀 858評論 0 10