基于Matlab的小学毕业班成绩总评模糊聚类分析

这篇博客介绍了使用模糊聚类方法对小学生毕业成绩进行分析的过程。通过Matlab程序,实现了数据的标准化转换和模糊相似矩阵的构建,并进行了模糊聚类分析,旨在提高成绩评价的科学性和合理性。最终,该方法用于选出优秀毕业生。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录
一、实验目的………………………………………………2
二、实验环境………………………………………………2
三、实验内容………………………………………………2
1、实际问题…………………………………………………2
2、问题分析…………………………………………………4
3、实验原理及步骤…………………………………………4
四、实验结果…………………………………………………6
五、结果分析…………………………………………………8
六、程序源码…………………………………………………8
一、实验目的
1、应用模糊数学分析实际问题,掌握分析数据的方法。
2、用模糊聚类方法分析数据,并解决实际问题。
3、熟悉Matlab程序,编程实现模糊聚类分析。
二、实验环境
Matlab7.1
三、实验内容
1、实际问题
小学生毕业班成绩总评中模糊聚类分析方法:根据后屯小学2011年六年(2)班 9月份毕业成绩汇总表,对新毕业的小学生们的毕业成绩评价工作,并据此选出7名优秀毕业生。从应用数学角度来看,评价本质上是一项排名工作。为了是使排名录取更趋科学、合理、可信,我们综合决策过程中的模糊信息,建立模糊数学模型,利用模糊聚类分析方法,根据聚类结果来确定每位学生的排名结果。针对毕业生4科成绩表(如下)建立模型,分析结果。

function F_Jlfx(bzh,cs,X)%定义函数
X=F_JlSjBzh(bzh,X);%标准化准换
R=F_JlR(cs,X);%模糊聚类分析建立模糊相似矩阵
fprintf('得到模糊相似矩阵如下:\n');
R
[m,n]=size(R);
if(m~=n||m==0)return;end
F_JlDtjl(R);
function[X]=F_JlSjBzh(cs,X)%定义函数
if(cs==2)%平移·极差变换
    for(k=1:m)xmin=X(1,k);xmax=X(1,k);
		for(i=1:n)
            if(xmin>X(i,k))xmin=X(i,k);end
            if(xmax<X(i,k))xmax=X(i,k);end
        end
		for(i=1:n)X(i,k)=(X(i,k)-xmin)/(xmax-xmin);end
    end
function[R]=F_JlR(cs,X)%定义函数
[n,m]=size(X);%获得矩阵的行列数
cs=8;
R=[];
if(cs==3)%相关系数法
	for(i=1:n)for(j=1:n)xi=0;xj=0;
		for(k=1:m)xi=xi+X(i,k);xj=xj+X(j,k);end
		xi=xi/m;xj=xj/m;xis=0;xjs=0;
		for(k=1:m)xis=xis+(X(i,k)-xi)^2;xjs=xjs+(X(j,k)-xj)^2;end
		s=sqrt(xis*xjs);R(i,j)=0;
		for(k=1:m)R(i,j)=R(i,j)+abs((X(i,k)-xi)*(X(j,k)-xj));end
		R(i,j)=R(i,j)/s;
