主要内容

fcm

模糊c均值聚类

描述

例子

中心U= fcm(数据数控对给定的数据执行模糊c均值聚类并返回数控集群中心。

例子

中心U= fcm(数据数控选项指定其他集群选项。

例子

中心UobjFunc= fcm(___还返回所有前面语法的每次优化迭代时的目标函数值。

例子

全部折叠

加载数据。

负载fcmdata.dat

找到2模糊c均值聚类。

[centers,U] = 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

将每个数据点划分到隶属度值最大的聚类中。

maxU = max(U);index1 = find(U(1,:) == maxU);index = find(U(2,:) == maxU);

绘制聚类数据和聚类中心。

情节(fcmdata (index1, 1), fcmdata (index1, 2),“ob”)举行情节(fcmdata (index2, 1), fcmdata (index2, 2),”或“)情节(中心(1,1),中心(1、2),“xb”“MarkerSize”15岁的“线宽”3)图(中心(2,1),中心(2,2),“xr”“MarkerSize”15岁的“线宽”, 3)

图中包含一个轴对象。axis对象包含4个line类型的对象。

创建一个随机数据集。

数据= rand(100,2);

为了增加聚类之间的模糊重叠量,指定一个大的模糊划分矩阵指数。

options = [3.0 NaN 0];

将数据聚类。

[centers,U] = fcm(data,2,options);

加载集群数据。

负载clusterDemo.dat

设置聚类终止条件,使优化在以下情况之一发生时停止:

  • 迭代次数达到最大值25

  • 目标函数的改进小于0.001在两个连续的迭代之间。

options = [NaN 25 0.001 0];

第一个选项是,将模糊划分矩阵指数设置为其默认值2.将第四个选项设置为0抑制目标函数的显示。

将数据聚类。

[centers,U,objFun] = fcm(clusterDemo,3,options);

要确定哪种终止条件停止了聚类,请查看目标函数向量。

objFun
objFun =13×154.7257 42.9867 42.8554 42.1857 39.0857 31.6814 28.5736 27.1806 20.7359 15.7147

优化停止,因为目标函数的改进小于0.001在最后两个迭代之间。

输入参数

全部折叠

要聚类的数据集,指定为带有的矩阵Nd行,Nd是数据点的数量。的列数数据等于数据维数。

要创建的集群数量,指定为大于的整数1

聚类选项,指定为具有以下元素的向量:

选项 描述 默认的
选项(1)

模糊划分矩阵的指数,U,指定为大于的标量1.0.此选项控制集群之间的模糊重叠量,值越大表示重叠程度越大。

如果数据集很宽,潜在的聚类之间有很多重叠,那么计算的聚类中心可能彼此非常接近。在这种情况下,每个数据点在所有集群中具有大致相同的隶属度。若要改善聚类结果,请减小此值,这将限制聚类期间模糊重叠的数量。

有关模糊重叠调整的示例,请参见模糊c均值聚类中模糊重叠的调整

2.0
选择(2)

最大迭代次数,指定为正整数。

One hundred.
选项(3)

目标函数在连续两次迭代之间的最小改进,指定为正标量。

1 e-5
选项(4)

信息显示标志,指示是否在每次迭代后显示目标函数值,指定为以下之一:

  • 真正的-显示目标函数。

  • -不显示目标函数。

真正的

如有任何元素选项,则使用该选项的默认值。

当达到最大迭代次数或连续两次迭代之间的目标函数改进小于指定的最小值时,聚类过程停止。

输出参数

全部折叠

最后的聚类中心,返回为矩阵带数控包含每个集群中心坐标的行。的列数中心等于正在聚类的数据的维数。

模糊划分矩阵,返回为带矩阵数控行和Nd列。元素U (j对象的隶属度j的数据点集群。对于给定的数据点,所有集群的成员值之和为1。

每个迭代的目标函数值,作为一个向量返回。

提示

  • 要使用FCM聚类生成模糊推理系统,请使用genfis命令。例如,假设你使用以下语法进行数据集群:

    [centers,U] = fcm(数据,Nc,选项);

    第一个数据对应于输入变量,其余列对应于输出变量。

    您可以使用相同的训练数据和FCM聚类配置生成一个模糊系统。这样做:

    1. 配置集群选项。

      opt = genfisOptions(“FCMClustering”);opt.NumClusters = Nc;opt.Exponent = options(1);opt.MaxNumIteration =选项(2);opt.MinImprovement = options(3);opt.Verbose =选项(4);
    2. 提取输入和输出变量数据。

      inputData = data(:,1:M);outputData = data(:,M+1:结束);
    3. 生成FIS结构。

      fis = genfis(inputData,outputData,opt);

    模糊系统,金融中间人,每个聚类包含一个模糊规则,每个输入和输出变量每个聚类有一个隶属度函数。有关更多信息,请参见genfis而且genfisOptions

算法

模糊c均值(FCM)是一种聚类方法,它允许每个数据点属于多个具有不同隶属度的聚类。

FCM基于以下目标函数的最小化

J 1 D j 1 N μ j x c j 2

在哪里

  • D是数据点的数量。

  • N是集群的数量。

  • 模糊分块矩阵是用来控制模糊重叠度的指数吗> 1.模糊重叠指的是聚类之间边界的模糊程度,即在多个聚类中具有重要隶属关系的数据点的数量。

  • x数据点。

  • cj中心是j集群。

  • μij会员的程度是xj集群。对于给定的数据点,x,则所有簇的隶属度值之和为1。

fcm集群过程中执行以下步骤:

  1. 随机初始化集群成员值,μij

  2. 计算集群中心:

    c j 1 D μ j x 1 D μ j

  3. 更新μij依据如下:

    μ j 1 k 1 N x c j x c k 2 1

  4. 计算目标函数,J

  5. 重复步骤2-4,直到J改进的幅度小于指定的最小阈值或直到指定的最大迭代次数之后。

参考文献

比兹德克,j.c.,基于模糊目标函数算法的模式识别,纽约全会出版社,1981年。

版本历史

R2006a之前介绍