Fuzzy C Means 算法及其 Python 实现
1. 算法向 算法的扩展
在 算法中,如果要将数据集合 划分为 个类,使得任意数据对象 必须属于并且仅属于一个类,同时每一个类至少包含一个数据对象,那么可以用一个 的矩阵 来表示,矩阵中的任意一个元素 可以表示为:
其中 表示第 个类。并且 需要满足如下条件 :
如果上述矩阵 中的元素 的取值范围不仅仅是 0 或者 1,那么就可以推广到模糊集合上的划分, 就变成了模糊判定矩阵。此时 需满足:
(1)
2. 目标函数与聚类中心
算法在度量数据对象的非相似性(或者说距离)时一般使用欧几里得距离,要求每个类的聚类中心与数据对象的距离平方之和最小,目标函数可以表示为:
其中 表示任意聚类中心,而聚类中心一般取类内所有对象在各属性上的平均值,因此可以表示为:
表示任意一个类。
将算法推广到模糊集后, 对样本与类中心之间的距离采用隶属度的平方来加权, 则进一步引入了隶属度的加权指数 从而得到了新的目标函数:
(2)
要使得 (2) 式达到最小值则要求聚类中心 和隶属度 满足如下条件:
(3)
(4)
3. 算法计算过程
见原文和代码实现