智慧中国杯算法赛解读 | 精准资助数据探索(一)

智慧中国杯是由DataCastle(数据城堡)主办的全国大数据创新应用大赛,提供了百万的竞赛奖金,数据城堡的创始人周涛是《大数据时代》的中文翻译者,在业内享有很高的名气。

OpenFEA将对此次大赛进行持续关注和报道,以推进大数据在国内的发展,让更多的人参与到大数据的应用创新当中来,为社会培养大数据人才出一份自己的力量。

此次大赛分为三个环节,第一是算法赛,任何个人和组织团体都可以参加,无资格限制,提交比赛结果即可。算法赛最后截止时间为2017年2月20日,在此之前提交结果都有效,现在报名还来的及哦!

《智慧中国杯算法赛解读系列》以算法资格赛为关注点,将详细解读这次比赛的三个主题(教育、交通、金融)的算法和数据,为您深入了解这场大赛以及进入大数据分析的大门提供全方位的支持。

因此,此篇文章是这个系列的第一篇,将对教育主题的精准资助竞赛进行数据的初步探索,也将带你进入获取百万奖金的大门(哇,好多money ^v^)

一、(大学生助学金精准资助预测)概况

大数据时代的来临,为创新资助工作方式提供了新的理念和技术支持,也为高校利用大数据推进快速、便捷、高效精准资助工作带来了新的机遇。基于学生每天产生的一卡通实时数据,利用大数据挖掘与分析技术、数学建模理论帮助管理者掌握学生在校期间的真实消费情况、学生经济水平、发现“隐性贫困”与疑似“虚假认定”学生,从而实现精准资助,让每一笔资助经费得到最大价值的发挥与利用,帮助每一个贫困大学生顺利完成学业。因此,基于学生在校期间产生的消费数据运用,大数据挖掘与分析技术对实现贫困学生的精准挖掘具有重要的应用价值。

教育算法资格赛采用某高校2014、2015两学年的助学金获取情况作为标签,2013~2014、2014~2015两学年的学生在校行为数据作为原始数据,包括消费数据、图书借阅数据、寝室门禁数据、图书馆门禁数据、学生成绩排名数据,并以助学金获取金额作为结果数据进行模型优化和评价。

本次竞赛需利用学生在2013/09~2014/09的数据,预测学生在2014年的助学金获得情况;利用学生在2014/09~2015/09的数据,预测学生在2015年的助学金获得情况。虽然所有数据在时间上混合在了一起,即训练集和测试集中的数据都有2013/09~2015/09的数据,但是学生的行为数据和助学金数据是对应的。

此竞赛赛程分为两个阶段,以测试集切换为标志,2017年2月13日切换。

二、数据初探

官方提供的数据分为两组,分别是训练集和测试集,每一组都包含大约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,即您需要预测的学生样本)。

训练集和测试集中的学生id无交集,详细信息如下(注:数据中所有的记录均为“原始数据记录”直接经过脱敏而来,可能会存在一些重复或异常的记录,请参赛者自行处理)。

OpenFEA为做好本次活动的深度支持和报道,特下载了上述数据,参赛者可以在互联网上搭建的在线试用环境中直接分析此数据(请访问www.openfea.cn的下载专区),所有数据放在match/fund目录下,文件后缀名改成了csv。

(一)助学金获奖数据

在FEA的高级交互分析功能中,可以很轻松的来将这些csv文件加载进来进行分析,示例如下:

#加载助学金发放训练数据

stn = load csv by match/fund/subsidy_train.csv with(header=-1)

#看数据量大小 (10885行)

show tables

#查看数据

dump stn

0列是学生ID,1列是发放金额,接下来修改列名,对发放的数量进行统计:

#修改列名

rename stn as (0:"id",1:"money")

#按发放数量进行分组

gt = group stn by money

#统计人数

stn_count = agg gt by id:count

#查看

dump stn_count

用图看一下更直观,plot stn by 04。如下图:没有助学金的占85%以上。

助学金的另外一个文件是studentID_test.csv,是需要最终预测的学生样本,只有学生id一列,和训练数据关联重复,有10783行,和训练数据(10885)是同一个量级。

