介绍
Mfuzz采用了一种新的聚类算法fuzzy c-means algorithm的软聚类算法,相比K-means等hard clustering算法,一定程度上降低了噪声对聚类结果的干扰。
虽然流程中包含标准化步骤,但是再导入数据之前我们也需要对数据提前进行标准化,聚类时需要用一个数值来表征不同基因间的距离,Mfuzz中采用的是欧式距离,由于普通欧式距离的定义没有考虑不同维度间量纲的不同。
代码
首先读入数据,并进行预处理
rt <- read.table('fpkm.csv',header = T,sep = ',',row.names = 1)
#转化为矩阵格式
rt <- as.matrix(rt )
#构建对象
eset <- new("ExpressionSet",exprs = rt )
# 根据标准差去除样本间差异太小的基因
eset <- filter.std(eset,min.std=0)
随后进行标准化以及参数的选择
eset <- standardise(eset)
# 聚类个数
c <- 6
# 评估出最佳的m值
m <- mestimate(eset)
# 聚类
cl <- mfuzz(eset, c = c, m = m)
后续分析,包括可视化以及基因集的提取
# 查看每个cluster中的基因个数
cl$size
# 提取某个cluster下的基因
cl$cluster[cl$cluster == 1]
# 查看基因和cluster之间的membership
cl$membership
mfuzz.plot(
eSet,
cl,
mfrow=c(2,3),
new.window= FALSE)
网友评论