从零开始,手把手,一文kaggle竞赛速度入门! 泰坦尼克

  • 1. 前言
  • 2. 如何开始kaggle竞赛
    • 2.1进入网站注册账号
    • 2.2进入到比赛界面
    • 2.3了解项目
  • 3. 数据导入与预处理
  • 4. 训练决策树模型
    • 4.1决策树模型
    • 4.2python实现决策树
  • 5. 提交结果
  • 6.完整源码
  • 7.可以改进的地方
  • 8.贡献者介绍

1. 前言

网上并不缺乏kaggle竞赛的教程,但对于相当一部分人来说,在跟着进行第一个竞赛的过程中,就逐渐放弃了。笔者也是在初次竞赛时,遇到了很多的麻烦,在跟着大佬一步步操作的时候,困难的去理解每一步的意义,这给了我很大的阻力。

在后面的学习生活中,我逐渐明白了,对于入门来说,走完一个完整的流程是最重要和基础的,至于优化,那是后面的事。

基于此,本文力求用最少的代码,手把手,图文结合的带你去进行一次完整的kaggle竞赛体验,从进入网页,到提交预测获取成绩。

我相信推开了门,自然有各种方法去寻找宝藏,当然,我们后续,也会有内容更丰富的泰坦尼克竞赛案例推出。

2. 如何开始kaggle竞赛

2.1进入网站注册账号

kaggle
进入kaggle官网(最好有vpn),首先点击右上角register注册账号

2.2进入到比赛界面

注册完账号后,直接搜索titanic进入比赛主页面

接着进入到比赛的主页面

其中右上角的join competition可以参加比赛,左侧红线上的栏目分别是:
overview 对于该项目的一些大致介绍
data 该项目的数据
notebook 前人的笔记,也是你提升的重要渠道
discussion 关于该项目的一些讨论,另一条提升你模型的途径
leaderboard 主要是一个各队伍结果的排行榜
rules 一些规矩

其中,对于初学者来说,要完整实现一遍流程,最重要的是我加粗的两条,即overview与data。

2.3了解项目


你可以去overview上仔细查看这个项目,或者一句话总结这个项目:通过乘客身上诸如性别、年龄等多个特征来对乘客是否在泰坦尼克事件中存活做出预测

3. 数据导入与预处理

数据导入
进入data栏准备下载数据:链接
在上述页面可以看到数据概览,向下翻就能找到数据下载的方法,如图:
这里的数据略有不同,可以看到三个文件:
第一个文件为我们提供了最后提交模型预测结果文件的模板
test.csv文件给出了不包含标签列的测试数据(也就是说不包含Survival数据)
train.csv文件就是我们用来训练模型的数据。

登录账号,就可以下载了(可能会需要科学手段)

加载好数据后,就正式开始我们的kaggle之旅!!

在对数据有了初步认识之后,开始进行预处理:

数据预处理
我们直接选定[‘Pclass’, ‘Sex’, ‘Age’, ‘SibSp’, ‘Parch’, ‘Fare’]等指标来对存活结果进行预测(你当然可以做更多的工作来选择合适的特征,这里为了简单直接选定特征),然后,我们这里将test数据与train数据都进行处理:用0和1代替男女,用均值填充缺失数据。

