Kaggle 入门项目 Titanic 排名前 7%

🚢泰坦尼克号 - 灾难中的机器学习(进阶版)

在这里插入图片描述


🎯目标描述


泰坦尼克号 的沉没是历史上最臭名昭著的沉船事件之一。

1912 年 4 月 15 日,在她的处女航中,被广泛认为 “永不沉没” 的 泰坦尼克号 在与冰山相撞后沉没。不幸的是,船上的每个人都没有足够的救生艇,导致 1502 名乘客和船员中有 2224 人死亡。虽然生存下来有一些运气因素,但似乎某些群体比其他人更有可能生存下来。

在本次挑战赛中,我们要求您构建一个预测模型,使用乘客数据(即姓名、年龄、性别、社会经济阶层等)回答 “什么样的人更有可能生存” 这个问题。


🏳️‍🌈数据集


数据被分成两组:

  • 训练集(train.csv
  • 测试集(test.csv

训练集 应该用于构建您的机器学习模型。对于训练集,我们为每个乘客提供结果(也称为 “ground truth” )。你的模型将基于乘客的性别和阶级等 ***“特征”***。您还可以使用特征工程来创建新特性。

测试集 应该用于查看模型在未见过的数据上的表现。对于测试集,我们不提供每个乘客的真实情况。你的工作就是预测这些结果。对于测试集中的每个乘客,使用您训练的模型来预测他们是否在泰坦尼克号沉没时幸存下来。

我们还包括 gender_submission.csv 是一组假设所有且只有女性乘客存活的预测,作为提交文件应该是什么样子的示例。


特征定义其他类型
PassengerIdID\连续型
Survived是否幸存0 = No, 1 = Yes离散型
Pclass票类1 = 1st (Upper), 2 = 2nd (Middle), 3 = 3rd (Lower)离散型
Name姓名\\
Sex性别male 男性, female 女性离散型
Age年龄如果年龄小于1,则为小数连续型
SibSp兄弟姐妹/配偶人数兄弟姐妹 = 兄弟 + 姐妹 + 继兄弟 + 继姐妹
配偶 = 丈夫 + 妻子(情妇和未婚夫除外)
离散型
Parch父母/孩子父母 = 母亲 + 父亲
孩子 = 女儿 + 儿子 + 继女 + 继子
有些孩子只和保姆一起旅行,因此对他们来说parch=0
离散型
Ticket船票号码用于区分不同的乘客连续型
Fare票价英镑连续型
Cabin舱室乘客所住的船舱编号\
Embarked登船港口C = Cherbourg, Q = Queenstown, S = Southampton离散型

🚀模型选择与评估


逻辑回归

–> LogisticRegression

在这里插入图片描述

在这里插入图片描述


决策树

–> DecisionTreeClassifier

请添加图片描述

在这里插入图片描述


随机森林

–> RandomForestClassifier

在这里插入图片描述


AdaBoost

–> AdaBoostClassifier

在这里插入图片描述


GBDT

–> GradientBoostingClassifier

在这里插入图片描述


硬投票与软投票

–> VotingClassifier

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


堆叠

–> StackingClassifier

在这里插入图片描述

在这里插入图片描述


✅学习总结


本次使用全数据进行预处理,并将分类数据进行 One-Hot 编码

进行了 卡方检验 ,找出了权重前十的特征进行训练。

利用 GridSearchCV 网格搜索 选出分数最高的最佳参数,训练提交。


共建立了 7 个模型,分别是:

  1. LogisticRegression : 逻辑回归
  2. DecisionTreeClassifier : 决策树
  3. RandomForestClassifier : 随机森林
  4. AdaBoostClassifier : 参数权重
  5. GradientBoostingClassifier : 梯度提升
  6. VotingClassifier : 投票
  7. StackingClassifier : 堆叠

目前来看 随机森林 的效果是最好的,分数从 0.76315 --> 0.79186 🔼 ,排名从只用逻辑回归的 12980 --> 1231 ⏫


排名的上升也是我没有想到的,仅仅提升 2.87% ,上升了 11749 名,这可能也代表了我正式入门了机器学习!

但仍旧有一些问题:

  • Boosting、Voting、Stacking 的效益竟然没有 决策树 和 随机森林 高,且使用 Boosting 时有十分严重的过拟合问题,按道理它能够有效防止过拟合的。
  • 根据两天的不断尝试,调整了各种参数,也怀疑了各种参数,但最终都没有将 score 提升到 0.80 以上(可能是数据预处理需要更加完善)。
  • 随机森林 使用特征选择后的数据比特征选择前更好,但理论上讲 随机森林 应该可以随机特征选择的。

想法:

  1. Cabin 特征即使空缺较多也是可以使用的
  2. 是否独自乘船?也可以作为特征之一
  3. 决策树 和 随机森林 可能需要增加剪枝
  4. 需要增加更多种的模型,以提供更多因素供 集成算法 的提升

总结来看,这些模型能够熟练掌握,但数据处理和模型实际运用上仍需提高!

虽然总结出这么多不足,但实际上这次相对于第一次提升很大了,也算是又上升一个台阶了。

❤️‍🔥继续加油!( •̀ ω •́ )✧

🪢资源链接

  1. Kaggle
  2. GitHub
  3. GitCode
  4. CSDN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值