介紹
Mfuzz采用了一種新的聚類(lèi)算法fuzzy c-means algorithm的軟聚類(lèi)算法秋泄,相比K-means等hard clustering算法答恶,一定程度上降低了噪聲對(duì)聚類(lèi)結(jié)果的干擾。
雖然流程中包含標(biāo)準(zhǔn)化步驟挣跋,但是再導(dǎo)入數(shù)據(jù)之前我們也需要對(duì)數(shù)據(jù)提前進(jìn)行標(biāo)準(zhǔn)化三圆,聚類(lèi)時(shí)需要用一個(gè)數(shù)值來(lái)表征不同基因間的距離,Mfuzz中采用的是歐式距離避咆,由于普通歐式距離的定義沒(méi)有考慮不同維度間量綱的不同舟肉。
代碼
首先讀入數(shù)據(jù),并進(jìn)行預(yù)處理
rt <- read.table('fpkm.csv',header = T,sep = ',',row.names = 1)
#轉(zhuǎn)化為矩陣格式
rt <- as.matrix(rt )
#構(gòu)建對(duì)象
eset <- new("ExpressionSet",exprs = rt )
# 根據(jù)標(biāo)準(zhǔn)差去除樣本間差異太小的基因
eset <- filter.std(eset,min.std=0)
隨后進(jìn)行標(biāo)準(zhǔn)化以及參數(shù)的選擇
eset <- standardise(eset)
# 聚類(lèi)個(gè)數(shù)
c <- 6
# 評(píng)估出最佳的m值
m <- mestimate(eset)
# 聚類(lèi)
cl <- mfuzz(eset, c = c, m = m)
后續(xù)分析查库,包括可視化以及基因集的提取
# 查看每個(gè)cluster中的基因個(gè)數(shù)
cl$size
# 提取某個(gè)cluster下的基因
cl$cluster[cl$cluster == 1]
# 查看基因和cluster之間的membership
cl$membership
mfuzz.plot(
eSet,
cl,
mfrow=c(2,3),
new.window= FALSE)