Advertisement

泰坦尼克号数据集_用Python分析泰坦尼克号生存概率

阅读量:

一、提出问题(Business Understanding )

1912年4月15日,泰坦尼克号在与冰山相撞之后,沉没于北大西洋。船上的2224名船员及乘客中,只有772人存活了下来,存活率只有32%。

泰坦尼克号沉没事故,为和平时期死伤人数最为惨重的一次海难。泰坦尼克号也变成了隐喻灾难性事故的象征符号,从此警醒世人。

那么,究竟什么样的人在这次事故中相对容易存活?这便是本次分析要处理的问题。

本次分析旨在:利用kaggle网站Titanic项目的数据集,建构一个机器学习的算法模型,以预测特定属性的人的存活概率。

二、理解数据(Data Understanding)

2.1采集数据

数据集来源于kaggle网站Titanic项目。
8497789bc42e9b80a7dc2fe83fbdaa6b.png
3bcf92ebb232f82223e857334368a3fe.png

本次分析使用两个数据集:train.csv,test.csv。

2.2导入数据

为了方便之后的数据清洗,将两个导入的数据集进行合并。
5f5064a88a23cb1949f268690faec985.png

2.3查看数据集信息

1)合并数据集
47acb741731cde8abe15e26490a85afb.png

train.csv比test.csv集多了一个变量Survived,因此合并数据集(full)有418行数据在该维度下是空值。

合并数据集(full)共计12个变量,其含义见下表:
836bd089655bc91e81bedf3e4fd5315d.png

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

发现年龄行数较少、船票价格最小值为零两个异常值。

推测这两个变量存在着空值,后续需要清洗。

3)查看合并数据集的变量类型和缺失值
72276a129e2ca1df2968e4cc22f02fdf.png

变量类型总共三类:
3d05e4aaa1b812e94e9607d3d8e59d33.png

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

了解了数据类型和缺失值信息之后,就为下一步数据清洗指明了方向。

三、数据清洗(Data Preparation )

3.1数据预处理

1)对于数字类型(浮点型和整数型),用平均值来填充缺失值。
29f0cbc98bf71063422dc1069027d548.png

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

3.2特征工程(Feature Engineering)

特征工程就是最大限度地从原始数据中提取能表征原始数据的特征,以供机器学习算法和模型使用。

其过程分为三个步骤:特征提取,特征选择,特征降维。

本次分析只需用到前两个步骤即可。

3.2.1特征提取

对于不同数据类型的特征提取方法不同。
3f324c2f7176e11a554950a23ec9b19a.png

其中,明显的分类变量有:Sex、Embarked、Pclass,不明显的分类变量有:Name、Cabin、Ticket。

1)性别(Sex)

性别是一个二分变量。
7a51ffdc89e02cb8243e51f2553c4ee1.png

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

2)登船港口(Embarked)

登录港口是一个三分变量。
b83fc43aefc9cb7095a7a81a0bba7bdf.png

其中,S=英国南安普顿Southampton,C=法国瑟堡市Cherbourg,Q=爱尔兰昆士敦Queenstown。

定义一个数据框以存放数据,运用get_dummies函数,把登船港口生成三个虚拟变量:Embarked_C、 Embarked_Q、Embarked_S。
8b4e0131732fc7e8d51cfe7780b99983.png

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

3)客舱等级(Pclass)

客舱等级是一个三分变量。

其中,1=1等舱,2=2等舱,3=3等舱。

对客舱等级,进行同登船港口的操作。
b8ec79f2a92973a58d6ee587dab67031.png
05ce135b277e7d6b4e205cd8ac5c7bec.png

4)姓名(Name)

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

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

统计头衔类型和频数。
9f6284ad3be0c75818173dce0bcf0c53.png

可以用更为简洁的六分法来简化乘客的身份:政府官员(Officer),皇室成员(Royalty),专家(Master),已婚男士(Mr),已婚女士(Mrs),未婚女士(Miss)。

定义一个字典,然后运用map函数应用字典,简化数据集的头衔。
589e616904b15eecb9ae3807272c1048.png

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

5)客舱号(Cabin)

客舱号以首字母来进行分类。
1ff91c2594325e17ee51c86ee7d359dd.png

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

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

6)船票编号(Ticket)

之前已经用船舱等级和头衔对数据集进行了处理,这里船票编号不需要再做处理。

3.3.2 特征选择

至此,获得了一个1309行,29列的新数据框。
076a9dd264b6f91babdfb1114733b8be.png

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

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

于是发现,与Survived中等相关(r>0.3)的变量有5个:头衔,性别,客舱等级,客舱号,船票价格。

选择这5个变量,生成新数据集full_X。
bfea02a0e7fe9cb67453a66429479829.png

四、构建模型(Modeling)

4.1数据集分割

1)把新数据集full_X分割为原始数据集和预测数据集
0b782e5d139a7c446736b2705bf36e61.png

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

4.2 选择算法,训练模型

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

五、模型评估(Evaluation)

使用score函数,导入测试数据集,获得模型准确率。
2988edd4f38cf6fcd91953dc79205901.png

可知,模型准确率为80.0%。

六、方案实施 (Deployment)

使用机器学习模型,对预测数据集中的存活率进行预测。
02a10d33efa184aa38f7e83702230bbc.png

比如按性别进行预测。
8708ec8d6121e78063afd8d3c2d97f03.png

七、绘图 (Drawing)

1)不同性别的存活率
a700173b26f9700f99954ed869f6f914.png
d670fe8d16eb12506616ecf83644a3d3.png
c2a908dbd34283cfc72c0f6e7b012d6d.png
6ac7871a7ace21a78920ff5eff31ae30.png

由图可知:女性存活率高达74%,男性存活率仅率为19%。

2)不同头衔的存活率
9c3c9b6b7171075e8cd21cc6eb4debb1.png
a9dd10cc3a57c063850dce697c8b06db.png
4061fe2cfcdc5578137914d9ca3d6697.png
8bb71ae3d797a6959b4acf50fe3eaad8.png

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

3)不同客舱等级的存活率
7fdac20e1c396dc1021256693ccbffc8.png
1276cc6c8863a0725744256c96f6f26b.png
edcfc8f42dcc44003e22209503643fdc.png
f106b529e6b1d8a454d716fafc40a9f1.png

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

全部评论 (0)

还没有任何评论哟~