【机器学习PAI实践八】用机器学习算法评估学生考试成绩

(本文数据为实验用例)

一、背景

母亲是老师反而会对孩子的学习成绩造成不利影响?能上网的家庭,孩子通常能取得较好的成绩?影响孩子成绩的最大因素居然是母亲的学历?本文通过机器挖掘算法和中学真实的学生数据为您揭秘影响中学生学业的关键因素有哪些。

本文的数据采集于某中学在校生的家庭背景数据以及在校行为数据。通过逻辑回归算法生成离线模型和学业指标评估报告,并且可以对学生的期末成绩进行预测。

二、数据集介绍

数据集由25个特征和一个打标数据构成,

具体字段如下:

字段名含义类型描述
sex性别stringF是女,M表示男
address住址stringU表示城市,R表示乡村
famsize家庭成员数stringLE3表示少于三人,GT3多于三人
pstatus是否与父母住在一起stringT住在一起,A分开
medu母亲的文化水平string从0~4逐步增高
fedu父亲的文化水平string从0~4逐步增高
mjob母亲的工作string分为教师相关、健康相关、服务业
fjob父亲的工作string分为教师相关、健康相关、服务业
guardian学生的监管人stringmother,father or other
traveltime从家到学校需要的时间double以分钟为单位
studytime每周学习时间double以小时为单位
failures挂科数double挂科次数
schoolsup是否有额外的学习辅助stringyes or no
fumsup是否有家教stringyes or no
paid是否有相关考试学科的辅助stringyes or no
activities是否有课外兴趣班stringyes or no
higher是否有向上求学意愿stringyes or no
internet家里是否联网stringyes or no
famrel家庭关系double从1~5表示关系从差到好
freetime课余时间量double从1~5从少到多
goout跟朋友出去玩的频率double从1~5从少到多
dalc日饮酒量double从1~5从少到多
walc周饮酒量double从1~5从少到多
health健康状况double从1~5从状态差到好
absences出勤量double0到93次
g3期末成绩double20分制

数据截图:

三、离线训练

首先,实验流程图:

数据自上到下流入,先后经历了数据数据预处理、拆分、训练、预测与评估。

1.SQL脚本-数据预处理

select (case sex when 'F' then 1 else 0 end) as sex,
(case address when 'U' then 1 else 0 end) as address,
(case famsize when 'LE3' then 1 else 0 end) as famsize,
(case Pstatus when 'T' then 1 else 0 end) as Pstatus,
Medu,
Fedu,
(case Mjob when 'teacher' then 1 else 0 end) as Mjob,
(case Fjob when 'teacher' then 1 else 0 end) as Fjob,
(case guardian when 'mother' then 0 when 'father' then 1 else 2 end) as guardian,
traveltime,
studytime,
failures,
(case schoolsup when 'yes' then 1 else 0 end) as schoolsup,
(case fumsup when 'yes' then 1 else 0 end) as fumsup,
(case paid when 'yes' then 1 else 0 end) as paid,
(case activities when 'yes' then 1 else 0 end) as activities,
(case higher when 'yes' then 1 else 0 end) as higher,
(case internet when 'yes' then 1 else 0 end) as internet,
famrel,
freetime,
goout,
Dalc,
Walc,
health,
absences,
(case  when G3>14 then 1 else 0 end) as finalScore
from ${t1};

这里SQL脚本主要处理的逻辑是将文本数据结构化。比如说源数据分别有yes和no的情况,我们可以通过0表示yes,1表示no将文本数据量化。一些多种类的文本型字段,比如说Mjob,我们可以结合业务场景来抽象,比如说如果工作是teacher就表示为1,不是teacher表示为0,抽象后这个特征的意义就是表示工作是否与教育相关。对于目标列,我们按照大于18分设为1,其它为0,拟在通过训练,找出可以预测分数的模型。

2.归一化

去量纲,将所有的字段都转换成0~1之间,去除字段间大小不均衡带来的影响。结果图:

3.拆分

将数据集按照8:2拆分,百分之八十用来训练模型,剩下的用来预测。

4.逻辑回归

通过逻辑回归算法训练生成离线模型。具体算法详情可以https://en.wikipedia.org/wiki/Logistic_regression

5.结果分析和评估

通过混淆矩阵可以查看模型预测的准确率。

可以看到预测准确率为82.911%。
根据逻辑回归算法的特性,我们可以通过模型系数挖掘出一些比较有意思的信息,首先查看模型:

根据逻辑回归算法的算法特性,权重越大表示特征对于结果的影响越大,权重是正数表示对结果1(期末高分)正相关,权重负数表示负相关。于是我们可以挑选几个权重较大的特征进行分析。

字段名含义权重分析
mjob母亲的工作-0.7998341777833717母亲是老师对于孩子考高分是不利的
fjob父亲工作1.422595764037065如果父亲是老师,对于孩子取得好的成绩是非常有利的
internet家里是否联网1.070938672974736家里联网不但不会影响成绩,还会促进孩子的学习
medu母亲的文化水平2.196219307541352母亲的文化水平高低对于孩子的影响是最大的,母亲文化越高孩子学习越好。

以上结论只是从实验的很小的数据集得到的结论,仅供参考。

四、其它

作者微信公众号(与我联系):

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页