模糊聚类分析实验报告.docx
- 文档编号:30736573
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:31
- 大小:2.01MB
模糊聚类分析实验报告.docx
《模糊聚类分析实验报告.docx》由会员分享,可在线阅读,更多相关《模糊聚类分析实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
模糊聚类分析实验报告
专业:
信息与计算科学姓名:
学号:
实验一模糊聚类分析
实验目的:
掌握数据文件的标准化,模糊相似矩阵的建立方法,会求传递闭包矩阵;会使用数学软件MATLAB进行模糊矩阵的有关运算
实验学时:
4学时
实验内容:
⑴根据已知数据进行数据标准化.
⑵根据已知数据建立模糊相似矩阵,并求出其传递闭包矩阵.
⑶(可选做)根据模糊等价矩阵绘制动态聚类图.
⑷(可选做)根据原始数据或标准化后的数据和⑶的结果确定最佳分类.
实验日期:
20017年12月02日
实验步骤:
1问题描述:
设有8种产品,它们的指标如下:
x1=(37,38,12,16,13,12)
x2=(69,73,74,22,64,17)
x3=(73,86,49,27,68,39)
x4=(57,58,64,84,63,28)
x5=(38,56,65,85,62,27)
x6=(65,55,64,15,26,48)
x7=(65,56,15,42,65,35)
x8=(66,45,65,55,34,32)
建立相似矩阵,并用传递闭包法进行模糊聚类。
2解决步骤:
2.1建立原始数据矩阵
设论域X
{x1,x2,
xn}为被分类对象,每个对象又有m个指标表示其性状,
xixi1,xi2,
xim
,
i
1,2,,n
由此可得原始数据矩阵。
于是,得到原始数据矩阵为
37
38
12
16
13
12
69
73
74
22
64
17
73
86
49
27
68
39
57
58
64
84
63
28
X
56
65
85
62
27
38
65
55
64
15
26
48
65
56
15
42
65
35
66
45
65
55
34
32
其中xnm表示第n个分类对象的第m个指标的原始数据,其中
m=6,n=8。
2.2样本数据标准化
2.2.1对上述矩阵进行如下变化,将数据压缩到[0,1],使用方法为平移极差
变换和最大值规格化方法。
(1)平移极差变换:
xik
min{xik}
,(k1,2,,m)
xik
1i
n
min{xik}
max{xik}
1in
1in
显然有0xik1,而且也消除了量纲的影响。
(2)最大值规格化:
x'ij
xij
,Mj
max(x1j,x2j,xnj)
Mj
2.2.2使用Matlab实现代码:
function[x_zuida,x_pingyi]=bzh(x)
%函数功能:
标准化矩阵
[m,n]=size(x);
B=max(x);
B1=max(x)-min(x);
Bm=min(x);
fori=1:
n
x1(:
i)=x(:
i)/B(i);%最大值规格化
x2(:
i)=(x(:
i)-Bm(i))/B1(i);%平移极差标准
化
end
x_zuida=x1
x_pingyi=x2
2.2.3样本数据标准化后结果如图所示:
图一最大值规格化
图二平移极差标准化
2.3构造模糊相似矩阵
2.3.1根据各分类对象的不同指标的标准化数据,计算分类对象间的相似程
度rij,建立模糊相似矩阵R,该操作又称标定,计算标定的方法很多,这里使用最大最小法和算术平均最小法。
(1)最大最小法:
m
(xik
xjk)
rij
k1
m
(xik
xjk)
k1
(2)算术平均最小法:
m
2(xikxjk)
k1
rijm
(xikxjk)
k1
2.3.2使用Matlab实现代码:
function[R1,R2]=bd(x)
%函数功能:
标定
[m,n]=size(x);
fori=1:
m
forj=1:
m
fork=1:
n
qx(k)=min(x(i,k),x(j,k));%取小
qd(k)=max(x(i,k),x(j,k));%取大
end
R1(i,j)=sum(qx)/sum(qd);%最大最小法
R2(i,j)=2*sum(qx)/(sum(x(i,:
))+sum(x(j,:
)));%算术平均
最小法
ifi==j
R1(i,j)=1;
R2(i,j)=1;
end
end
end
R_zuidazuixiao=R1
R_suanshu=R2
2.3.4将最大规格化后的数据进行构造模糊相似矩阵如图所示:
图三最大最小法构造模糊相似矩阵
图四算术平均法造构造模糊相似矩阵
2.4建立模糊等价矩阵
2.4.1根据标定所得的矩阵,只是一个模糊相似矩阵R,不一定具有传递性,为了进行分类,还需要将R改造成等价矩阵R*。
采用平方法计算传递闭包:
RR2
R4
R2k
经过有限次运算后存在
k使R2k
R2(k
1),于是R*
R2k,R*即为所求的模
糊等价矩阵。
2.4.2使用Matlab实现代码:
function[tr]=chuandi(x)
%函数功能:
求传递闭包
R=x;
a=size(R);
B=zeros(a);
flag=0;
whileflag==0
fori=1:
a
forj=1:
a
fork=1:
a
B(i,j)=max(min(R(i,k),R(k,j)),B(i,j));%R与R内积,先取小再取大
end
end
end
ifB==R
flag=1;
else
R=B;%循环计算R传递闭包
end
end
tr=B;
2.4.3对最大最小法构造模糊的相似矩阵求传递闭包结果如图所示:
图五最大最小法构造模糊相似矩阵的传递闭包
图六算术平均法造构造模糊相似矩阵的传递闭包
2.5聚类分析
2.5.1得到模糊等价矩阵
中大于值的数归为一类。
R*后,可在适当水平
上截取
R*,将模糊等价矩阵
2.5.2使用
Matlab实现求截矩阵代码:
function[M,N]=julei(tR1)
%函数功能:
求出
lamda截矩阵
tR=tR1;
lamda=unique(tR);%取A矩阵不同元素构成的向量,来
确定阈值
L=length(lamda);
lamda=sort(lamda,'descend');
fori=1:
L
tR=tR1;
lamda(i)
tR(find(tR>=lamda(i)))=1;
%令大于
lamda的为
1
tR(find(tR %令小于 lamda的为 0 tR end 2.5.3对最大最小法构造模糊相似矩阵的传递闭包求出截矩阵,然后进行聚类,聚类结果如下: (1)当1时,这8种产品分为8类{x1},{x2},{x3},{x4},{x5},{x6},{x7},{x8}。 图七1时的截矩阵 (2)当 0.9289 时,这8种产品分为7类{x1 ,2 ,3 ,4 5 ,6, } {x} {x} {x x} {x} {x7},{x8}。 图八0.9289时的截矩阵 (3)当 0.7817 时,这8种产品分为6类{x1 , 23, 45 , 6, } {x,x} {x,x} {x} {x7},{x8}。 图九0.7817时的截矩阵 (4)当 0.7739 时,这8种产品分为5类{x 1 , 2 3 , 4 5 8 , 6 , }{x x}{x x,x}{x} {x7}。 图十0.7739时的截矩阵 (5)当0.7669时,这8种产品分为4类{x1},{x2,x3},{x4,x5,x6,x8}, {x7}。 图十一0.7669时的截矩阵 (6)当 07541. 时,这8种产品分为3类{x1,2 37,4568。 }{x,x,x}{x,x,x,x} 图十二0.7541时的截矩阵 (7)当0.7273时,这8种产品分为2类{x1},{x2,x3,x7,x4,x5,x6,x8}。 图十三0.7273时的截矩阵 (8)当 0.4436 时,这8种产品分为1类{x12374568。 x,x,x,x,x,x,x} 图十四0.4436时的截矩阵 2.5动态聚类图 2.5.1根据所求得的传递闭包,再让由大变小,就可形成动态聚类图。 2.5.2使用Matlab实现代码: function[M,N]=juleitu(tR) %函数功能: 画动态聚类图 lamda=unique(tR);%取A矩阵不同元素构成的向量,来确定阈值L=length(lamda); M=1: L; fori=L-1: -1: 1%获得分类情况: 对元素分类进行排序 [m,n]=find(tR==lamda(i)); N{i,1}=n; N{i,2}=m; tR(m (1),: )=0; mm=unique(m); N{i,3}=mm; len=length(find(m==mm (1))); depth=length(find(m==mm (2))); index1=find(M==mm (1)); MM=[M(1: index1-1),M(index1+depth: L)]; index2=find(MM==mm (2)); M=M(index1: index1+depth-1); M=[MM(1: index2-1),M,MM(index2: end)]; end M=[1: L;M;ones(1,L)]; h=(max(lamda)-min(lamda))/L; figure text(L,1,sprintf('x%d',M(2,L))); text(0,1,sprintf('%3.4f',1)); text(0,(1+min(lamda))/2,sprintf('%3.4f',(1+min(lamda))/2)); text(0,min(lamda),sprintf('%3.4f',min(lamda))); holdon fori=L-1: -1: 1%获得分类情况: 每一个子类的元素m=N{i,2}; n=N{i,1}; mm=N{i,3}; k=find(M(2,: )==mm (1)); l=find(M(2,: )==mm (2)); x1=M(1,k); y1=M(3,k); x2=M(1,l); y2=M(3,l); x=[x1,x1,x2,x2]; M(3,[k,l])=lamda(i); M(1,[k,l])=sum(M(1,[k,l]))/length(M(1,[k,l])); y=[y1,lamda(i),lamda(i),y2]; plot(x,y); text(i,1,sprintf('x%d',M(2,i)));text(M(1,k (1)),lamda(i)+h*0.1,sprintf('%3.4f',lamda(i))); end axis([0L+1min(lamda)max(lamda)]) axisoff holdoff end 2.5.1动态聚类图如图所示: 图十五动态聚类图 实验心得: 通过这次实验,让我了解到模糊矩阵的一些基本知识,同时也让我了解到了 模糊关系,然后也让我学会应用模糊聚类分析。 同时也让我更加了解对Matlab的操作,特别是关于矩阵的操作命令。 附录: main.m x=[373812161312; 697374226417; 738649276839; 575864846328; 385665856227; 655564152648; 655615426535; 664565553432]; x_zuida=[]; x_pingyi=[]; R_zuidazuixiao=[]; R_suanshu=[]; [x_zuida,x2]=bzh(x); [R_zuidazuixiao,R_suanshu]=bd(x_zuida); tR_zuidazuixiao=chuandi(R_zuidazuixiao) tR_suanshu=chuandi(R_suanshu) juleitu(tR_zuidazuixiao) julei(tR_zuidazuixiao)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模糊 聚类分析 实验 报告