用SPK技术分析,泰坦尼克号沉船之后哪些人活下来了

本文采用Kaggle中比较知名的数据集Titanic Machine Learning from Disaster作为分析数据源,该数据集被评为五大最适合数据分析练手项目之一。

分析目的是根据训练集预测部分乘客在沉船事件中是否会存活?

数据分析的整个流程如下:
    (1)数据清洗
    (2)特征工程
    (3)缺失值
    (4)模型设计与预测

1. 数据的下载和字段的描述

数据的下载地址为https://www.kaggle.com/c/titanic/data 

目前,我们已经对变量,变量类型及其前几个取值情况有了初步的了解。

我们知道: 我们的目标是要预测生存情况(Survived)——因变量可供使用的自变量11个。

101753_y8wX_3115904.png

2. 使用的分析工具介绍

我们使用的工具是FEA-spk技术,它的底层基于最流行的大数据开发框架spark,对各种算子的操作都是基于DataFrame的。使用FEA-spk来做交互分析,不但非常简单易懂而且几乎和spark的功能一样强大,更重要的一点,它可以实现可视化,处理的数据规模更大,可以进行分布式的机器学习等,下面我们就来实现这个案例。

3. 案例的具体实现原语如下

(1) 加载数据

101816_2vkp_3115904.png100937_YW0P_3115904.gif

101821_trNR_3115904.png

训练集的数据格式如上图所示

(2)清洗数据

 a. 观察姓名变量

首先,我注意到在乘客名字(Name)中,有一个非常显著的特点:乘客头衔每个名字当中都包含了具体的称谓或者说是头衔,比如Mrs,Mr等。将这部分信息提取出来后可以作为非常有用一个新变量,可以帮助我们预测。

101852_Akmi_3115904.png

101857_HUzM_3115904.png

下面我们统计一下Title各个类别的个数。

101912_wh9d_3115904.png

101917_1gtd_3115904.png

下面我们将字符串映射为对应索引。

101931_eVuI_3115904.png

101937_cvpa_3115904.png

b.家庭情况是否会影响生存结果?

目前为止,我们已经处理完乘客姓名这一变量,并从其中提取了一些新的变量。 下一步考虑衍生一些家庭相关的变量。首先,生成家庭人数family_size这一变量。可以基于已有变量SubSp和Parch(具体含义参照上面)。

family_size=SubSp+Parch+1(包括自己)。

102000_XHC4_3115904.png

102005_MxBX_3115904.png

缺失值

————————————————————————————————————————————

现在我们开始对原始数据当中的缺失值进行处理(填补)。具体做法有很多种,考虑到数据集本身较小,样本数也不多,因而不能直接整行或者整列删除缺失值样本。那么只能通过现有数据和变量对缺失值进行预估填补。例如:可以用均值中位数模型填补缺失值,这里使用后面两种方式进行。

首先查看一下哪些字段有缺失值。

102018_lc4Z_3115904.png

可以看到Age字段,Embarked字段有缺失值, Cabin字段虽然有缺失值,但是缺失值太多了,所以这个变量不考虑。Age字段为数值型,可以使用平均值进行填充,Embarked字段为字符型,选择频率最大的字符进行填充。

102041_CmeV_3115904.png

102046_MvSE_3115904.png

102050_LK6D_3115904.png

可以看到出现次数最多的字符是S。

102106_xyBZ_3115904.png

可以看到没有缺失值了。

特征工程

—————————————————————————————————————————————

由于机器学习只支持数字类型,所以我们要将字符型的数据转化为数字类型的。

首先对于Sex字段,只有male,female两种类型,要将它转化为数字类型。

102130_GgAt_3115904.png

102136_bfu1_3115904.png

Embarked字段,同样要将字符型的数据转化为数字类型的,然后将其映射为独热编码。

102151_oHE3_3115904.png

102159_aiE7_3115904.png

然后删除不需要的列。

102211_PWRN_3115904.png 

102221_8W40_3115904.png

由于Spark机器学习需要的数据类型为double类型,所以我们将字符类型的转化为double类型。

102233_MAjk_3115904.png

102241_4PB0_3115904.png

模型设定与预测

———————————————————————————————————————————

在完成上面的工作之后,我们进入到最后一步:预测泰坦尼克号上乘客的生存状况。 在这里我们使用逻辑回归算法。我们前期那么多工作都是为了这一步服务的。首先我们要将所有的特征值聚合为向量。

102254_Ld9K_3115904.png

102301_jrJO_3115904.png

我们发现数据格式不一致,所以我们要进行归一化处理。

102314_tqTw_3115904.png

102321_CgkO_3115904.png

下面就是建立逻辑回归模型了。

102333_m2G0_3115904.png

此刻的模型已经建立好了,下面我们来评价模型的好坏

102342_CQtn_3115904.png

102349_Hr33_3115904.png

可以看到准确率达到了86%,如果想提高精确度,可以进行参数的调节

下面开始预测是否他们存活下来,这个时候就要用到测试集了,对测试集进行同样的变换,这里不再叙述了,变换后的df表如下所示

102401_2xcf_3115904.png

下面开始使用训练好的模型进行预测。

102415_Uacm_3115904.png

102422_YIGg_3115904.png

其中prediction列就是预测的结果,1代表活下来了,0代表没有获救。

最后我们还可以把模型保存在hdfs上面,以便下次进行使用。

102436_DEMQ_3115904.png

102445_6BP6_3115904.png

加载模型的时候就可以从上面加载下来,直接使用了。

102457_R2s3_3115904.png

以上就是预测泰坦尼克号获救的完整案例,后面会有更加精彩的内容推荐,欢迎关注!

转载于:https://my.oschina.net/u/3115904/blog/1563657

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值