模糊C均值聚类算法(FCM)

Python016

模糊C均值聚类算法(FCM),第1张

【嵌牛导读】FCM算法是一种基于划分的聚类算法,它的思想就是使得被划分到同一簇的对象之间相似度最大,而不同簇之间的相似度最小。模糊C均值算法是普通C均值算法的改进,普通C均值算法对于数据的划分是硬性的,而FCM则是一种柔性的模糊划分。

【嵌牛提问】FCM有什么用?

【嵌牛鼻子】模糊C均值聚类算法

【嵌牛正文】

聚类分析是多元统计分析的一种,也是无监督模式识别的一个重要分支,在模式分类、图像处理和模糊规则处理等众多领域中获得最广泛的应用。它把一个没有类别标记的样本按照某种准则划分为若干子集,使相似的样本尽可能归于一类,而把不相似的样本划分到不同的类中。硬聚类把每个待识别的对象严格的划分某类中,具有非此即彼的性质,而模糊聚类建立了样本对类别的不确定描述,更能客观的反应客观世界,从而成为聚类分析的主流。

模糊聚类算法是一种基于函数最优方法的聚类算法,使用微积分计算技术求最优代价函数,在基于概率算法的聚类方法中将使用概率密度函数,为此要假定合适的模型,模糊聚类算法的向量可以同时属于多个聚类,从而摆脱上述问题。 模糊聚类分析算法大致可分为三类:

1)分类数不定,根据不同要求对事物进行动态聚类,此类方法是基于模糊等价矩阵聚类的,称为模糊等价矩阵动态聚类分析法。

2)分类数给定,寻找出对事物的最佳分析方案,此类方法是基于目标函数聚类的,称为模糊C 均值聚类。

3)在摄动有意义的情况下,根据模糊相似矩阵聚类,此类方法称为基于摄动的模糊聚类分析法。

我所学习的是模糊C 均值聚类算法,要学习模糊C 均值聚类算法要先了解虑属度的含义,隶属度函数是表示一个对象x 隶属于集合A 的程度的函数,通常记做μA (x),其自变量范围是所有可能属于集合A 的对象(即集合A 所在空间中的所有点),取值范围是[0,1],即0<=μA (x)<=1。μA (x)=1表示x 完全隶属于集合A ,相当于传统集合概念上的x ∈A 。一个定义在空间X={x}上的隶属度函数就定义了一个模糊集合A ,或者叫定义在论域X={x}上的模糊子集A 。对于有限个对象x 1,x 2,……,x n 模糊集合A 可以表示为:A ={(μA (x i ), x i ) |x i ∈X } (6.1)

有了模糊集合的概念,一个元素隶属于模糊集合就不是硬性的了,在聚类的问题中,可以把聚类生成的簇看成模糊集合,因此,每个样本点隶属于簇的隶属度就是[0,1]区间里面的值。

FCM 算法需要两个参数一个是聚类数目C ,另一个是参数m 。一般来讲C 要远远小于聚类样本的总个数,同时要保证C>1。对于m ,它是一个控制算法的柔性的参数,如果m 过大,则聚类效果会很次,而如果m 过小则算法会接近HCM 聚类算法。算法的输出是C 个聚类中心点向量和C*N的一个模糊划分矩阵,这个矩阵表示的是每个样本点属于每个类的隶属度。根据这个划分矩阵按照模糊集合中的最大隶属原则就能够确定每个样本点归为哪个类。聚类中心表示的是每个类的平均特征,可以认为是这个类的代表点。从算法的推导过程中我们不难看出,算法对于满足正态分布的数据聚类效果会很好。

通过实验和算法的研究学习,不难发现FCM算法的优缺点:

首先,模糊c 均值泛函Jm 仍是传统的硬c 均值泛函J1 的自然推广。J1 是一个应用很广泛的聚类准则,对其在理论上的研究已经相当的完善,这就为Jm 的研究提供了良好的条件。

其次,从数学上看,Jm与Rs的希尔伯特空间结构(正交投影和均方逼近理论) 有密切的关联,因此Jm 比其他泛函有更深厚的数学基础。

最后,FCM 聚类算法不仅在许多邻域获得了非常成功的应用,而且以该算法为基础,又提出基于其他原型的模糊聚类算法,形成了一大批FCM类型的算法,比如模糊c线( FCL) ,模糊c面(FCP) ,模糊c壳(FCS) 等聚类算法,分别实现了对呈线状、超平面状和“薄壳”状结构模式子集(或聚类) 的检测。

模糊c均值算法因设计简单,解决问题范围广,易于应用计算机实现等特点受到了越来越多人的关注,并应用于各个领域。但是,自身仍存在的诸多问题,例如强烈依赖初始化数据的好坏和容易陷入局部鞍点等,仍然需要进一步的研究。

回答:流式细胞术是一种生物学技术,用于对悬浮于流体中的微小颗粒进行计数和分选。这种技术可以用来对流过光学或电子检测器的一个个细胞进行连续的多种参数分析。

流式细胞术(Flow CytoMetry,FCM)是对悬液中的单细胞或其他生物粒子,通过检测标记的荧光信号,实现高速、逐一的细胞定量分析和分选的技术。

延伸:

其特点是通过快速测定库尔特电阻、荧光、光散射和光吸收来定量测定细胞 DNA含量、细胞体积、蛋白质含量、酶活性、细胞膜受体和表面抗原等许多重要参数。根据这些参数将不同性质的细胞分开,以获得供生物学和医学研究用的纯细胞群体。

参考资料来源:百度百科-FCM

以下代码调试通过:

1234567class LuciaClass:  # 定义类    def luciaprint(self, text):  # 类里面的方法        print('\n', text)  # 方法就是输出 text  x = LuciaClass()  # 方法的实例 xx.luciaprint('today is a bad day ~~~')  # 实例调用类方法

运行效果: