聚类分析算法解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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