用近邻函数法进行聚类与分类
汤宁SC08023110
一.实验原理
对应一个样本集中的任意两个样本xi和xj如果xi是xj的第I个近邻点,则定义xi对xj的近邻系数为I,记为d(i,j)=I.定义xi和xj简的近邻函数值为aij=d(i,j)+d(j,i)-2.样本间的近邻函数值越小,彼此越靠近,越相似。
算法步骤如下:
1.对于给定待分类的样本集合,计算距离矩阵D:
D(i,j)=d(xi,xj)
d(xi,xj)为xi和xj的欧式距离。
2.用D计算近邻系数矩阵M,元素Mij为xi对xj的近邻系数。
3.生成近邻函数矩阵L:
L(i,j)=Mij+Mji-2
并置L对角线上元素为2*N,如果xi和xj有连接,则L(i,j)为连接损失。
4.搜索矩阵L,将每个点与和它有最小近邻函数值的点连接起来,形成初始聚类。
5.对已经分类的各类,计算各类的类内最大距离maxd,类间最小距离mind,如果
maxd<mind,则考虑合并类,反之聚类结果合理。
当类数不变时,结束,反之,继续步骤5。
二.结果及分析
在给定的样本集合的情况下,由matlab计算得到的初始聚类结果如下图:
由图可见,直观上感觉1、2、3、4、5号样本应该归为一类,10、11、12、13、14也应该归为一类,二事实上也是如此,对类进行合并后得到的聚类图示如下:
此为最终聚类结果,连在一起的点表示同为一类。
三.附件
Matlab程序文件prexp.m,直接运行,按照对话框的提示,返回matlab命令行模式按任意键就可以进行第二步的类合并,结果仍在figure1显示。
Figure1相继显示上述图示结
果,程序包含了必要注释。