基于模糊C均值的聚类分析
4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006
4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006 4.8339e+006
0.029278
• Columns 25 through 30
0.068372 0.026621 0.96861 0.96367 0.98434 0.006666 0.036258 0.03739 0.0060731 0.0085095 0.0033354 0.0069366 0.14864 0.86903 0.0092717 0.011597 0.0048348 0.95254 0.74673 0.066961 0.016046 0.016226 0.007487 0.033862
此时,目标函数在 4.8339e+006 处收敛, 算法结速
由得出的聚类中心矩阵及隶属度矩阵就 可以进行分类了:聚类中心矩阵有4行, 每一行代表一类及四类,3列,每一列代 表一种颜色;由隶属度矩阵中Columns 1 through 6为例:
0.033201 0.97007 0.029789 0.056082 0.92626 0.071666 0.029521 0.0058525 0.047123 0.020886 0.017596 0.020368 0.64897 0.0088617 0.84987 0.11948 0.023937 0.076162 0.28831 0.015217 0.073223 0.80355 0.032208 0.8318
(2)
这里 , =1,⋯ ,n,是等式的n个约束 式的拉格朗日乘子。对所有输入参量求 导,使式(1)达到最小的必要条件为:
(3)
(4 )
由上述两个必要条件,模糊c均值聚类算 法是一个简单的迭代过程。在批处理方 式运行时,FCM采用下列步骤确定聚类中 心 和隶属矩阵 U: 步骤1 用值在0,1间的随机数初始 化隶属矩阵 U ,使其满足式 (2) 中的约束 条件。 步骤2 用式(3)计算c个聚类中心 , i=1,⋯ ,c。
• end
• • • • •
expo = options(1);%u矩阵指数 max_iter = options(2);%迭代最大次数 min_impro = options(3);%改进的最小值 display = options(4); obj_fcn = zeros(max_iter, 1);%目标函 数的建立 • U = initfcm(cluster_n, data_n); %初始 化模糊分割矩阵
得出聚类中心及隶属度矩阵:
• CENTER2 = 314.72 3194.7 2330.5 3250 1748.8 1733.2 1211.8 1879
2283.5 958.33 1927.7 2821.1
• U2 = • Columns 1 through 6
0.033201 0.97007 0.029789 0.056082 0.92626 0.071666
0.018067 0.01343 0.91889 0.016791 0.047375 0.026058
• Columns 13 through 18
0.95896
0.010641 0.012668 0.017729
0.024654
0.03003
0.014714
0.026868
0.015067
0.91928 0.90032 0.0081124 0.029539 0.94815 0.035832 0.045317 0.061914 0.80249 0.02370 0.020235 0.024333 0.91526 0.1411 0.013072
%以下为主循环: • for i = 1:max_iter, • [U, center, obj_fcn(i)] = stepfcm(data, U, cluster_n, expo); • if display, • fprintf('Iteration count = %d, obj. fcn = %f\n', i, obj_fcn(i)); • end %检查终止情况:
基于模糊C均值的聚类分析
1 模糊c均值聚类(FCM)方法
模糊 C 均值聚类 (FCM) 方法是一种在已 知聚类数的情况下,利用隶属度函数和迭 代算法将有限的数据集分别聚类的方法。 其目标函数为:
式中, 为样本数; 为聚类数; 为第 个 样本相对于第 个聚类中心的隶属度; 为
第 个类别的聚类中心; 为样本到聚类 中心的欧式距离。聚类的结果使目标函 数 最小,因此,构造如下新的目标函 数:
• Columns 37 through 39
0.022453 0.97193 0.048398 0.022367 0.0061355 0.028522 0.80825 0.0083348 0.23214 0.14693 0.013595 0.69094
• OBJ_FCN2 =
1.9285e+007 1.352e+007 8.2142e+006 5.4477e+006 4.9316e+006 4.85e+006 4.8367e+006 4.8344e+006 4.834e+006
0.029521 0.0058525 0.047123 0.020886 0.017596 0.020368 0.64897 0.0088617 0.84987 0.11948 0.023937 0.076162 0.28831 0.015217 0.073223 0.80355 0.032208 0.8318
先看上述矩阵的第一列,从中找出最大 值是0.64897 ,在第三行,由最大隶属 度原则可得:样本1属于第三类,以此类
2949.16 1692.62 1680.67 2802.88 172.78 2063.54 1449.58 1651.52 341.59 291.02
3244.44 1867.5 1575.78 3017.11 3084.49 3199.76 1641.58 1713.28 3076.62 309 if abs(obj_fcn(i) - obj_fcn(i-1)) < min_impro, break; end, • end • end • iter_n = i;% • obj_fcn(iter_n+1:max_iter) = [];
调用上述程序建立起来的模糊聚 类函数,得到以下运行程序:
1571.17 104.8 499.85 2297.28 2092.62 1418.79 1845.59 2205.36
1731.04 3389.83 3305.75 3340.14 3177.21 1775.89 1918.81 3243.74
1735.33; 2421.83; 2196.22; 535.62; 584.32; 2772.9; 2226.49; 1202.69;
• • • • • •
tmp = default_options; tmp(1:length(options)) = options; options = tmp; end nan_index = find(isnan(options)==1); options(nan_index) = default_options(nan_index); • if options(1) <= 1, • error('The exponent should be greater than 1!'); • end
• Columns 7 through 12
0.01486
0.015919 0.88683 0.082394
0.070257
0.97808
0.931
0.017272 0.020349 0.031376
0.015668
0.94372
0.54463 0.0055741 0.2854 0.0068329 0.099713 0.009517
662.42; 2108.97; 1725.1; 1984.98; 2328.65; 1257.21; 3405.12; 1570.38; 2438.63; 2088.95;
237.63 3077.78 2251.96; 1702.8 1639.79 2068.74; 1877.93 1860.96 1975.3; 867.81 2334.68 2535.1; 1831.49 1713.11 1604.68; 460.69 3274.77 2172.99; 2374.98 3346.98 975.31; 2271.89 3482.97 946.7; 1783.64 1597.99 2261.31; 198.83 3250.45 2445.08; 1494.63 2072.59 2550.51]; [CENTER2, U2, OBJ_FCN2]=FCM(A,4)
步骤3 根据式(1)计算目标函数。 如果它小于某个确定的阈值,或它相对 上次价值函数值的改变量小于某个阈值, 则算法停止。 步骤4 用式(4)计算新的U阵。近回 步骤2。 当算法收敛时,就得到了各类的聚 类中心和各个样本对于各类的隶属度值, 从而完成了模糊聚类划分。
上述算法中,由于引入 的归一化 条件,在样本集不理想的情况下可能导 致结果不好。比如,如果某个野值样本 远离各类的聚类中心,本来它严格属于 各类的隶属度都很小,但由于归一化条 件的限制,将会使它对各类都有较大的 隶属度(比如两类情况下各类的隶属度都 是0.5),这种野值的存在将影响迭代的 最终结果。