利用Matlab软件实现聚类分析范文_第1页
利用Matlab软件实现聚类分析范文_第2页
利用Matlab软件实现聚类分析范文_第3页
利用Matlab软件实现聚类分析范文_第4页
利用Matlab软件实现聚类分析范文_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WORD格式.可编辑§ 8 利用Matlab和SPS瞅件实现聚类分析1 .用Matlab编程实现运用Matlab中的一些基本矩阵计算方法,通过自己编程实现聚类算法,在此只讨论根据最短距离规则聚类的方法。调用函数:minl.m求矩阵最小值,返回最小值所在行和列以及值的大小min2.m比较两数大小,返回较小值stdl.m用极差标准化法标准化矩阵dsl.m用绝对值距离法求距离矩阵cluster.m应用最短距离聚类法进行聚类分析printl.m调用各子函数,显示聚类结果聚类分析算法假设距离矩阵为vector,a阶,矩阵中最大值为max;令矩阵上三角元素等于max聚类次数=a-1,以下步骤作a

2、-1次循环:求改变后矩阵的阶数,计作c专业知识整理分享WORD格式.可编辑求矩阵最小值,返回最小值所在行e和列f以及值的大小gforl=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:aforj=1:bstd(i,j)=(vector(i,j)-min(j)/(max

3、(j)-min(j);endend%ds1.m,用绝对值法求距离functiond=ds1(vector);a,b=size(vector);d=zeros(a);fori=1:aforj=1:afork=1:bd(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k);endendendfprintf('绝对值距离矩阵如下:n');disp(d)%min1.m,求矩阵中最小值,并返回行列数及其值functionv1,v2,v3=min1(vector);%v1为行数,v2为列数,v3为其值v,v2=min(min(vector');v,v1=m

4、in(min(vector);v3=min(min(vector);专业知识整理分享WORD格式.可编辑%min2.m,比较两数大小,返回较小的值functionv1=min(v2,v3);ifv2>v3v1=v3;elsev1=v2;end%cluster.m,最短距离聚类法functionresult=cluster(vector);a,b=size(vector);max=max(max(vector);fori=1:aforj=i:bvector(i,j)=max;endend;fork=1:(b-1)c,d=size(vector);fprintf('第欧聚类:n

5、9;,k);e,f,g=min1(vector);fprintf('最小值=%g,将第%g区和第%g区并为一类,记作G%gnn',g,e,f,c+1);forl=1:cifl<=min2(e,f)vector(c+1,l)=min2(vector(e,l),vector(f,l);elsevector(c+1,l)=min2(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

6、+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);专业知识整理分享WORD格式.可编辑%输出结果print1('fname',9,7)2 .直接调用Matlab函数实现2.1 调用函数层次聚类法(HierarchicalCl

7、ustering)的计算步骤:计算n个样本两两间的距离dj,记D构造n个类,每个类只包含一个样本;合并距离最近的两类为一新类;计算新类与当前各类的距离;若类的个数等于1,转到5);否则回3);画聚类图;决定类的个数和类;Matlab软件对系统聚类法的实现(调用函数说明):cluster从连接输出(linkage)中创建聚类clusterdata从数据集合(x)中创建聚类dendrogram画系统树状图linkage连接数据集中的目标为二元群的层次树专业知识整理分享WORD格式.可编辑pdist_计算数据集合中两两元素间的距离(向量)squareform将距离的输出向量形式定格为矩阵形式zsco

8、re对数据矩阵X进行标准化处理各种命令解释(1) T=clusterdata(X,cutoff)其中X为数据矩阵,cutoff是创建聚类的临界值。即表示欲分成几类。以上语句等价与以下几句命令:Y=pdist(X,'euclid')Z=linkage(Y,'single')T=cluster(Z,cutoff)以上三组命令调用灵活,可以自由选择组合方法!T=cluster(Z,cutoff)从逐级聚类树中构造聚类,其中Z是由语句likage产生的(n-1)刈阶矩阵,cutoff是创建聚类的临界值。(3) Z=linkage(Y)Z=linkage(Y,'m

9、ethod')创建逐级聚类树,其中Y是由语句pdist产生的n(n-1)/2阶向量,'method'表示用何方法,默认值是欧氏距离(single)。有complete-专业知识整理分享WORD格式.可编辑最长距离法;'average'类平均距离;'centroid-重心法;'ward'递增平方和等。Y=pdist(X)Y=pdist(X,'metric')计算数据集X中两两元素间的距离,'metric'表示使用特定的方法,有欧氏距离euclid'、标准欧氏距离SEuclid'、马氏距

10、离mahal'、明可夫斯基距离Minkowski'等。H=dendrogram(Z)H=dendrogram(Z,p)由likage产生的数据矩阵z画聚类树状图。P是结点数,默认值是30。2.2 举例说明设某地区有八个观测点的数据,样本距离矩阵如表1所示,根据最短距离法聚类分析。%!短距离法系统聚类分析X=7.9039.778.4912.9419.2711.052.0413.29;7.6850.3711.3513.319.2514.592.7514.87;9.4227.938.208.1416.179.421.559.76;9.1627.989.019.3215.999.101.8211.35;10.0628.6410.5210.0516.188.391.9610.81;BX=zscore(X);%标准化数据矩阵专业知识整理分享WORD格式.可编辑Y=pdi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论