Matlab在聚类分析中的应用文档格式.docx

上传人:b****6 文档编号:20389683 上传时间:2023-01-22 格式:DOCX 页数:11 大小:71.26KB
下载 相关 举报
Matlab在聚类分析中的应用文档格式.docx_第1页
第1页 / 共11页
Matlab在聚类分析中的应用文档格式.docx_第2页
第2页 / 共11页
Matlab在聚类分析中的应用文档格式.docx_第3页
第3页 / 共11页
Matlab在聚类分析中的应用文档格式.docx_第4页
第4页 / 共11页
Matlab在聚类分析中的应用文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

Matlab在聚类分析中的应用文档格式.docx

《Matlab在聚类分析中的应用文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab在聚类分析中的应用文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

Matlab在聚类分析中的应用文档格式.docx

CityBlockdistance

5

minkowski

Minkowskidistance

6

chebychev

Chebychevdistance

7

mahalanobis

Mahalanobisdistance

8

cosine

夹角余弦

9

correlation

线性相关系数

10

spearman

spearman相关系数

11

hamming

Hammingdistance

12

jaccard

OneminustheJaccardcoefficient

2.2squareform函数

Z=squareform(Y,..)

强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。

2.3linkage函数

Z=linkage(Y,’method’)

用’method’参数指定的算法计算系统聚类树。

输入参数

Y:

pdist函数返回的距离向量;

method:

可取值如下:

single

最短距离法(默认)

complete

最长距离法

average

未加权平均距离法

weighted

加权平均法

centroid

中心距离法

median

加权中心距离法

ward

内平方距离法(最小方差算法)

输出参数

Z为一个包含聚类树信息的(m-1)×

3的矩阵。

2.4dendrogram函数

[H,T]=dendrogram(Z,p)

生成只有顶部p个节点的冰柱图(谱系图)。

2.5cophenet函数

c=cophenetic(Z,Y)

利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。

2.6cluster函数

T=cluster(Z,…)

根据linkage函数的输出Z创建分类。

三、Matlab案例

调整气象观测站问题

某地区设有12个气象观测站,编号为

,从1981年至1990年这10年来各站测得的年降雨量如表1所示。

为了节省开支,想要适当减少气象站,试问减少哪些可以使所得到的降雨量信息仍然足够大?

表1各气象观测站的年降雨量(单位:

毫米)

年份

观测站

1981

1982

1983

1984

1985

1986

1987

1988

1989

1990

276.2

251.6

192.7

246.2

291.7

466.5

258.6

453.4

158.2

324.8

324.5

287.3

433.2

232.4

311.0

158.9

327.4

365.5

271.0

406.5

158.6

349.5

289.9

243.7

502.4

223.5

432.1

357.6

410.2

235.7

412.5

297.4

366.3

372.5

254.0

425.1

403.9

258.1

344.2

288.8

292.8

227.8

466.2

460.4

245.6

251.4

256.6

278.8

250.0

192.6

258.4

453.6

239.1

321.0

282.9

467.2

360.7

284.9

334.1

321.5

357.4

298.7

401.0

315.4

389.7

355.2

376.4

290.5

303.2

451.0

219.7

314.5

266.5

317.4

413.2

228.5

179.4

343.7

292.9

245.7

251.3

159.2

283.4

243.2

307.5

411.1

327.0

277.5

199.3

315.6

342.4

281.2

159.7

421.1

357.0

296.5

255.4

304.2

282.1

456.3

331.2

455.1

353.2

423.0

362.1

410.7

387.6

407.2

377.7

3.1一次聚类法

X=[…];

%表1中降雨量所成的矩阵

T=clusterdata(X,0.9)

聚类结果为:

自动分为3类,各类元素为

3.2分步聚类

Step1寻找变量之间的相似性

这一步用pdist函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用zscore函数进行标准化。

X2=zscore(X);

%标准化数据

Y2=pdist(X2);

%计算距离

Step2定义变量之间的连接

Z2=linkage(Y2);

Step3评价聚类信息

C2=cophenet(Z2,Y2);

Step4创建聚类,并作出谱系图

T=cluster(Z2,3);

%分为3类

H=dendrogram(Z2);

分类结果与clusterdata一致,输出如下聚类树:

四、MATLAB的统计工具箱

MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法:

层次聚类(hierarchicalclustering)

k-means聚类(K-均值聚类)

4.1层次聚类法

这里用最简单的实例说明以下层次聚类原理和应用方法。

层次聚类是基于距离的聚类方法,MATLAB中通过pdist、linkage、dendrogram、cluster等函数来完成。

层次聚类的过程可以分这么几步:

(1)确定对象之间的相似性(pdist)

实际上就是定义一个表征对象之间差异的距离,例如最简单的平面上点的聚类中,最经常使用的就是欧几里得距离。

这在MATLAB中可以通过Y=pdist(X)实现,举例如下。

>

X=randn(6,2)

X=

-0.43261.1892

-1.6656-0.0376

0.12530.3273

0.28770.1746

-1.1465-0.1867

1.19090.7258

plot(X(:

1),X(:

2),'

bo'

)%给个图,用来对照聚类结果

Y=pdist(X)

Y=

1.73941.02671.24421.55011.6883

1.82771.96480.54012.9568

0.22281.37171.1377

1.47901.0581

2.5092

