用python预测超车是否危险_用Python预测泰坦尼克号乘客生存情况
泰坦尼克号(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 Disasterwww.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. 步骤分析 3. 代码实现 4. 决策树可视化 4.1 保存树的结构到dot文件 4.2 网站显示结构 5. 决策树总结 6. 小结 1. 案例背景 泰坦尼 ...
- 泰坦尼克号乘客生存预测(XGBoost)
泰坦尼克号乘客生存预测(XGBoost) 1. 案例背景 2. 步骤分析 3. 代码实现 1. 案例背景 泰坦尼克号沉没是历史上最臭名昭着的沉船之一.1912年4月15日,在她的处女航中,泰坦尼克号在 ...
- python预测数据的方法_学习各种预测数据的方法
除了根据平均值预测数值以外,还有其他方法.本文介绍其中三种,大家来一起学习各种预测数据的方法. 问题:预测参加研究班的10人中昨天饮酒的人数. 1.根据平均值预测 通过统计"认为偏多的人数& ...
- python文本结构化处理_在Python中标记非结构化文本数据
python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...
- python交互式和文件式_使用Python创建和自动化交互式仪表盘
python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...
- 学python的有哪些好书_学习python有哪些好书和学习方法?
不请自来~ 上干货 <Python数据分析>作者: [印尼]Ivan Idris Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式.Python已经成为数 ...
- python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...
- python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...
2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...
- python十大必备知识_学Python必备的基础知识
学Python必备的基础知识 1.基本概念 表达式:就是一个类似于数学公式的东西,一般仅仅用了计算一些结果 ,不会对程序产生实质性的影响,如9+3; 语句:在程序中语句一般需要完成某种功能,比如打印信 ...
最新文章
- UVALive 7040 Color
- 【转】3:C#异步WaitAll的使用
- C语言 结构体 struct Cat cat1;
- mysql php释放内存_php mysqli_free_result()函数释放结果集
- 马斯克的SpaceX星链网遇散热危机,气温过高自动关机
- Vue2.0 之 自带浏览器里无法打开(兼容IE处理) - 解决方案 命令
- 林语堂的《武则天传》读后感
- MSB/LSB(big endian/little endian)
- tablepc是什么平板电脑_给大家介绍一下,这是我新朋友三星Galaxy Tab S3
- JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。...
- 抖音python真的那么好吗_python看抖音用户画像,摩羯天蝎居然刷得最多?
- Ghost 系统备份与恢复(图解)
- 《Python深度学习》Chapter 2——神经网络的数学基础
- ZUI易入门Android之Bitmap(一)
- 计算机试题及答案大学网络创业交流会,2017年12月计算机二级MS Office考试冲刺模拟卷(1)...
- javase知识点大全总结
- IPMP认证面试互动话术(上篇)
- Window如何开启telnet服务?
- 关于国产COS操作系统的自主版权问题
- 3D版CenterNet: CenterPoint,小修小改也能刷爆榜单
热门文章
- anaconda的所有版本大全--下载地址
- access_token VS refresh_token
- 基于和风天气API开发的天气查询小工具(含源码)
- DOTween的常用方法
- String字符串倒叙输出
- 计算机DNS服务器错误,找不到服务器或DNS错误怎么办?Win7找不到服务器或dns错误解决方法...
- 微信趣味地区一键设置,安排
- 【FPGA教程案例89】编译码2——使用vivado核实现RS信道编译码
- Flowable流程设计器的使用
- 2020家用千兆路由器哪款好_2020年500元以内23款无线路由器推荐,贵就好吗?