介绍
此数据挖掘项目基于阿里云天池赛题:赛题链接
参考github项目进行学习:github项目链接
赛题简介
具体的赛题介绍可去官网查看,这里只简单总结一下。官方提供了2013年7月~2014年8月28041位用户余额宝的申购赎回信息,我们需要通过数据挖掘的手段从这些数据中挖掘出有效信息,并预测2014年9月的每一天申购和赎回的总量。
理解了大概是个什么任务之后,我们的目标就很明确,要尽可能提高预测精度。
数据准备与探索
这是数据挖掘的第一步,我们需要整理好我们的数据,并做一些简单的分析。大概有以下三个步骤:
1. 时间序列图
2. 数据分布可视化
3. 数据的相关性及独立性分析
时间序列图
这个很好理解,通过时间序列图可以很好的看到我们要观察的数据的趋势。
在python中,我们有很好的封装库画出时间序列图。比如,matplotlib,seaborn。而Seaborn其实是在matplotlib的基础上进行了更高级的API封装,使得作图更加的简单,漂亮。因为是时间序列图,有需要的话还可以借助datatime库构造时间戳。
数据分布可视化
主要还是用到上面提到的库。这里简单介绍一下会用到一些的图。除了常见的直方图,密度曲线图之外。还有箱型图,小提琴图。
箱型图
箱型图包含五个要素,分别是上限,上四分位数,中位数,下四分位数,下限。其中上四分位数是指 把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值。同理,那么下四分位数就是处于第一个分割点位置的数值。而第二个分割点显然就是中位数。这三个分割点也可以记做Q1,Q2,Q3。
确定四分位数有两种方法,分别是基于(N+1)的方法, 一种是基于(N-1)的方法。这里举一个用N+1计算四分数的例子:
数据一共有六项: 7, 15, 36, 39, 40, 83。
1*(n+1)/4= 7/4 =1.75,Q1在第一与第二个数字之间,
2*(n+1)/4 = 3.5 Q2在第三个和第四个数字中间,
3*(n+1)/4= 21/4 =5.25, Q3在第五与第六个数字之间,
所以:
Q1 = 0.75 *15+0.25 7 = 13,
Q2 = (36+39)/2= 37.5,
Q3 = 0.2541+0.75 *40 = 40.25.
四分位距IQR=Q3-Q1 = 27.25,
那么上限=Q3+1.5IQR = 81.125
下限 = Q1-1.5IQR = -27.875
那么不在上限与下限之间的数被称之为异常值
最后,总结一下就是,箱型图是是一种显示一组数据分散情况的统计图。
小提琴图
关于小提琴图可以这样简单理解,箱线图展示了分位数的位置,小提琴图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高。
而关于95%置信区间的介绍,这篇回答很不错。95%置信区间的理解
变量间的相关性与独立性分析
首先我们需要了解一下在统计学上有以下几种变量
-
定类变量 Norminal Data 可以分类 ( = 和 ≠ )
-
定序变量 Ordinal Data:可以分类( = 和 ≠ ),可以排序(> 和 <),但不能(+ 和 - )
例如文化程度可以分为大学、高中、初中、小学、文盲 -
定距变量 Interval Data :可以分类( = 和 ≠ ),可以排序(> 和 <),可以(+ 和 - )
注意:定距变量没有绝对零点。例如华氏温度:10,20,30,华氏度40不是20的两倍热
相关性分析
对于不同变量之间的相关性分析有以下方法。
变量的独立性检验
占个坑,之后填。
代码实战
官方提供了五张表,分别是:用户信息表( user_profile_t