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

付费下载

下载本文档

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

文档简介

1、聚类分析算法解析一、不相似矩阵计算1. 加载数据data(iris)str(iris) data (iris) str(iris)1 data .fizame : :$Sepal. Length:SSepal. Width:$Petal .Length:$Petal. Width.:$ Species150 oba. of 5 var iato les:num5,. 1电? 9 屯? =4.65 5.44,ES4?4 4? 9甲num353 3*2 3.1 3.6 3*93.4 3.1 2,9 3*1nuio1? 41?41?31.51? 41,41理1? 5?num0.20).20.20.2

2、0.20.40?30.20 .20.1 : Factor w/ 3 levels setosa-j -?verslcolor *,八 11分类分析是无指导的分类,所以删除数据中的原分类变量。iris$Species-NULL2. 不相似矩阵计算不相似矩阵计算,也就是距离矩阵计算,在R 中采用 dist() 函数,或者 cluster 包中的 daisy() 函数。 dist() 函数的基本形式是dist(x, method = euclidean, diag = FALSE, upper = FALSE, p = 2)其中 x 是数据框 ( 数据集 ) ,而方法可以指定为欧式距离euclide

3、an,最大距离maximum, 绝对值距离 manhattan, canberra,二进制距离非对称binary和明氏距离 mi nkowski 。默认是计算欧式距离,所有的属性必须是相同的类型。比如都是连续类型,或者都是二值类型。dd str(dd)Class disf atomic 1: 11175 CL 539 Cl ? l 0.618 D ?111 0.616 * ? attr (* z *r SizeF,J = lnt 150.attr= logi FALSE.atvr Vpper*) = logi FALSE + attr ( *, fr methcd r, ) = chr fF

4、euclidean F,? * 一 attr ( *t * rcalldist (x = ir is)距离矩阵可以使用as.matrix()函数转化了矩阵的形式,方便显示。Iris 数据共 150例样本间距离矩阵为150 行列的方阵。下面显示了15 号样本间的欧式距离。dd str(dd)num 1:150,0 0.5390.51 0.648 0? 141-attr (*y diimnames=List of 2.$ : chr 1:150 H l,f ”旷”3” 4: chr” 1:150 n lrr 2 nrr 3n 4TFddl:5 z1:51234510.0000000S38S15S0

5、.5099020.64807410.141421420.538516S0.0000000 O,3O00OO0,3316625 CLO.600276330,5099020? 30000000 ?0000002 49490 CL0.5099020斗0. 6307110.3316625?24494900000000 + 6430741514142140*6032763口?CL 64807410*0000000二、用 hclust()进行谱系聚类法 ( 层次聚类 )1.聚类函数R 中自带的聚类函数是hclust() ,为谱系聚类法。基本的函数指令是结果对象 -hclust( 距离对象 , method

6、= 方法 )hclust() 可以使用的类间距离计算方法包含离差法ward ,最短距离法 single , 最大距离法 complete ,平均距离法 average , mcquitty ,中位数法 median 和重心法cen troid 。下面采用平均距离法聚类。hc 3tr(he)Li3t 7jnerge heorder labelsint1:2 -102 -9 -1 -10 -129 -11 -5 -20 -30 -S8 mini 1 : 149 0 D.l itit 1:wetiiod? 10.10.1f,ISO 42 15 NULL chu avtr日莎”*eucliciean

7、*call dist ?language hclust (d chrchr hclust16 33 34 37 21 32 唱马 24methodSSdist (iris) , method ave rr )$-attr r ,cla33rr )F 面列出了聚类结果对象hc 包含的 merge 和 height 结果值的前6 个。其行编号表示聚类过程的步骤, X1,X2 表示在该步合并的两类,该编号为负代表原始的样本序号,编号为正代表新合成的类;变量height 表示合并时两类类间距离。比如第 1步,合并的是样本 102和 143 , 其样本间距离是0.0 ,合并后的类则使用该步的步数编号代表

8、,即样本-102 和 -143合并为1类。再如第 6行表示样本 11 和 49 合并,该两个样本的类间距离是0.1 ,合并后的类称为6类。head (hc$merge,hc$height) head)XIX2hc? height1-102-1430.028-400 T 13-1-180.141 口-350.1-129-1330*1-11一轻0,1下面显示的聚类结果对象he包含的 merge 和 height 结果值的 5055 步的结果。第50步结果表明样本43 与 13 类(即第 13步的聚类合类结果 ) 合并。所有的类编号负数j 表示原数据的样本编号,正数i 表示聚类过程的第 i 步形成的

