【模糊数学】编程实现文献“研究生招生中的模糊聚类分析方法”
模糊数学是一门很有用的应用型数学,之前做手势识别时,曾看到过NUS使用模糊数学做的手势检测。本文是“模糊数学”课程作业的总结,使用matlab编程实现,在此记录下来以备之后的学习。
1.模糊数学简介:
模糊数学是研究和处理模糊性现象的一种数学理论和方法。模糊性数学发展的主流是在它的应用方面。由于模糊性概念已经找到了模糊集的描述方式,人们运用概念进行判断、评价、推理、决策和控制的过程也可以用模糊性数学的方法来描述。例如模糊聚类分析、模糊聚类分析、模糊模式识别、模糊综合评判、模糊决策与模糊预测、模糊控制、模糊信息处理等。
课程作业要求如下:
阅读文献“研究生招生中的模糊聚类分析方法”,使用自己熟悉的编程语言完成如下任务:
① 实现文中的两个聚类模型,比较聚类结果与文中是否一致;
② 尝试用直接聚类法对模型1进行聚类,比较与①的聚类结果有何不同。
课程报告如下:
使用MATLAB实现论文中的算法,代码如下:
%求模糊等价矩阵 function B=calBibao(R) a=size(R); B=zeros(a); flag=0; while flag==0 for i= 1: a for j= 1: a for k=1:a B( i , j ) = max(min( R( i , k) , R( j, k) ) , B( i , j ) ) ; %R与R内积,先取小再取大 end end end if B==R %矩阵B为等价矩阵 flag=1; else R=B; %循环计算R传递闭包 end end
%利用截关系对R^k进行等价分类的结果 function simil=calIntercept(A,lambda) row = size(A,1);%x矩阵行数 col = size(A,2);%x矩阵列数 I = zeros(row,col); simil = zeros(1,26); %不断地降低lambda的值,输出similiar向量,对比发现与第七行最相近的行 for i=1:row for j=1:col if A(i,j)>=lambda I(i,j)=1; else I(i,j)=0; end end end k=1; for j=1:26 if I(7,:)==I(j,:) simil(1,k)=j; k=k+1; end end
%计算模糊相似矩阵 function fs=calFuzzySim(x) tic; row = size(x,1);%x矩阵行数 col = size(x,2);%x矩阵列数 fs = zeros(row,row); for j=1:row for i=1:row numerator=0; denominator=0; for k=1:col numerator = numerator+min(x(i,k),x(j,k)); denominator = denominator+max(x(i,k),x(j,k)); end fs(i,j)=numerator/denominator; end end dettime=toc; %fprintf(\'calFuzzySim took %.1f seconds\n\',dettime);
%逐渐降低lambda值,通过截关系进行等价分类 function simil2=calRelat(A) measure= 0.995:-0.01:0.295; len=length(measure); simil2=zeros(len,26); for i= 1:len simil2(i,:)=calIntercept(A,measure(1,i)); end
数据:
a=[36,41,63,65,60; 60,48,66,80,63; 51,54,81,81,94; 64,56,86,85,83; 51,50,35,31,37; 39,57,65,68,70; 60,59,97,100,96; 62,58,94,97,91; 66,51,83,85,86; 50,38,17,52,18; 43,18,43,40,16; 68,67,65,89,79; 55,60,23,66,66; 39,33,15,15,38; 45,44,29,70,45; 61,48,63,72,65; 49,73,65,82,64; 59,59,65,67,62; 54,62,47,80,95; 41,33,9,10,32; 56,59,77,75,92; 30,43,77,67,75; 46,50,24,36,25; 20,37,17,54,40; 57,53,41,78,60; 55,28,35,60,36]
实验结果分析:
求得的模糊相似矩阵,与原论文中所给出的基本相等;
求得的模糊等价矩阵,和原论文中给出的基本一致,有部分数据不同(相较于模糊相似矩阵,不同的多一些):
观察结果得到的聚类结果为:
{7}
{7,8}
{3,4,7,8,9,21}
{3,4,7,8,9,12,21}
{3,4,7,8,9,12,19,21}
{1,2,3,4,6,7,8,9,12,16,17,18,19,21,22,25}
{1,2,3,4,6,7,8,9,12,13,16,17,18,19,21,22,25}
{1,2,3,4,6,7,8,9,12,13,16,17,18,19,21,22,25,26}
{1,2,3,4,5,6,7,8,9,10,12,13,15,16,17,18,19,21,22,23,25,26}
{1,2,3,4,5,6,7,8,9,10,12,13,15,16,17,18,19,21,22,23,24,25,26}
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26}
排序为:
7,8,{3,4,9,21},12,19,{1,2,6,16,17,18,22,25},13,26,{5,10,15,23},24,{11,14,20}
编号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
名次 |
9 |
9 |
3 |
3 |
19 |
9 |
1 |
2 |
3 |
19 |
24 |
7 |
17 |
表1 由模型1所确定的排名顺序
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
24 |
19 |
9 |
9 |
9 |
8 |
24 |
3 |
9 |
19 |
23 |
9 |
18 |
原论文中所给出的表:
大部分编号的排名顺序一致,少部分编号的排名顺序有所不同。而且排序中有很多都是并列排名的,和论文中的精确排名并不一样,和同学讨论了一下,确实得到的结果应该是以集合形式出现的,论文中的有错误。