美文网首页机器学习与数据挖掘
泰坦尼克号系列(一)——数据初探和初步特征选取

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

作者: 九天朱雀 | 来源:发表于2017-09-21 17:02 被阅读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等舱的人数很少。
我们看一下需要关注的属性的分布情况:



由图能进一步得出的信息是:
  • 获救的人数未达半数;
  • 3等舱的乘客非常多,远超其余2类;
  • 女性约占总人数的1/3;
  • 大多数人未同亲人同行;
  • Fare与Pclass并未成阶梯状分布,fare与Survived的关系有待挖掘;
  • S港口登陆的乘客最多;
相关性分析:

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



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



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

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



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

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



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

数据预处理

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

  • 如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
  • 如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
  • 如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step,然后把它离散化,之后把NaN作为一个type加到属性类目中。
  • 有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
    Age比较符合后面2种情况,从年龄的分布来看,年龄比较符合正态分布,这里我们取年龄的均值进行填充。
    Cabin符合第一种情况,我们先放弃。
    接下来,Sex和Embarked为非数值型数据,我们先转换成int型数据。
    现在,选入的因子都成为数值型的了,但是Age和Fare的幅度有点宽,这个会影响收敛速度。可以用scikit-learn里面的preprocessing模块对这俩属性做一个scaling,将范围锁定到[-1,1]。
    现在,初步的数据处理完了,接下来可以建模了。
    【目录】

相关文章

  • 泰坦尼克号系列目录

    泰坦尼克号系列(一)——数据初探和初步特征选取泰坦尼克号系列(二)——建模和特征工程及其评估

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

    【目录】 问题背景 船沉了,大家惊慌逃生,但是没有足够的救生艇。是否获救并非随机,有些群体比其他人更有可能生存,如...

  • 利用python进行抽样分布描述及实践

    本次选取泰坦尼克号的数据,利用python进行抽样分布描述及实践。备注:数据集的原始数据是泰坦尼克号的数据,本次截...

  • 决策树

    决策树算法 一、特征选取 特征选择在于选取对训练数据具有分类能力的特征。这样可以提高决策树学习的效率。如果利用一个...

  • 读书笔记-sklearn笔记

    本文是该系列读书笔记的第二章数据预处理部分 获取数据 数据的初步分析,数据探索 地理分布 数据特征的相关性 创建新...

  • 泰坦尼克号数据分析以及幸存预测

    泰坦尼克号数据分析 标签: 机器学习深度学习 这个是对kaggle上的泰坦尼克号的数据分析,通过对数据中的各个特征...

  • 【理论篇】决策树算法 - 特征如何切分?

    决策树算法连载的系列文章,小鱼已经为大家介绍了决策树算法的特征选取:即从根节点开始,按照分类能力的强弱选取节点特征...

  • 决策树、随机森林

    用泰坦尼克号事件的数据集练习一下决策树和随机森林的API。 分析数据集信息 先读入数据集,看看有哪些特征: 输出:...

  • 一文了解Zookeeper的Watcher机制

    Zookeeper系列介绍(持续更新) Zookeeper基础初探 一文了解Zookeeper数据节点-znode...

  • Zookeeper实现分布式锁

    Zookeeper系列介绍(持续更新) Zookeeper基础初探 一文了解Zookeeper数据节点-znode...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/jeqtextx.html