聚类分析课程设计.docx
- 文档编号:8164443
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:8
- 大小:74.48KB
聚类分析课程设计.docx
《聚类分析课程设计.docx》由会员分享,可在线阅读,更多相关《聚类分析课程设计.docx(8页珍藏版)》请在冰豆网上搜索。
聚类分析课程设计
《空间分析》
系统聚类算法及编程实现
学院:
地质工程与测绘学院
专业:
遥感科学与技术
班级:
2011260601
学号:
学生姓名:
指导老师:
目录
第1章前言……………………………………………………3
第2章算法设计背景…………………………………………3
2.1聚类要素的数据处理…………………………………3
2.2距离的计算……………………………………………5
第3章算法思想与编程实现…………………………………5
3.1算法思想………………………………………………5
3.2用Matlab编程实现……………………………………6
第4章课程设计总结………………………………………10
主要参考文献………………………………………………11
第一章前言
本课题是根据李斌老师所教授的《空间分析》课程内容及要求而选定的,是对于系统聚类算法的分析研究及利用相关软件的编程而实现系统聚类。
研究的是系统聚类算法的分析及编程实现,空间聚类的目的是对空间物体的集群性进行分析,将其分为几个不同的子群(类)。
子群的形成的是地理系统运作的结果,根据此可以揭示某种地理机制。
此外,子群可以作为其它分析的基础,例如,公共设施的建立一般地说是根据居民点群的分布,而不是具体的居民住宅的分布来布置的,因此需要对居民点群进行聚类分析以形成若干居民点子群,这样便于简化问题,突出重点。
空间聚类可以采用不同的算法过程。
在分析之初假定n个点自成一类,然后逐步合并,这样在聚类的过程中,分类将越来越少,直至聚至一个适当的分类数目,这一聚类过程称之为系统聚类。
常见的聚类分析方法有系统聚类法、动态聚类法和模糊聚类法等。
下面主要介绍系统聚类算法,并基于Matlab软件来实现算法的编程。
第二章算法设计背景
2.1聚类要素的数据处理
假设有m个聚类的对象,每一个聚类对象都有个要素构成。
它们所对应的要素数据可用表3.4.1给出。
在聚类分析中,常用的聚类要素的数据处理方法有如下几种。
①总和标准化
②标准差标准化
③极大值标准化
经过这种标准化所得的新数据,各要素的极大值为1,其余各数值小于1。
④极差的标准化
经过这种标准化所得的新数据,各要素的极大值为1,极小值为0,其余的数值均在0与1之间。
2.2距离的计算
距离是事物之间差异性的测度,差异性越大,则相似性越小,所以距离是系统聚类分析的依据和基础。
选择不同的距离,聚类结果会有所差异。
在地理分区和分类研究中,往往采用几种距离进行计算、对比,选择一种较为合适的距离进行聚类。
第三章算法思想与编程实现
3.1算法思想
我们已经指出系统聚类方法首先将n个空间点看做是n个子群,然后根据所选用的聚类统计量来计算n个子群之间的关系。
对于距离,计算n个子群两两之间的距离,首先选择距离最近的两个子群(点)归为一个新的子群,这样就得到n-1个子群两两之间的聚类统计量,继续选择距离最近的子群合并,再得到n-2个子群……,依此类推,直到所有的子群全部合并。
3.2用Matlab编程实现
运用Matlab中的一些基本矩阵计算方法,通过自己编程实现聚类算法,在此只讨论根据最短距离规则聚类的方法。
调用函数:
min1.m——求矩阵最小值,返回最小值所在行和列以及值的大小
min2.m——比较两数大小,返回较小值
std1.m——用极差标准化法标准化矩阵
ds1.m——用绝对值距离法求距离矩阵
cluster.m——应用最短距离聚类法进行聚类分析
print1.m——调用各子函数,显示聚类结果
聚类分析算法
假设距离矩阵为vector,a阶,矩阵中最大值为max,令矩阵上三角元素等于max
聚类次数=a-1,以下步骤作a-1次循环:
求改变后矩阵的阶数,计作c
求矩阵最小值,返回最小值所在行e和列f以及值的大小g
forl=1:
c,为vector(c+1,l)赋值,产生新类
令第c+1列元素,第e行和第f行所有元素为,第e列和第f列所有元素为max
源程序如下:
%std1.m,用极差标准化法标准化矩阵
functionstd=std1(vector)
max=max(vector);%对列求最大值
min=min(vector);
[a,b]=size(vector);%矩阵大小,a为行数,b为列数
fori=1:
a
forj=1:
b
std(i,j)=(vector(i,j)-min(j))/(max(j)-min(j));
end
end
%ds1.m,用绝对值法求距离
functiond=ds1(vector);
[a,b]=size(vector);
d=zeros(a);
fori=1:
a
forj=1:
a
fork=1:
b
d(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k));
end
end
end
fprintf('绝对值距离矩阵如下:
\n');
disp(d)
%min1.m,求矩阵中最小值,并返回行列数及其值
function[v1,v2,v3]=min1(vector);%v1为行数,v2为列数,v3为其值
[v,v2]=min(min(vector'));
[v,v1]=min(min(vector));
v3=min(min(vector));
%min2.m,比较两数大小,返回较小的值
functionv1=min(v2,v3);
ifv2>v3
v1=v3;
else
v1=v2;
end
%cluster.m,最短距离聚类法
functionresult=cluster(vector);
[a,b]=size(vector);
max=max(max(vector));
fori=1:
a
forj=i:
b
vector(i,j)=max;
end
end;
fork=1:
(b-1)
[c,d]=size(vector);
fprintf('第%g次聚类:
\n',k);
[e,f,g]=min1(vector);
fprintf('最小值=%g,将第%g区和第%g区并为一类,记作G%g\n\n',g,e,f,c+1);
forl=1:
c
ifl<=min2(e,f)
vector(c+1,l)=min2(vector(e,l),vector(f,l));
else
vector(c+1,l)=min2(vector(l,e),vector(l,f));
end
end;
vector(1:
c+1,c+1)=max;
vector(1:
c+1,e)=max;
vector(1:
c+1,f)=max;
vector(e,1:
c+1)=max;
vector(f,1:
c+1)=max;
end
%print1,调用各子函数
functionprint=print1(filename,a,b);%a为地区个数,b为指标数
fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[ab]);
fprintf('标准化结果如下:
\n')
v1=std1(vector)
v2=ds1(v1);
cluster(v2);
%输出结果
print1('fname',9,7)
第四章课程设计总结
通过此次课程设计,对空间分析中的聚类分析有了更一步的了解和体会,尤其是对系统聚类分析有了深刻的掌握,基于Matlab软件的方便性和语言的简洁易懂性,基本完成了该次课程设计的程序编写。
当然,在课程设计主要是依据《空间分析》该书中聚类分析章节中的系统聚类分析来,空间聚类可以采用不同的算法过程。
在分析之初假定n个点自成一类,然后逐步合并,这样在聚类的过程中,分类将越来越少,直至聚至一个适当的分类数目,这一聚类过程称之为系统聚类。
显然,距离是事物之间差异性的测度,差异性越大,则相似性越小,所以距离是系统聚类分析的依据和基础。
设计算法思想和选用其中的最短距离的原则来进行系统聚类,我们已经指出系统聚类方法首先将n个空间点看做是n个子群,然后根据所选用的聚类统计量来计算n个子群之间的关系。
对于距离,计算n个子群两两之间的距离,首先选择距离最近的两个子群(点)归为一个新的子群,这样就得到n-1个子群两两之间的聚类统计量,继续选择距离最近的子群合并,再得到n-2个子群……,依此类推,直到所有的子群全部合并。
设计的程序也有不足之处,对于数据量大的空间聚类显得不实用,仅仅较适合数据小的系统聚类,即一般数据量的空间聚类分析,对于提高程序空间聚类分析能力,还待进一步的研究。
主要参考文献
1郭仁忠,空间分析,北京:
高等教育出版社,2001
2张强,王正林,精通MATLAB图像处理,电子工业出版社,2009
3张克权,组合指标分类方法简介与分析,北京:
测绘出版社,1980
4郭仁忠,张克权.q型聚类分析中变量相关性的处理方法分析,武汉测绘科技大学报,1987,12(3)
5薛山,MATLAB基础教程,北京:
清华大学出版社,2011
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 聚类分析 课程设计