end;end
function F_JIDtjl(R)%定义函数
%模糊聚类分析动态聚类
%R模糊相似矩阵
[m,n]=size(R);%获得矩阵的行列数
if(m~=n|m==0)return;end
for(i=1:n)R(i,i)=1;%修正错误
    for(j=i+1:n)
        if(R(i,j)<0)R(i,j)=0;elseif(R(i,j)>1)R(i,j)=1;end
        R(i,j)=round(10000*R(i,j))/10000;%保留四位小数
        R(j,i)=R(i,j);
    end
    js0=0;
    while(1)%求传递闭包
        R1=Max_Min(R,R);
        js0=js0+1;
        if(R1==R)
            break;
        else
            R=R1;
        end
    end
    lmd(1)=1;k=1;
    for(i=1:n)for(j=i+1:n)pd=1;%找出所有不同元素
            for(x=1:k)if(R(i,j)==lmd(x))pd=0;break;end;end
            if(pd)k=k+1;lmd(k)=R(i,j);end
        end;
    end
    for(i=1:k-1)
        for(j=i+1:k)
            if(lmd(i)<lmd(j))%从大到小排序
                x=lmd(j);
                lmd(j)=lmd(i);
                lmd(i)=x;
            end;
        end;
    end
    for(x=1:k)%按lmd(x)分类,分类数为flsz(x),临时用Sz记录元素序号
        js=0;
        flsz(x)=0;
        for(i=1:n)pd=1;
            for(y=1:js)
                if(Sz(y)==i)
                    pd=0;
                    break;
                end;
            end
            if(pd)
                for(j=1:n)
                    if(R(i,j)>=lmd(x))
                        js=js+1;
                        Sz(js)=j;
                    end;
                end
                flsz(x)=flsz(x)+1;
            end
        end
    end
    for(i=1:k-1)
        for(j=i+1:k)
            if(flsz(j)==flsz(i))
                flsz(j)=0;
            end;
        end;
    end
    fl=0;%排除相同的分类
    for(i=1:k)
        if(flsz(i))
            fl=fl+1;
            lmd(fl)=lmd(i);
        end;
    end
    for(i=1:n)
        xhsz(i)=i;
    end
    for(x=1:fl)%获得分类情况:对分类元素进行排序
        js=0;flsz(x)=0;
        for(i=1:n)
            pd=1;
            for(y=1:js)
                if(Sz(y)==i)
                    pd=0;
                    break;
                end;
            end
            if(pd)
                if(js==0)y=0;end
                for(j=1:n)
                    if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;
                    end;
                end
                flsz(x)=flsz(x)+1;
                Sz0(flsz(x))=js-y;
            end
        end
        js0=0;
        for(i=1:flsz(x))
            for(j=1:Sz0(i))Sz1(j)=Sz(js0+j);end
            for(j=1:n)for(y=1:Sz0(i))if(xhsz(j)==Sz1(y))js0=js0+1;Sz(js0)=xhsz(j);end;end;end;
        end
        for(i=1:n)xhsz(i)=Sz(i);
        end
    end
    for(x=1:fl)%获得分类情况:每一子类的元素个数
        js=0;flsz(x)=0;
        for(i=1:n)pd=1;
            for(y=1:js)if(Sz(y)==i)pd=0;break;end;end
            if(pd)if(js==0)y=0;end
                for(j=1:n)if(R(i,j)>=lmd(x))js=js+1;Sz(js)=j;end;end
                flsz(x)=flsz(x)+1;Sz0(flsz(x))=js-y;
            end
        end
        js0=1;
        for i=1;flsz(x)
            y=1;
            for(j=1:flsz(x))
                if(Sz(y)==xhsz(js0))
                    flqksz(x,i)=Sz0(j);
                    js0=js0+Sz0(j);
                    break;
                end
                y=y+Sz0(j);
            end
        end
    end
end
figure('name','动态聚类图','color','w');
axis('off');
Kd=30;Gd=40;y=fl*Gd+Gd;lx=80;
text(24,y+Gd/2,'¦Ë');
for(i=1:n)
    text(lx-5+i*Kd-0.4*Kd*(xhsz(i)>9),y+Gd/2,int2str(xhsz(i)));
    line([lx+i*Kd,lx+i*Kd],[y,y-Gd]);
    linesz(i)=lx+i*Kd;
end
text(lx*1.5+i*Kd,y+Gd/2,'分类数');
y=y-Gd;
for(x=1:fl)
    text(8,y-Gd/2,num2str(lmd(x)));
    js0=1;js1=0;
    if(x==1)
        for(i=1:flsz(x))
            js1=flqksz(min(i,2),x)-1;
            if(js1) 
                line([linesz(min(max(js0,1),9)),linesz(min(9,max(js0+js1,1)))],[y,y]);
            end
            line([(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2,(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2],[y,y-Gd]);
            linesz(min(9,i))=(linesz(min(9,max(js0+js1,1)))+linesz(min(9,max(js0,1))))/2;
            js0=js0+js1+1;
        end
    else for(i=1:flsz(x))
            js1=js1+flqksz(x,i);
            js2=0;pd=0;
            for(j=1:flsz(x-1))
                js2=js2+flqksz(j,x-1);
                if(js2==js1) pd=1;break;end
            end
            if(j~=js0) line([linesz(js0),linesz(j)],[y,y]);end
            line([(linesz(js0)+linesz(j))/2,(linesz(js0)+linesz(j))/2],[y,y-Gd]);
            linesz(i)=(linesz(js0)+linesz(j))/2;
            js0=j+1;
        end;end
    text(2*lx+n*Kd,y-Gd/3,int2str(flsz(x)));
    y=y-Gd;
end
 
end

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值