聚类分析不同学生对于不同考试的成绩表现

  1. 实验目的与要求

目的: 使用学习成绩、课外实践活动等数据对学生群体进行聚类分析我们建立了学生与必修考试成绩一一对应的二维矩阵,聚类分析不同学生对于不同考试的成绩表现。

流程: 首先,应对原有数据进行标准化。

其次,建立相应的模糊相似矩阵,并由此得到模糊等价矩阵。

最终,对其进行聚类。

uploading.4e448015.gif正在上传…重新上传取消

图1 流程图

  1. 实验软件环境
  1. MatlabvR2016b 用于聚类分析
  2. Visual Studio 2019 企业版 v16.0.3 用于数据预处理
  3. MySQL 5.7.22,用于数据抽取与存储
  1. 数据整理

我们建立了以学号为列,各科目为行的矩阵。

考虑到同学选课情况不尽相同,对于同样一节课,有的同学选了,有的却没选。这导致矩阵数据很难对齐,于是我们将同学没选科目的成绩设置为0。

矩阵如下:行选择某学生,列选择某科目

uploading.4e448015.gif正在上传…重新上传取消

图2  实验矩阵

  1. 标准化数据

为建立模糊相似矩阵,我们首先应对原始数据进行标准化。

设论域uploading.4e448015.gif正在上传…重新上传取消为待聚类对象,且每个对象由m个指标表示其性状,如下所示,uploading.4e448015.gif正在上传…重新上传取消。则我们应将原始数据矩阵中的元素通过适当的变换进行压缩。在变换时,我们采用平移-标准差变换方法。

平移-标准差变换的公式如下所示,

uploading.4e448015.gif正在上传…重新上传取消

其中,

uploading.4e448015.gif正在上传…重新上传取消

uploading.4e448015.gif正在上传…重新上传取消

图3  平移-标准差变换结果图

MATLAB代码实现

本文使用MATLAB R2019a(9.6.0.1072779) 64-bit(win64)完成所有实验。所使用的操作系统为,Windows 10 Pro for Workstations。在本文中,如未明确指明,则使用的环境皆为上述所示。

本文主要使用如下代码完成原始数据的标准化。

function[X]=F_Normalize(cs,X)

if(cs==0)return;end

[n,m]=size(X);

if(cs==1)

    for(k=1:m)xk=0;

        for(i=1:n)xk=xk+X(i,k);end

        xk=xk/n;sk=0;

        for(i=1:n)sk=sk+(X(i,k)-xk)^2;end

        sk=sqrt(sk/n);

        for(i=1:n)X(i,k)=(X(i,k)-xk)/sk;end

    end

