数据挖掘流程示例 - 泰坦尼克号

Kaggle上面有一个经典的入门题目,泰坦尼克号乘客的生存预测。此文针对这个题目,演示数据挖掘的一些基本方法。

题目描述

灾难发生的时候,由于救生艇有限,所以2224位乘客中只有722位获救。虽然有运气成分,但是某些群体的人获救的概率更大,比如女士,小孩等。题目要求研究哪类人群更容易获救,并且对乘客是否获救做出预测。

数据预处理

数据不可能是完美的,在分析之前,我们需要进行一些预处理。

总共有两份数据,分别是是训练集train.csv和测试集test.csv。

首先导入数据,看一下数据的结构。

训练集


数据挖掘流程示例 - 泰坦尼克号_第1张图片

测试集


数据挖掘流程示例 - 泰坦尼克号_第2张图片

可以看到,总共有11个属性字段,和一个预测字段Survived。
11个属性字段和对应的意义如下:

PassengerId => 乘客ID
Pclass => 舱位等级
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱编号
Embarked => 登船港口

根据常识推断,乘客ID,乘客姓名,船票信息没有太大作用,所以不加考虑,直接删掉。
所以还剩下8个字段。我们再来看下这8个字段的基本信息。

Survived    891 non-null int64
Pclass      891 non-null int64
Sex         891 non-null object
Age         714 non-null float64
SibSp       891 non-null int64
Parch       891 non-null int64
Fare        891 non-null float64
Cabin       204 non-null object
Embarked    889 non-null object

发现Cabin(客舱编号)属性只有204个值,剩下的大量是空值,所以此字段意义有限,也删掉。

另外,SibSp(堂兄弟/妹个数)和Parch(父母与小孩个数)这两个字段,意义非常相近,都可以看作是亲属。我们可以添加一个新字段Family,代表是否有亲属。SibSp和Parch属性删掉。

之所以不用亲属个数作为属性值,是因为1个亲属和6个亲属差别可能没有那么大,所以直接使用是否有亲属,误差可能会小一些。

单属性分析

现在只剩6个属性了。下面我们要对这6个属性分别进行分析。
这六个属性为

Pclass => 舱位等级
Sex => 性别
Age => 年龄
Family => 是否有亲属
Ticket => 船票信息
Fare => 票价
Embarked => 登船港口

客舱等级

可以猜测,舱位等级高的,条件好一些,生存概率应该高一些。我们看下是否如此。

数据挖掘流程示例 - 泰坦尼克号_第3张图片

从图上可以看到,1级客舱的获救概率明显更大,3级客舱获救的概率很小,说明舱位等级是有影响的。

性别

再次猜测,由于女士优先,女性的生还概率更高。看下具体分析。

数据挖掘流程示例 - 泰坦尼克号_第4张图片

可以看到,女性的获救比例远大于男性。证明了确实有“女士优先”的情况存在。

年龄

再来看一下年龄。年龄和前面的属性不一样,有很多年龄,不能用条形图,需要用直方图。也就是绘制每个年龄区间的数量。

数据挖掘流程示例 - 泰坦尼克号_第5张图片

可以看到,获救概率呈现两边高,中间低的态势,说明小孩和年纪较大的人受到照顾,更容易获救。

你可能感兴趣的:(数据挖掘流程示例 - 泰坦尼克号)