
聚类分析课程设计.docx
12页《空间分析》系统聚类算法及编程实现学院:地质工程与测绘学院专业:遥感科学与技术班级:2011260601学号: 指导老师:目录第 1 章前言 3第 2 章 算法设计背景 32.1 聚类要素的数据处理 32.2 距离的计算 5第 3 章算法思想与编程实现 53.1 算法思想 53.2 用 Matlab 编程实现 6第 4 章课程设计总结 10主要参考文献 11第一章 前言本课题是根据李斌老师所教授的《空间分析》课程内容及要求而选定的,是 对于系统聚类算法的分析研究及利用相关软件的编程而实现系统聚类研 究的是 系统聚类算法的分析及编程实现,空间聚类的目的是对空间物体的集 群性进行分 析,将其分为几个不同的子群(类)子群的形成的是地理系统运作的结果,根 据此可以揭示某种地理机制此外,子群可以作为其它分析的基础,例如,公共 设施的建立一般地说是根据居民点群的分布,而不是具体的居民住宅的分布来布 置的,因此需要对居民点群进行聚类分析以形成若干居民点子群,这样便于简化 问题,突出重点空间聚类可以采用不同的算法过程在分析之初假定 n 个点自成一类,然 后逐步合并,这样在聚类的过程中,分类将越来越少,直至聚至一个适当的分 类 数目,这一聚类过程称之为系统聚类。
常见的聚类分析方法有系统聚类法、动态 聚类法和模糊聚类法等下面主要介绍系统聚类算法,并基于 Matlab 软 件来实现算法的编程第二章算法设计背景2.1聚类要素的数据处理假设有m个聚类的对象,每一个聚类对象都有个要素构成它们所对应的要 素数据可用表 3.4.1给出在聚类分析中,常用的聚类要素的数据处理方法有如下 几种聚类对象要 素阳也A,心A,1殆知A〉切h *g2忑21 “22A >兀J』 Af孟2抑kM M M M M M兀L X垢八「龙扩h、xinkM M M M M M0 g A , % Af g①总和标准化殆== 12A,淤;/ = 1,2,A,方)2>i/i-l且乞对 i (7 = 12A E)i-l③极大值标准化齐 Q ±12A gj = \2A /)max{xy)经过这种标准化所得的新数据,各要素的极大值为 1,其余各数值小于 i经过这种标准化所得的新数据,各要素的极大值为 1,极小值为 0,其余的数值 均在 0 与 1 之间2.2 距离的计算距离是事物之间差异性的测度,差异性越大,则相似性越小,所以距离是系统 聚 类分析的依据和基础D 巨离i=lf 气亠 - " (iJ i'2'A "坯)③明科夫斯基距禽应材=221 爲取_現隅 L.j切比雪夫距离当明科夫斯基距戸 T8 时裏有选择不同的距离,聚类结果会有所差异。
在地理分区和分类研究中,往往采用几 种距离进行计算、对比,选择一种较为合适的距离进行聚类第三章算法思想与编程实现3.1 算法思想我们已经指出系统聚类方法首先将 n 个空间点看做是 n 个子群,然后根据所选用的聚类统计量来计算 n 个子群之间的关系对于距离,计算 n 个子群 两两之间的距离,首先选择距离最近的两个子群(点)归为一个新的子群, 这样就 得到n-1个子群两两之间的聚类统计量,继续选择距离最近的子群合并,再得到 n-2个子群……,依此类推,直到所有的子群全部合并3.2用Matlab编程实现运用Matlab中的一些基本矩阵计算方法,通过自己编程实现聚类算法,在此只 讨论根据最短距离规则聚类的方法调用函数:minl.m ――求矩阵最小值,返回最小值所在行和列以及值的大小min2.m --- 比较两数大小,返回较小值stdl.m 用极差标准化法标准化矩阵dsl.m 用绝对值距离法求距离矩阵cluster.m ――应用最短距离聚类法进行聚类分析prin tl.m 调用各子函数,显示聚类结果聚类分析算法假设距离矩阵为vector,a阶,矩阵中最大值为max,令矩阵上三角元素等于max聚类次数=a-1,以下步骤作a-1次循环:求改变后矩阵的阶数,计作c求矩阵最小值,返回最小值所在行e和列f以及值的大小gfor l=1:c, 为 vector(c+1,l) 赋值,产生新类令第c+1列元素,第e行和第f行所有元素为,第e列和第f列所有元素 为max源程序如下:%std1・m,用极差标准化法标准化矩阵fun cti on std=std1(vector)max=max(vector); %对歹 U 求最大值min=mi n(vector);[a,b]=size(vector); %巨阵大小,a为行数,b为列数for i=1:afor j=1:bstd(i,j)= (vector(ij)-mi n(j))/(max(j)-mi n(j));endend%ds1.m 用绝对值法求距离fun cti on d=ds1(vector);[a,b]=size(vector);d=zeros(a);for i=1:afor j=1:afor k=1:bd(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k));endendendfprintf(' 绝对值距离矩阵如下:\n');disp(d)%mi nl.m 求矩阵中最小值,并返回行列数及其值function [v1,v2,v3]=min1(vector);%v1 为行数,v2 为列数,v3 为其值[v,v2]=mi n( mi n(vector'));[v,v1]=mi n( mi n(vector));v3=min(min( vector));%min2.m 比较两数大小,返回较小的值fun cti on v 仁 min( v2,v3);if v2>v3v1=v3;elsev 仁 v2;end%cluster・m最短距离聚类法function result=cluster(vector);[a,b]=size(vector);max=max(max(vector));for i=1:afor j=i:bvector(i,j)=max;endend;for k=1:(b-1)[c,d]=size(vector);fprintf(第%g 次聚类:\n',k);[e,f,g]=mi n1(vector);fprintf('最小值=%g將第%g区和第%g区并为一类,记作 G%g\n\n',g,e,f,c+1);for l=1:cif l<=mi n2(e,f)vector(c+1,l)=mi n2(vector(e,l),vector(f,l));elsevector(c+1,l)=mi n2(vector(l,e),vector(l,f));endend;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%printl,调用各子函数function print=print1(filename,a,b); %a 为地区个数,b 为指标数fid=fope n(filen ame,'r')vector=fsca nf(fid,'%g',[a b]);fprintf(' 标准化结果如下:\n')v1=std1(vector)v2=ds1(v1);cluster(v2);%输出结果prin t1('fname',9,7)第四章课程设计总结通过此次课程设计,对空间分析中的聚类分析有了更一步的了解和体会,尤 其是 对系统聚类分析有了深刻的掌握,基于 Matlab 软件的方便性和语言的简洁 易懂性, 基本完成了该次课程设计的程序编写。
当然,在课程设计主要是依据《空间分析》该书中聚类分析章节中的系统聚 类分 析来,空间聚类可以采用不同的算法过程在分析之初假定 n 个点自成一类, 然后 逐步合并,这样在聚类的过程中,分类将越来越少,直至聚至一个适当的分 类数 目,这一聚类过程称之为系统聚类显然,距离是事物之间差异性的测度, 差异性 越大,则相似性越小,所以距离是系统聚类分析的依据和基础 设计算法 思想和选 用其中的最短距离的原则来进行系统聚类, 我们已经指出系统聚类方法首先将 n 个空间点看做是 n 个子群,然后根据所选用的聚类统计量来计算 n 个子 群 之间的关系对于距离,计算 n 个子群两两之间的距离,首先选择距离最近的 两个 子群(点)归为一个新的子群,这样就得到n-1个子群两两之间的聚类统计量,继续 选择距离最近的子群合并,再得到n-2个子群……,依此类推,直到所有的子群全 部合并设计的程序也有不足之处,对于数据量大的空间聚类显得不实用, 仅仅较适 合 数据小的系统聚类,即一般数据量的空间聚类分析,对于提高程序空间聚类分 析能 力,还待进一步的研究主要参考文献1 郭仁忠,空间分析,北京:高等教育出版社, 20012 张强,王正林,精通 MATLAB 图像处理,电子工业出版社, 20093 张克权,组合指标分类方法简介与分析,北京:测绘出版社, 19804郭仁忠,张克权.q型聚类分析中变量相关性的处理方法分析,武汉测绘科技大学 报, 1987, 12 (3)5 薛山, MATLABS 础教程,北京:清华大学出版社, 2011。
