模糊聚类的代码实现python_Fuzzy C-Means(模糊C均值聚类)算法原理详解与python实现...

目录

模糊理论

Fuzzy C-Means算法原理

算法步骤

python实现

参考资料

本文采用数据集为iris,将iris.txt放在程序的同一文件夹下。请先自行下载好。

模糊理论

模糊控制是自动化控制领域的一项经典方法。其原理则是模糊数学、模糊逻辑。1965,L. A. Zadeh发表模糊集合“Fuzzy Sets”的论文, 首次引入隶属度函数的概念,打破了经典数学“非0即 1”的局限性,用[0,1]之间的实数来描述中间状态。

很多经典的集合(即:论域U内的某个元素是否属于集合A,可以用一个数值来表示。在经典集合中,要么0,要么1)不能描述很多事物的属性,需要用模糊性词语来判断。比如天气冷热程度、人的胖瘦程度等等。模糊数学和模糊逻辑把只取1或0二值(属于/不属于)的普通集合概念推广0~1区间内的多个取值,即隶属度。用“隶属度”来描述元素和集合之间的关系。

4877863c85ba75131a22e2dc32b3f3f3.png

如图所示,对于冷热程度,我们采取三个模糊子集:冷、暖、热。对于某一个温度,可能同时属于两个子集。要进一步具体判断,我们就需要提供一个描述“程度”的函数,即隶属度。

例如,身高可以分为“高”、“中等”、“矮”三个子集。取论域U(即人的身高范围)为[1.0,3.0],单位m。在U上定义三个隶属度函数来确定身高与三个模糊子集的关系:

175e46f5a9e0b0fbb1b0240a10d445d5.png

模糊规则的设定:

(1)专家的经验和知识

– 藉由询问经验丰富的专家,在获得系统的知 识后,将知识改为IF....THEN ....的型式。

(2)操作员的操作模式

– 记录熟练的操作员的操作模式,并将其整理为IF....THEN ....的型式。

(3)自学习

– 设定的模糊规则可能存在偏差,模糊控制器能依设定的目标,增加或修改模糊控制规则

Fuzzy C-Means算法原理

模糊c均值聚类融合了模糊理论的精髓。相较于k-means的硬聚类,模糊c提供了更加灵活的聚类结果。因为大部分情况下,数据集中的对象不能划分成为明显分离的簇,指派一个对象到一个特定的簇有些生硬,也可能会出错。故,对每个对象和每个簇赋予一个权值,指明对象属于该簇的程度。当然,基于概率的方法也可以给出这样的权值,但是有时候我们很难确定一个合适的统计模型,因此使用具有自然地、非概率特性的模糊c均值就是一个比较好的选择。

简单地说,就是要最小化目标函数Jm:(在一些资料中也定义为SSE即误差的平方和)

535beacf0fd62a6196394d920a495d66.png

其中m是聚类的簇数;i,j是类标号;

ced312f63eae35c2a4adefae61b42452.gif表示样本

54d51d1def58468f4652c95fadcc3c57.gif属于j类的隶属度。i表示第i个样本,x是具有d维特征的一个样本。

2b440fe55f341743f817cda508e39eec.gif是j簇的中心,也具有d维度。||*||可以是任意表示距离的度量。关于有哪些基于距离的度量,可参考我的另一篇博文《数据的相似性和相异性的度量》。

模糊c是一个不断迭代计算隶属度

ced312f63eae35c2a4adefae61b42452.gif和簇中心

2b440fe55f341743f817cda508e39eec.gif的过程,直到他们达到最优。

1bccd1c611b3ce6b1bf935f610a97a76.png

3429ab0d7e85ae313964132cc4b29de3.png

注:对于单个样本

54d51d1def58468f4652c95fadcc3c57.gif,它对于每个簇的隶属度之和为1。

迭代的终止条件为:

8f44425d456f057911334ea6ddff02eb.png

其中k是迭代步数,

670fc48baef58e34b5b4bcb1e993e592.gif是误差阈值。上式含义是,继续迭代下去,隶属程度也不会发生较大的变化。即认为隶属度不变了,已经达到比较优(局部最优或全局最优)状态了。该过程收敛于目标Jm的局部最小值或鞍点。

抛开复杂的算式,这个算法的意思就是:

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值