聚类分析大家应该不陌生,今天给大家介绍一个用于基于时间序列的转录组数据的聚类分析R包Mfuzz。此包的核心算法是基于模糊c均值聚类(Fuzzy C-Means Clustering,FCM)的软聚类方法,它的特色就是把聚类的特征进行归类,而不是像K-mean一样的样本的聚类。此外FCM 算法需要两个参数⼀个是聚类数⽬C,另⼀个是参数m。⼀般来讲C要远远⼩于聚类样本的总个数,同时要保证C>1。对于m,它是控制算法的柔性的参数,如果m 过⼤,则聚类效果会很次,⽽如果m过⼩则算法会接近硬聚类(HCM)聚类算法。首先看下包的安装:
BiocManager::install('Mfuzz')
接下来我们通过实例来看下包的使用:
##数据载入
data(yeast)
##缺失值的处理
yeast.r <- filter.NA(yeast, thres=0.25)
yeast.f <- fill.NA(yeast.r,mode="mean")#还可以是knn/wknn
##表达水平低或者波动小的数据处理
tmp <- filter.std(yeast.f,min.std=0)
##标准化数据
yeast.s <- standardise(yeast.f)
## m值评估
m1 <- mestimate(yeast.s)
## 评估C聚类簇数
tmp <- Dmin(yeast.s,m=m1,crange=seq(4,40,4),repeats=3,visu=TRUE)
图中最小的值便是最优的簇数,我们可以进一步进行查找具体的数据:
Cluster= seq(4,40,4)
s=which(tmp==min(tmp))
mcluster=Cluster[s]
##聚类模型
cl <- mfuzz(yeast.s,c=16,m=1.25)
mfuzz.plot(yeast.s,cl=cl,mfrow=c(4,4),time.labels=seq(0,160,10))
##查看各簇之间关系
O <- overlap(cl)
Ptmp <- overlap.plot(cl,over=O,thres=0.05)
此外此包还提供了可视化的操作界面,需要用下面命令启动:
Mfuzzgui()
按照界面中的操作也可以达到数据分析的效果。