【玩转数据系列七】有娃的注意了,机器学习教您如何提高孩子学习成绩-阿里云开发者社区

开发者社区> 傲海> 正文

【玩转数据系列七】有娃的注意了,机器学习教您如何提高孩子学习成绩

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

(本文数据为实验用例)

产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

一、背景

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

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

二、数据集介绍

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

具体字段如下:

字段名 含义 类型 描述
sex 性别 string F是女,M表示男
address 住址 string U表示城市,R表示乡村
famsize 家庭成员数 string LE3表示少于三人,GT3多于三人
pstatus 是否与父母住在一起 string T住在一起,A分开
medu 母亲的文化水平 string 从0~4逐步增高
fedu 父亲的文化水平 string 从0~4逐步增高
mjob 母亲的工作 string 分为教师相关、健康相关、服务业
fjob 父亲的工作 string 分为教师相关、健康相关、服务业
guardian 学生的监管人 string mother,father or other
traveltime 从家到学校需要的时间 double 以分钟为单位
studytime 每周学习时间 double 以小时为单位
failures 挂科数 double 挂科次数
schoolsup 是否有额外的学习辅助 string yes or no
fumsup 是否有家教 string yes or no
paid 是否有相关考试学科的辅助 string yes or no
activities 是否有课外兴趣班 string yes or no
higher 是否有向上求学意愿 string yes or no
internet 家里是否联网 string yes 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 出勤量 double 0到93次
g3 期末成绩 double 20分制

数据截图:

三、离线训练

首先,实验流程图:

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

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 母亲的文化水平高低对于孩子的影响是最大的,母亲文化越高孩子学习越好。

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

四、在线预测部署

生成离线模型之后,可以将离线模型部署到线上,通过调用restful-api来进行在线预测。

1.部署

右键模型-》在线部署模型-》选择cpu、memory-》部署完成

部署成功后显示

之后在API调试页即可通过填写body信息调用API,并拿到预测结果。

四、其它

作者微信公众号(与作者讨论):

参与讨论:云栖社区公众号

免费体验:阿里云数加机器学习平台

联系我们: aohai.lb@alibaba-inc.com

往期文章:

【玩转数据系列一】人口普查统计案例

【玩转数据系列二】机器学习应用没那么难,这次教你玩心脏病预测

【玩转数据系列三】利用图算法实现金融行业风控

【玩转数据系列四】听说啤酒和尿布很配?本期教你用协同过滤做推荐

【玩转数据系列五】农业贷款发放预测

【玩转数据系列六】文本分析算法实现新闻自动分类

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
教你如何在机器学习竞赛中更胜一筹(下)
本文总结由Marios Michailidis(a.k.a Kazanova),Kaggle Grandmaster在2016年3月5日现在排名第3位的在线研讨会上分享的技巧,更好地在机器学习竞赛中取胜
5808 0
从零开始教你训练神经网络(附公式&学习资源)
作者从神经网络简单的数学定义开始,沿着损失函数、激活函数和反向传播等方法进一步描述基本的优化算法。在理解这些基础后,本文详细描述了动量法等当前十分流行的学习算法。此外,本系列将在后面介绍 Adam 和遗传算法等其它重要的神经网络训练方法。
2723 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4559 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
8051 0
+关注
傲海
著有《机器学习实践应用》,阿里云机器学习PAI产品经理,个人微信公众号“凡人机器学习”。
302
文章
10
问答
来源圈子
更多
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载