1.问题描述

RMS泰坦尼克号的沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震撼了国际社会,并导致了更好的船舶安全条例。

海难导致生命损失的原因之一是没有足够的救生艇给乘客和机组人员。虽然幸存下来的运气有一些因素,但一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。

在这个挑战中,我们要求你完成对哪些人可能生存的分析。特别是,我们要求您运用机器学习的工具来预测哪些乘客幸免于难。

2.数据集描述

题目提供的训练数据集包含11个特征,分别是:

Survived:0代表死亡,1代表存活

Pclass:乘客所持票类,有三种值(1,2,3)

Name:乘客姓名

Sex:乘客性别

Age:乘客年龄(有缺失)

SibSp:乘客兄弟姐妹/配偶的个数(整数值)

Parch:乘客父母/孩子的个数(整数值)

Ticket:票号(字符串)

Fare:乘客所持票的价格(浮点数,0-500不等)

Cabin:乘客所在船舱(有缺失)

Embark:乘客登船港口:S、C、Q(有缺失)

3.数据可视化和预处理

对于提供的数据集,首先进行可视化处理,判断哪些特征跟存活的相关性大。

Pclass:

Pclass=1                 Pclass=2                    Pclass=3

从上图可以分析出,第3类票的乘客死亡率最高,其次是第二类票的乘客。所以,Pclass也是与存活具有相关性

Name:

从主观层次出发,名字与存活率没有联系,将其舍弃。

Sex:

男性                                            女性

可以看出男性的死亡率显著高于女性的死亡率,性别这一特征跟存活存在相关性。

Age:

有年龄特征                            无年龄特征

在数据集年龄特征中,存在不少的缺失项,需要考虑是否将缺失项作为特征值的一种还是将其用其他值进行填补。从上面两图可以看出,对于没有年龄特征记录的乘客死亡率比有年龄特征记录的乘客死亡率更高,所以可以将无年龄特征也视作为一项特征值进行处理。

对有年龄特征记录的数据,我们还可以根据数值进行进一步划分:

由于年龄数值过多,首先按照国际对年龄划分的标准,将年龄分为三类:未成年人(0-17),青年人(18-65),中年人(66-)。各年龄段生存和死亡人数如下图所示:

由上图可以看出,成年人人数最多且其死亡率超过50%,中年人虽然人数少,但其死亡率接近90%。所以,不同的年龄段存在不同的死亡率。

SibSp:

从上图可以看出,大部分乘客SibSp的个数为0(即1人乘船)。此外,能看出0的死亡率较高,1和2的死亡率都在50%附近,其余的乘客死亡率很高。为了简化数据,对于SibSp特征,将其分成3类:I类(0),II类(1,2),III(其余)。

Parch:

从上图可以看出,大部分乘客Parch的个数为0。再看死亡人数与存活人数的比较,Parch为0的乘客死亡率远高于其他,当Parch=1或2时,死亡率将近50%,当Parch>=3时,数据量太小不能直观的判断死亡率,只好把它们全归为一类进行判断。所以,将Parch特征分为3类:I类(0),II类(1,2),III(其余)。

Tciket:

光从Ticket提取不出有用信息,将此类特征舍弃。

Fare:

由于票价数据是数值型,不同值数目过多,将其全部一一显示不方便,先硬性规定将票价归为4类:0-10为第一类,10-50为第二类,50-100为第三类,100-为第四类。上图所示就是四类票对应乘客的生还人数和死亡人数。我们可以得出的结论是:票价越高,生存的几率也就越大。

在预测数据集当中有Fare数据缺失的项,由上图可知购买第二类票的人最多,所以缺失项是属于第二类票的概率最大。

Cabin:

有船舱记录的乘客             无船舱记录的乘客

船舱数据的丢失也很严重,先将无船舱记录也作为一项特征值进行可视化,结果如上图所示。可以发现,有船舱记录的乘客死亡率明显低于无船舱记录的乘客死亡率,说明能将船舱记录为空作为一项特征值进行处理。

Embark:

S港                           C港                              Q港

