本文介绍Kaggle入门比赛Titanic泰坦尼克号幸存预测的解题思路,使用的是神经网络和Tensorflow框架。提交代码附在本文的最后部分。

基本思路为:

  1. 导入数据集
  2. 对数据预处理
  3. 训练
  4. 预测并输出结果

一、入门介绍

1. 比赛介绍

Kaggle是一个数据建模和数据分析竞赛平台。

泰坦尼克号幸存预测是Kaggle上的一个入门级比赛,利于平台给的数据集,预测泰坦尼克号上不同乘客的幸存情况,并熟悉机器学习基础知识。

2. 板块介绍

Titanic比赛的主页-Kaggle

比赛地址:Titanic - Machine Learning from Disaster

Titanic - Machine Learning from Disasterhttps://www.kaggle.com/competitions/titanic

Kaggle的主页面如上,我们主要关注 Overview、Data 和 Submit Predictions 三个板块

  • Overview: 比赛的基本介绍
  • Data: 数据集的结构和字段介绍,在这里可以下载所需要的数据集
  • Submit Predictions: 提交预测结果,并查看本次比赛的分数

其他板块如 Code 可以查看其他团队分享的代码,Discussion 是解题思路的分享,Leaderboard 是分数排行榜。

3. 平台提交流程

  1. 首先在 data 板块中点击“Download All”下载训练集和测试集
  2. 训练集附带真实结果,而测试集是用来做预测并提交结果
  3. 编写代码预测后,按照要求的格式在 Submit Predictions 上传结果,并查看本次提交的分数与排名

二、方法介绍

1.理解需求

比赛很简单:创建一个模型,预测哪些乘客在泰坦尼克号沉船中幸存下来。
下载下来的数据包括三个文件:训练集(train.csv), 测试集(test.csv), 提交示例(gender_submission.csv)

  • 训练集(train.csv):用于神经网络进行训练的数据集,包含真实结果列(Survival)
  • 测试集(test.csv):训练好模型后,用此文件中数据进行预测得到结果
  • 提交示例(gender_submission.csv):最终提交结果的格式示例,包含 PassengerId 和 Survived 两列

2.数据预处理

  • 可以用各种工具(pandas、Excel 和 Kaggle 自带表格等)分析训练集的数据,判断每一列的数据类型和是否有空缺等情况
  • 去除对结果不影响的列
  • 对空缺的单元进行填充

3.构建模型

  • 使用 keras 的 Sequence 模型
  • 隐藏层使用 relu 激活函数

4.模型评估

  • 使用 keras 的 compile, fit, evaluate 方法进行训练和评估
  • 使用 keras 的 predict 方法预测结果,并将结果按提交示例形成 csv 文件输出

三、编码过程

  • 首先在 data 板块中点击“Download All”下载训练集和测试集

1.导入数据 load_data

  • 使用 pandas 的 read_csv 方法,导入数据 load_data
# 提前将所有包引入
import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.python.keras import activations
import matplotlib.pyplot as plt
from tensorflow.keras import regularizers
import datetime# 导入数据
def load_data(path_url, test_path_url):raw_train_dataset = pd.read_csv(path_url)raw_test_dataset = pd.read_csv(test_path_url)return raw_train_dataset, raw_test_datasetif __name__ == "__main__":# 1. 导入数据path_url = r"kaggle\titanic\train.csv"test_path_url = r"kaggle\titanic\test.csv"raw_train_dataset, raw_test_dataset = load_data(path_url, test_path_url)

2.数据预处理 preprocess