聚类分析算法解析

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

聚类分析算法解析

一、不相似矩阵计算 1. 加载数据 data(iris) str(iris)

> data (iris) > str(iris)

1 data .fizame

:": 150 oba.. of 5 var iato les : $ Sepal. Length:

num 5,. 1 电・9 屯・=4.6 5 5.4 4, E S 4・4 4・9 ■■甲 S Sepal. Width : num 3<5 3 3*2 3.1 3.6 3*9

3.4 3.1 2 ,9 3*1

$ Petal .Length: nuio

1・4 1・4 1・3 1.5 1・4

1,4 1 ■理 1・5・・・

$ Petal. Width. : num 0..2 0). 2 0.2 0.2 0.2 0.4 0»3 0.2 0.2 0.1 ■…

$ Species

: Factor w/ 3 levels ^setosa^-j -?verslcolor **, ■八 1 1

分类分析是无指导的分类,所以删除数据中的原分类变量。 iris$Species<-NULL

2. 不相似矩阵计算

不相似矩阵计算,也就是距离矩阵计算,在 R 中采用dist()函数,或者cluster 包中

的daisy()函数。dist()函数的基本形式是

dist(x, method = "euclidean", diag = FALSE, upper = FALSE, p = 2) 其中x 是数据框(数据集),而方法可以指定为欧式距离 "euclidean",

最大距离 "maximum",绝对值距离"manhattan", "canberra",

二进制距离非对称 "binary"

和明氏距

离"mi nkowski"。默认是计算欧式距离,所有的属性必须是相同的类型。 比如都是连续类型,

或者都是二值类型。 dd<-dist(iris) str(dd)

> str(dd)

Class 'disf atomic [1: 11175] CL 539 Cl ・£l 0.6^18 D ・ 1^11 0.616 **・

・・—attr (*z *r Size F,J = lnt 150

.attr= logi FALSE

.atvr ^Vpper**) = logi FALSE

■ +— attr ( *, fr methcd r,) = chr fF euclidean F, ・* 一 attr ( *t *r calldist (x = ir is)

距离矩阵可以使用 as.matrix() 函数转化了矩阵的形式,方便显示。

例样本间距离矩阵为 150行列的方阵。下面显示了 1~5号样本间的欧式距离。

dd<-as.matrix(dd)

> str(dd)

-attr (*y ^diimnames"] =List of 2

..$ : chr [1:150] H l ,f ”旷 ”3” "4” : chr [1:150] n l rr "2n

Iris 数据共150

0.51 0.648 0・141

num [1:150, 0 0.539

rr3n "4TF

1.聚类函数

R 中自带的聚类函数是 hclust(),为谱系聚类法。基本的函数指令是

hclust()可以使用的类间距离计算方法包含离差法

大距离法"complete",平均距离法"average" , "mcquitty",中位数法"median" 和重心法 "cen troid"。下面采用平均距离法聚类。 hc <- hclust(dist(iris), method="ave")

Call:

hclust (d - disc (itis) r method = rr ave") Cluster method : average Distance : euclidean

Number of objects : ISO

2.聚类函数的结果

聚类结果对象包含很多聚类分析的结果,可以使用数据分量的方法列出相应的计算结 果。 merge 和height 结果值的前6个。其行编号表示聚 类过程的步骤,X1, X2表示在该步合并的两类,该编号为负代表原始的样本序号,编号为 正代表新合成的类;变量height 表示合并时两类类间距离。

比如第1步,合并的是样本102

和143,其样本间距离是 0.0,合并后的类则使用该步的步数编号代表,即样本 合并为1类。再如第6行表示样本11和49合并,该两个样本的类间距离是 0.1,合并后的

类称为6类。

head (hc$merge,hc$height)

1 2 3 斗 5

dd[l:5z 1:5]

1

0.0000000

0.538516S 0,5099020 0. 6^307^11

1414214 2 S38S15S 0.0000000 □・3000000 0.3316625 0*6032763 3 0.509902 O,3O00OO 0・000000 □・244949 口

・4

0.6480741 0,3316625 CL 2 4^9490 CL 0000000

CL 6480741 5

0.1414214

O.6002763 0.5099020 0 + 6430741 0*0000000

二、用 hclust() 进行谱系聚类法(层次聚类)

结果对象<-hclust

(距离对象,method=方法)

"ward",最短距离法"single", 最

str(hc)

> 3tr(he)

Li3t □£ 7 jnerge he

order labels wetiiod call dist ・method int

S

S

$

-attr r ,

cla33rr )

1:2] -102 -9 -1 -10 -129 -11 -5 -20 -30 -S8 mini [ 1: 149] 0 D.l itit [1:

ISO] 42 15 NULL chu "avtr ■日莎” language hclust (d chr f *eucliciean ,* chr ^hclust"

□ » 1 0.1 0.1 16 33 34 37 21 32 唱马 24 dist (iris) , method ■ "ave rr )

F 面列出了聚类结果对象 hc 包含的 -102 和-143

相关文档
最新文档