对不同港口上船的乘客进行统计,其中在S港和Q港上船的乘客死亡率比在C港上船的乘客死亡率高,也能说明登船港口与生存具有相关性。

在预测数据集中,有的数据项缺失Embark,本文根据登船人数最多的港口进行填充:

各港口登船人数占比

由图可知,在S港登船的人数最多,缺失项为S的概率最大。

4.建立模型及其基本原理

采用三种预测模型(决策树、Adaboost、SVM)进行混合来求得预测结果。

先介绍三种模型的基本原理。

决策树:

决策树中采取CART算法,属于最小二乘回归树生成算法。

算法实现步骤:

1)计算现有样本D的基尼指数,之后利用样本中每一个特征A,及A的每一个可能取值a,根据A>=a与A<a将样本分为两部分,并计算Gini(D,A)值

2)找出对应基尼指数最小Gini(D,A)的最优切分特征及取值,并判断是否切分停止条件,否,则输出最优切分点

3)递归调用1)2)

4)生成CART决策树

基尼系数:

在分类问题中,假设有K类,样本点属于第k类的概率为pk,则概率分布的基尼指数定义为:

Gini(p)=∑Kk=1pk(1−pk)=(p1+p2+...+pK)−∑Kk=1p2k=1−∑Kk=1p2k

对于分类问题:设Ck为D中属于第k类的样本子集,则基尼指数为:

Gini(D)=1−∑Kk=1(|Ck||D|)2

设条件A将样本D切分为D1和D2两个数据子集,则在条件A下的样本D的基尼指数为:

Gini(D,A)=|D1|DGini(D1)+|D2|DGini(D2)

基尼指数也表示样本的不确定性,基尼指数值越大,样本集合的不确定性越大。

参考:https://blog.csdn.net/LY_ysys629/article/details/72809129

Adaboost:

Adaboost是将不同的分类器组合在一起将测试数据集进行分类的方法,分类的结果是基于所有分类器的加权求和结果的,所以分类器的权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

AdaBoost的流程如下:

首先需要给训练数据中的每个样本都要赋予一个权重,这些权重构成了向量D,在算法的最开始,D向量中每个值都是相等的。再通过训练数据训练出分类器,但此时的分类器是弱分类器,不会满足我们的需求,这里可以得到每个分类器的错误率。根据第一次得到的错误率,我们可以更新每一个样本的权重,第一次分对的样本的权重会降低,分错的样本的权重会提高。Adaboost算法也给了每个分类器分配了权重alpha,alpha值的更新也是根据错误率进行计算。

错误率:

分类器权重alpha:

正确分类的样本权重:

错误分类的样本权重:

SVM:

支持向量机是一种分类方法,对已有数据集进行多个超平面的划分,将数据分为几类。

参考:https://blog.csdn.net/taichitaichi/article/details/80377900

以上3种模型分别对预测数据集进行预测,得到三份预测结果,之后采取比较数目的方法来确定每一项的预测结果。每一项的最终预测结果是符合三份预测结果里预测结果数目最多的预测结果。

下表所示的情况就是3个正确率为70%的结果来一致判别得到最终结果的最佳情况(其中1代表预测正确,0代表预测错误)

5.最终结果

上图是只用CART决策树得出来的最佳结果,将三种模型的结果一齐进行比较得出的结果反而更差,没有预想中的提升。

分析原因如下:

1.三个模型各自的正确率为:70%(决策树),60%(SVM),50%(Adaboost),在进行多数判断时,可能会比单个判断错的更多。

2.在数据预处理中,既删除了部分数据,又用标签简化了一些数据,造成数据信息量的丢失

