关于Kaggle入门Titanic的一次简单尝试Part 2 -- Dive into ML

Code on GitHub

系列文章:
关于Kaggle入门Titanic的一次简单尝试 – 逻辑回归(Logistic Regression)
关于Kaggle入门Titanic的一次简单尝试 – Part 2

接上回简单尝试中发现的几个问题,这次的文章准备做以下几个尝试:

  • 用更可靠的方法估计缺失的Age信息
  • 考虑Cabin特征
  • 希望把Fare和Ticket这两个特征值也纳入模型中
  • 更加地dive into Machine Learning

首先讨论一下Kaggle上预测结果submission评价的问题吧,
Kaggle上score的定义是categorization accuracy那就是预测的准确率了。根据最近研究了很多帖子的结果,基本上一个简单的regression就可以75%以上的准确率,如果综合考虑多一些模型再vote就可以实现80%以上的准确率,贴一个网上各个模型预测结果参考一下

Model	                       Score
Random Forest	               86.76
Decision Tree	               86.76
KNN	                           84.74
Support Vector Machines	       83.84
Logistic Regression	           80.36
Linear SVC	                   79.12
Perceptron	                   78.00
Stochastic Gradient Decent	   77.89
Naive Bayes	                   72.28

所以我认为就预测的准确率来说,刻意找各种方法来提高并不是很重要。做这个Case的主要目的是希望通过分析这个案例中的features并且架构起ML的基本框架就好。

至于上次的分析框架并不规范,这次就规范的来

数据清洗(Data Cleaning)

这边重新处理缺失的Cabin,Age,Embarked和Fare四个特征

Cabin

大家对cabin的考虑基本都是在于cabin这个特征值存不存在的问题,原因的话基本上是有cabin信息的乘客生还率要明显大于没有cabin信息的乘客

full.loc[full.Cabin.notnull(),'Cabin']=1
full.loc[full.Cabin.isnull(),'Cabin']=0
full['Survived'].groupby(full.Cabin).mean().plot.bar()

在这里插入图片描述
推测可能导致这种结果的原因是,可能当时在船上并不是每一个人都有自己的舱位的。所以相对于在船上没有固定舱位比较不安定的乘客来说,有舱位的乘客在遇到危机时就会得到更多的保障,make sense

Age

年龄这个变量的话我也研究了很多网上的做法,最普遍的还是使用Title将乘客分类,再赋予一个组内的median或者mode给missed value赋值。所以我也基本采用了这个方法,

首先获取Title

full['Title']=full['Name'].apply(lambda x: x.split(',')[1].split('.')[0].strip())
full.Age.groupby([full.Title,full.Sex]).describe()

在这里插入图片描述
在分类中,人数最多的同样也是存在年龄数据缺失的是Mr,Miss,Mrs,Master几个组。所以对于剩下的几个组就先按男女合并处理,通过降维省省自由度。

nn={
   'Capt':'Rareman', 'Col':'Rareman','Don':'Rareman','Dona':'Rarewoman',
    'Dr':'Rareman','Jonkheer':'Rareman','Lady':'Rarewoman','Major':'Rareman',
    'Master':'Master','Miss':'Miss','Mlle':'Rarewoman','Mme':'Rarewoman',
    'Mr':'Mr','Mrs':'Mrs','Ms':'Rarewoman','Rev':'Mr','Sir'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值