[Kaggle]Titanic: Machine Learning from Disaster

这是关于KAGGLE上的最基本入门项目,泰坦尼克求生。不过我一开始陷入了误区,整个预测的概率都在80上下,实在无法理解那些能达到90+甚至100的人是如何做到的。后来才发现网上能找得到获救者名单...晕。不过想想也是,就算一个人的条件都符合最可能会下来的情况,那他的生存概率也不是100,只是比别人更大而已。

言归正传,开始来说这个项目。这个项目就是给你一个获救/遇难者的名单,差不多890多人,然后用来预测另一份名单上人的生存情况,差不多400多人。所以这个数据量实在是太小了,维度也很低,预测效果还是挺捉急的。

第一部分就是把数据导入并且进行缺失值的处理。

这里导入训练集和测试集之后,最好的办法是将两个数据联合起来一起处理,可以省掉很多麻烦。导入数据之后就是检测缺失值的情况。这组数据的AGE CABIN EMBARKED FARE是缺失的。(我在做describe的时候还发现有一部分人的FARE是0...这个和缺失是一样的,所以做数据预览的时候这种噪音数据也要多多注意)

AGE这个数据我是根据头衔来取平均值确定的。CABIN这个缺失的特别多。通过和SURVIVED关系,我发现缺失CABIN的明显生存率更低一些,所以我根据有无CABIN来建立特征。EMBARKED这个我就选择了最多的EMBARKED来填充。FARE的话我根据同仓位的票价中位数来填充(之所以不选平均值是因为如前文所说,有些是0,无疑拉低了平均值)。以上我就是对于缺失值的处理

 

第二部分就是特征工程。

PassengerId这个没啥用处,把test的ID提炼出来用于最后的生成文件,然后就可以删掉了。Pclass这个不用管,保证数值关系即可。NAME这里我根据切分字符串的姓氏提取了头衔,生成了TITLE特征。看到别人会姓给提取出来,然后如果一个姓活下来那可能同姓更可能活下来。我觉得样本量太小了,提升效果有限,而且提升这个维度也太高了。性别这个很重要,保留。女性普遍比男性获得更长。年龄我根据等距法CUT了10组,用来分箱。Sibsp和Parch这两个量表示有多少兄弟姐妹/父母孩子在船上。通过建立关联图发现还是有影响的。所以根据图表来划分三挡。我看别人通过组合特征来建立新的特征,我认为值得学习。Ticket这个没什么好说的,我直接给删掉了。FARE我取对数,然后根据和生存情况的关联后发现当LOG (FARE+1)超过一个阈值后,生存率是高于死亡率的,所以可以根据阈值来分档。CABIN和EMBARKED这两个特征和生存情况都有联系,保留即可。在处理完原始特征之后,进行one_hot编码。获得一个特征在30维左右的数据集。

 

第三部分是建模。

在这里我使用了比较基本的算法。LR SVC NB GBDT XGBT RF ADABOOST这些算法。因为我们在上文已经对于数据处理成了01矩阵的模式,所以可以使用这些算法(因为一些偏向线性的算法是必须进行严格的归一化,树结构则不需要。)然后就是根据KFOLD进行训练模型交叉验证。在训练出这些模型之后可以生成一系列的结果。最后再根据少数服从多数的原则进行投票(过半数,2分类问题),把生成的投票结果最后输出生成文件。

麻烦的点:整个流程比较容易,就是后面的算法进行调参时比较麻烦。好在数据量并不多,所以用时也相对快。不然大量的时间都要花在调整参数上了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值