使用模糊C-means群集的群集准随机数据

此示例显示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.函数初始化不同的初始条件。此行为递回计算和绘制群集中心的顺序。

也可以看看

相关话题