基于模糊C均值的聚类分析
上述算法中,由于引入 的归一化
条件,在样本集不理想的情况下可能导 致结果不好。比如,如果某个野值样本 远离各类的聚类中心,本来它严格属于 各类的隶属度都很小,但由于归一化条 件的限制,将会使它对各类都有较大的 隶属度(比如两类情况下各类的隶属度都 是0.5),这种野值的存在将影响迭代的 最终结果。
(2)
这里 , =1,⋯ ,n,是等式的n个约束 式的拉格朗日乘子。对所有输入参量求 导,使式(1)达到最小的必要条件为:
(3)
(4)
由上述两个必要条件,模糊c均值聚类算 法是一个简单的迭代过程。在批处理方 式运行时,FCM采用下列步骤确定聚类中 心 和隶属矩阵 U:
步骤1 用值在0,1间的随机数初始 化隶属矩阵U,使其满足式(2)中的约束 条件。
2395.96; 2429.47; 1514.98; 2665.9; 2002.33; 3071.18; 2163.05; 1411.53; 2150.98; 2462.86;
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
调用上述程序建立起来的模糊聚 类函数,得到以下运行程序:
A=[1739.94 373.3 1756.77 864.45 222.85 877.88 1803.58 2352.12 401.3 363.34
1675.15 3087.05 1652 1647.31 3059.54 2031.66 1583.12 2557.04 3259.94 3477.95
数的建立
• U = initfcm(cluster_n, data_n); %初始 化模糊分割矩阵
%以下为主循环: • for i = 1:max_iter, • [U, center, obj_fcn(i)] =
stepfcm(data, U, cluster_n, expo); • if display, • fprintf('Iteration count = %d, obj.
• if nargin == 2, • options = default_options; • else • if length(options) < 4,
• 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
• end
• expo = options(1);%u矩阵指数 • max_iter = options(2);%迭代最大次数 • min_impro = options(3);%改进的最小值 • display = options(4); • obj_fcn = zeros(max_iter, 1);%目标函
步骤2 用式(3)计算c个聚类中心 , i=1,⋯ ,c。
步骤3 根据式(1)计算目标函数。 如果它小于某个确定的阈值,或它相对 上次价值函数值的改变量小于某个阈值, 则算法停止。
步骤4 用式(4)计算新的U阵。近回 步骤2。
当算法收敛时,就得到了各类的聚 类中心和各个样本对于各类的隶属度值, 从而完成了模糊聚类划分。
程序
• if nargin ~= 2 & nargin ~= 3, • error('Too many or too few input
arguments!'); • end • data_n = size(data, 1); • in_n = size(data, 2);
• default_options = [2;%u矩阵分割指数 100; %迭代的最大次数 1e-5;%改进的最小值 1]; %迭代时显示信息
fcn = %f\n', i, obj_fcn(i)); • end %检查终止情况:
• if i > 1, • 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) = [];
基于模糊C均值的聚类分析
Байду номын сангаас
1 模糊c均值聚类(FCM)方法
模糊C均值聚类(FCM)方法是一种在已 知聚类数的情况下,利用隶属度函数和迭 代算法将有限的数据集分别聚类的方法。 其目标函数为:
式中, 为样本数; 为聚类数; 为第 个 样本相对于第 个聚类中心的隶属度; 为
第 个类别的聚类中心; 为样本到聚类 中心的欧式距离。聚类的结果使目标函 数 最小,因此,构造如下新的目标函 数:
1735.33; 2421.83; 2196.22; 535.62; 584.32; 2772.9; 2226.49; 1202.69;
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 3095.68
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;