9、新类。再如 54 步,表示聚类过程第7步和第 37步形成的类合并为新类,新类成为第54 类,其类间距离是 0.2641715 。data.frame(hc$merge,hc$height)50:55 data, ft ame (he ge, hcS he ight ) 50i 5S,XIX2he ? height50 -4313D.25S113951 g310 .258680252 -7118 0,261803453 -6S 263B95B16?54 737 0 .264171555 -69-8S 0,26457513. 绘制聚类图聚类完成后可以使用plot() 绘制出聚类的树图。plot(h

10、c, hang = -1, labels=iris$Species)Cluster Dendrogramdistfiris)hclustC .average head)4. 指定分类和类中心聚类通过观察树形图,可见由于数据例很多,使图形很乱,不容易确定合理的分类,为简化图形,使用cutree() 来确定最初的分类结果,先初步确定各个样本的最初分类的类数后,然后用hclust() 再次聚类,重新聚类后,得出最后的分类结果。memb inenii #各类中的样本数 tab le (rtienib)m enib1234S67B9 1045曲 137224 249 1 3为了进行重新聚类,需要计算各类

11、的类中心的类中心,这里用各类的均向量来代表各类的类中心,计算程序如下。cent - NULLfor(k in 1:10)cent cent or ( 用 in 1:10) 4-cent centSepal? Length Sepal.UidthPetal + LengthPetal.WidthId4.9688893*3866671*471111CL 246666725,550 口皿4,1750001,400000D? 22500003d4.5000002.3000001+ 3DOOOO? 30000004 门6*2351352.8513514*74054115945946?5 JS.63181

12、82.69545S4.0590911,2 4090916 J5.0000002.3000003.2750001D250000?G5416673.0500005*5291672 ?12OB3339J7.4333332,9222226.2665671.9888889 叭4.9000002.5000004,5000001? 700000010J7.5000003.7333336*4000002? 2333333有了各类的类中心后,再次使用hclust() 函数,从 10 类起重新开始聚类。hclust() 函数这时需要指定各类的类中心,并采用中心法来聚类。hc1 odistcent)hclust c

