这是小编第一次参加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%。
以上就是本次的实践哦,希望大家多多关注支持~~~
领取专属 10元无门槛券
私享最新 技术干货