Kaggle首战:泰塔尼克号生存率预测

这是小编第一次参加Kaggle比赛,有点兴奋和激动。本文可能会花费20分钟,若有不对的地方,欢迎指正。

Kaggle简介

Titanic比赛分析

Kaggle简介

Kaggle是一个数据科学竞赛的平台,创办于2010年,目前已经被Google收购。Kaggle采用众包的方式,很多公司将接近真实业务的问题发布在该平台上,吸引数据科学家贡献解决方案和智慧,并设立奖金池。

在主页中点击competitions,会有很多比赛。初学者可以选择练手的入门项目。我们这次选择经典的泰塔尼克号生存率预测项目,项目链接如下:https://www.kaggle.com/c/titanic

Titanic比赛分析

1.项目背景

泰塔尼克号上女性,孩子和上层阶级生还率高于其他群体,由此,本项目用来预测不同身份乘客的生还率,以下是截取Kaggle中该项目的介绍:

2.分析思路

按照数据分析的6个步骤,具体看以下思维导图:

3.步骤实施

3.1 数据采集

在Tatanic比赛页面下载数据,格式为CSV

3.2 导入数据

为了方便数据的清洗,使用append()方法合并训练数据和测试数据

3.3 查看数据集

使用full.info()函数查看每列数据的缺失情况:

可以看到age、cabin(船舱)、Embarked(上岸口)、Fare(船票)这4个列均有缺失数据,这就是下一步的工作重点了。

3.4 数据清洗

3.4.1 Age年龄和Fare船票价格用平均值填充,使用fillna()函数

3.4.2 Embarked(上岸口)用众数填充

先查看岸口最多是哪一个,再使用最多的港口S填充

3.4.3 cabin(船舱)由于缺失值较多,固用Unknow填充

以上,缺失数据均补充完整,接下来看特征工程。

3.5 特征工程

在数据领域有这样一句话:数据和特征决定了机器学习的上限,模型和算法逼近这个上限。所以,从原始数据中提取特征的好坏直接影响模型的效果。特征工程就是从原始数据中最大限度的提取特征,以供机器学习和算法使用。

一般有以下3种数值类型,——后是特征提取方法

1、数值类型——直接使用

2、时间序列(经过长期重复测量而形成的时间序列)——转换成单独的年月日

3、分类数据(性别)——用哑变量(虚拟变量)代替。如男=1,女=0。若类别超过2个,用one-hot编码。

接下来,我们逐一对5个变量进行特征提取

3.5.1 Sex性别

使用map函数,对数据集重新定义

3.5.2 Embarked登录港口

使用哑变量重新赋值

3.5.3 Pclass客舱登记

3.5.4 Cabin客舱类别

3.5.5 Parch和SibSp

SibSp:表示船上兄弟姐妹数和配偶数量,理解为同代直系亲属数量,

Parch:表示船上父母数和子女数,理解为不同代直系亲属数量。

据此,这两个数据可用来衡量乘客的家庭大小,而家庭的大小规模肯定会影响乘客的生还几率,因此可创建衡量家庭规模的变量familySize。

3.5.6 字符串(Name姓名)的特征提取

仔细观察可以发现,Name的字段中包含有Mr、Miss 等身份信息,我们可以用spilt()函数将有效字段分割出来

分割出后我们来定义头衔

提取完以上特征后,均使用concat()函数将新的特征加入数据集中,并删除原来的字段,以Embarked为例

最终得到了一个33列的数据集合

3.6 特征选择

我们使用相关系数法,选取和survived相关的特征值:

并查看各个特征和survived关系大小排序

根据各个特征与生成情况(Survived)的相关系数大小,选择几个字段进行输入:头衔(前面所在的数据集titleDf)、客舱等级(pclassDf)、家庭大小(familyDf)、船票价格(Fare)、船舱号(cabinDf)、登船港口(embarkedDf)、性别(Sex)。并重新构建数据集:

4. 构建模型

4.1 截取出训练数据和预测数据集

交叉检验

4.2 选择机器学习算法并检验准确性

此处我们用逻辑回归算法

看到测试数据的准确度为81%

5. 模型评估

对预测数据中的生存情况进行预测

最后一步,将结果上传到Kaggle中,看排名情况:

哈哈,可以看得本次得到5404名,top49%,以后会继续优化模型。争取进10%。

以上就是本次的实践哦,希望大家多多关注支持~~~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180427G08VVW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券