聚类算法及python实现——模糊C均值(FCM)
模糊C和K均值的区别
K均值:硬聚类,隶属度只有0和1,基于“类内误差平方和最小化”原则
模糊C:模糊聚类,隶属度取值为[0,1],基于“类内加权误差平方和最小化”原则
步骤
step1:给定聚类个数,模糊系数,迭代次数(k-means是聚类中心不再发生变化停止),初始化隶属度矩阵(若有 N个样本,指定类别数为 k,则隶属度矩阵应当是 N∗k 的矩阵)
step2:根据聚类中心更新公式,计算聚类中心
step3:根据隶属度更新公式,计算其余点到聚类中心的隶属度
step4:迭代结束(终止条件除了设置迭代次数外,还可以设置隶属度变化低于设定阈值),隶属度最大的那个就是所属类
python代码
import skfuzzy
优势
(1)硬聚类把每个待识别的对象严格的划分某类中,具有非此即彼的性质,而模糊聚类建立了样本对类别的不确定描述,更能客观的反应客观世界,从而成为聚类分析的主流。
(2)据说对高斯分布的数据集聚类效果好,这个出处我还没找到。
缺陷
(1)预先设置聚类数和模糊系数
(2)易局部最优