elseif(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

else

    A=max(X);

    for(i=1:m)

        X(:,i)=X(:,i)/A(i);

    end

end

  1. 定义距离函数

既然相类似性是定义一个类的基础,那么不同数据之间在同一个特征空间相似度的衡量对于聚类步骤是很重要的,由于特征类型和特征标度的多样性,距离度量必须谨慎,它经常依赖于应用,例如,通常通过定义在特征空间的距离度量来评估不同对象的相异性,很多距离度都应用在一些不同的领域,一个简单的距离度量,如Euclidean距离,经常被用作反映不同数据间的相异性,一些有关相似性的度量,例如PMC和SMC,能够被用来特征化不同数据的概念相似性,在图像聚类上,子图图像的误差更正能够被用来衡量两个图形的相似性。

  1. 模糊相似与模糊等价矩阵

传递闭包的定理之一如下,相似矩阵uploading.4e448015.gif转存失败重新上传取消的传递闭包是等价矩阵,且uploading.4e448015.gif转存失败重新上传取消。因此,建立模糊等价矩阵的关键在于求传递闭包。由于本文使用的方法繁多,故不在此一一列举所得矩阵。

一共采用了10种方法,部分代码如下:

建立模糊相似矩阵时,可主要使用如下代码。

function[R]=F_Similar(cs,X)

%X,数据矩阵

%cs=1,数量积法

%cs=2,夹角余弦法

%cs=3,相关系数法

%cs=4,指数相似系数法

%cs=5,最大最小法

%cs=6,算术平均最小法

%cs=7,几何平均最小法

%cs=8,一般欧式距离法

%cs=9,一般海明距离法

%cs=10,一般切比雪夫距离法

[n,m]=size(X);

R=[];

if(cs==1)maxM=0;pd=0;

    for(i=1:n)for(j=1:n)if(j~=i)x=0;

        for(k=1:m)x=x+X(i,k)*X(j,k);end

        if(maxM<x)maxM=x;end

    end;end;end

    if(maxM<0.000001)return;end

    for(i=1:n)for(j=1:n)

        if(i==j)R(i,j)=1;

        else R(i,j)=0;

            for(k=1:m)R(i,j)=R(i,j)+X(i,k)*X(j,k);end

            R(i,j)=R(i,j)/maxM;

            if(R(i,j)<0)pd=1;end

        end

    end;end

if(pd)for(i=1:n)for(j=1:n)R(i,j)=(R(i,j)+1)/2;end;end;end

。。。

//...此处省略

。。。

else for(i=1:n)for(j=1:n)d=0;

    if(cs==14)for(k=1:m)d=d+(X(i,k)-X(j,k))^2;end

        d=sqrt(d);

    elseif(cs==15)for(k=1:m)d=d+abs(X(i,k)-X(j,k));end

    else for(k=1:m)if(d<abs(X(i,k)-X(j,k)))d=abs(X(i,k)-X(j,k));end;end;end

    R(i,j)=exp(-d);

end;end;end

End

 

function [A]=F_equal(R)

js0=0;

while(1)

A=Max_Min(R,R);

js0=js0+1;

if(A==R)

    break;

else

    R=A;

end

end

end

 

function[C]=Max_Min(A,B)

C=[];

[m,s1]=size(A);

[s2,n]=size(B);

if(s1~=s2)

     disp('The number of columns of A doesn’t equal to the number of rows of B!');

。。。

//...此处省略

。。。

end

 

  1.  完成聚类

 我们可以进行动态聚类并获得聚类谱系图,以便更直观地分析聚类结果。

代码如下:

function [M,N]=F_draw(R)

[A]=F_equal(R);

U=unique(A);

L=length(U);

M=1:L;

for i=L-1:-1:1

    [m,n]=find(A==U(i));

    N{i,1}=n;

    N{i,2}=m;

    A(m(1),:)=0;

    mm=unique(m);

    N{i,3}=mm;

    len=length(find(m==mm(1)));

    depth=length(find(m==mm(2)));

    index1=find(M==mm(1));

    MM=[M(1:index1-1),M(index1+depth:L)];  %

    index2=find(MM==mm(2));

    M=M(index1:index1+depth-1);

    M=[MM(1:index2-1),M,MM(index2:end)];

。。。

//...此处省略

。。。

axis([0 L+1 min(U) max(U)])

axis off

hold off

End

 

聚类结果如下:

我们以聚类谱系图的方式,展示聚类结果。其中,行代表不同学生号

为了使图像更直观,我们只选择10名学生。

利用平移-标准差变换与夹角余弦法,可得如下图所示的结果。

uploading.4e448015.gif转存失败重新上传取消

图4 平移-标准差变换与夹角余弦法所得聚类谱系图(10人)

下面这张图是总体的:

uploading.4e448015.gif转存失败重新上传取消

图5 平移-标准差变换与夹角余弦法所得聚类谱系图(总)

  1. 评估输出

我们从不变性、效果等同、正确性原则三个方面评估结果

  1. 不变性

反复多次实验,可发现确定相似系数的方法中,参数的选择不会影响聚类结果。已有研究证明这一点,即,在确定相似系数的方法中,对于涉及到参数M值的选择的方法,都有结论:无论公式中的参数M选择何值,最终所得到的聚类结果都完全一致,即满足不变性[2]

  1. 效果等同

在建立模糊相似矩阵的方法中,有些方法产生的聚类结果完全一致,为了方便描述这种现象,下面给出方法效果等同的定义。在计算模糊相似矩阵的方法中,如果选择A方法与选择B方法来确定相似系数,最终所产生的聚类效果完全一致,那么就说方法A与方法B是效果等同的。[2]

实验可得(限于篇幅,结果并未全部详细给出),最大最小法与算术平均最小法二者效果等同。事实上,已有相关理论证明[2]

  1. 正确性原则

有研究[3]认为,构建模糊相似矩阵的方法应满足正确性原则。该文章这样定义“正确性原则”,“正确性原则是最一般的原则。这条原则要求所选取的方法能客观地描述各样本之间的相似关系, 保证分类的正确性。”同时,该文章认为,海明距离法欧氏距离法切比雪夫距离法指数相似系数法,均满足正确性原则。但是,夹角余弦法相关系数法往往难以满足正确性原则。

考察本文在上文中所得的结果,发现与此研究结论相符。

 

  1. 总结

在本实验中,我们首先利用MySQL数据库进行了数据预处理,只保留必修课程。对于以“优秀”、“良好”、“中等”、“及格”、“不及格”形式给出的数据,分别用百分制对应。由于原始数据集只给出了每个学生的每门课成绩,不便于后续处理和观察,故我们首先用MySQL将数据集变换成了纵坐标为学生横坐标为各门必修课的矩阵。由此便完成了题目一和题目二的要求——建立数据库处理数据、数据集的初步处理和数据清洗。并抽取出了我们研究的对象——必修课,而将各种选修课舍弃。还完成了数据格式的转换,变成了方便后续处理的矩阵的形式。

数据分析部分,我们使用必修课程的成绩对学生群体进行聚类分析,采用了模糊聚类的方法。具体来讲,我们采用了数量积夹角余弦等几种办法,并分别实现。由模糊聚类图可见,各种聚类算法的结果较为相似,能大体把学生分为几个不同的类别,基本实现了实验目的。

不足之处,并没有指定一个阈值,将同学分为“优等生”、“中等生”、“差生”等类别,虽然实现了分类,但造成分类结果不直观。此外,本实验仅仅挖掘并利用了所给数据中的一小部分有效信息,很显然,除了必修、选修成绩和均分以外,原始数据中还有大量有价值的潜藏信息有待挖掘和讨论。比如学生性别与学习成绩的关系、年龄与学习成绩的关系、学习成绩随着学期和学年的变化趋势等等。除此之外,比起用均分反映学生的学习能力,绩点往往会更有代表性,而必修/选修的二分法往往也不适用于所有课程,只能是对实际问题的一种简化。以上这些都是实验中有待改进和完善的部分,也是我们下一步应该努力的方向。

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值