(二)一卡通数据

一卡通的数据是学生的消费数据,能比较好的反应学生在学校的消费情况,对本次比赛来讲很关键,这部分数据在card_train.csv和card_test.csv。这两个文件都很大,都在1G左右,装载到内存要将近10G左右,一般的机器是跑不起来的,好在OpenFEA提供的在线环境是256G的,这点数据还是小意思了。如果装载数据的时间长的话,load数据时可以使用:=,这样就是在后台执行,我们不用关心超时,只要看任务结束就好了。

#加载一卡通训练数据

card := load csv by match/fund/card_train.csv with(header=-1)

#产看任务执行情况

show tasks

#看数据量大小 (12455558行)

show tables

#查看数据

dump card

装载花了22秒,一共是1245.5万,相当于每秒56.6万条。(哈哈,FEA的速度比较给力吧!),下面看数据:

第5列是消费数据,淋浴只要5毛钱,看看真怀念学生时代啊。

接下来对列名进行修改,计算一下每个人的消费次数,消费金额,最大剩余金额和最小剩余金额和平均剩余金额,以及消费行为的种类等。

#修改列名

rename card as(0:"id",1:"pos",2:"address",3:"catalog",4:"time",5:"cost",6:"have")

#根据id进行分组

gt2 = group card by id

#计算每个人的消费情况,消费总额,单次最大消费,单次最小消费,消费均值,消费中位数,消费次数

card_cost = agg gt2.cost by(cost_sum:sum,cost_max:max,cost_min:min,cost_mean:mean,cost_meidan:median,cost_count:count)

#然后计算卡内剩余金额的最大数,最小数,平均数

card_have = agg gt2.have by(have_max:max,have_min:min,have_mean:mean,have_median:median)

#两张合起来,一个人的消费状况就非常清晰了

card_money = join card_cost,card_have by index

#查查

dump card_money

看了结果也吓一跳,总消费上万的也好多啊,消费的均值也不高,总体情况我们使用card_desc = @udf card_money by udf0.df_desc来查看一下:

消费总额最高的是3万多,中位数是8903,单笔最大的消费是4407元,中位数是300,有人单笔最低是93元,看来此同学属于土豪行列,出现的负数可能是退款或误扣等,这个要结合业务知识去判断了,也可以作为噪音处理一下。

卡里保有金额最大为4399元,中位数为316元,还比较符合对学生的印象。

(三)小结

数据探索这里,有经验的老司机都可以直接使用FEA中的机器算法进行训练了!当然本篇是数据探索的第一篇,下一篇将继续探索剩下的4种数据,机器学习要放到第三篇。哈哈不要急,只要你关注OpenFEA的微信公众号,跟着我们的解读节奏,一定能让您开启机器学习的大门,赢取百万奖金也不是梦哦!

注:原创文章,转载请注明来自微信公众号“OpenFEA”

时间: 2024-10-19 17:12:30

智慧中国杯算法赛解读 | 精准资助数据探索(一)的相关文章

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

在上一篇中我们探讨了学生的消费数据,消费数据对本次竞赛预测来讲很重要.本篇将探索寝室门禁.图书借阅.图书馆门禁和学生成绩等一些和学生学习相关的数据,来看看学生的品行如何,虽然资助金和奖学金的性质不太一样,但我们毕竟还是想资助那些品学兼优的学生,而不是资助虽然家境很贫寒但不学无术的学生. 所以本篇探索的数据可以比较好的反应出这些情况.当然这里面还隐藏了更好玩的话题,学霸去哪了?话不多说,let's go! 一.数据目录概况 官方提供的数据分为两组,分别是训练集和测试集,每一组都包含大约1万名学生的

蓝桥杯省赛总结

