美文网首页
Kaggle数据项目-泰坦尼克生存者分析

Kaggle数据项目-泰坦尼克生存者分析

作者: 披着木头的石头 | 来源:发表于2019-11-19 13:48 被阅读0次

[toc]

背景

经典的泰坦尼克是电影史的一个丰碑,展示了人性的刻画,剧情围绕主线展开,层层递进,让人目不暇接,

这件几个世纪前的事件激发了大家对于推断兴趣。

项目给出了乘客多个纬度的信息,尽可能的包括乘客的全部特征,需要对特征进行抽取,并选取合适的算法模型来实现对部分数据的预测。这个项目考察了对于机器学习中的多个二元分类预测模型的掌握。对个人能力是极大的提高。


通常逻辑问题都可以归纳出大致的解决思路:

1.对问题进行分解,通过观察初步得到问题的主线可能在哪几个区域。
2.数据预处理,将已经整合到一张表内的多维度数据进行补全,去重等操作,目的是将数据表补充完整,在面对少量数据缺失时可以采用均值填充,过于多的数据空缺采用舍弃或以特定字符填充的方式补全。
下一步对数据分类进行细分,将采用字符分类的数据使用one-hot编码或手动编码的方式,拆分类型。
3.数据处理后需要对数据进行特征抽取,这是重点,决定了模型的正确率。
4.从python中调用sklearn中的机器学习模型,使用已经处理好的(除去标签)数据和标签数据进行训练。
5.对输出结果进行评估


开始数据处理

屏幕快照 2019-11-19 上午9.34.52.png 屏幕快照 2019-11-19 上午9.41.52.png

通过查看数据集的信息可知,原始数据共12个特征,除去id号和标签(survived)则有10项,其中cabin和age存在空缺项,age以平均值填充,cabin缺失较多,可以合理假设是否可能拥有船舱的乘客社会地位较高,存活率较高。


屏幕快照 2019-11-19 下午3.19.53.png

首先展示一下上船的年龄分布,可以得知邮轮上主要是20到40岁的人口,
再深入了解一下泰坦尼克号的训练集描述:

  1. count行可以得到survived项存在缺失,但因为是训练标签项所以是正常的。
  2. mean行可以得到各数值的平均项,例如平均乘客29岁,平均票价33美元,平均仓位为2.2,
  3. 因为幸存者项数据只有891项,存在405项缺失,所以该项平均值暂时没有意义。
  4. std行为方差数据,没有同类对比数据不太好得出分析,
  5. 其中std方差和50%的中位数对比可以发现票价fare项出现右偏分布
屏幕快照 2019-11-19 下午3.28.13.png

使用describe()描述性统计全体给定数据集,

定类/定序特征分析


cat_list = ['Pclass','Name','Sex','SibSp','Embarked','Parch','Ticket','Cabin']
for n,i in enumerate(cat_list):  
    Cabin_cat_num = df[i].value_counts().index.shape[0]
    print('{0}. {1}特征的类型数量是: {2}'.format(n+1,i,Cabin_cat_num))

上述代码可以快速提取特征信息,我之前是直接手动value_count进行查看,数据量大的情况下麻烦。
分析之后可以得出在特征点特异性少的数据项为港口,性别,亲缘关系等几项,后续可以先对这几项进行可视化,方便确定模型的输入特征。
剩下的只有名字有价值,船舱位缺失项较多,如果不能得出有位和没有位的生存差距,该数据应该舍弃。

分析年龄与存活的关系


年龄与存活.png

可以明显观察到有年龄大于80的老年人存活
20到25岁大量青年死亡
船上人群众数为25岁左右
没有自保能力的幼儿活下来较多
说明在沉船时刻,船上采取了老幼优先的策略,整体仍有秩序

可以证明年龄对存活率有关联性

年龄与船舱密度图分析

可以看到其中存活者的年龄在16岁前出现异常分布,可以合理推测有特定的约束条件使该分布反常,另外一等舱的频率与其他舱席逐渐接近,说明一等舱存活率较高,推测社会等级影响生存率。


票价与生存.png

观察幸存者和遇难者的比例关系可以发现,存活者在各自票价区间的比例接近,需要进一步分析数据,判断票价是否对生存率有影响。


仓位存活率对比.png

age项存在部分缺失,直接平均填充效果不好,因为存活率与阶级、性别、年龄相关,所以对age项要采取根据各票的阶级分布来填充。


分类图.png

分类填充,采用各票仓的中位数填充

不同的港口可能存在不同的年龄层次和社会地位,因此对港口与生存的关联度也应该作图分析。

港口生存率

从票的等级来看,高等票存活率较高。
从登船港口来看,女性在s港和q港的存活率普遍高于男性,c港男性生存率高于女性。


性别与船舱类型对比

可以看在男性的统计中票等级决定获救率,不同港口获救率会不同。
在女性统计中,仍可以观察得到生存率服从票等级,不同港口的女性生存率有差别。

对名称也做了分析,因为,欧洲人姓名中会包含头衔,头衔和社会地位,家族势力有关,所以该项会影响生存几率。

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(max_depth = 10)
model.fit(train_X,train_Y)
model.score(test_X,test_Y)

对支持向量机,k近邻,朴素贝叶斯,sgd分类器,随机森林,决策树几个机器学习模型实践了一下,发现在不深入调参的情况下,决策树能达到0.81的评分,提交到kaggle平台


屏幕快照 2019-11-21 上午9.43.44.png

目前排在前55%,我还会继续优化,目标前10%,fight!

相关文章

网友评论

      本文标题:Kaggle数据项目-泰坦尼克生存者分析

      本文链接:https://www.haomeiwen.com/subject/tuxwictx.html