例子中X数据集可以看作包含6个平面数据点,pdist之后的Y是一个行向量,15个元素分别代表X的第1点与第2~6点、第2点与第3~6点,......这样的距离。

那么对于

个点的数据集X,pdist之后的Y将是具有

元素的行向量。

Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。

MATLAB中可以用squareform把Y转换成方阵形式,方阵中

位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是个对角元素为0的对称阵。

squareform(Y)

ans=

01.73941.02671.24421.55011.6883

1.739401.82771.96480.54012.9568

1.02671.827700.22281.37171.1377

1.24421.96480.222801.47901.0581

1.55010.54011.37171.479002.5092

1.68832.95681.13771.05812.50920

正如之前所描述的,pdist可以使用多种’metric’指定不同的距离。

特别说明:

应用MATLAB进行层次聚类,当X数据规模较大时是不合适的。

(2)生成层次聚类树(先linkage,后dendrogram)

通过第一步应用pdist确定好了对象间的差异度(距离)后,就可以用Z=linkage(Y)来产生层次聚类树了。

Z=linkage(Y)

Z=

3.00004.00000.2228

2.00005.00000.5401

1.00007.00001.0267

6.00009.00001.0581

8.000010.00001.3717

对于

个元素的X,前面说了Y是1行

的行向量,Z则是

的矩阵。

矩阵Z的前两列是索引下标列,最后一列是距离列。

例如上例中表示在产生聚类树的计算过程中,第3点和第4点先聚成一类,他们之间的距离是0.2228。

以此类推。

通过linkage函数计算之后,实际上二叉树式的聚类已经完成了。

一般说来,矩阵Z含义很容易理解,但我们更愿意将其可视化,即用dendrogram(Z)将Z可视化为聚类树(如下图所示)。

可以看到,产生的聚类树的每一层都是一个倒置的U型(或者说是个n型,~~),纵轴高度代表了当前聚类中两个子节点之间的距离。

横轴上标记出了各个数据点索引下标。

稍微注意以下的是,dendrogram默认最多画30个最底层节点,当然可以设置参数改变这个限制,比如dendrogram(Z,0)就会把所有数据点索引下标都标出来,但对于成千上万的数据集合,这样的结果必然是图形下方非常拥挤。

看你的应用目的了,随你玩~

(3)聚类结果的进一步分析

初步的聚类树画完后,还要做很多后期工作的,包括这样的聚类是不是可靠,是不是代表了实际的对象分化模式,对于具体的应用,应该怎样认识这个完全版的聚类树,产生具有较少分叉的可供决策参考的分类结果呢?

这都是需要考虑的。

MATLAB中提供了cluster,cophenet,inconsistent等函数来做与此相关的分析。

cluster用于剪裁完全版的聚类树,产生具有一定cutoff的可用于参考的树。

cophenet和inconsistent用来计算某些系数,前者用于检验一定算法下产生的二叉聚类树和实际情况的相符程度(就是检测二叉聚类树中各元素间的距离和pdist计算产生的实际的距离之间有多大的相关性),inconsistent则是量化某个层次的聚类上的节点间的差异性(可用于作为cluster的剪裁标准)。

4.2K-means聚类法

4.2.1聚类原理

K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。

K-means算法一般以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。

算法采用误差平方和最小作为聚类准则。

K-means聚类算法采用的是将N*P的矩阵X划分为K个类,使得类内对象之间的距离尽可能小(属于同一类的对象之间的距离尽可能小,从而相似度尽可能高),而类间距离尽可能大(即各类中心之间的距离尽可能大,从而各类之间相似度尽可能小)。

4.2.2聚类命令——kmeans

(1)调用格式

[Idx,C,sumD,D]=Kmeans(X,K)

各输入输出参数的含义介绍如下。

X:

矩阵,

表示待分类对象的个数,

表示描述每个对象的特征数;

K:

表示将X划分为几类,为正整数;

Idx:

矩阵-

维列向量,存储的是每个点的聚类标号;

C:

矩阵,存储的是K个聚类中心位置;

sumD:

维行向量,存储的是类内所有点与该类中心点距离之和

D:

矩阵,存储的是每个点与所有中心的距离

(2)功能更丰富的调用方法

[…]=Kmeans(…,'

Param1'

Val1,'

Param2'

Val2,…)

这其中的参数Param1、Param2等,主要可以设置为如下:

参数

Distance

(距离测度)

sqEuclidean

Hamming

欧式距离(默认时,采用此距离方式)

绝度误差和

相关系数

海明距离

Start

(初始中心位置选择方法)

sample

uniform

cluster

输入一个矩阵

从X中随机选取K个中心点

根据X的分布范围均匀的随机生成K个中心

初始聚类阶段随机选择10%的X的子样本

输入

矩阵作为初始中心

Replicates

输入一个正整数

聚类重复次数

4.2.3案例

随机生成40个对象、每个对象有2个特征的数据矩阵X,然后将X分为两类,并可视化两类的中心和成员。

X=[randn(20,2)+ones(20,2);

randn(20,2)-ones(20,2)];

opts=statset('

Display'

'

final'

);

[cidx,ctrs]=kmeans(X,2,'

Distance'

city'

Replicates'

5,'

Options'

opts);

plot(X(cidx==1,1),X(cidx==1,2),'

r.'

X(cidx==2,1),X(cidx==2,2),'

b.'

ctrs(:

1),ctrs(:

kx'

聚类结果可视化如下图:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1