此示例显示FCM群集如何使用准随机二维数据。
加载数据集并绘制它。
加载fcmdata.dat.绘图(FCMDATA(:,1),FCMDATA(:,2),'o')
接下来,调用命令行函数,FCM.
,在此数据集中找到两个群集,直到目标函数不再递减。
[中心,U,objfcn] = FCM(FCMDATA,2);
迭代计数= 1,obj。FCN = 8.970479迭代计数= 2,OBJ。FCN = 7.197402迭代计数= 3,OBJ。FCN = 6.325579迭代计数= 4,OBJ。FCN = 4.586142迭代计数= 5,OBJ。FCN = 3.893114迭代计数= 6,OBJ。FCN = 3.810804迭代计数= 7,OBJ。FCN = 3.799801迭代计数= 8,OBJ。FCN = 3.797862迭代计数= 9,OBJ。FCN = 3.797508迭代计数= 10,OBJ。 fcn = 3.797444 Iteration count = 11, obj. fcn = 3.797432 Iteration count = 12, obj. fcn = 3.797430
中央
包含两个集群中心的坐标,你
包含每个数据点的成员资格等级,以及objfcn.
包含跨越迭代的目标函数的历史记录。
这FCM.
函数是内置于以下例程之上的迭代循环:
initfcm.
- 初始化问题
distfcm.
- 执行欧几里德距离计算
stepfcm.
- 执行群集的一次迭代
要查看聚类的进度,请绘制目标函数。
图绘图(objfcn)标题('目标函数值')Xlabel('迭代计数')ylabel('目标函数值')
最后,绘制由此发现的两个集群中心FCM.
功能。绘图中的大字符表示集群中心。
maxu = max(u);index1 =查找(u(1,:) == maxu);index2 =查找(u(2,:) == maxu);图线(FCMDATA(INDEX1,1),FCMDATA(INDEX1,2),'linestyle'那......'没有任何'那'标记'那'o'那'颜色'那'G')线(FCMDATA(INDEX2,1),FCMDATA(索引2,2),'linestyle'那......'没有任何'那'标记'那'X'那'颜色'那'r') 抓住上绘图(中心(1,1),中心(1,2),'ko'那'Markersize'15,'行宽',2)情节(中心(2,1),中心(2,2),'kx'那'Markersize'15,'行宽'2)
注意:每次运行此示例时,FCM.
函数初始化不同的初始条件。此行为递回计算和绘制群集中心的顺序。