#读取训练数据集
df_total = pd.read_csv('train.csv', index_col='PassengerId')
#选取指定特征
df_total = df_total[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Survived']]
#one-hot处理
df_total['Sex'] = df_total['Sex'].map({'male': 0, 'female': 1})
df_total = df_total.dropna()#划分数据和标签
X = df_total.drop('Survived', axis=1)
y = df_total['Survived']#读取测试数据
X_test = pd.read_csv('test.csv', index_col='PassengerId')
X_test = X_test[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
X_test['Sex'] = X_test['Sex'].map({'male': 0, 'female': 1})
#用列均值填充缺失数据
X_test['Age'] = X_test['Age'].fillna(X_test['Age'].mean())
X_test['Fare'] = X_test['Fare'].fillna(X_test['Fare'].mean())

4. 训练决策树模型

接下来数据处理以后我们使用处理好的训练数据集来对模型进行训练,判断船上的游客是否能够生存,我们使用的是决策树和逻辑回归模型。

4.1决策树模型

决策树(Decision Tree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。决策树模型呈现树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它是定义在特征空间与类空间上的条件概率分布。决策树节点目前主要的划分方法主要是通过信息增益,信息增益比或者基尼指数。本篇文章将使用基尼指数来对模型进行训练。

4.2python实现决策树

在python中,我们可以调用sklearn包来实现决策树模型的训练。代码如下

#决策树
from sklearn import tree
model = tree.DecisionTreeClassifier(random_state=30)
model.fit(X, y)

模型构建好后,我们针对测试集进行预测,代码如下

y_predict = model.predict(X_test)

5. 提交结果

我们要将模型对测试集的预测结果提交到kaggle,看看我们的模型效果如何~
(同时还能看到自己在官方的排名)
通过下面的代码来自动生成提交文件:

#根据模板生成提交文件
submit = pd.concat([pd.Series(range(892,1310)),pd.Series(y_predict)], axis=1)
submit.columns = ['PassengerId', 'Survived']
submit = submit.set_index('PassengerId')
submit.to_csv('my_submition.csv')

点击下图的红框进入提交页面:
提交页面长这样:
可以看到自己当天还剩余多少提交次数
点击上传的空白处,选择本地文件,即可将结果上传(需要科学上网才能顺利上传)
文件上传成功后点击最下面的Make Submission即可
接下来就要到最激动人心的时刻啦!!
官网会自动给出你提交的结果的准确率:
score给出了准确率,我们这里的未经调参的决策树算法得到了73%左右的准确率~差强人意
点击下面的一排蓝字可以看到在所有提交者中的排名。

**好啦,本次初探kaggle竞赛就进行到这里,相信你对kaggle竞赛的基本流程有了一定的了解!
快去开始你的第一次kaggle竞赛吧!

有帮助的话,帮忙点个赞再走~~
**

6.完整源码

import numpy as np
import pandas as pddf = pd.read_csv('train.csv', index_col='PassengerId')
df = df[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Survived']]
df['Sex'] = df['Sex'].map({'male': 0, 'female': 1})
df = df.dropna()
X = df.drop('Survived', axis=1)
y = df['Survived']X_test = pd.read_csv('test.csv', index_col='PassengerId')
X_test = X_test[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
X_test['Sex'] = X_test['Sex'].map({'male': 0, 'female': 1})
X_test['Age'] = X_test['Age'].fillna(X_test['Age'].mean())
X_test['Fare'] = X_test['Fare'].fillna(X_test['Fare'].mean())#决策树
from sklearn import tree
model = tree.DecisionTreeClassifier(random_state=30)
model.fit(X, y)y_predict = model.predict(X_test)submit = pd.concat([pd.Series(range(892,1310)),pd.Series(y_predict)], axis=1)
submit.columns = ['PassengerId', 'Survived']
submit = submit.set_index('PassengerId')
submit.to_csv('my_submition.csv')

7.可以改进的地方

本文重心在于速度完成一次完整的kaggle竞赛体验,而不在于获得一次最好的结果,故可以改进的地方有很多,现粗略总结如下:
1,缺少对数据的总体分析与可视化
2,对于具体特征选取,没有做进一步的分析,而是直接给出了选择
3,数据清洗过于简单暴力,没有做深一步的研究
4,模型使用了简单的决策树,没有对参数进行优化,没有尝试更多的模型
5,缺少可视化,项目可读性不够

8.贡献者介绍

我们是深大应用统计的在读研究生,此前在课堂和论文中都学习过机器学习知识,于是便想把我们所得记录下来,同时在实践中锻炼自己。本文只是一个简单的开始,接下来我们会做更多的内容,除了在评论区交流,你还可以通过如下途径联系我们:
舒适黄狗,491447816@qq.com
ZX,2686676053@qq.com
yzh, 554653501@qq.com

从零开始,手把手,一文kaggle竞赛速度入门! 泰坦尼克相关推荐

  1. 从零开始拿到了Kaggle竞赛冠军

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手推笔记正式开源!可打印版本附pdf下载链接 因 ...

  2. 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军

    视学算法报道 机器之心编辑部 因为对数学感兴趣,勇敢的少年决定投身 Kaggle. 知乎上有这样一个问题已经收到了超过 700 条回答. 在这之下有人冷嘲热讽,有人给出了鼓励和建议.从人们回答的时间来 ...

  3. 从零开始拿到了Kaggle竞赛冠军--学习笔记(不是本人)

    本文转载自:机器之心 因为对数学感兴趣,勇敢的少年决定投身 Kaggle. 知乎上有这样一个问题已经收到了超过 700 条回答. 在这之下有人冷嘲热讽,有人给出了鼓励和建议.从人们回答的时间来看,问题 ...

  4. kaggle入门泰坦尼克之灾内容总结

    [泰坦尼克之灾](https://www.kaggle.com/c/titanic):求生问题预测,是一个二分类问题,判断每名乘客的存活情况,读了寒小阳大牛的博客,现做以下整理.阳哥只介绍了逻辑回归算 ...

  5. kaggle 入门 泰坦尼克 处理过程

    一.数据预处理 pandas库的内容(数据分析处理): read_csv :读取文件,变为矩阵 head(n) : 输出前n行内容,默认5 PassengerId Survived Pclass \ ...

  6. kaggle入门-泰坦尼克之灾

    kaggle入门-泰坦尼克之灾 引言 数据认识 总结 特征处理 建模预测 logistic分类模型 随机森林 SVM xgboost 模型验证 交叉验证 学习曲线 高偏差: 高方差 模型融合 总结 后 ...

  7. MOOC网深度学习应用开发1——Tensorflow基础、多元线性回归:波士顿房价预测问题Tensorflow实战、MNIST手写数字识别:分类应用入门、泰坦尼克生存预测

    Tensorflow基础 tensor基础 当数据类型不同时,程序做相加等运算会报错,可以通过隐式转换的方式避免此类报错. 单变量线性回归 监督式机器学习的基本术语 线性回归的Tensorflow实战 ...

  8. python机器学习及实践_机器学习入门之《Python机器学习及实践:从零开始通往Kaggle竞赛之路》...

    本文主要向大家介绍了机器学习入门之<Python机器学习及实践:从零开始通往Kaggle竞赛之路>,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. <Python 机 ...

  9. 从零开始,教你征战Kaggle竞赛

    来源:机器之心 本文共5400字,建议阅读12分钟. 本文将带你进入全球最大机器学习竞赛社区 Kaggle,教你如何选择自己适合的项目,构建自己的模型,提交自己的第一份成绩单. 本文将介绍数据科学领域 ...

最新文章

  1. 删除 此电脑 文件夹
  2. Tor真的匿名和安全吗?——如果是http数据,则在出口节点容易被嗅探明文流量,这就是根本问题...
  3. Git 撤销中间某次的提交记录
  4. Windows下MariaDB数据库安装图文教程
  5. 【已解决】Error: could not open `C:\Program Files\Java\jre1.8.0_121\lib\amd64\jvm.cfg‘
  6. python学习-defaultdict
  7. MySql数据库连接种类
  8. linux分辨率 保存,linux分辨率设置方法与问题-linux分辨率的设置方法分享-linux修改分辨率的经验分享_169IT.COM...
  9. c语言实现--单向循环链表操作
  10. android widget ViewFlipper
  11. web api(基于NFine框架) 中接口跳转数据格式错误解决方案
  12. keras.models导入Sequential错误
  13. 富文本编辑器 Kindeditor 的使用和 常见错误
  14. android 7.0之后的打开相机拍摄头像上传
  15. 托福百日冲刺(五一记忆)(1)
  16. Java中的isnan函数_Java Float类isNaN()方法与示例
  17. ubuntu新增固态硬盘
  18. 分享:js大小写转换的代码
  19. 李开复教你如何给自己的简历打分
  20. Nakagami-m 信道

热门文章

  1. Unity3D 内存优化(一)对象池
  2. pandas将表格第一行作为列名
  3. 西门子PLC—用 SCL 编写你的第一个 TIA 代码
  4. win10连接网络共享打印机出现没有当前打印机所需要的驱动
  5. linux系统安装ntp,Linux系统安装配置NTP时间服务器
  6. PyTorch深度学习入门笔记(五)torchvision中DataLoader的使用
  7. 计算机内部使用计数方法,计算机内部使用()计数。
  8. 新型智慧城市新架构方案(ppt)
  9. 支持自定义代码生成工具
  10. vue+elementUI实现自定义表单模板组件(二)