其他分享
首页 > 其他分享> > 从零开始,手把手,一文kaggle竞赛速度入门! 泰坦尼克

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

作者:互联网

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

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

2.4下载数据

进入data栏在,拉到最下面,选择Download All
在这里插入图片描述
等待下载完成,恭喜,你可以开始处理数据训练模型了

3. 数据导入与预处理

数据导入
可以直接从kaggle官网找到比赛数据:链接
在上述页面可以看到数据概览,向下翻就能找到数据下载的方法,如图:
图1这里的数据略有不同,可以看到三个文件:
第一个文件为我们提供了最后提交模型预测结果文件的模板
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 pd

df = 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

标签:df,手把手,kaggle,Sex,泰坦尼克,test,csv,决策树
来源: https://blog.csdn.net/weixin_39930243/article/details/111463943