机器学习与数据挖掘

泰坦尼克号系列(一)——数据初探和初步特征选取

2017-09-21  本文已影响195人  九天朱雀

【目录】

问题背景

船沉了,大家惊慌逃生,但是没有足够的救生艇。是否获救并非随机,有些群体比其他人更有可能生存,如妇女、儿童和上层阶级等等。

数据集是乘客的个人信息以及存活状况,根据已有数据集生成模型预测其他人的存活情况。

该问题是一个二分类问题。

数据概览

pandas中的dataframe类可以比较方便的处理.csv 文件,读入train.csv中的数据如下:



先来看看训练集的一些基本情况:



由上面的数据可以看出训练集中一共含有891位乘客,12列属性中年龄(714项)和客舱(204项)数据有缺省项。
属性分析:

下面结合实际情况,分析一下12个属性。
PassengerId:乘客Id,这个和Survived基本没什么关系。
Survived:0代表没有获救,1代表获救。
Pclass:1,2,3分别代表仓位等级;根据背景,头等舱可能会获得更多的救援资源,优先安排救援,要重点关注。
Name:姓名,这个关联度不是很强,可以放一放做备选。
Sex:根据情景,可能会优先救援女性,这个需要关注一下。
Age:一般来说会先安排小孩和老人,青壮年的逃生概率会比较大,这个要看下具体情况,需要关注下。
SibSp:兄妹妻子等的个数,这个看起来是个对获救有益的因子,互帮互助的话可能成功率更高,可以关注下。
Parch:老人孩子的个数,如果有老人和小孩,要先安排老人和小孩,然后才是自己,看起来是个负相关因子,需要关注一下。
Ticket:船票号,这个没有发现明显的规律,暂时先放一放。
Fare:票价,和Pclass可能有对应关系,可以关注下。
Cabin:仓位,这个是个地理位置特征,和获救有一定的关系,但是无法结合具体的仓位分布图,不确定离甲板的距离,而且缺失项较多,这个前面可以先放一放,优化的时候再做其他处理。
Embarked:港口,这个可能和获救有关系,可以关注下。

数值型属性一览:

下面看看数值型数据的基本分布情况:



由mean字段可以知道,大约38%的人获救了;结合分位数,船上人员年龄集中在20-40之间,平均年龄约30岁,pclass的1/4分位数是2,说明买1等舱的人数很少。
我们看一下需要关注的属性的分布情况:



由图能进一步得出的信息是:
相关性分析:

进一步,我们看一下各属性与Survived之间的相关性:



Pclass:可以看到1等舱和2等舱的存活率明显高于3等舱,说明存活率和舱位等级还是有关系的,这个可以作为因子。



Sex:女性的存活率要远高于男性,Sex也是一个因子。

Age:年龄这个属性和存活率的相关性不是特别明显,但是真的不是优先照顾老人和小孩吗?这个属性先放一放,后面优化的时候再挖掘。



SibSp:由图得知,在3和4的这个位置存活率较高,是不是越多存活率越高,这里不太确定,后面再挖掘,这个属性可以作为一个备用因子。

Parch:这个图可以看到存活率随父母小孩数量增加在增加,至于是不是越多越好这个图看不出来,这个关系放到后面挖掘,这个属性可以作为一个备用因子
票价竟然没有显著作用,fare这个属性我们先放一放。
cabin这个属性缺失项比较多,我们暂时先放弃。



C港口的存活率最高,Embarked属性可以作为一个因子。

数据预处理

训练集中,Age和Cabin是有缺失的。
通常遇到缺值的情况,我们会有几种常见的处理方式:

上一篇下一篇

猜你喜欢

热点阅读