第二章作业聚类分析

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

第二章作业

1.画出给定迭代次数为n的系统聚类法的算法流程框图. 答:算法流程图如下:

2.对如下5个6维模式样本,用最小距离准则进行系统聚类分析: x 1: 0, 1, 3, 1, 3, 4 x 2: 3, 3, 3, 1, 2, 1 x 3: 1, 0, 0, 0, 1, 1 x 4: 2, 1, 0, 2, 2, 1

x 5: 0, 0, 1, 0, 1, 0

解:将每一样本看成单独一类,得

(0)

11{}G x =, (0)22{}G x =,(0)33{}G x = (0)44{}G x =, (0)

55{}G x =

计算各类之间的欧式距离,可得距离矩阵(0)D (表1-1)。

表1-1

① 矩阵(0)

D

,它是(0)3G 和(0)

5G 之间的距离,将它们合并为一类,得

到新的分类为

(1)(0)11{}G G =,(1)(0)22{}G G =,(1)(0)(0)

335{,}G G G = (1)(0)

44{}G G =

计算聚类后的距离矩阵(1)D 。按最小距离准则,分别计算(0)3G 与(1)1G 、(1)2G 、(1)4G ,(0)

5

G 与(1)1G 、(1)2G 、 (1)

4G 之间的两种距离,并选用最小距离。如

(1)(0)(1)(0)(1)

133151min{D G G G G =与的距离,与的距离}

}=5 由此可求得距离矩阵(1)D (表1-2)

② 距离矩阵(1)

D ,它是(1)3G 和(1)4G 之间的距离,于是合并(1)3G 和(1)4G ,

得到新的分类为

(2)(1)11{}G G =,(2)(1)22{}G G =,(2)(1)(1)

334{,}G G G =

按最小距离准则计算距离矩阵(2)D ,得表1-3

表1-3

选择距离阈值(2)

D 则算法停止,得到聚类结果G 1(2)

={X1} G 2(2) ={X2} G 3(2)={X3,X5, X4}。

3. 模式样本如下:

{X1(0,0),X2(1,0),X3(0,1),X4(1,1),X5(2,1),X6(1,2),X7(2,2),X8(3,2),X9(6,6),X10(7,6),X11(8,6), X12(6,7), X13(7,7), X14(8,7), X15(9,7), X16(7,8), X17(8,8), X18(9,8), X19(8,9), X20(9,9). 选K=2,11210(1)=(00),(1)(7

6)t

t

z x z x ===,用K —均值算法进行分类。

解:第一步:选K=2,并选11(1)=(00)t

z x =,210(1)(7

6)t z x ==

第二步:因12(1)(1)i i x z x z -<-P P P P ,i=1,2, …,8,故1(1),1,2,,8i x S i ∈=K 又12(1)(1)i i x z x z ->-P P P P ,i=9,10, …,20,故2(1),9,10,,20i x S i ∈=K 得 },...,{)1(8211x x x S =,},...,{)1(201092x x x S = 第三步:计算新的聚类中心

18

1(1)1111(2)(1.25 1.13)8t i x S i z x x N ∈====∑∑ 220

2(1)

92

11(2)(7.677.33)12t i x S i z x x N ∈==

==∑∑ 第四步:(2)(1),1,2,j j z z j ≠=故回到第二步。 第二步:从新的聚类中心,得

12(2)(2)i i x z x z -<-P P P P i=1,2, …,8,故1(1),1,2,,8i x S i ∈=K 12(1)(1)i i x z x z ->-P P P P i=9,10, …,20,故2(1),9,10,,20i x S i ∈=K

得 1128(2){,,...}S x x x =,291020(2){,,...}S x x x =

第三步:计算聚类中心

18

1(2)1111(3)(1.25 1.13)8t i x S i z x x N ∈====∑∑ 220

2(2)

92

11(3)(7.677.33)12t i x S i z x x N ∈==

==∑∑ 第四步:(3)(2),1,2,j j z z j ==所以聚类算法收敛,得聚类中心为

1(1.25 1.13)t

z =, 2(7.67

7.33)t z =

最终聚类结果为:},...,{8211x x x S =,},...,{201092x x x S = 4.编写K-均值聚类算法程序,对下图所示数据进行聚类分析(选k=2)。

clear all ; close all ;

Data=[0 0 1 1 1 2 2 3 6 6 7 7 7 8 8 8 8 9 9 9 0 1 0 1 2 1 2 2 6 7 6 7 8 6 7 8 9 7 8 9;]; [DataRow,DataColumn]=size(Data); Step=10;

NumKind=2;

Center=Data(:,1:NumKind);

[KindData,KindNum]=Clustering(Center,Data);

NewCenter=CaculateCenter(KindData,KindNum,DataRow);

while (sum(sum(NewCenter~=Center))) & Step

Center=NewCenter;

[KindData,KindNum]=Clustering(Center,Data);

NewCenter=CaculateCenter(KindData,KindNum,DataRow);

Step=Step-1;

end

for i=1:NumKind

KindData(:,1:KindNum(i),i)

end

%计算聚类中心

function NewCenter=CaculateCenter(KindData,KindNum,DataRow) TotalKindNum=length(KindNum);

NewCenter=zeros(DataRow,TotalKindNum);

for i=1:TotalKindNum

Temp=KindData(:,1:KindNum(i),i);

NewCenter(:,i)=sum(Temp')'/KindNum(i);

end

%聚类

function [KindData,KindNum]=Clustering(Center,Data)

[DataRow,DataColumn]=size(Data);

[CenterRow,CenterColumn]=size(Center);

KindData=zeros(DataRow,DataColumn,CenterColumn);

KindNum=linspace(0,0,CenterColumn);

for i=1:DataColumn

Distance=linspace(0,0,CenterColumn);

for j=1:CenterColumn

for k=1:DataRow

Distance(j)=Distance(j)+(Data(k,i)-Center(k,j)).^2;

end

end

Distance=sqrt(Distance);

[X,Y]=min(Distance);

KindData(:,KindNum(Y)+1,Y)=Data(:,i);

KindNum(Y)=KindNum(Y)+1;

end

ans =

0 0 1 1 1 2 2 3

0 1 0 1 2 1 2 2

ans =

6 6

7 7 7

8 8 8 8

9 9 9

相关文档
最新文档