文档章节

智慧中国杯百万大奖赛解读 | 学霸去哪了(二)

openfea
 openfea
发布于 2016/12/21 17:16
字数 2046
阅读 45
收藏 0

在上一篇中我们探讨了学生的消费数据,消费数据对本次竞赛预测来讲很重要。本篇将探索寝室门禁、图书借阅、图书馆门禁和学生成绩等一些和学生学习相关的数据,来看看学生的品行如何,虽然资助金和奖学金的性质不太一样,但我们毕竟还是想资助那些品学兼优的学生,而不是资助虽然家境很贫寒但不学无术的学生。

所以本篇探索的数据可以比较好的反应出这些情况。当然这里面还隐藏了更好玩的话题,学霸去哪了?话不多说,let's go!

一、数据目录概况

官方提供的数据分为两组,分别是训练集和测试集,每一组都包含大约1万名学生的信息纪录:   

 图书借阅数据borrow_train.txt和borrow_test.txt;

 一卡通数据card_train.txt和card_test.txt;

 寝室门禁数据dorm_train.txt和dorm_test.txt;

 图书馆门禁数据library_train.txt和library_test.txt;

 学生成绩数据score_train.txt和score_test.txt;

 助学金获奖数据subsidy_train.txt和subsidy_test.txt(实际下载的数据是studentID_test.txt即你需要预测的学生样本)  。  

OpenFEA为做好本次活动的深度支持和报道,特下载了上述数据,并在互联网上搭建的在线实验环境可以直接分析此数据,具体在www.openfean.cn下载专区里有介绍,所有数据放在match/fund目录下,文件后缀名改成了csv。

二、数据探索

(一)寝室门禁数据

训练数据和测试数据分别是dorm_train.csv和dorm_test.csv

字段描述和示例如下:

学生id,具体时间,进出方向(0进寝室,1出寝室)   

13126,"2014/01/21 03:31:11","1"

9228,"2014/01/21 10:28:23","0"

#加载寝室门禁训练数据

dt = load csv by match/fund/dorm_train.csv with (header=-1)

#看数据量大小 (211万5064行)

show tables

#查看数据

dump dt

寝室门禁的数据单独看意义不大,毕竟一个从夜店归来和从图书馆回来的行为时间差别不大,所以要想区别的话最少要和图书馆的门禁数据做关联。当然我们也可以分析深夜外出的同学有多少。

#更改列名

dt = rename dt as (0:"id",1:"time",2:"isout")

#提取小时为一列

dt.hour = str time by ([11:13])

#将hour列改为数字类型

alter dt.hour as int

dump dt

#过滤深夜早出的,有566条

dt_out = filter dt by (isout==1 and hour in [0,1,2,3,4])

#过滤深夜晚归的,有2131条,看来晚归的要大于早出的,但总体还是好的,^V^

dt_in = filter dt by (isout==0 and hour in [0,1,2,3,4])

#再来看一下有多少学生,以及是否有惯犯

dt_io = union dt_out,dt_in

dt_io_count = @udf dt_io by udf0.df_agg_count with (id)

#看下结果

plot dt_io_count

2131多条记录中,共涉及1297人,最多的34次,最少的1次,平均2.08次。元芳,你怎么看呢?

(二)图书借阅数据

图书借阅数据在borrow_train.csv和borrow_test.csv中。

注:有些图书的编号缺失。字段描述和示例如下(第三条记录缺失图书编号):

 学生id,借阅日期,图书名称,图书编号     

9708,2014/2/25,"我的英语日记/ (韩)南银英著 (韩)卢炫廷插图","H315 502"    

 6956,2013/10/27,"解读联想思维: 联想教父柳传志","K825.38=76 547"     

9076,2014/3/28,"公司法 gong si fa = = Corporation law / 范健, 王建文著 eng"

因为有数据缺失项,不是标准的CSV格式,处理起来要多费些周折:

#采用一个全文没有出现的分割符`,将数据按一整行加载成为DF表

bt = load csv by match/fund/borrow_train.csv with (header=-1,sep="`")

