在线客服
客服热线
400-664-9912
客服组:
阿趣客服
客服组:
在线客服
QQ:
Amy
服务时间:
8:00 - 24:00

关注官方微信平台

电话:400-664-9912

QQ:2850277929

邮箱:marketing@biotree.cn

地址:上海市嘉定区新培路51号焦点梦想园B栋5楼

 

Copyright 2012-2020 SHANGHAI BIOTREE BIOTECH CO., LTD. All rights reserved.上海阿趣生物科技有限公司. 版权所有 沪ICP备17019893号-1

干货分享 | 这个“聚类”图有点漂亮,你会吗?

分类:
阿趣动态
发布时间:
2022/04/07 11:01
浏览量

一、Mfuzz包功能介绍

无论是在转录还是蛋白,聚类分析是基因表达数据分析的重要工具,这种无监督分类技术通常用于揭示隐藏在大型基因表达数据集中的结构。而今天介绍的Mfuzz是主要用于处理基因表达或蛋白表达数据而开发的一种聚类方法,其最主要的目的是给时序数据进行模糊聚类算法的聚类。

其优点在于:

1.能够表明相应的聚类分别如何很好地表示基因或蛋白质;

2.可以定义集群之间的整体关系,从而定义全局的集群结构,同时可以避免基因或蛋白的先验预滤波。


二、Mfuzz核心算法--模糊c均值聚类(Fuzzy C-Means Clustering,FCM)

常见的聚类算法可以包含硬聚类(hard clustering)和模糊聚类(Fuzzy clustering ,或称软聚类),其中模糊c均值聚类(Fuzzy C-Means Clustering,FCM)是最广泛使用的模糊聚类算法之一,与k均值划分聚类较为相似,通过不断迭代使组内平方和最小化。二者最主要的区别在于,k均值划分聚类中每个对象只由一个聚类中心约束,模糊c均值聚类中对象与所有聚类中心都有关。

软聚类的一个重要目标函数是c-均值函数,类似与k-均值聚类的平方误差函数,是根据的隶属度值对数据向量到聚类中心的距离进行加权:

此时,其中m是聚类的簇数;i,j是类标号;μij表示样本属xi于j类的隶属度。i表示第i个样本,x是具有d维特征的一个样本。cj是j簇的中心,也具有d维度。||*||可以是任意表示距离的度量。

模糊c是一个不断迭代计算隶属度μij和簇中心cj的过程,直到其达到最优,即使Jm的变化低于阈值或达到最大的迭代次数:

模糊c均值聚类中,一个对象理论上可以被分配为所有组,并通过给定对象在各组中的隶属度(membership value)描述对象属于某一类的程度(可以理解为概率)。隶属度介于0和1之间,接近0代表了对象远离该聚类中心,接近1代表对象靠近该聚类中心,每个对象在各类中成员值的总和为1。

模糊c均值聚类过程可以总结如下:

0指定聚类数K
0为每个对象任意分配一组初始隶属度值
0使用上述公式计算每个聚类簇的质心
04(4)使用上述公式重新计算每个对象在个聚类簇中的成员值
05(5)重复(3),(4)过程,知道隶属度值收敛(不再变动)或达到最大迭代次数为止。

图像展示:


三、Mfuzz的应用

运行下面代码即可:

####加载相关包###########

#install.packages("BiocManager")

#BiocManager::install('Mfuzz')

#install.packages("e1071")

library(BiocManager)

library(Mfuzz)

library(e1071)

 

#####输入路径############

input<-"C:\\Users\\12852\\Desktop\\210221-使用Mfuzz包分析基因表达的时间趋势并划分聚类群"

setwd(input)

 

###读取数据#########

protein<-read.delim('数据.txt', row.names=1, check.names=FALSE)

protein<-as.matrix(protein)

 

#####整理数据########

mfuzz_class<-new('ExpressionSet',exprs=protein)

mfuzz_class<-filter.NA(mfuzz_class, thres=0.25)

mfuzz_class<-fill.NA(mfuzz_class, mode='mean')

mfuzz_class<-filter.std(mfuzz_class, min.std=0)

 

####选择合适的模糊化参数#######

eset<-standardise(mfuzz_class)

m<-mestimate(eset)

cluster_num<-6

mfuzz_cluster<-mfuzz(mfuzz_class, c=cluster_num, m=mestimate(mfuzz_class))

pdf("mfuzz1.pdf")

mfuzz.plot2(mfuzz_class, cl=mfuzz_cluster, mfrow=c(2, 3), time.labels=colnames(protein),x11=F)

dev.off()

png("mfuzz.png")

mfuzz.plot2(mfuzz_class, cl=mfuzz_cluster, mfrow=c(2, 3), time.labels=colnames(protein),x11=F)

dev.off()

参考文献:

[1] Futschik ME, Carlisle B. Noise-robust soft clustering of gene expression time-course data. J Bioinform Comput Biol. 2005 Aug;3(4):965-88.

文献下载链接:https://pan.baid‍u.com/s/1QHMLz-2N2UfxFaLJHeVgag

提取码:2345

>
>
>
干货分享 | 这个“聚类”图有点漂亮,你会吗?