模糊C均值聚类
模糊C均值聚类
主 单
讲:周润景 教授 位:电子信息工程学院
目 录
模糊C均值聚类应用背景 模糊C均值算法 模糊C均值聚类的MATLAB实现 模糊C均值聚类结果分析
一.模糊C均值聚类应用背景
传统的聚类分析是一种硬划分(Crisp Partition),它把每个待辨识的对 象严格地划分到某类中,具有“非此即彼”的性质,因此这种类别划分的界限 是分明的。然而实际上大多数对象并没有严格的属性,它们在性质和类属方面 存在着中介性,具有“亦此亦彼”的性质,因此适合进行软划分。Zadeh提出 的模糊集理论为这种软划分提供了有力的分析工具,人们开始用模糊方法来处 理聚类问题,并称之为模糊聚类分析。模糊聚类得到了样本属于各个类别的不 确定性程度,表达了样本类属的中介性,建立起了样本对于类别的不确定性的
三.模糊C均值聚类的MATLAB实现
426.31 3105.29 2057.8 1507.13 1556.89 1954.51 343.07 3271.72 2036.94 2201.94 3196.22 935.53 2232.43 3077.87 1298.87 1580.1 1752.07 2463.04 1962.4 1594.97 1835.95 1495.18 1957.44 3498.02 1125.17 1594.39 2937.73 24.22 3447.31 2145.01 1269.07 1910.72 2701.97 1802.07 1725.81 1966.35 1817.36 1927.4 2328.79 1860.45 1782.88 1875.13]; [center,U,obj_fcn] = fcm(data,4); plot3(data(:,1),data(:,2),data(:,3),'o');
三.模糊C均值聚类的MATLAB实现
2297.28 2092.62 1418.79 1845.59 2205.36 2949.16 1692.62 1680.67 2802.88 172.78 2063.54 1449.58 1651.52 341.59 291.02 237.63 3340.14 3177.21 1775.89 1918.81 3243.74 3244.44 1867.5 1575.78 3017.11 3084.49 3199.76 1641.58 1713.28 3076.62 3095.68 3077.78 535.62 584.32 2772.9 2226.49 1202.69 662.42 2108.97 1725.1 1984.98 2328.65 1257.21 3405.12 1570.38 2438.63 2088.95 2251.96
三.模糊C均值聚类的MATLAB实现
注意:在使用上述方法时,要根据中心坐标Center的特点分清楚每一类中 心所代表的实际中的哪一类,然后才能准确地将待聚类的各方案准确地分为各 自所属的类别;否则,就会出现张冠李戴的现象。 2)MATLAB图形显示聚类模式 使用命令[center,U,obj_fcn] = fcm(data,4)进行聚类后,可调用MATLAB 图形窗口显示聚类结果,命令格式如下: maxU=max(U); %最大隶属度
三.模糊C均值聚类的MATLAB实现
1702.8 1877.93 867.81 1831.49 460.69 2374.98 2271.89 1783.64 198.83 1494.63 1597.03 1598.93 1243.13 2336.31 354 2144.47 1639.79 1860.96 2334.68 1713.11 3274.77 3346.98 3482.97 1597.99 3250.45 2072.59 1921.52 1921.08 1814.07 2640.26 3300.12 2501.62 2068.74 1975.3 2535.1 1604.68 2172.99 975.31 946.7 2261.31 2445.08 2550.51 2126.76 1623.33 3441.07 1599.63 2373.61 591.51
描述,能更客观地反映现实世界,从而成为聚类分析研究的主流。
在基于目标函数的聚类算法中模糊 C均值(FCM,Fuzzy C—Means)类 型算法的理论最为完善,应用最为广泛。
二.模糊C均值算法
1.模糊C均值聚类的准则
i
设 x (i 1,2,...,n) 是n个样本组成的样本集合,c为预定的类别数目, (x )
四.模糊C均值聚类结果分析
运行MATLAB程序,数据的模糊C均值聚类分析数据如下:
Iteration count = 1, obj. fcn = 28484303.583307 Iteration count = 2, obj. fcn = 22894174.219903 Iteration count = 3, obj. fcn = 22492974.034424 Iteration count = 4, obj. fcn = 20879539.602697 Iteration count = 5, obj. fcn = 14444987.068964 Iteration count = 6, obj. fcn = 8322567.664727 Iteration count = 7, obj. fcn = 7551351.839018 Iteration count = 8, obj. fcn = 7439273.677928 Iteration count = 9, obj. fcn = 7421451.003657 Iteration count = 10, obj. fcn = 7417960.721127 Iteration count = 11, obj. fcn = 7417133.213718 Iteration count = 12, obj. fcn = 7416918.432660 Iteration count = 13, obj. fcn = 7416860.845351 Iteration count = 14, obj. fcn = 7416845.240472 Iteration count = 15, obj. fcn = 7416840.997724
index1 = find(U(1,:) == maxU)
index2 = find(U(2,:) == maxU) index3 = find(U(3,:) == maxU)
%找到属于第一类的点
%找到属于第二类的点 %找到属于第三类的点
index4 = find(U(4,:) == maxU)
三.模糊C均值聚类的MATLAB实现
1.重要程序代码
这里对酒瓶颜色进行分类。下面介绍其重要程序代码: 1)MATLAB模糊C均值数据聚类识别函数
在MATLAB中(b=2),只要直接调用如下程序即可实现模糊 C均值聚类:
[Center,U,obj_fcn]=fcm(data,cluster_n) data:要聚类的数据集合,每一行为一个样本; cluster_n:聚类数; Center:最终的聚类中心矩阵,每一行为聚类中心的坐标值; U:最终的模糊分区矩阵; obj_fcn:在迭代过程中的目标函数值。
1 / b 1
1 / b 1
二.模糊C均值算法
用当前的隶属度函数按下式更新计算各类聚类中心:
i 1 n
m
j
( x ) x ( x )
b j i n b i 1 j i
i
当模糊 C均值算法收敛时,就得到了各类的聚类中心和各个样本对于各类的 隶属度值,从而完成了模糊聚类划分。如果需要,还可以将模糊聚类结果进行解 模糊,即用一定的规则把模糊聚类划分转化为确定性分类。
line(data(index4,1),data(index4,2),data(index4,3),'linestyle','none','marke
r','+','color','y');
三.模糊C均值聚类的MATLAB实现
2. MATLAB实现模糊C均值聚类完整程序
clear all; data=[1739.94 1675.15 373.3 3087.05 1756.77 1652 864.45 1647.31 222.85 3059.54 877.88 2031.66 1803.58 1583.12 2352.12 2557.04 401.3 3259.94 363.34 3477.95 1571.17 1731.04 104.8 3389.83 499.85 3305.75 2395.96 2429.47 1514.98 2665.9 2002.33 3071.18 2163.05 1411.53 2150.98 2462.86 1735.33 2421.83 2196.22
j i
是第i个样本对于第j类的隶属度函数。用隶属度函数定义的聚类损失函数
可以写为
J ( x ) x m
c n b f j 1 i 1 j i i
2
j
其中,b>1,是一个可以控制聚类结果的模糊程度的常数。
在不同的隶属度定义方法下最小化聚类损失函数,就得到不同的模糊
聚类方法。其中最有代表性的是模糊C均值方法,它要求一个样本对于各 个聚类的隶属度之和为1,即:
二.模糊C均值算法
(2)初始化各个聚类中心
m:
i
1 m N
i
yi i
y
式中,Ni是第i聚类