R语言

时间序列分析Mfuzz

2019-08-11  本文已影响18人  nnlrl

介绍

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)

上一篇下一篇

猜你喜欢

热点阅读