Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】
本文介绍Kaggle入门比赛Titanic泰坦尼克号幸存预测的解题思路,使用的是神经网络和Tensorflow框架。提交代码附在本文的最后部分。
基本思路为:
- 导入数据集
- 对数据预处理
- 训练
- 预测并输出结果
一、入门介绍
1. 比赛介绍
Kaggle是一个数据建模和数据分析竞赛平台。
泰坦尼克号幸存预测是Kaggle上的一个入门级比赛,利于平台给的数据集,预测泰坦尼克号上不同乘客的幸存情况,并熟悉机器学习基础知识。
2. 板块介绍
比赛地址: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. 平台提交流程
- 首先在 data 板块中点击“Download All”下载训练集和测试集
- 训练集附带真实结果,而测试集是用来做预测并提交结果
- 编写代码预测后,按照要求的格式在 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
首先我们确定数据集 features_test
训练集 train.csv 中共包含 12 列,分别是 passengerId,survival,pclass,name,sex,Age,sibsp,parch,ticket,fare,cabin,embarked。
通过分析可知对预测结果有影响的列为 Pclass,Sex,Fare,Age,SibSp,Parch,Embarked,而Survived为真实标签列。PassengerId在测试集中会用到。
根据以上分析确定所需的列,形成
features_test
,将训练集裁剪为所需列。接下来对数据的缺失值进行填补
用pandas的describe()和isnull().sum()方法可以对训练集进行数值统计,考虑以中位数来替代缺失值。其中缺失较多的列为Age和Fare列。
数据类型统一为数字编码
考虑Sex和Embarked列是字符串,将其修改为每一个可能性字符单独一列,并去除原列。归一化输入(标准化)
第一步是零均值化,每个训练数据Titanic 泰坦尼克号预测-Tensorflow 方法-【Kaggle 比赛】相关推荐
- 泰坦尼克号预测如何做到Kaggle排名前2%
转载自:http://www.jasongj.com/ml/classification/ 做机器学习其实最重要的就是特征工程,对特征进行适当的分析处理.组合.扩充等等,将会带来远超过不同算法带来的提 ...
- 实战Kaggle比赛----预测房价(多层感知机)
文章目录 实战Kaggle比赛----预测房价 下载和缓存数据集 Kaggle简介 访问和读取数据集 数据预处理 标准正态化.缺失值填充.离散值one-hot编码 小栗子帮助理解 训练 KKK折交叉验 ...
- 生存预测 : kaggle titanic 泰坦尼克号 逻辑回归(Logistic回归) tensorflow版
目录 test.csv train.csv titanic.py 数据集 https://www.kaggle.com/c/titanic/data titanic.py import tensorf ...
- ML之LoRBaggingRF:依次利用LoR、Bagging、RF算法对titanic(泰坦尼克号)数据集 (Kaggle经典案例)获救人员进行二分类预测(最全)
ML之LoR&Bagging&RF:依次利用LoR.Bagging.RF算法对titanic(泰坦尼克号)数据集 (Kaggle经典案例)获救人员进行二分类预测 目录 输出结果 设计思 ...
- EL之Bagging:kaggle比赛之利用泰坦尼克号数据集建立Bagging模型对每个人进行获救是否预测
EL之Bagging:kaggle比赛之利用泰坦尼克号数据集建立Bagging模型对每个人进行获救是否预测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 bagging_clf = ...
- ML之RF:kaggle比赛之利用泰坦尼克号数据集建立RF模型对每个人进行获救是否预测
ML之RF:kaggle比赛之利用泰坦尼克号数据集建立RF模型对每个人进行获救是否预测 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 #预测模型选择的RF import numpy as ...
- Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量
Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...
- [Kaggle实战] Titanic 逃生预测 (1) - 项目起步
这次实战的Kaggle比赛,其实只是其中一个没有奖金的公益比赛. 主页: http://www.kaggle.com/c/titanic-gettingStarted 主题是: Titanic: Ma ...
- ML之RFXGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还)
ML之RF&XGBoost:基于RF/XGBoost(均+5f-CrVa)算法对Titanic(泰坦尼克号)数据集进行二分类预测(乘客是否生还) 目录 输出结果 比赛结果 设计思路 核心代码 ...
最新文章
- 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
- 用node实现websocket协议
- mysql binlog日志定时删除---计划任务
- webpack常用命令总结
- JS中获取元素的第二种方法
- gpio驱动蜂鸣器出现破音_五款蜂鸣器驱动电路原理图
- python借助missingno可视化分析缺失值
- vm虚拟机安装lede旁路由_vmware虚拟机下安装lede软路由
- statspack report分析
- 小米手机便签怎么批量导出到另一个手机
- Ubuntu设置下载源
- 从零开始成为网络工程师,H3CNE从零学起
- 强化学习(RL)原理以及数学模型
- 泛泛而谈的菜鸟学习记录(三)—— unity后处理
- 【生信分析】一些关于生物信息的常见名字解释
- 是否需要这么一支“特别行动队”?
- 百度地图API调用问题-sn 的生成
- LINUX uptime命令解读
- 软考-软件设计师 笔记一(计算机组成与体系结构)
- Spring源码解析十五
热门文章
- 用Python实现微信公众号WCI指数计算器
- mac创建文件服务器,mac命令行终端怎么创建文件 mac命令行终端创建文
- RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.
- checkpoint NGFW VM安装
- 动画对象(lv_anim_t)的应用
- 《蛋白质和细胞》:人类合子中CHEK1基因杂合突变造成卵裂阻滞
- 【基础篇】Redis深入理解与实践指南(一)之Redis的前世今生
- Gradually Vanishing Bridge for Adversarial Domain Adaptation(CVPR2020)笔记
- US zip code
- 判断点集与多边形的位置关系
- 泰坦尼克号预测如何做到Kaggle排名前2%