实验二 模糊C均值聚类
实验目的:
学会使用MATLAB软件进行模糊C均值聚类,学会如何进行迭代并观察迭代过程。
实验学时:4学时 实验内容:
1、认真阅读文件 ,通过给出的英文的例子学习进行C均值聚类的具体步骤。
2、在学习完所给的例子后进行实际操作。根据表格提供的固定资本和人力资本等进行聚类分布。进一步熟悉和掌握熟悉FUZZY CLUSTERING.
实验日期:2013年4月24日
实验过程:
1、查看所给数据表格(如下),由经济学理论知,GDP的产出状况是由固定资本的投入和人力资源的投入决定的。因此,实际上我们只需要选取固定资本和人力资源这两组数据进行处理就行了。 地区GDP 固定资本 (Fixed Capital) 人力资本 (manpower Capital) 地区GDP 固定资本 (Fixed Capital) 人力资本 (manpower Capital) (District) (District) 北京 天津 河北 山西 湖北 湖南 广东 广西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 平均 2、通过学习guide中的范例,将所给的程序进行重新编辑。其具体程序如下:
function [NCentres, M] = defcm(Centres, q) Tiles = [ 1 1 1 1 1 1 1 1 1 1
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ] ;
% 将固定资本和人力资本的数据按GDP的平均值进行分类,大于平均值的分为一类,记为1,小于平均值的分为一类,记为-1 Tiles(:, 1) = log(Tiles(:, 1)) ; Tiles(:, 2) = log(Tiles(:, 2)) ; clf ; hold off;
plot(Tiles(1:16, 1), Tiles(1:16, 2), 'ob') ; axis([ ]) ; xlabel('固定资本') ; ylabel('人力资本') ;
title('Tiles data: o = whole tiles, * = cracked tiles, x = centres') ; hold on;
plot(Tiles(17:31, 1), Tiles(17:31, 2), '*b') ; plot(Centres(:,1), Centres(:,2),'xr') ; Object = Tiles(:,[1 2])' ; Centres = Centres' ; k = length(Centres(:,1)); D = dist(Object, Centres); M = member(D, q) ; ClustSums = sum(M) ;
[NoOfObs, NoOfCtrs] = size(M) ;
z = M ./ (ones(NoOfObs,1) * ClustSums) ; NCentres = Centres' ; for i = 1:NoOfCtrs, w = z(:,i) * ones(1,2) ;
NCentres(i,:) = sum(Object' .* w) ; end ;
3、将上述程序保存为文件,然后在命令窗口中输入初始聚类中心Cts = [ ; ],即在这里面我们取了两个聚类中心点,c1=,、c2=,,并设q=2。
需要注意的是,q越接近1收敛速度越快,但若q=1则为硬C均值聚(HCM)。然后不断调用函数defcm,[Cts, M] = defcm(Cts,q)。
即在Command窗口中输入:
Cts = [ ; ]; q = 2;
[Cts, M] = defcm(Cts,q)。
本次实验一共迭代了13次,M矩阵才不再变化,达到了最佳聚类中心。迭代的仿真图形如下所示:
(迭代时只要将Command窗口中Cts中的值换成前一次迭代输出的值即可)
第1次迭代仿真的图形