13、entroid 1!再次聚类的树形图就很精简了。从树形图上看,确定为三类是比较合适的。4.输出最终分类结果使用 cutree() 来确定输出各个样本的最后分类。memb mert i 需各类中的 样本数 mento J cutree(he, k = 3) 再各类中的样亦数 tab Le (merrib )imeirib12350 64 36下面将聚类结果和原始的分类比较可见聚类结果是不错的。错误率约为14/150=9.33% 。 data(iris) tolo le ( iris$Spec ies me nib123setosa 500 0versicolor 0 500vircfinica

14、0 14 3 65. 直接数据距离阵聚类可以直接输入距离矩阵,然后用as.dist() 函数转为 hclust() 可以使用的距离阵对象 ,然后再用 hclust() 再进行聚类分析。x-read.table(text=id BA FI MI VO RM TOBA 0 662 877 255 412 996FI 662 0 295 468 268 400MI 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) row .n ames(x)

15、-x$idx$id-NULLxBAFIHIVORHTOBA06628772 55412996FI62 2954682 68400MI37729507545 6413BVO2 5546875402 198S9RM4122 685642 19O669TO9964001383696 69转换为距离阵。x x-aa .ciist. (xJFIBAFIMIVORM6 62MIS77295VO2 55468754RM122 68S642 19TO9964001383696 69hc data?frame (hc2 Emerge r hc2 She ight)XI X2height17613S2-4 -S2

16、193-214004-1241253499S绘制聚类图。plot(hc2)Cluster DendrogramLLXhclust (*. complete)从聚类图可见聚为两类比较合适。cutree(hc2,2) cutree (he2BA FI MIVO RM TO12 2 112所以 BA VO RM 聚为 1 类而 TO FI 、MI 聚为另一类。四、使用 cluster 包进行聚类分析1.计算距离矩阵除了可以使用dist() 函数外,加载了cluster 包后还可以使用daisy() 函数,该函数可以使用的数据类型更多一些。当原始数据表中包含的数据是混合型即属性变量既有有连续又有分类的

17、时候, dist() 计算就不够完美,而采用daisy() 函数就可以毫无问题。使用daisy() 必须加载 cluster 包。第一次使用还必须安装。install.packages( cluster ,repos= library(cluster)daisy() 函数的形式和dist() 相似,可以采用的距离包含欧式距离值距离和 manhattan, gower。euclidean,绝对dd2-daisy(iris)dd2 dd2 str(dd2)Classes 1 dissimilar ity 1 ,1 dist 1 atorttio 1:11175 0*539 0.51 0,648 0

18、.141 0.61,.-attr (*, ,F Sizer, ) - int 1.50T . - attr r ,Hetr icM ) - chr auclidean dd2 dd2lib,1:5234511 0.00000000.538516S0.50A9020 ?.14142142 0.53851650.00000000.300000口 . 331662560827633 .50990200.30000000.000000?4 0.64807410.33156250.24494924494905099020?64007415 CL 14142140.60027630.50990200000

19、00 . OOOOQO?6480712. 使用 agens()聚类cluster 包提供了两种层次聚类的方法,一种是a bottom-up自底而上,采用先将数据样本先各自看成一类,然后通过合并法的聚类过程,最终形成一个大类,包含全部样本,agnes() 函数完成这个功能,这个称为合并层次聚类。而diana() 则采用相反的方法,即atop-dow n 自顶而下,先将所有样本看成一类,然后通过分裂类的过程将样品最终分为各自样本类,这个称为分裂法。agens() 函数的形式是agnes(x, diss = TRUE|FALSE, metric = euclidean, stand = FALSE|

20、TRUE, method = average, par.method, keep.diss = n 100, keep.data = !diss)其中的 diss 指定 x 对象是否是不相似矩阵对象,与hclust() 函数不同, agnes() 既可以使用原始数据也可以采用距离阵。stand 是要求对数据进行标准化,而可以采用的类间距离计算方法有 average ”平均法,“UPGMA,“ single ”最短距离法,“complete ”最大距离法, ward ”离差法,“ weighted ”权重平均距离法和 flexible ”弹性法。 keep.diss 和keep.data 指定在

21、结果中是否保留不相似矩阵和数据,保留这些结果需要更多的内存。ag ag agCall:agnes (x ir is, diss F# me trio euclidean.* 1, st and method pp singlelomerati VE u 已 : Ef icient:0-8493 3 64Orderof objects:41511IB38S40SO2&2 9361149242744210193546133031263448939431272022471437253721321761933344516152342515387525557SS5966767598787772S4907

22、D81826BB3937389959697100916256678564927974808660719U12813 9 124127147150102143114 12.2738413410411713 8 105129rio9i13311114B112142146113110121144141145125116137149 103126127J13065 10112010813111563698310612311913613510911056145946199 1D7lib132Height (sunuxiaxy);Min ?Is 匸 Qu. Median Mean 3rd Qu. Max?

23、0,0000 0.17320,2921 0,34641.6400Ava i lab le compo neirrts:1 border - * rt height w ac 1*pWrge pf?piMthod p?data.frame(ag$merge,ag$height)50:55, data,frsome (agmerge, agheight ) 50 :55f XIX2ag.height50171*64012195141-740 .26457515342-440,36282753496 .316227854 5352 0.2645751SSS4 4S 0,3162278plot(ag,

24、 ask = FALSE, which.plots = NULL)Banner of agnes(x = iris, diss = Fs m00.2 0.4 0 6 0 811.2 1.4 1.6HeightAgglomerative Coefficient = 0.85Dendrogramof agnes(x= iris, diss = F, metric= euclidean, stand = F, method=sineinsAgglomerative Coefficient= 0 85cutree(ag,k=3) rutre 已 购就 =釦1 11111111114Sill111111

25、22222 2 269 2222222222 13 .3J ZZ22 22Z2Z222232222222222223222装载数据loadadultuci.rdata)str(AdultUCI) str(AdultUCI)1 data* frame 1 : age iTor fee lass education inar It al .status occupa relax ionship racsexcapita 丄 . gaincapital .losshours .per ,weeknative ”countryincomeWAHA48B42obs.ofint39SOFactor w/

26、8 levelsF, Federal-gov , r , .; 7644匸 ionint 77516 S3311 215646 234721 333409 2845S2皀Ord.factor w/ IS levels,TreschcoL ,r * ,13t-4th ,f . int 13 13 9 7口Factor u/H5914137 levels,fD ivorced?,f, Harrled-AF-3pouse F : 5 3 1466 10 4341Factor w/14 levels rr Adw-clerical ,r .Factor w/6levels Husk)and ,r fr

27、r Hct-infami Lyrt ,?Factor w/+:2121Factor w/levelsAttier-ItidiarL-EsJciincf. :5 5 5 levels3353i.nt2174Female,Male: 2222111 0 0 0 0 0 140G4 5178 212,inc ooooaoooo . int4013404040401645500Factor w/41 levels ,Catiribodia Fir f ,F CarLada ,r . . : 39 39Ord* factorw/ Z levels r, 3inall r, ,r large mr :11111删除原来的目标变量AdultUCI$i ncome-NULL删除原始据中数据缺失的数据例AdultUCI str AdultUC工 data-frame1 :age uoutcc lasseducationmarital .etfitus ccup

温馨提示

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

最新文档

评论

0/150

提交评论