相关文章推荐
单身的拐杖  ·  python ...·  1 年前    · 
礼貌的火腿肠  ·  使用Open层ImageCanvas ...·  1 年前    · 

这是我在大三选修课的课程设计,内容参考了Kaggle上高赞的代码,有详细批注,整体比较基础,结构相对完整,便于初学者学习。这个是一个分类问题,我的另外一篇博客 《Kaggle回归问题Mercedes——Benz Greener Manufacturing》 介绍了回归问题。除此之外我的 《电商评论文本挖掘》 也是我当年的课程设计,也有详细的批注,相比这个难度会稍微高些。

1 题目介绍

题目背景:在1912年4月15日,当时世界最豪华的游艇,泰坦尼克号撞到冰山沉入海底,其中船上2224位乘客中的1502位死在了此次事故中。在幸存者中,尽管有一些是来自于幸运,但是大部分幸存着是来自于女人、小孩还有一些贵族。而我们的任务就是通过机器学习,计算出人们幸存的概率。

数据介绍:

变量 含义 备注
survival 存活情况 0为没有存活;1位存活
pclass 船舱地址 1为最好;2为中等;3为最差
sex 性别
age 年龄
sibsp 同行的配偶或兄妹数量
parch 同行的父母或孩子数量
ticket 票号
fare 船票价格
cabin 船仓号
embarked 登船港口 C为Cherbourg;Q为Queen Stown;S为Southampton

2 数据清洗

1)首先对所有数据进行整体概览。
在这里插入图片描述
2)观察空值情况,发现需要处理Age与Cabin。
在这里插入图片描述
3)填补缺失值,对Age使用中位数填补,对Cabin船舱号使用众数填补,对Fare使用中位数填补。
在这里插入图片描述
4)由于乘客ID是从1按顺序增加,与其他变量没有相关性;船舱有太多缺失;票号有纯数字,有字母加数字,而且全是不同的,无法使用。对这三列进行删除。
在这里插入图片描述
5)对数据列进行进一步出列,将SibSp陪同的配偶、兄妹数量和Parch陪同的父母孩子数量混合,合并为FamilySize家庭人数;根据FamilySize可以进一步划分出IsAlone是否独自一人乘船(1为独自,0为非独自);因为英语中一个人的称谓能反应出一些人的年龄、性别或者地位,所以单独将对人名的称谓划分出来;根据票价的大小进行等频率切割,以便之后处理;根据年龄的大小进行按值切割,以便后续处理。
在这里插入图片描述
6)根据观察,发现有一些特别、无实际意义的称谓,对他们进行统一处理,变为Misc。
在这里插入图片描述
7)对数据中的str类变量,利用LabelEncoder,对标签进行编码,转为数字。
在这里插入图片描述
8)经过上面的处理完成了对数据的清洗,下图为原始,与分箱操作的变量名。
在这里插入图片描述

3 数据可视化分析

1)对Fare、Age、FamilySize绘制boxplot,可以观察到,票价花费大部分集中在两位数,购买头等舱的并不是很多;年龄大部分集中在28左右,有少部分的婴儿和老人,家庭成员数量普遍为1到2个,也有很多人是独自乘船。
在这里插入图片描述
2)利用hist绘制票价花费、年龄分布、家庭成员数量的存活数,可以发现票价越低,死亡人数相对越多;年龄越高或者越低存活概率越高;家庭成员数量在2到5个的存活概率越高。
在这里插入图片描述
3)利用barplot绘制港口、船舱等级、是否独自一人的幸存率,可以发现,C港口登船的相对存活率最大,头等舱的存活率更大,有同行的人的存活率更大。
在这里插入图片描述
4)利用pointplot绘制票价等级、年龄分布、家庭人数的幸存率,可以发现票价越高存活率越大,16岁以下的孩子与48到64岁间的人存活率更大,家庭成员数量为4的存活率最大。
在这里插入图片描述
5)利用boxplot與violinplot绘制船舱等级与票价花费、与是否幸存,船舱等级与年龄分布、与是否幸存,船舱等级与年龄分布、与是否幸存,可以发现进一步的关系。
在这里插入图片描述
6)利用kdeplot绘制年龄与幸存的核密度图,可以发现婴儿比起老人存活的概率更大,没有幸存下来的主要在30岁左右。
在这里插入图片描述
7)利用pairplot,绘制各个属性的关系图,对角线上是各个属性的核密度图,而非对角线上是两个不同属性之间的相关图。
在这里插入图片描述