kaggle——泰坦尼克数据集相关推荐

  1. 《scikit-learn》《Kaggle》泰坦尼克数据集的试验

    下载泰坦尼克数据集,下载地址是:https://www.kaggle.com/c/titanic 这里如果是第一次使用kaggle的话,需要注册,注册时候有一些验证码的问题,可以参考https://w ...

  2. 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)

    泰坦尼克数据集预测分析 Imagine your group of friends have decided to spend the vacations by travelling to an am ...

  3. Titanic 泰坦尼克数据集 特征工程 机器学习建模

    以下内容为讲课时使用到的泰坦尼克数据集分析.建模过程,整体比较完整,分享出来,希望能帮助大家.部分内容由于版本问题,可能无法顺利运行. Table of Contents 1  经典又有趣的Titan ...

  4. kaggle 泰坦尼克 高分 预测

    kaggle 泰坦尼克 高分 预测 目录 kaggle 泰坦尼克 高分 预测 1.前言 2.包及数据导入 3.数据的初步认识 4.数据关系的可视化 5.数据清洗与缺失值处理 6.数据的统计分析 7.超 ...

  5. Dataset:titanic泰坦尼克号数据集/泰坦尼克数据集(是否获救二分类预测)的简介、下载、案例应用之详细攻略

    Dataset:titanic泰坦尼克号数据集/泰坦尼克数据集(是否获救二分类预测)的简介.下载.案例应用之详细攻略 目录 titanic(泰坦尼克号)数据集的简介 1.titanic数据集各字段描述 ...

  6. 泰坦尼克数据集预测分析_探索性数据分析-泰坦尼克号数据集案例研究(第二部分)

    泰坦尼克数据集预测分析 Data is simply useless until you don't know what it's trying to tell you. 除非您不知道数据在试图告诉您 ...

  7. 泰坦尼克 数据集_数据分析(一):11招入门数据分析

    作者:奔跑的鳄鱼 阅读本文大概需要3分钟 用Python来玩转数据分析实在是太爽了,因为有强大的Pandas来处理数据非常方便,我个人对数据分析情有独钟,探索数据的秘密非常好玩!前段时间写过一篇小白学 ...

  8. Kaggle泰坦尼克数据科学解决方案

    Kaggle泰坦尼克数据科学解决方案 参考文章: (1)Kaggle泰坦尼克数据科学解决方案 (2)https://www.cnblogs.com/zackstang/p/8185531.html ( ...

  9. 数据分析入门 | kaggle泰坦尼克任务

    这个章节主要是参加DataWhale的数据分析项目过程中的记录,希望能对感兴趣的同学有一些帮助. 目录索引 一.章节导航 二.其他集合 一.章节导航 数据分析入门 | kaggle泰坦尼克任务(一)- ...

最新文章

  1. ORB_SLAM2中Tracking线程
  2. python中tornado的第一个例子
  3. linux deploy ENV 目录,手机安装linux deploy 安装和配置
  4. Kotlin中的Java静态方法等效于什么?
  5. JAVA并发编程JUC基础学习(简介)
  6. sql server2008中左连接,右连接,等值连接的区别
  7. 【荐】说说CSS Hack 和向后兼容
  8. Sql Server事务日志
  9. LevelDB原理及应用
  10. 华为P50 Pro/Pro+更多细节曝光:6.7寸120Hz单孔屏 比前作更轻薄
  11. Android Multimedia框架总结(二十八)NuPlayer到OMX过程
  12. 单片机自学入门必看基础知识
  13. Python之遍历文件夹图片并重命名
  14. 与其去雄安买房,不如找中企动力建自己的平台
  15. 关于Ember的一些小技巧总结
  16. B站马士兵python入门基础版详细笔记(4)
  17. 2021年中国银行间同业拆借成交额及加权平均利率分析:成交额、同业拆借及质押式回购加权平均利率均呈增长趋势[图]
  18. php 通过curl上传图片
  19. android 语音播放工具,Android简易的仿微信聊天的语音播放控件
  20. Open-Vocabulary Object Detection Using Captions论文讲解

热门文章

  1. KendoUI模板引擎 - 结合组件使用
  2. 百度网盘网页倍速播放视频的小技巧
  3. C语言头插法尾插法创建单链表
  4. Unity API常用方法和类学习笔记2
  5. 传奇开服微端是什么意思?微端服务器是什么?微端服务器配置要求
  6. 54. Java序列化三连问,是什么?为什么需要?如何实现?
  7. 大数据all_in环境搭建
  8. 力扣(39.40)补9.20
  9. 如何接3D模型外包?外包如何报价?高手才能接外包?
  10. 希腊字母书写以及发音,常用场景