泰坦尼克号存活乘客预测(一)

微信公众号:命运探知之魔眼

如有问题或建议,请后台留言,我会尽力解决你的问题。

前言

我是人工智障,一名程序猿。做过嵌入式、爬虫,目前在自学计算机视觉 。注册 「命运探知之魔眼」(名字取自影视作品「命运石之门」)这个公号已有些日子,真正有心将它运营起来是看到朋友狗哥运营它的公号

「一个优秀的废人」

之后。注册这个号的初衷是分享我的 计算机视觉 学习笔记,希望更多的人加入我的行业。

本期内容

本期内容要分两期才能写完了。本期的案例很有意思,是 Kaggle 上的一个项目,他们采集了当年乘坐泰坦尼克号的成员的信息,这些信息包括乘员的年龄、性别、名字、是否有配偶同坐等,而我们的任务是基于这些信息,预测他们哪些人活下来了,哪些人遇难往生。我们先看看这些数据的分布情况,下一期再来用机器学习的方法分析。下面来看看这个数据集。

Titanic数据集

这个数据集包含 train.csv 和 test.csv 两个 Excel 表格,train.csv 称为训练集,test.csv 称为测试集

train.csv

test.csv

train.csv 比 test.csv 多了一列 Survived ,表示乘员最后是否活下来了。我们的任务是预测他们是否存活,因此需要训练集去训练一个分类器,训练集必须包含正确的预测结果,就像老师教学生的时候,给他们做题和对正确答案,这个“正确答案”称为标签。由于这里的 test.csv 没有标签,所以我把 train.csv 的 70% 作为真正的训练集,而在另外的 30% 上测试准确率,这 30% 也叫作验证集

各列的意义在 Kaggle 官网上有介绍。

数据集处理

在 Python 中读取 csv 文件我使用的是 pandas 库。我想先用年龄和性别看看数据的分布,但是性别在 csv 中是个字符串,所以要把它们换成整数。对于年龄,csv 中的数据是有缺失的,也就是有的人的年龄未知,我的处理方法是用已知的年龄的平均值去填充。

处理的代码如下:

处理完以后会在当前目录生成 real_train.csv 和 val.csv 两个文件,分别是原来 train.csv 的 70% 和 30% 的数据。

数据分析

根据以往看灾难片的经验,通常发生事故的时候都会有个人跑出来喊一句“妇女和小孩先走!”,因此我会认为性别和年龄是两个很重要的特征。

那就来看看 real_train.csv 中的存活情况怎么样。

在这个数据集中,男女比例大约是 6:4,整体的存活率是 0.4 左右,虽然男性比女性要多,但是男性的存活率只有 0.186,而女性则有 0.75 左右。所以也许当时真的采用了“妇女先走”的撤离原则。

再来看看年龄的分布怎么样,这里我列出了存活的年龄分布、死亡的年龄分布、存活的男性的年龄分布、存活的女性的年龄分布、死亡的男性的年龄分布以及死亡的女性的年龄分布。

Survived_age.png

Dead_age.png

Survived_men_age.png

Survived_women_age.png

Dead_men_age.png

Dead_women_age.png

除了以上这些关系,你还可以自己找一些关系画图分析。从上面的图来看,20-30 岁的年轻男女应该是乘员的主体,年龄在 20 - 30岁的死亡的人中,男性的比例又占了绝大部分,这并不符合常理,因为这个时期的男性应该正值壮年,可能说明了这一部分年龄的很多男性都做出了自我牺牲。

在这里我只分析了年龄和性别的分布,也许你还能找出其他数据的关系,如从他们乘坐的船舱的种类分析,富人能坐头等舱,也许坐上救生艇的概率更大。本次分析年龄性别分布的代码如下:

篇幅限制(其实是懒),本期先到这里,下一期将会引入 Logistic 分类器,继而引入神经网络。

后语

我不是大神,不是什么牛人,于 计算机视觉 领域来说,我是菜鸡,但谁刚开始接触一个领域的时候不是菜鸡呢。 写这个号的目的是为了记录我自学 计算机视觉 的笔记。

如果本文对你哪怕有一丁点帮助请右下角点赞,否则忽略就好。平时工作也是在做计算机视觉,希望大家多多指教。

我一直认为学习不能有所见即所得的想法,一看就会,一做就错。千万不要偷懒,所谓大神都是一个一个坑踩过来的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808G1KLLI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券