4 模型训练

根据如下常用算法模型,进行一一对比选择。
在这里插入图片描述
根据ShuffeSplit进行交叉验证数据分割,之后根据cross_validate分别计算出训练集正确率、测试集正确率、标准差。
在这里插入图片描述
在这里插入图片描述
根据训练集正确率对结果进行排序,可以看到SVC的效果最好。
在这里插入图片描述
对正确率进行可视化。
在这里插入图片描述
之后也可以利用VotingClassifier进一步根据多模型“投票”来获得结果,VotingClassifier分为软投票与硬投票,硬投票是指直接根据少数服从多数,软投票是指根据权重进行投票,需要用到predict_proda。根据结果,发现利用软投票效果也还不错,不过时间的代价也比较巨大。
在这里插入图片描述
在这里插入图片描述

为了更好的观看效果,我将源码放在了 Github 上,如有帮助,希望点个星星支持一下,感谢。

Kaggle 入门实战: Titan ic - Machine L ear ning from Dis aster 项目简介关于数据数据概括数据字段描述数据分析总体思路初步分析 Use machine l ear ning to create a model that pred ic ts wh ic h passengers survived the Titan ic shipwreck. 基于 机器学习 建立模型预测泰坦尼克号灾难中哪些乘客得以生存。 Kaggle 入门项目: Titan ic overview 参考分析视频:B
文章目录1. 前言2. 题目描述3. 解答4. 代码学习4.1 数据集处理1. 分析字段Embarked2. 分析字段Fare3. 分析字段Age4. 分析字段Cabin5. 分析字段Parch & SibSp6. 分析字段Sex7. 分析字段Pclass4.2 模型搭建4.3 总结 1. 前言 准备再学习学习TensorFlow,感觉最好的学习途径就是刷一些题目,故而这里就来尝试做做一些简单的题目。 2. 题目描述 可以直接查看原文:https://www. kaggle .com/competiti
Correcting by dropping features Creating new feature extracting from existing Converting a categor ic al feature Create new feature combi ning exis 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖…已保研。目前正在学习C++/Linux/ Python 学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语! 初学 Python 小白阶段 文章仅作为自己的学习笔记 用于知识体系建立以及复习 题不在多 学一题 懂一题 知其然 知其所
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...
好的,下面给你介绍一些从 Kaggle 、UCI Machine L ear ning Repository等平台中选定的常见数据集。 1. Titan ic : Machine L ear ning from Dis aster Kaggle ) 该数据集包含有关泰坦尼克号乘客的信息,包括乘客的姓名、性别、年龄、票价等等。目标是根据乘客的特征预测他们是否在灾难中幸存下来。该数据集包含891个训练样本和418个测试样本。 2. Wine Quality(UCI Machine L ear ning Repository) 该数据集包含红葡萄酒和白葡萄酒的化学特征,例如酸度、酒精含量、pH值等等。目标是根据化学特征预测酒的质量评分。该数据集包含4898个样本。 3. Fashion MNIST( Kaggle ) 该数据集包含10个类别的时尚商品图片,包括T恤、裤子、衬衫等等。目标是根据图片预测它所属的类别。该数据集包含60,000个训练样本和10,000个测试样本。 4. Boston Housing(UCI Machine L ear ning Repository) 该数据集包含波士顿地区的房屋价格和房屋属性信息,例如房龄、房间数量、犯罪率等等。目标是根据房屋属性预测房屋价格。该数据集包含506个样本。 以上是一些常见的数据集,它们包含了不同类型的数据,可以用于不同的 机器学习 任务。如果你需要更多的数据集,可以在 Kaggle 、UCI Machine L ear ning Repository等平台上进行搜索。