泰坦尼克号数据集_用Python分析泰坦尼克号生存概率
一、提出问题(Business Understanding )
1912年4月15日,泰坦尼克号在与冰山相撞之后,沉没于北大西洋。船上的2224名船员及乘客中,只有772人存活了下来,存活率只有32%。
泰坦尼克号沉没事故,为和平时期死伤人数最为惨重的一次海难。泰坦尼克号也变成了隐喻灾难性事故的象征符号,从此警醒世人。
那么,究竟什么样的人在这次事故中相对容易存活?这便是本次分析要处理的问题。
本次分析旨在:利用kaggle网站Titanic项目的数据集,建构一个机器学习的算法模型,以预测特定属性的人的存活概率。
二、理解数据(Data Understanding)
2.1采集数据
数据集来源于kaggle网站Titanic项目。


本次分析使用两个数据集:train.csv,test.csv。
2.2导入数据
为了方便之后的数据清洗,将两个导入的数据集进行合并。

2.3查看数据集信息
1)合并数据集

train.csv比test.csv集多了一个变量Survived,因此合并数据集(full)有418行数据在该维度下是空值。
合并数据集(full)共计12个变量,其含义见下表:

2)查看合并数据集的描述统计信息

发现年龄行数较少、船票价格最小值为零两个异常值。
推测这两个变量存在着空值,后续需要清洗。
3)查看合并数据集的变量类型和缺失值

变量类型总共三类:

数据集总共1309行,有缺失值的变量总共四种(Survived是标签,不属于缺失值范围):

了解了数据类型和缺失值信息之后,就为下一步数据清洗指明了方向。
三、数据清洗(Data Preparation )
3.1数据预处理
1)对于数字类型(浮点型和整数型),用平均值来填充缺失值。

2)对于字符串类型,用众数来填充缺失值。其中,船舱号(Cabin)缺失值较多,将其填充为U,表示未知(Unknow)。

3.2特征工程(Feature Engineering)
特征工程就是最大限度地从原始数据中提取能表征原始数据的特征,以供机器学习算法和模型使用。
其过程分为三个步骤:特征提取,特征选择,特征降维。
本次分析只需用到前两个步骤即可。
3.2.1特征提取
对于不同数据类型的特征提取方法不同。

其中,明显的分类变量有:Sex、Embarked、Pclass,不明显的分类变量有:Name、Cabin、Ticket。
1)性别(Sex)
性别是一个二分变量。

定义一个字典,将性别值映射为数值,male对应数值1,female对应数值0。然后运用map函数应用字典,更改数据集的性别值。

2)登船港口(Embarked)
登录港口是一个三分变量。

其中,S=英国南安普顿Southampton,C=法国瑟堡市Cherbourg,Q=爱尔兰昆士敦Queenstown。
定义一个数据框以存放数据,运用get_dummies函数,把登船港口生成三个虚拟变量:Embarked_C、 Embarked_Q、Embarked_S。

把三个虚拟变量构成的数据框添加到合并数据集,删掉合并数据集中的登船港口变量。

3)客舱等级(Pclass)
客舱等级是一个三分变量。
其中,1=1等舱,2=2等舱,3=3等舱。
对客舱等级,进行同登船港口的操作。


4)姓名(Name)
姓名中的头衔十分有用,将这部分信息提取出来可以作为一个新变量,以帮助预测。

定义一个函数,只截取姓名中的头衔部分;定义一个数据框以存放数据,运用map函数应用自定义函数,把姓名更改为头衔。

统计头衔类型和频数。

可以用更为简洁的六分法来简化乘客的身份:政府官员(Officer),皇室成员(Royalty),专家(Master),已婚男士(Mr),已婚女士(Mrs),未婚女士(Miss)。
定义一个字典,然后运用map函数应用字典,简化数据集的头衔。

把6个虚拟变量构成的数据框添加到合并数据集,删掉合并数据集中的姓名变量。

5)客舱号(Cabin)
客舱号以首字母来进行分类。

用匿名函数lambda截取客舱号的首字母,然后生成一个具有9个虚拟变量的数据框。

把9个虚拟变量构成的数据框添加到合并数据集,删掉合并数据集中的姓名变量。

6)船票编号(Ticket)
之前已经用船舱等级和头衔对数据集进行了处理,这里船票编号不需要再做处理。
3.3.2 特征选择
至此,获得了一个1309行,29列的新数据框。

用corr函数获取所有变量的相关性矩阵。

查看各个变量与Survived的相关系数,并按降序排列。


于是发现,与Survived中等相关(r>0.3)的变量有5个:头衔,性别,客舱等级,客舱号,船票价格。
选择这5个变量,生成新数据集full_X。

四、构建模型(Modeling)
4.1数据集分割
1)把新数据集full_X分割为原始数据集和预测数据集

2)把原始数据集分割为训练数据集和测试数据集

4.2 选择算法,训练模型
选择逻辑回归(logisic regression)算法,导入训练数据集,训练模型。

五、模型评估(Evaluation)
使用score函数,导入测试数据集,获得模型准确率。

可知,模型准确率为80.0%。
六、方案实施 (Deployment)
使用机器学习模型,对预测数据集中的存活率进行预测。

比如按性别进行预测。

七、绘图 (Drawing)
1)不同性别的存活率




由图可知:女性存活率高达74%,男性存活率仅率为19%。
2)不同头衔的存活率




由图可知:已婚男士和政府官员的存活率都小于30%;女士,不论婚姻与否,存活率都在70%以上;皇室和专家的存活率都在60%左右。
3)不同客舱等级的存活率




由图可知:一二三等舱的存活率依次为:63%,47%,24%。
