这个例子展示了如何在二维数据上执行模糊c均值聚类。有关群集高维数据的示例,请参见虹膜数据的模糊c均值聚类.
模糊c均值(FCM)是一种数据聚类技术N数据集中的每个数据点在一定程度上属于每个聚类。例如,靠近集群中心的数据点在该集群中的成员程度较高,而远离集群中心的另一个数据点在该集群中的成员程度较低。
的fcm
函数执行FCM聚类。它从对星团中心的随机初始猜测开始;这是每个集群的平均位置。接下来,fcm
为每个集群随机分配每个数据点的成员等级。通过迭代更新每个数据点的聚类中心和隶属度等级,fcm
将集群中心移动到数据集中的正确位置,并为每个数据点查找每个集群中的成员程度。这种迭代最小化一个目标函数,该目标函数表示从任意给定数据点到聚类中心的距离,该距离由该数据点在聚类中的成员关系加权。
加载5个示例数据集,并选择一个数据集进行集群。这些数据集具有不同数量的集群和数据分布。
负载fcmdata数据集=fcmdata3;
配置集群算法。有关这些设置的更多信息,请参见fcm
.要为每个数据集获得准确的聚类结果,请尝试不同的聚类选项。
指定要计算的集群数量,该数量必须大于1
.
N =4;
指定模糊划分矩阵的指数,控制聚类之间的模糊重叠程度。该值必须大于1
,使用较小的值创建更清晰的集群边界。有关更多信息,请参见模糊c均值聚类中的模糊重叠调整.
指数=2;
指定优化迭代的最大次数。
maxIterations =One hundred.;
指定目标函数在连续迭代之间的最小改进值。当目标函数的改进值低于此阈值时,优化停止。值越小,聚类结果越准确,但聚类收敛的时间越长。
minImprovement =0.00001;
指定是否在每次迭代后显示目标函数值。
displayObjectiveFunction =假;
的选项向量fcm
使用这些设置函数。
options = [exponent maxIterations minImprovement displayObjectiveFunction];
将数据聚类为N
集群。
[C U] = fcm(数据集N选项);
C
包含每个集群的计算中心。U
包含计算出的模糊划分矩阵,它表示每个聚类中每个数据点的隶属度。
将每个数据点分类到它拥有最高隶属度的集群中。
maxU = max (U);指数=细胞(N, 1);为i=1:N index{i} = find(U(i,:) == maxU);结束
绘制聚类结果。
图保存在为i = 1: N的阴谋(数据集(指数{我},1),数据集(指数{我},2),“o”)情节(C(我,1),C(我,2),“xk”,“MarkerSize”15岁的“线宽”3)结束持有从
每个集群中的数据点用不同的颜色显示。每个集群的中心显示为黑色X
.
选择要为其绘制成员函数曲面的集群。
集群=2;
通过将所有数据点的聚类隶属度值拟合到一个曲面上,获得选定聚类的隶属度函数。有关插值分散三维数据的更多信息,请参见griddata
.
[X,Y] =网网格(0:05:1,0:05:1);Z = griddata(数据集(:1),数据集(:,2),U(集群:),X, Y);冲浪(X, Y, Z)
当你减少指数
值时,集群成员从最大完全集群成员到零集群成员的转变更为陡峭;也就是说,集群边界变得更加清晰。