rename bt as (0:"raw")

#然后采用字符串处理函数来进行分割

bt.l = str row by (split(","))

#采用UDF函数,将数组列,转换成独立列

bt = @udf bt by udf0.df_l2cs with (l)

#选择需要的列

bt2 = loc bt by (n100,n101,n102,n103)

dump bt2

bt2.n101 = str n101 by ([1:-1])将引号去掉就可以使用了,主要可以分析借阅次数(本书),阅读时间等,要想再深入一些可以分析阅读的门类等,就不详细介绍了。

(三)图书馆门禁数据

图书馆门禁数据在library_train.csv和library_test.csv文件中,图书馆的开放时间为早上7点到晚上22点,门禁编号数据在2014/02/23之前只有“编号”信息,之后引入了“进门、出门”信息,还有些异常信息为null,请参赛者自行处理。

学生id,门禁编号,具体时间     

3684,"5","2013/09/01 08:42:50"

 7434,"5","2013/09/01 08:50:08"

 8000,"进门2","2014/03/31 18:20:31"

5332,"小门","2014/04/03 20:11:06"

7397,"出门4","2014/09/04 16:50:51"

#加载成为DF表

lt = load csv by match/fund/library_train.csv with (header=-1)

rename lt as (0:"id",1:"gate",2:"time")

dump lt

再来看一下2014/02/23之后的数据是否有变化:

#过滤2014/02/23之后的数据

lt_2 = filter lt by (time >="2014/02/23 00:00:00")

dump lt_2

数据还真发生了变化,有出入信息了。因为是初探,我们也不做深入分析,简单看下次数吧。

#udf函数对单一字段直接进行分组求和

lt_count = @udf lt by udf0.df_agg_count with (id)

#可视化查看

pot lt_count

最多的学生是1485次,最少的居然两年只去1次(惨不忍睹,都忙啥了?),平均是122次。

去的次数最多的是不是学习成绩最好呢,一会我们验证一下。

(四)学生成绩数据

 学生成绩数据score_train.csv和score_test.csv

 注:成绩排名的计算方式是将所有成绩按学分加权求和,然后除以学分总和,再按照学生所在学院排序。   

学生id,学院编号,成绩排名    

#加载成绩数据

st = load csv by match/fund/score_train.csv with (header=-1)

rename st as (0:"id",1:"college",2:"score")

dump st

成绩数据就这样了,我们来看一下图书馆次数最多的学生成绩到底怎么样,是真的一份耕耘一份收获,还是在磨洋工装样子呢。

#取去图书馆次数最多的100人

lt_count = @udf lt_count by udf0.df_reset_index

rename lt_count as ("index":"id")

ltc_t100 = limit lt_count by 100

#和成绩进行关联

t100_st = @udf ltc_t100,st by udf0.df_ljoin with (id,id)

t100_st = @udf t100_st by udf0.df_set_index with (id)

t100_st = @udf t100_st by udf0.df_drop_col with (college)

#最后看可是化结果

plot t100_st

红线代表去图书馆的次数,绿线代表成绩的排名,看完这个也很心塞啊!其中最好的才排学院30名,比比都是500名开外,都在图书馆干嘛了呢?

好吧,再来看看学院的学霸们(前100名)到底去不去图书馆呢?

#取每个学院的前50名

st_t100 = filter st by (score <=100)

st_t100_t = @udf st_t100,lt_count by udf0.df_ljoin with (id,id)

st_t100_t = @udf st_t100_t by udf0.df_set_index with (id)

#居然出现空值,学霸竟然一次图书馆都没去过

st_t100_t = @udf st_t100_t by udf0.df_fillna with (0)

st_t100_t = @udf st_t100_t by udf0.df_drop_col with (college)

st_t100_t = order st_t100_t by count,score

dump st_t100_t

看这满屏的0,不知你作何感想?禁不住要问学霸去哪了?这还是以前的大学图书馆吗?

红色代表成绩,绿色代表去图书馆的次数,去图书馆的平均线是105,看来"死读书"是越来越没市场了。^V^

