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

    原论文中所给出的表:

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

  • 相关阅读:
    小程序页面跳转 之 js页面函数绑定跳转
    win10系统激活提示无法连接到你组织的激活服务器如何解决
    小程序请求后端接口实例
    cors解决跨域问题
    aes加密 工具类
    后端解决跨域的问题
    理解传输层中UDP协议首部校验和以及校验和计算方法的Java实现
    常见面试题之操作系统中的LRU缓存机制实现
    Java算法之根据二叉树不同遍历结果重建二叉树
    基于Java的二叉树层序遍历打印实现
  • 原文地址:https://www.cnblogs.com/starryxsky/p/7289467.html
Copyright © 2011-2022 走看看