栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

MATLAB实现智能计算方法实验:实验一 模糊聚类分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MATLAB实现智能计算方法实验:实验一 模糊聚类分析

实验目的
  1. 掌握数据文件的标准化、模糊相似矩阵的建立方法、学会传递闭包矩阵的求解方法;
  2. 学会使用MATLAB软件(Python)进行模糊矩阵的编程运算和仿真,实现模糊聚类分析。
实验内容
  1. 根据下面表格中的数据,用Matlab(或Python)编程进行数据标准化处理;

  2. 根据标准化处理后的数据,用Matlab(或Python)编程,建立模糊相似矩阵,并编程求出其传递闭包矩阵;

  3. 根据模糊等价矩阵,编程绘制动态聚类图;

  4. 根据原始数据,编程确定最佳分类结果。

    noY1Y2Y3Y4Y5Y6
    x1216319401.567106
    x2237430752.69354
    x3119179861186.8979
    x411516849892.63729
    x57914646922.35624
    x679158481032.1427
    x76511458992.6797
    x86811958963.0996
    x910916659952.8686
    x1011817756892.647
实验步骤 1. 标准化处理
  • 建立原始数据矩阵

    依据题意,建立10×6的原始矩阵A,在matlab中表示如下图:

    图1.1 原始数据矩阵
  • 数据规格化

    对原始矩阵应用极差正规化方法进行数据规格化,运用matlab编写fuzz函数,代码如下:

    function n = fuzz(A)
    [hei, wid] = size(A);
     n = zeros(hei, wid);
     for i = 1: hei
            for j = 1: wid
                n(i, j) = (A(i, j) - min(A(:, j)))/(max(A(:, j)) - min(A(:,j)));
            end
     end
     end
    

    在命令行输入n = fuzz(A)调用该函数,得到数据矩阵n如下图。

    图1.2 数据规格化
2. 建立模糊等价矩阵
  • 建立模糊相似矩阵

    对数据矩阵应用最大最小法得到模糊相似矩阵,编写fuzzs函数,代码如下:

    function m = fuzzs(n)
    [hei, wid] = size(n);
     m = zeros(hei, hei);
     for i = 1: hei
            for j = 1: hei
                maxnum = 0;
                minnum = 0;
                for k = 1: wid
                    maxnum = maxnum + max(n(i, k), n(j, k));
                    minnum = minnum + min(n(i, k), n(j, k));
                end
                m(i, j) = minnum/maxnum;
            end
     end
     end
    

    在命令行输入m = fuzzs(n)调用该函数,得到模糊相似矩阵m如下图。

    图2.1 模糊相似矩阵
  • 建立模糊等价矩阵

    应用传递闭包方法将模糊相似矩阵转化为模糊等价矩阵,编写synt函数,代码如下:

    function ab = synt(a)
    [hei, wid] = size(a);
    ab = zeros(hei, wid);
    flag = 0;
    while(flag == 0) 
        m = size(a, 1);
        n = size(a, 2);
        for i = 1: m
            for j = 1 :n 
                ab(i, j) = max(min([a(i, :);a(:, j)']));
            end
        end
        if(ab == a)
            flag = 1;
        else
            a = ab;
        end
    end
    end
    

    输入m0 = synt(m)调用该函数,得到模糊等价矩阵m0如下图。

    图2.2 模糊等价矩阵
3. 动态聚类
  • 훌-截矩阵

    根据模糊等价矩阵,建立훌-截矩阵,按훌由大到小进行聚类,编写jjz4函数,代码如下:

    function[D, k] = jjz4(b)
    L = unique(b)';
    a = size(b);
    D = zeros(a);
    for m = length(L): -1 : 1
        k = L(m);
        for i = 1: a 
            for j = 1: a 
                if b(i, j) >= k 
                    D(i, j) = 1;
                else
                    D(i, j) = 0;
                end
            end
        end
        B = unique(D, 'rows');
            [hei] = size(B);
        for j = 1: hei
            eval(['L', num2str(j) '= [];'])
        end
        for i = a: -1: 1
            for j = 1: hei
                if D(i, :) == B(j, :)           
                    p = eval(['L', num2str(j);]);
                    p = [['x', num2str(i), ' '] p];
                    eval(['L', num2str(j) '= p;']);
                end
            end
        end
        fprintf("当分类系数k=%5.4f时,", L(m));
        fprintf("所得截距阵为:nn");
        disp(D);
        fprintf("分类结果为:n");
        for j = 1: hei
            fprintf("第%d类:", j);
            disp(eval(['L', num2str(j);]));
        end
        fprintf("n");
    end
    end
    

    输入jjz4(m0)调用该函数,为了便于看到所有的结果,先将显示截距阵的一行代码注释掉,运行得到所有分类结果如下图。

    图3.1 所有分类结果

    选取훌 = 0.8791时函数得到的截距阵及分类结果图如下。

    图3.2 훌=0.8791时截距阵
  • 动态聚类图

    根据分类结果绘制动态聚类图如下。

    图3.3 动态聚类图
4. 确立最佳分类结果
  • 훌=0.8374
    훌=0.8374时具有最佳分类结果,调用jjz4函数得到最佳分类的截距阵及分类结果如下图。

    图4.1 最佳分类的截距阵及分类结果

    由图可知一共分为了6类,其中x7,x8一类,x5,x6一类,x4,x9,x10一类,x1,x2,x3单独成一类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360408.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号