系统聚类分析课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统聚类分析课程设计
《空间分析》
系统聚类算法及编程实现
学院:地质工程与测绘学院
专业:遥感科学与技术
班级:2011260601
学号:
学生姓名:
指导老师:
目录
第1章前言 (3)
第2章算法设计背景 (3)
2.1 聚类要素的数据处
理 (3)
2.2距离的计算 (5)
第3章算法思想与编程实现 (5)
3.1 算法思
想 (5)
3.2 用Matlab编程实
现 (7)
3.2.1 程序代
码 (7)
3.2.2 编程操作结果…………………………………
12
第4章K-均值算法应用与优缺点 (13)
4.1 K-均值聚类法的应用 (13)
4.2 K-均值聚类法的优缺点 (14)
第5章课程设计总结 (14)
主要参考文献 (15)
第一章前言
本课题是根据李斌老师所教授的《空间分析》课程内容及要求而选定的,是对于系统聚类算法的分析研究及利用相关软件的编程而实现系统聚类。研究的是系统聚类算法的分析及编程实现,空间聚类的目的是对空间物体的集群性进行分析,将其分为几个不同的子群(类)。子群的形成的是地理系统运作的结果,根据此可以揭示某种地理机制。此外,子群可以作为其它分析的基础,例如,公共设施的建立一般地说是根据居民点群的分布,而不是具体的居民住宅的分布来布置的,因此需要对居民点群进行聚类分析以形成若干居民点子群,这样便于简化问题,突出重点。
空间聚类可以采用不同的算法过程。在分析之初假定n个点自成一类,然后逐步合并,这样在聚类的过程中,分类将越来越少,直至聚至一个适当的分类数目,这一聚类过程称之为系统聚类。常见的聚类分析方法有系统聚类法、动态聚类法和模糊聚类法等。下面主要介绍系统聚类算法,并基于Matlab 软件用K-means算法(即k-均值算法)来实现系统聚类的算法编程。
第二章算法设计背景
2.1聚类要素的数据处理
假设有m 个聚类的对象,每一个聚类对象都有个要素构成。它们所对应的要素数据可用表3.4.1给出。在聚类分析中,常用的聚类要素的数据处理方法有如下几种。
①总和标准化
②标准差标准化
③极大值标准化
经过这种标准化所得的新数据,各要素的极大值为1,其余各数值小于1。
④极差的标准化
经过这种标准化所得的新数据,各要素的极大值为1,极小值为0,其余的数值均在0与1之间。
2.2距离的计算
距离是事物之间差异性的测度,差异性越大,则相似性越小,所以距离是系统聚类分析的依据和基础。
选择不同的距离,聚类结果会有所差异。在地理分区和分类研究中,往往采用几种距离进行计算、对比,选择一种较为合适的距离进行聚类。
第三章算法思想与编程实现
3.1算法思想
我们已经指出系统聚类方法首先将n个空间点看做是n个子群,然后根据所选用的聚类统计量来计算n个子群之间的关系。对于距离,计算n个子群两两之间的距离,首先选择距离最近的两个子群(点)归为一个新的子群,这样就得到n-1个子群两两之间的聚类统计量,继续选择距离最近的子群合并,再得到n-2个子群……,依此类推,直到所有的子群全部合并。
K-means算法是硬聚类算法,是典型的局域原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最有分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。
K-均值算法的聚类准则是使每一聚类中,多模式点到该类别的中心的距离的平方和最小。其基本思想是:通过迭代,主次移动各类的中心,直到得到最好的聚类为止。其算法框图如图所示。
具体的计算步骤如下:假设图像上的目标要分为m类,m为已知数。
第一步:适当地选取m个类的初始中心Z
1(1),Z
2
(1),···,Z
M
(1),初始中心的选
择对聚类结果有一定的影响,初始中心的选择一般有如下几种方法:1)根据问题的性质和经验确定类别数m,从数据中找出直观上看来比较适合的m个类的初始中心。
2)将全部数据随即地分为m个类型,计算每类的重心,将这些重心作为m个类的初始中心。
第二步:在第k次迭代中,对任一样本X按如下的方法把它调整到m个类别中的某一类别中去。对于所有的i ≠ j, i = 1,2,···,m, 如果∥X-Z
j
(k)∥﹤
∥X-Z
i (k)∥,则X∈S
j
(k)其中S
j
(k)是以Z
i
(k)为中心的类。
第三步:由第二步得到S
j (k)类新的中心
Z j (k),Z j (k)=∑∈)(1K j S X j X N
式中,N j 为S j (k)类中的样本数。Z j (k+1)是按照使J 最小的原则确定的,J 的表达式
为: J=2
1)1()(∑∑=∈+-m j S X k j k j Z X
第四步:对于所有的i=1,2···,m ,如果Z i (k+1)=Z i (k),则迭代结束,否则转到
第二步继续迭代。
这种算法的结果受到所选聚类中心的数目和其初始位置以及模式分布的几何性质和读入次序等因素的影响,并且在迭代过程中又没有调整类数的措施,因此可能产生不同的初始分类得到不同的结果,这是这种方法的缺点。可以通过其他的简单的聚类中心试探方法,如最大距离法,找出初始中心,提高分类效果。
3.2用 Matlab 编程实现
3.2.1程序代码
对于上述的K-mean 算法用Matlab 软件实现编程并调用数据小的图片进行聚类分析及编程是否正确性的检测。
具体程序代码如下:
%%读取图片
Imag = imread('hand.jpg'); %%只能读取三个波段
sample = rgb2gray(Imag); %%将彩色图片转换为灰度图片
[m n] = size(sample); %%读取图片的维数
sample = reshape(sample,m*n,1); %%将矩阵变换为m*n 行1列的向量