聚类分析算法解析_第1页
聚类分析算法解析_第2页
聚类分析算法解析_第3页
聚类分析算法解析_第4页
聚类分析算法解析_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

聚类分析算法分析一、非相似矩阵计算1.加载数据数据(iris)str(iris)分类分析是没有指导的分类,因此从数据中删除原始分类变量。iris $ Species-空2.非相似矩阵计算不相似的矩阵计算,即距离矩阵计算,r中的dist()函数或cluster包中的daisy()函数。Dist()函数的基本形式如下Dist (x,method= euclidean ,diag=false,upper=false,p=2)其中x是数据框(数据集),方法是欧式距离“euclidean”,最大距离“maximum”,绝对值距离“manhattan”,“canberra”,二进制距离不对称“binary”默认值是计算欧式距离,并且所有属性必须是相同类型。例如,连续类型或两种值类型。Dd-dist(iris)Str(dd)距离矩阵可以使用as.matrix()函数变形矩阵形状,以便于显示。iris数据150例样本之间的距离矩阵150矩阵。下面是示例1到5之间的欧洲距离。Dd-as.matrix(dd)其次,使用hclust()进行血统群集(层次群集)1.群集函数r中包含的群集函数为hclust(),是血统群集方法。基本函数命令如下结果对象-hclust(距离对象,method=方法)Hclust()可用的类之间距离计算方法包括偏差法“ward”、最短距离法“single”、最大距离法“complete”、平均距离法“average”、“mcquitty”下面使用平均距离方法进行群集。Hc-hclust (dist (iris),method= ave )2.群集函数的结果群集结果对象包含许多群集分析的结果,可以使用数据组件的方法列出相应的计算结果。Str(hc)下列出了群集结果对象hc中包含的merge和height结果值的前六个值。行号表示群集进程的阶段,X1、X2表示在该阶段组合的两个类。其中负数表示原始示例序列号,正数表示新创建的类。Height变量表示合并时两个类之间的距离。例如,步骤1合并示例102和143。示例之间的距离为0.0,合并的类使用该步骤的步长编号显示。也就是说,样例-102和-143合并为一个类。行6表示类之间的距离为0.1,合并的类称为6类的示例11和49的合并。Head (hc$merge,hc$height)群集结果对象HC中包含的merge和height结果值的步骤50到55的结果,如下所示。步骤50的结果表明示例43与13类(即步骤13的群集联合结果)合并。所有类编号负j表示原始数据的示例编号,正I表示在群集过程的第I阶段形成的新类。步骤54将在群集过程的步骤7和37中形成的类合并到新类中,新类成为54类,类之间的距离为0.2641715。Data.frame (HC $ merge,HC $ height) 503369053.绘制群集图群集完成后,可以使用plot()绘制群集的树图。Plot (HC,hang=-1,labels=iris $ species)4.指定分类和类中心群集观察树可以发现,数据示例很多,图形变得复杂,确定合理的分类不容易,为了简化图形,可以使用cutree()检查初始分类结果,先确定每个样本原始分类的类数,然后使用hclust()重新聚类,最后得到最终分类结果。Memb-cutree(hc,k=10) #确定10个分类Table(memb) #不同类型的示例数要重新聚集,必须计算每个类中心的类中心,如下所示:其中,每种类型的平均矢量表示每个类的中心。Cent-NULLFor (k in 1333610)、Cent-rbind (cent,colmeans (iris sample memb=k,drop=false)如果有各种类中心,请再次使用hclust()函数从类10开始重新启动群集。Hclust()函数现在需要指定各种类中心,并使用中心方法进行群集。Hc1-hclust (dist,method= centroid ,members=table (memb)Plot(hc1)Hc1重新群集的树非常简单。在树形图中决定三个类别更合适。4.输出最终分类结果使用Cutree()确定输出每个示例的最终分类。Memb-cutree(hc,k=3 #)确定三个分类Table(memb) #不同类型的示例数以下是聚类结果与原始分类的比较结果,表明聚类结果良好。错误率约为14/150=9.33%。5.直接数据距离阵列群集您可以直接输入距离矩阵,然后使用as.dist()函数将它转换为可以在hclust()中使用的距离数组对象,最后使用hclust()执行群集分析。X-read.table(text=Id BA FI MI VO RM TOBA 0 662 877 255 412 996Fi 6620 295 468 268 268 400美国877 295 0 754 564 138VO 255 468 754 0 219 869RM 412 268 564 219 0 669TO 996 400 138 869 669 0 ,header=T)Rs(x)-x$idX$id-NULLx转换为距离阵列。X-as.dist(x)Hc -hclust(x)显示群集进程。Data.frame(hc$merge,hc$height)绘制群集图。Plot(hc2)在聚类图中,聚合为两类更为合适。Cutree(hc2,2)所以BA、VO、RM聚集到一类,TO、FI、MI聚集到另一类。四、使用集群包进行集群分析1.距离矩阵计算除了可以使用Dist()函数外,还可以使用daisy()函数,这样在加载cluster包后可以使用更多的数据类型。如果原始数据表包含混合数据(即属性变量连续且分类),则dist()计算不完美,使用daisy()函数不会有任何问题。Daisy()要求加载cluster包。第一次使用时也必须安装。Install.packages (cluster ,repos= HTT/25/rpkg)库(群集)雏菊()函数可以采用以下形式使用:包含欧式距离“euclidean”、绝对值距离和“manhattan”、“gower”的daisy()。Dd2-菊花(iris)Dd2-as.matrix(dd1)2.使用agens()群集Cluster软件包提供了两种由下而上的a bottom-up配置的分层群集方法。数据示例首先由每个数据示例组成,然后通过合并方法的群集过程成为包含所有示例的大类。Agnes()函数将此功能称为合并层群集。Diana()会使用相反的a top-down,先将所有样本视为一个类别,然后透过类别分割程序,最后将样本分割为个别的范例类别。这称为分割方法。Agens()函数的形式如下Agnes(x,diss=true | false,metric= euclidean ,stand=false | true,Method= average ,par.method,keep.diss=n 100,keep.data=!Diss)其中diss指定x对象是否为非历史矩阵对象。与hclust()函数不同,Agnes()可以同时使用原始数据和距离数组。Stand需要标准化数据,而类之间距离的计算方法包括“平均值”平均方法、UPGMA、single最短距离方法、complete最大距离方法、ward“偏差”方法、weighted平均距离方法和“weighted”指定是否在Keep.diss和keep.data结果中保留非历史矩阵和数据。保留这些结果需要更多内存。Ag-Agnes (iris,diss=f,metric= euclidean ,stand=f,method= single )Data.frame (ag $ merge,ag $ h

温馨提示

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

评论

0/150

提交评论