【模糊数学】编程实现文献“研究生招生中的模糊聚类分析方法”

模糊数学是一门很有用的应用型数学,之前做手势识别时,曾看到过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

原论文中所给出的表:

 

大部分编号的排名顺序一致,少部分编号的排名顺序有所不同。而且排序中有很多都是并列排名的,和论文中的精确排名并不一样,和同学讨论了一下,确实得到的结果应该是以集合形式出现的,论文中的有错误。

posted @ 2017-08-05 10:43  肉松松鼠  阅读(943)  评论(0编辑  收藏  举报