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