泰坦尼克号(RMS Titanic),又译作铁达尼号,是英国白星航运公司下辖的一艘奥林匹克级邮轮,于1909年3月31日在爱尔兰贝尔法斯特港的哈兰德与沃尔夫造船厂动工建造,1911年5月31日下水,1912年4月2日完工试航。

泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉 。然而不幸的是,在她的处女航中,泰坦尼克号便遭厄运——她从英国南安普敦出发,途经法国瑟堡-奥克特维尔以及爱尔兰昆士敦,驶向美国纽约。图1 泰坦尼克号航线

1912年4月14日23时40分左右,泰坦尼克号与一座冰山相撞,造成右舷船艏至船中部破裂,五间水密舱进水。次日凌晨2时20分左右,泰坦尼克船体断裂成两截后沉入大西洋底3700米处。2224名船员及乘客中,仅705人生还。什么样的乘客能免遭葬身大海的命运?让我们从数据一探究竟。

提出问题

在泰坦尼克号上,什么样的乘客能免遭葬身大海的命运?

量化问题:用训练数据训练模型,预测乘客生还的概率。如果模型计算出概率>=0.5,预测结果为生还;如果模型计算出概率<0.5,预测结果为丧生。

理解数据

理解数据是保证分析结果的关键。数据分析师对字段概念理解错误就像火影中的忍者中了幻术,对虚无的假象白费力气,浪费时间和精力。需对每个字段的含义,字段不同取值的意义都正确理解。

用于分析的数据来源于kaggle:Titanic: Machine Learning from Disaster​www.kaggle.com

数据包含训练数据891条和测试数据418条:图2 导入数据

训练数据集包括以下12个字段:图3 数据一窥

PassengerId:乘客ID

Survived:是否生还,0 = 否, 1 = 是

Pclass:船舱等级,1,2,3依次为高,中,低

Name:乘客姓名

Sex:乘客性别

Age:乘客年龄

SibSp:船上兄弟姐妹人数

Parch:船上父母/孩子人数

Ticket:船票号

Fare:旅客票价

Cabin:船舱号

Embarked:登船港口,C = Cherbourg, Q = Queenstown, S = Southampton

清洗数据

在建模分析前,需要对原始数据做处理,包括数据类型转换,缺失值处理,异常值剔除,排序。清洗数据可提升数据质量,对后续的构建模型起到事倍功半的作用。

缺失值处理

合并训练集和测试集,方便后续对整体数据做清洗。图4 数据信息一览

通过上图可以看出:

1)生还信息只有891例,和训练样本集条数相同,测试样本集没有这个字段。

2)年龄、船票价格为数值类型数据,缺失值较少。可以用众数或平均数填充缺失值。在评估模型阶段将对比使用平均数和众数的效果。

3)登船港口为object类型,仅2个缺失值,用出现最多的值填充缺失值。

4)船舱号为object类型,仅295条数据有值,缺失值过多,用'U'填充,表明该乘客船舱未知。图5 填充缺失值

特征提取

结合图3,图4可看出:

1)船舱等级分高中低三类,但在数据框中为int类型数据,需要将这个变量转换为一组虚拟变量。

2)船舱号为字母+数字,数字各不相同,但首字母可表明船舱等级。故提取首字母,之后转换成一组虚拟变量处理。

3)船票号较为分散,没有很强烈的规律,舍弃,不作处理。

4)登船港口转换为一组虚拟变量。

5)姓名的头衔包含了社会地位,提取头衔后做虚拟变量处理。

6)性别信息为字符串,转换成虚拟变量处理。

7)家庭类别按照人数分类。1人为单人家庭;2-4人为小家庭;5人及以上为大家庭。分类后做虚拟变量处理。

用drop_first=True参数设置避免多重共线性。图6 特征提取

特征选择

将转换后的变量加入原数据框,删除被处理的变量,用相关系数矩阵筛选特征。

all_data.drop(['Pclass','Name','Sex','Ticket','Cabin','Embarked'], axis = 1, inplace = True)

all_data = pd.concat([all_data, PClassDf, CabinDf, EmbarkedDf, TitleDf, sex, FamilyDf.loc[:,'FamilySmall':'FamilyMiddle'],FamilyDf['FamilySize']], sort = False ,axis=1)图7 相关系数矩阵

对与生存标签列的相关系数降序排列,可看到除生存标签外绝对值最大的10个指标,分别为:Mrs,Miss,Fare,CabinB,FamilyMiddle,FamilySmall,CabinU,Pclass3,Sex,Mr。对应头衔、性别、船票价格、家庭规模、船舱等级属性。Mrs,Miss与生存正相关,说明在逃生时,机会优先给了女士,Mr、Sex系数同理;FamilyMiddle,FamilySmall与生存正相关,说明家庭规模为中、小时,逃生可能更大,可能是因为逃离的速度更快;Fare与生存正相关,说明船票价格越贵,生存希望越大,可能与舱位更高级,人少,便于撤离有关;Cabin_B同理。图8 生存标签相关系数