3.28号下午查到了成绩,还行,考到B组省赛一等奖,可以进入决赛. 成绩的结果还是很意外的,因为自己没怎么准备,试题有的题就是瞎写的,只看了官网的两个辅导视频.剩下的懒了 就没看... 面对这电脑,看着题目,才意识到自己的不足之处.以前总是急功近利,想着学几门编程语言,现在才真正明白,语言只是个工具,自己要懂得利用一门编程语言解决实际的问题,并且考虑到优化提高的办法,这样才能提高自己能力,而不是会多少编程语言. 今天记录这些,就是激励自己,以一颗平静的心去学习.在记录,总结,展望中不断地提高自己

蓝桥杯——算法训练之乘积最大

问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时

时空上下文视觉跟踪(STC)算法的解读与代码复现(转)

本文转载自zouxy09博客,原文地址为http://blog.csdn.net/zouxy09/article/details/16889905:在此,仅当笔记mark一下及给大家分享一下. 时空上下文视觉跟踪(STC)算法的解读与代码复现 [email protected] http://blog.csdn.net/zouxy09 本博文主要是关注一篇视觉跟踪的论文.这篇论文是Kaihua Zhang等人今年投稿到一个会议的文章,因为会议还没有出结果,所以作者还没有发布他的Matlab源代码

第七届蓝桥杯省赛7:剪邮票

第七届蓝桥杯省赛7:剪邮票 如[图1.jpg], 有12张连在一起的12生肖的邮票. 现在你要从中剪下5张来,要求必须是连着的. (仅仅连接一个角不算相连) 比如,[图2.jpg],[图3.jpg]中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少种不同的剪取方法. 请填写表示方案数目的整数. 注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字. 解决思路:先将所有五个一组的情况遍历,然后用广度优先判断是否连通. 我在选五个一组的时候是用的 for 先选出第几个邮票,然后将其

2018 蓝桥杯省赛 B 组模拟赛(一)

2018 蓝桥杯省赛 B 组模拟赛(一) A.今天蒜头君带着花椰妹和朋友们一起聚会,当朋友们问起年龄的时候,蒜头君打了一个哑谜(毕竟年龄是女孩子的隐私)说:“我的年龄是花椰妹年龄个位数和十位数之和的二倍”. 花椰妹看大家一脸懵逼,就知道大家也不知道蒜头君的年龄,便连忙补充道:“我的年龄是蒜头君个位数和十位数之和的三倍”. 请你计算:蒜头君和花椰妹年龄一共有多少种可能情况? 提醒:两位的年龄都是在 [10,100)[10,100) 这个区间内. 题解: 暴力枚举 answer: 1 代码如下: #

2018年中国人工智能行业研究报告解读(一)

近日,著名IT咨询公司艾瑞咨询(http://www.iresearch.com.cn/)针对中国人工智能行业的发展发布了"2018年中国人工智能行业研究报告解读"(http://www.iresearch.com.cn/Detail/report?id=3192&isfree=0), 报告从以下五个方面: 人工智能的行业概述 人工智能典型技术剖析 人工智能应用场景 人工智能经典案例 人工智能行业发展趋势 对中国人工智能的技术,应用以及产业发展进行讨论. 原文地址:https:

2017年ICPC中国大陆区域赛真题(下)

2017年ICPC中国大陆区域赛真题(下) A - Lovers #include <bits/stdc++.h> using namespace std; const int maxn=2e5+10; int n,k,a[maxn],b[maxn],ans; int main() { int _; scanf("%d", &_); while (_--) { scanf("%d%d", &n, &k); for (int i =

民生银行十五年的数据体系建设,深入解读阿拉丁大数据生态圈、人人BI 是如何养成的?(转载)

早在今年的上半年我应邀参加了由 Smartbi 主办的一个小型数据分析交流活动,在活动现场第一次了解到了民生银行的阿拉丁项目.由于时间关系,嘉宾现场分享的内容非常有限.凭着多年对行业研究和对解决方案的嗅觉与敏感性,意识到这个阿拉丁项目的完整性和独特性超出了以往我所接触过的所有 BI 领域的项目案例,很值得再次深入的探讨.学习与研究.对于很多公司在建设自身的 BI 或者大数据平台体系上,这个项目案例有很好的参考与借鉴意义.(另外一个我个人比较推崇的大数据建设的案例是美的的大数据平台建设案例.) 在