zoukankan      html  css  js  c++  java
  • 【模糊数学】编程实现文献“研究生招生中的模糊聚类分析方法”

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

    原论文中所给出的表:

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

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/starryxsky/p/7289467.html
Copyright © 2011-2022 走看看