将以上头衔、性别、船票价格、家庭规模、船舱等级属性作为特征,构造数据框用于后续处理。

all_X = pd.concat([TitleDf, all_data['Fare'], CabinDf, FamilyDf.loc[:,'FamilySmall':'FamilyMiddle'], PClassDf, sex],axis = 1)

构建模型

1)把来源于test.csv的数据分为训练数据、测试数据;把来源于train.csv的数据设置为预测数据。用逻辑回归方法建模。图9 数据分组,建模

2)评估模型效果(正确率=0.715)图10 评估模型正确率

模型实施

1)用预测组的特征数据,上文构建的模型,预测生存标签,将结果保存至csv。图11 预测数据

2)上传数据至kaggle,获取建模效果数据,可看到预测的准确率为0.75。后续可用不同算法对指标选取、建模方法做进一步优化。图12 数据上传Kaggle

用python预测超车是否危险_用Python预测泰坦尼克号乘客生存情况相关推荐

  1. 泰坦尼克号乘客生存情况预测分析之第三部分建模及模型评价

    第三部分建模及模型评价 前面两部分我们已经对泰坦尼克号的数据进行了一些处理,感兴趣的小伙伴可以看看前面两篇文章,本篇主要介绍预测分析的第三部分,也就是建模和模型评价.数据处理完了,接下来就来看看在默认 ...

  2. 【决策树算法】泰坦尼克号乘客生存预测

    泰坦尼克号乘客生存预测 1. 案例背景 2. 步骤分析 3. 代码实现 4. 决策树可视化 4.1 保存树的结构到dot文件 4.2 网站显示结构 5. 决策树总结 6. 小结 1. 案例背景 泰坦尼 ...

  3. 泰坦尼克号乘客生存预测(XGBoost)

    泰坦尼克号乘客生存预测(XGBoost) 1. 案例背景 2. 步骤分析 3. 代码实现 1. 案例背景 泰坦尼克号沉没是历史上最臭名昭着的沉船之一.1912年4月15日,在她的处女航中,泰坦尼克号在 ...

  4. python预测数据的方法_学习各种预测数据的方法

    除了根据平均值预测数值以外,还有其他方法.本文介绍其中三种,大家来一起学习各种预测数据的方法. 问题:预测参加研究班的10人中昨天饮酒的人数. 1.根据平均值预测 通过统计"认为偏多的人数& ...

  5. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  6. python交互式和文件式_使用Python创建和自动化交互式仪表盘

    python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...

  7. 学python的有哪些好书_学习python有哪些好书和学习方法?

    不请自来~ 上干货 <Python数据分析>作者: [印尼]Ivan Idris Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式.Python已经成为数 ...

  8. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  9. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  10. python十大必备知识_学Python必备的基础知识

    学Python必备的基础知识 1.基本概念 表达式:就是一个类似于数学公式的东西,一般仅仅用了计算一些结果 ,不会对程序产生实质性的影响,如9+3; 语句:在程序中语句一般需要完成某种功能,比如打印信 ...

最新文章

  1. UVALive 7040 Color
  2. 【转】3:C#异步WaitAll的使用
  3. C语言 结构体 struct Cat cat1;
  4. mysql php释放内存_php mysqli_free_result()函数释放结果集
  5. 马斯克的SpaceX星链网遇散热危机,气温过高自动关机
  6. Vue2.0 之 自带浏览器里无法打开(兼容IE处理) - 解决方案 命令
  7. 林语堂的《武则天传》读后感
  8. MSB/LSB(big endian/little endian)
  9. tablepc是什么平板电脑_给大家介绍一下,这是我新朋友三星Galaxy Tab S3
  10. JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。...
  11. 抖音python真的那么好吗_python看抖音用户画像,摩羯天蝎居然刷得最多?
  12. Ghost 系统备份与恢复(图解)
  13. 《Python深度学习》Chapter 2——神经网络的数学基础
  14. ZUI易入门Android之Bitmap(一)
  15. 计算机试题及答案大学网络创业交流会,2017年12月计算机二级MS Office考试冲刺模拟卷(1)...
  16. javase知识点大全总结
  17. IPMP认证面试互动话术(上篇)
  18. Window如何开启telnet服务?
  19. 关于国产COS操作系统的自主版权问题
  20. 3D版CenterNet: CenterPoint,小修小改也能刷爆榜单

热门文章

  1. anaconda的所有版本大全--下载地址
  2. access_token VS refresh_token
  3. 基于和风天气API开发的天气查询小工具(含源码)
  4. DOTween的常用方法
  5. String字符串倒叙输出
  6. 计算机DNS服务器错误,找不到服务器或DNS错误怎么办?Win7找不到服务器或dns错误解决方法...
  7. 微信趣味地区一键设置,安排
  8. 【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码
  9. Flowable流程设计器的使用
  10. 2020家用千兆路由器哪款好_2020年500元以内23款无线路由器推荐,贵就好吗?