有兴趣的同学,可以将学霸的数据和深夜外出的数据碰一下,看看学霸到底去哪了。

三、小结

通过本期对这四类数据的探索,大家应该对学生消费以外的学习生活有所了解了。虽然对精准资助的影响可能不是很大,但对最后提高细小的准确率还是有帮助的,也对学校怎样使用大数据加强校园的管理和学生的价值引导有积极作用。

好了,下期我们就要真刀实枪通过机器学习进行训练了,是不是离奖金又进了一步呢!加油!

© 著作权归作者所有

openfea
粉丝 20
博文 89
码字总数 99945
作品 1
杭州
其他
私信 提问
推荐 | 不可错过的Datacastle竞赛,积累AI实战经验,更有丰厚奖金......

写在前面的 实践出真知,算法学习与解决问题之间还隔着实战 今天 为大家推荐一个数据挖掘竞赛 请往下看...... “几个月过去了,还是会经常想起到成都参加智慧中国杯总决赛的那些日子。团建、...

mbx8x9u
2018/01/04
0
0
“智慧中国杯”全国大数据创新应用大赛

大赛简介 此次「智慧中国杯」在交通、金融、教育三大核心领域取题,开放来自政府、企业特别提供的真实稀缺数据,悬赏百万奖金,向全国征集具有高商业价值和社会效益的创新应用。 大赛赛题 大...

DC数据城堡
2016/12/14
20
0
“智慧中国杯”全国大数据创新应用大赛

大赛简介 此次「智慧中国杯」在交通、金融、教育三大核心领域取题,开放来自政府、企业特别提供的真实稀缺数据,悬赏百万奖金,向全国征集具有高商业价值和社会效益的创新应用。 大赛赛题 大...

DC数据城堡
2016/12/14
456
0
【AI TOP 10】马化腾点赞搜狗 AI 答题助手,周鸿祎说太流氓;中国首条无人驾驶单轨线路正式通车

学术新闻 谷歌 CVPR 2018 机器学习图像压缩挑战赛 中科大首次实现海森堡极限精度的量子精密测量 产业观察 苹果:中国内地 iCloud 服务将转由国内公司负责运营 Intel 承认 CPU 漏洞对性能产生...

技术小能手
2018/01/11
0
0
2015“税友杯”编码超人大奖赛入围名单

2015“税友杯”编码超人大奖赛入围名单 本次活动活动贴见:拼“万元大奖“赢“锦绣前程”,“税友杯”编码超人大奖赛 2015“税友杯”编码超人大奖赛经前期校园报名、专家初评,现在评出入围奖...

文洁洁洁
2015/09/28
162
0

没有更多内容

加载失败,请刷新页面

加载更多

好程序员Java教程分享Zookeeper基本原理与运用场景

好程序员Java教程分享Zookeeper基本原理与运用场景一、什么是Zookeeper? zookeeper是一个分布式的一致性协调服务。 换句话说,也可以把zookeeper看成一个小型的分布式文件系统。但是和FastD...

好程序员官网
24分钟前
6
0
mysql表情符

1 修改表字段为utf8md4 ALTER table property_info MODIFY `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL 2 MySQL数据库服务器配置文件mysqld.cn......

干死it
43分钟前
4
0
正则表达式的基本语法

本文摘自LTP.NET知识库。 正则表达式的形式一般如下: /love/ 其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。 用户只要把希望查找匹配对象的模式内容放入“/”定界符之...

木庄
45分钟前
4
0
java 框架有哪些?

十大常用框架: 一、SpringMVC 二、Spring 三、Mybatis 四、Dubbo 五、Maven 六、RabbitMQ 七、Log4j 八、Ehcache 九、Redis 十、Shiro 延展阅读: 一、SpringMVC Spring Web MVC是一种基于J...

java框架开发者
46分钟前
10
0
细谈Mysql事务

文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 上一篇着重谈到了MySQL锁的概念,里面谈到了事务的概念,其实大部分开发者对于事务肯定不陌生,...

程序猿周先森
54分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部