最近一直断断续续的做这个泰坦尼克生存预测模型的练习,这个kaggle的竞赛题,网上有很多人都分享过,而且都很成熟,也有些写的非常详细,我主要是在牛人们的基础上,按照数据挖掘流程梳理思路,然后通过练习每一步来熟悉应用python进行数据挖掘的方式。
数据挖掘的一般过程是:数据预览——>数据预处理(缺失值、离散值等)——>变量转换(构造新的衍生变量)——>数据探索(提取特征)——>训练——>调优——>验证
1 数据预览
1.1 head()
预览数据集的前面几条数据可以大致看看每个字段的值究竟长什么样。
1.2 info()
可以看每个字段有多少非空值,字段的类型是什么样的
1.3 describe()
可以大致描述每个整数或者浮点型的数值分布,看最小值,最大值和四分位数,可以大致了解数据的偏移情况。
2.数据预处理
从前面数据预览中发现年龄(age)、船舱号(Cabin)、登岸口(Embarked)有数据的缺失。
登岸口通过后面的数据探索可以发现只有3个值,而且缺失的数量也不大,因此这里填充为众数。
船舱号只有204个有值,一般来说,缺失比例较大的特征可以考虑舍弃,而这里联想到缺失是否表示乘客的票本身就没有船舱号,就像我们买的无座票一样,本身就没有座位号,因此这里先填充为0
年龄字段也存在缺失,一般来说,老弱病残幼是要受到特殊照顾的,因此年龄应该会是一个比较重要的特征,并且因为它是连续值,这里采用算法预测的方式来进行填充。
最后我们来看一下填充后的数据情况
3.数据探索
3.1 各个字段值的分布情况
先看代码:
以上是画布相关设置
subplots_adjust()是用来调整画布内子图的间隔大小的。
以上是在画布相应位置画各个子图的代码。图形如下:
3.2 探索各字段与是否生存的关系,寻找对模型有用的特征
3.2.1 不同乘客等级与是否生存的关系
舱位越高级的,生存的比例越大。3等舱里面未获救的比例明显增大。说明舱位与是否生存有关系。
3.2.2 性别与是否生存的关系
从数据上看,获救的女性比例很高,电影里面也说了女士优先,因此性别与是否生存也有较大关系。
3.2.3 年龄与是否生存的关系
首先看一下年龄的分布情况和值的离散情况
从图中可以发现大部分都是集中在20-50岁之间的,从箱线图看平均年龄接近30岁。
因为年龄是连续值,因此我们考虑把年龄分段后,进行分段统计展示看年龄与是否生存的关系。
从数据上年纪小的生存的几率要大些。不同年龄段的生存率明显有差别,说明年龄与是否生存是有关系的。
3.2.4 有无兄弟姐妹与是否生存的关系
从数据上看兄弟姐妹在1-2个的生存率最高
3.2.5是否有父母子女与是否生存的关系
数据显示父母子女个数在1-3个的生存率最高,个数越多反倒生存率下降。
3.2.6 港口与是否生存的关系
数据显示有港口的生存率明显高很多。可能是船中间有停靠到一些港口,有部分乘客下船了。
本文参考:大树先生的博客
原文地址:https://www.cnblogs.com/gangandimami/p/9086022.html