# 泰坦尼克号:从灾难中学习机器
## 1.任务背景
### 1.赛题任务
泰坦尼克号的沉没是历史上最为声名狼藉的沉船事件之一。1912 年 4 月 15 日,被广泛认为是“永不沉没的”泰坦尼克号在处女航中与冰山相撞后沉没。不幸的是,船上没有足够的救生艇,导致 2224 名乘
客和船员中有 1502 人死亡。虽然生存需要一些运气因素,但似乎有些人群比其他人更有可能生存下来。在这个挑战中,我们要求您建立一个预测模型来回答这个问题:“什么类型的人更有可能生存?”使用乘客数据(如姓名、年龄、性别、社会经济阶层等)。
### 2.赛题数据
在此任务中数据被分为两组:
(1)训练数据将提供:
Survival: 人员是否存活(0,1)
Pclass: 船票等级(1,2,3)
Sex: 性别(male,female)
Age: 年龄
Sibsp: 兄弟姐妹/配偶数
Parch: 父母孩子数
Ticket: 门票号码
Fare: 乘客收费
Cabin: 仓位号码
Embarked: 启程港(C,Q,S)
(2)测试数据将提供:
Pclass: 船票等级(1,2,3)
Sex: 性别(male,female)
Age: 年龄
Sibsp: 兄弟姐妹/配偶数
Parch: 父母孩子数
Ticket: 门票号码
Fare: 乘客收费
Cabin: 仓位号码
Embarked: 启程港(C,Q,S)
## 2.数据分析与处理
### 1.数据预处理
我们先将训练数据集与测试数据集通过 python 的 pandas 进行了数据的导入并且将训练集与测试集进行了合并。之后对各个数据字段进行了缺失值的统计。结果如下:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/4e5f6330514c0b48cbd2cf8cbd45fed4.writebug)
图 1
我们发现对于船舱位置(cabin)和年龄(age)特性的缺失值比较多。为了进一步研究各个特征对于乘客是否生存的影响,此处先进行了简单的平均值填充缺失值的方法将各个字段进行了缺失值处理。当然,这并不是我们最终对缺失值的处理,此处进行简单的缺失值填充是为了方便我们进一步对数据进行分析。处理后缺失情况如下:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/7078d2da5e749270c47453b53482ba4a.writebug)
图 2
### 2.数据分析
在对数据进行了简单的预处理以后,现在的数据已经比较完整了。这方便了我们对数据做一些简单的可视化显示。所以,我们将各个特征值与生存的关系进行了简单的数据可视化。如下:![](https://www.writebug.com/myres/static/uploads/2021/10/31/568a47f14612df939d3aa12d35ecd6f4.writebug)
图 3
先总体来看的话,我们明显发现船票(ticket)和船舱位置(cabin)两个字段的特征并不明显,导致其与乘客是否存活的关联性并不能够明显看出。之后,我们再来仔细地分析每一个特征对乘客是否生存的影响程度。
对于船票等级(pclass),我们对该特征进行了进一步的可视化。如图 4 所示:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/dc01ab96392a0a9063cd8ddf5f3cc031.writebug)
图 4
我们先分别对 pclass 为 1,2,3 的等级的中乘客的存活人数做了统计并可视化显示,另外还对该特征与存活率之间的关系做了具体显示。从图中我们不难发现对于船舱等级为 1 的乘客,我们发现其中存活的乘客甚至比死亡的乘客要多。在通过观察船舱等级为 1 的乘客的存活率,发现其存活率高达 60% 以上。所以我们猜测船舱等级数越小乘客的船舱应该是越好,越高级,导致其存活率会比较高。为了验证我们的猜想,我们继续分析了船舱等级为 2 和 3 的乘客的存活情况,先做内部比较发现,等级为 2 的乘客的存活于死亡大致持平,死亡略高于存活人数,存活率大概也在 48% 左右。而再观察等级为 3 的乘客,发现死亡人数是存活人数的三倍多,而存活率也是低到了 28% 左右。所以,我们不难总结出,船舱等级越高的乘客(数越小),越容易存活,而船舱等级比较低的乘客不易存活。这可以证明 pclass 特征对乘客是否生存的影响是巨大的,所以这是我们不可忽视的特征。
接着,我们又对性别(sex)特征进行了分析。同 pclass 特征的处理方式,这里我们也是对数据进行了具体的可视化显示(如图 5):
![](https://www.writebug.com/myres/static/uploads/2021/10/31/65251baf569380259e3999d895194ea9.writebug)
图 5
为了避免男性和女性数据量的差异,所以我们对数据中的男女数量做了一个简单的统计。我们发现男性人数大概是女性人数的两倍,男性人数在 600 左右,而女性人数在 300 左右。再观察男性乘客与女性乘客的存活率,我们发现女性乘客虽然人数少,但是女性的存活率是男性的三倍多,所以我们可以确定性别对乘客存活情况的影响很大。这也是我们需要重视的数据,会对我们的预测结果产生很大的影响。
之后,我们又对船票价格(fare)进行了具体的分析。并做了进一步的可视化分析。如图 6 所示:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/78f658232f887e56f84e18e4a9e11105.writebug)
图 6
我们发现乘客的船票的价格分布大概在 30 左右,说明大部分人的船票价格偏低,而只有少一部分人的船票价格比较高。为了方便做数据的分析,我们又将船票价格从最低到最高进行了 4 等分,做了简单的分类,分成 low,mid,high,veryhigh 四类来代表船票价格等级。我们可以从图中发现,船票高的乘客的存活率会高,而且船票价格由低到高,乘客的存活率也是逐渐增长的。这证明了船票价格对乘客是否存活的影响程度很大,所以这一特征会对我们有所帮助。
我们对年龄(age)特征也进行了类似的相关分析与数据可视化。但考虑到年龄的数据缺失值比较多,而我们又是采取的平均值填充的方法去做的预处理,所以参考的价值相对前几个特性应该不是那么的大。具体数据可视化如图 7 所示:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/392526a6836815a9843ab5634a462b51.writebug)
图 7
左边的图描述了乘客年龄的分布,右边的图描述了年龄与存活率的关系。我们发现乘客中的中年人比较多,而存活情况是年幼的孩子存活率比较高,超过了死亡率,而 30 岁左右的中年人存活率很低,60 岁以上的老人存活率也不是很高。该特征值也会在之后的预测中产生一定的影响。然后,我们又对港口号(Embarked)进行了数据的分析和可视化的展示,如图 8:
![](https://www.writebug.com/myres/static/uploads/2021/10/31/9d8f0f105e1677b983cddef78e17866b.writebug)
图 8
我们发现 s 港口的人数比较多,C 和 Q 港口的人数比较少。再通过观察各个港口的乘客的存活情况,我们发现,各个港口的存活情况差距也巨大。从 s 港等船的人最多,但是存活率却是最低的,而从 Q 港登船的人虽然最少,但是存活率也不是很高,明显低于 50%。反而是登船人数居中的 C 港的存活情况比较乐观,存活人数大于死亡人数,存活率在 50% 以上。这使得我们对该特征与乘客存活的联系产生了很大的疑惑。因为只从港口号和乘客生存率来看,我们并不能得出什么结论。考虑到实际情况中,登船港口与地理位置有关系,而地理位置往往决定着一个人的职位与阶级,所以我们猜测港口号可能受到了其他特征的影响,然后我们又猜测应该是船舱等级(pclass)特征对港口号产生了一定程度的影响。于是,我们又分析了从各个港口登船的人的船舱等级分布。如图 9 所示:
![](https://www.writebug.com/myres/stat
神仙别闹
- 粉丝: 3819
- 资源: 7471
最新资源
- 基于Kotlin语言的Android开发工具类集合源码
- 零延迟 DirectX 11 扩展实用程序.zip
- 基于Java的语音识别系统设计源码
- 基于Java和HTML的yang_home766个人主页设计源码
- 基于Java与前端技术的全国实时疫情信息网站设计源码
- 基于鸿蒙系统的HarmonyHttpClient设计源码,纯Java实现类似OkHttp的HttpNet框架与优雅的Retrofit注解解析
- 基于HTML和JavaScript的廖振宇图书馆前端设计源码
- 基于Java的Android开发工具集合源码
- 通过 DirectX 12 Hook (kiero) 实现通用 ImGui.zip
- 基于Java开发的YY网盘个人网盘设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