标签: 数据挖掘 特征工程 机器学习 出勤预测机器学习
write by xmhexi 2019/3/22学习
内容提要测试
首先说明本文是一篇科普文章,经过一个实际案例,帮助理解什么是数据挖掘、特征工程、机器学习等,文章中并不涉及详细的技术与参数。优化
本人刚刚起步初学,文章中均为本人的理解,有不妥之处,敬请指出。3d
文章中涉及的的姓名,电话等信息均作了模糊处理。code
事情的开始很简单,个人EDP课程已经上了8次课了,在班级群里,老师发了一张上课出勤表,让你们核对。 出勤表大概长这个样子的:blog
看着这张出勤表,我在想咱们能作些什么呢?索引
能不能知道下次上课,谁会来,谁不会来,或者只来半天?游戏
正好开始学习数据分析,那就用这些数据来作一个“上课出勤预测模型”吧,经过这些数据来最终预测下一次上课的出勤状况。图片
预测目标:下节课全部同窗的出勤状况。
说干就干,首先要获取这些数据,把出勤表图片通过剪切、识别:
最终获得对应的数据:
同窗们有没来上课,跟什么会有关系呢?
寻找“有没来上课”有关系的东西,并把这些东西变成数字,就叫作“特征工程”了。
接下来就来寻找这些特征了。
手上还有的资料就是同窗录了,就从同窗录入手。
有些数据是比较敏感的,不适合处处传播,好比姓名,手机号,公司名称等,须要先进行一些处理,让这些数据可使用但又不会被猜出来。
好比姓名就换成拼音的首字母,手机就保留前7位,公司名称就用序号来表示,其它的就能够删除了。
都说“有担当 重责任”,担任班委职务是否是跟出勤有点关系?
班委信息按级别,小组长是1,班长是4; 责任越大应该越会来上课吧?
都说男女有别,在决定去不去上课的时候,应该也是有差异的吧。
性别变成数字,女=0 男=1;
在哪里上班(公司地点);离学校远不远? 外地的同窗来上课确定是阻力重重啊。
这个特征能够从公司名称查到公司地址,为了省事,我就用手机查询到手机号所的省、市。
先导入手机归属地数据,而后查看下同窗们的手机所在地的状况:
根据手机所在的省和市,把同窗们离学校的距离分红了4种类型: 本地的,周边的地区的,本省的;外省的;
同窗在公司的职务级别会不会影响来上课? 越是领导越忙,确定有关系呢。
看一下有哪些职位:
职位太杂了,作下归类:
能够看出,大多同窗都是经理和总监级别。
最后归成几类数字越大,级别越高:
都说“青春作伴好还乡”,同一个公司若是同时有几个伙伴一块儿来上课,那来上课的干劲应该高一点。
先看看各个公司派出伙伴的状况:
能够看出大多公司都是1个小伙伴,最高的有10个小伙伴。
最后按照派出小伙伴的数量高低分红5个级别:
都说处女座的作事特别不同,脑洞大开一下,若是找到同窗的星座信息,这也可能成为影响来不来上课的因素!
找到班级同窗过生日的信息:
对应计算出同窗属于哪一个星座,变成一个数字:
天气会不会影响来上课的决定? 有可能噢。
上网找出了全部上课日期对应上课地点的天气状况。
不过这个特征没有加进去,留作之后再处理吧。
找了这么多东西,最终获得了一些数据,把每一个同窗每节课的出勤状况作为一条记录,获得了1104条数据。
上面找了这么多影响上课的因素(特征),到底哪些因素有关系,怎么样的关系呢,这个不用咱们操心,创建一个数据模型就能够自动计算了。 我用了一个最简单的“决策树模型”,并进行“训练”,其实就是获得这些参数对结果的影响。
训练完成后,对已知的数据进行测试验证,看下准确度有多少:
哈哈,还不错哦,准确率有80%,也就是说用这个模型去预测将来,有8成的准确率。
那就用这个模型来计算下全部同窗下一次上课的出勤状况,看下谁来谁不来,这个就叫“预测”:
预测完了是一堆的数据,为了好看,要处理成对应的格式:
怎么看数据呢?这张图中最后面的表格:
name_py就是同窗的姓名拼音首字母;
"C9-1","C9-2"分别是下次上课的两天课程;
“1.0"表示这位同窗来上课;
“0.0”表示这位同窗不来上课;
“0.5"表示这位同窗来上半天后就走了(嘻);
为了方便同窗位查一下预测结果里本身来不来,我把全部的预测结果放在下面,重申一下:结果是预测出来的,准确度有限,权当游戏一把,别当真!
name_py,C9-1,C9-2 CXF,1,1 CDL,0,0 CMS,1,1 CQL,0,0 CYF,0,0 CZY,1,1 DX,1,1 FCX,1,1 FJT,0,0 FRK,0,0 FZY,1,1 FPP,1,1 GQH,1,1 GBS,1,1 HLM,0,0 HSJ,0,0 HX,1,1 HQJ,1,1 HHD,1,1 HHS,0,0 HTY,0,0 HYL,1,1 KZT,1,1 KYP,1,1 LFL,0,0 LWJ,1,1 LXH,0,0 LBC,1,1 LJG,1,1 LLH,1,1 LPH,0,0 LSJ,1,1 LYF,1,1 LBR,1,1 LGQ,0,0 LKC,1,1 LDF,1,1 LSB,1,1 LSF,0,0 PDZ,1,1 PSZ,0,0 QWH,1,1 QXH,1,1 SGZ,0,0 SYP,1,1 WJP,1,1 WXM_188,0,0 WYJ,1,1 WZ,1,1 WQL,1,1 WXM_155,1,1 XGC,1,1 XYH,1,1 YXB,1,1 YCP,1,1 YQX,0,0 ZH,1,1 ZJQ,0,0 ZSC,1,1 ZXY,1,1 ZY,1,1 ZWJ,0,0 ZLF,0,0 ZWF,1,1 ZYQ,1,1 ZQH,0,0 ZJW,1,1 ZYN,0,0 ZLJ,1,1
特别注明:有两位同窗的拼音都是WXM,因此用手机号前3位附在后面以示区别。
调整模型后从新更新了预测数据,最后更新时间:2019.4.1
固然,上面的数据中还能够分析出不少有价值的信息;还可使用更为复杂的模型,来作出更加准确的预测。
从开始有想法到完成整个项目,花了不少时间和精力,毕竟是本人首个完成的实际案例。
在此过程当中要感谢EDP老师、同窗提供了这么好的素材;
感谢QQ群里为我提供帮助的小伙伴们;
还要感谢个人家人和同事,提供了让我完成的时间与环境,谢谢大家!
关于案例仍是有些内容想要补充一下:
模型优化
上面文章中提到,这个模型的准确度只有80%,好象不太准。 还须要对模型进行优化,有几个方向:
对模型的参数进行调整,也就是常说的“调参”
再挖掘数据中更多的特征点;
本文中能够挖掘的特征点还不少,好比:
“上课时间是在一个月的什么时间,上旬中旬仍是下旬?”
“有没有连续不来上课的记录或者是请假的记录?”
“对于外地游学这个课程,重要程度比其它课程高。”
“同一次课程里,次日来上课与第一天有点不一样。”
“在公司是从事哪一个部门,技术、人力仍是销售?”
“所在的公司是哪一个行业,生产型仍是互联网?”
使用不一样的模型来作训练,并作对比;
扩充数据,看看其它班级还有数据加进来,让数据更丰富;
视野
“当你知道的越多,未知的也会越多。”
分析完数据后,能带给咱们什么呢,除了预测结果之外,其实还能够分析训练完的模型。
模型中每一个因素(特征)都有一个对应的系数,表示它对结果的影响程度,有的因素(特征)的系数比较大,属于关键因素(关键特征)。从模型里能够看到,哪一个因素(特征)对结果的影响比较大。
这就为咱们提供了控制结果的可能性,只要控制好这些核心因素,就能对最终的结果产生想要的影响。例如: