matlab 实现模糊C均值聚类

1. 原理

模糊c均值算法步骤:

  1. 设定聚类数目c和加权指数b:

  2. 初始化各个聚类中心m

  1. 重复下面的运算,直到各个样本的隶属度值稳定:用当前的聚类中心根据下式计算隶属度函数:

用当前的隶属度函数按下式更新计算各类聚类中心:

当模糊C均值算法收敛时,就得到了各类的聚类中心和各个样本对于各类的隶属度值,从而完成了模糊聚类划分

Matlab中模糊c均值聚类函数(b=2):

Center,U,obj_fcn=fcm(data,cluster_n)

data:要聚类的数据集合,每一行为一个样本;

cluster_n:聚类数;

Center:最终的聚类中心矩阵,每一行为聚类中心的坐标值;

U:最终的模糊分区矩阵;

obj_fcn:在迭代过程中的目标函数值。

2. 过程

2.1 数据集合并及可视化

将MALE.txt和FEMALE.txt文件合并成一个data.txt文件,在matlab中导入data文件并绘制样本点分布:

图1 初始样本点分布图

2.2 模糊c均值聚类

调用MATLAB中模糊c均值聚类函数fcm实现聚类,初始设置聚类簇的个数为2,求出每个样本的最大隶属度,然后找出分别属于两类样本的点并绘制图像:

程序如上图所示,运行后聚类结果如下:

图2 迭代过程中目标函数值

可以看出目标函数值在迭代中是不断减小的

图3 聚类结果

图4 簇为2聚类结果样本点分布

为了能够寻找到更合理的聚类数目,接下来分别进行3类、4类、5类聚类

图5 簇个数为3

图6 簇个数为4

图7 簇个数为5

3. 结果与分析

在上述实验过程中,我们成功实现了模糊c均值聚类,因为数据集是由两类样本合成的所以初始聚类簇的个数设置为2,结果如图4所示,然后从图中可以发现聚类效果似乎并非最佳,于是后续又增大了簇的个数进行多次实验,如图5到图7所示,通过观察可知聚类个数为4时或许会更加合理。在实验迭代的过程中可以了解到这种聚类的方式主要是通过优化目标函数然后得到每个样本点对所有类中心的隶属度,从而决定样本点的类属以达到自动对样本数据进行聚类的目的。同时我也通过改变聚类个数的方式去寻找更加合理的类别数。但是实验中还缺少对于聚类优劣的描述,可以通过一些聚类指标来对实验进行进一步优化。

相关推荐
海绵宝宝的月光宝盒11 小时前
14-AutoCAD-阵列命令应用与案例实战(AR)
经验分享·笔记·自动化·课程设计·制造·学习方法·cad
by2099914 小时前
Linux GCC/G++ 编译与 Makefile 构建
linux·运维·服务器·经验分享
姚瑞南15 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
Evand J15 小时前
【PMSM例程4】PMSM电阻辨识与模型补偿EKF,MATLAB例程。附下载链接,包运行成功
开发语言·matlab·电机·ekf·卡尔曼·pmsm
slandarer15 小时前
MATLAB | 文艺复兴:万圣节使用 MATLAB 绘制黑人抬棺动画
matlab·黑人抬棺
m0_7196408716 小时前
高校人工智能实验室搭建,2026年具身智能科研设备适配建议
人工智能·经验分享
CS创新实验室17 小时前
没有标签的数据,怎么“自动分成几堆“?——K-means 聚类的原理与坑
人工智能·kmeans·聚类
夏天的清晨17 小时前
聚类与2-OPT
人工智能·机器学习·聚类
大江东去浪淘尽千古风流人物19 小时前
【FLORA】机器人视频标注引擎解析:三模型如何产出动作指令与四类奖励信号
matlab·机器人·跨模态·遥感·图像匹配·1024程序员节·特征描述符
康谋自动驾驶20 小时前
安全成为汽车“生命线”,康谋aiSim如何支撑组合驾驶辅助安全落地?
经验分享·智能驾驶