kaggle项目之泰坦尼克幸存预测

kaggle是一个机器学习竞赛平台。

项目简介

作为kaggle的第一个项目,很有必要记录一下遇到的问题和解决的办法,哈哈哈。
kaggle是个国外网站,首先加载很慢……其次呢是鄙人英语水平实在不好,全程翻译……
在项目描述中,推荐通过这个大佬的教程来完成这个项目,所以下面的内容全都是跟这位大佬的解说,一步一步进行的。

Steps~

教程的右侧就是操作步骤喽!

Getting Started

首先我们需要点击参加比赛按钮,并且接受规则什么的,然后就可以点击data标签,来获取需要的数据集了!我们可以使用gender_submission.csv这个文件,来尝试提交一下答案这个数据比较偏激,只是用来测试提交答案功能的,不过我们应该提交的答案,需要和它格式相同,也就是说这是一个答案模板

这里我上传答案若干次,都失败了,原因不明……

Your coding environment

这里就要开始搭建环境了,新建一个kaggle的notebook这篇就是诞生于此
接下开,就是复制大佬的代码,从导入数据开始!

下面的代码,新建笔记本时就自动生成了,主要是导入需要的库。比如数据分析必备的numpy和pandas,读写文件需要的os。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))

# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All"
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session

下面的代码是用来读取训练数据的,运行后展示前5行结果。

1
2
train_data = pd.read_csv("/kaggle/input/titanic/train.csv")
train_data.head()

下面的代码是用来读取测试数据的,运行后展示前5行结果。

1
2
test_data = pd.read_csv("/kaggle/input/titanic/test.csv")
test_data.head()

Improve your score

假如我们的gender_submission.csv文件成立,也就是女性全部存活,男性全部死亡。

1
2
3
4
women = train_data.loc[train_data.Sex == 'female']["Survived"]
rate_women = sum(women)/len(women)

print("% of women who survived:", rate_women)

1
2
3
4
men = train_data.loc[train_data.Sex == 'male']["Survived"]
rate_men = sum(men)/len(men)

print("% of men who survived:", rate_men)


通过结果我们可以看出,船上有74%女性幸存,而只有19%的男性幸存。所以猜测的“女性全部存活,男性全部死亡”这个结论,是非常贴近结果的!!
但是我们还有其他的指标,不能只看性别,还要看年龄等等。此时就可以请机器学习来自动完成~这里我们使用随机森林来实现(我也不知道什么是随机森林,先看例子吧)。
二话不说贴代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from sklearn.ensemble import RandomForestClassifier

y = train_data["Survived"]

features = ["Pclass", "Sex", "SibSp", "Parch"]
X = pd.get_dummies(train_data[features])
X_test = pd.get_dummies(test_data[features])

model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=1)
model.fit(X, y)
predictions = model.predict(X_test)

output = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': predictions})
output.to_csv('my_submission.csv', index=False)
print("Your submission was successfully saved!")


秃然就完成了!我们可以点击右上角的Save Version,并选择Save & Run All (Commit)这个按钮,保存就可以了。保存以后我们点击Save Version后的数字,进入笔记本,再选择通过Viewer打开,就可以看到和大佬教程一样的格式了~

提交结果

程序生成了一个my_submission.csv文件,可以在Viewer中的output标签看到,点击提交就算完成比赛了~

小结

到此这个项目就算完成了,教程的最后是大佬的机器学习课程广告(怪不得一直在教程里说不用理解代码,抄就完事),据说只有3个小时,会讲解刚刚抄的代码。
通过这个项目,我们基本了解了如何参加一次kaggle比赛,从报名到提交答案,每个步骤几乎都涉及过,搞起来!