使用 RapidMiner 参加 Kaggle Titanic 竞赛

栏目: 数据库 · 发布时间: 6年前

内容简介:要准备 Data Mining 这门课的期中考,本来决定用之前的 Python 代码来准备作业,然后做一个 report 发表。后来在同学的提醒下,为什么不用 Rapid Miner 来呢。所以就尝试用 Rapid Miner 了。结果发现用 Rapid Miner 来做的话,十分便利,节省了写代码和数据探索分析的时间。而且从提交的结果上来看,也比 Python 代码的结果要好上一点。没有使用过 Rapid Miner 软件的话,可以参考这一篇文章:Rapid Miner 基本使用探索数据集,可以发现数据

要准备 Data Mining 这门课的期中考,本来决定用之前的 Python 代码来准备作业,然后做一个 report 发表。后来在同学的提醒下,为什么不用 Rapid Miner 来呢。所以就尝试用 Rapid Miner 了。结果发现用 Rapid Miner 来做的话,十分便利,节省了写代码和数据探索分析的时间。而且从提交的结果上来看,也比 Python 代码的结果要好上一点。

没有使用过 Rapid Miner 软件的话,可以参考这一篇文章:Rapid Miner 基本使用

数据处理

1. 选择有用的数据

探索数据集,可以发现数据集中的有些特征是对预测来说是没有作用的。比如:

  • PassengerId:乘客的 Id 信息,对于预测模型来说没有任何作用
  • Name:乘客的姓名,其也是无用的信息,模型不可能根据一个人的姓名特征来进行预测
  • Ticket:船票信息,上面是一些编号,也是没用的信息。
  • Cabin:船舱,这一特征没准会有点用处,但是它的遗失数据实在太多,且是非数字型的特征,因此也滤除掉。
  • Embarked:乘客登船的港口。 C - 瑟堡,S - 南安普敦,Q - 皇后镇。其也是没用的信息。

在 Rapid Miner 中选择 “Select Attributes” 操作器,双击该操作器,并选择除上面以外的特征。如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

2. 处理遗失的数据

选择完有用的数据后,统计可以发现,“Age” 特征存在遗失数据的情况,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

为了处理遗失的数据,在 Rapid Miner 中选择 “Replace Missing Value” 操作器,双击该操作器,选择需要执行该操作的特征 “Age”。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

然后,在右侧一栏中,选择 “average”,即使用计算平均值的方法来填补遗失的数据。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

3. 处理非数字数据

在统计数据集的时候,可以发现,“Sex” 这项特征是非数字的。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

这时候可以选用 “Norminal to Numerical” 操作器,选择 “Sex” 特征,将其转换成类似 one-hot 向量的数据。结果如下所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛
使用 RapidMiner 参加 Kaggle Titanic 竞赛

4. 转换数据类型

“Survived” 这一特征是数字型的特征,在这里我们需要将其处理成多类别的数据,0 表示死,1 表示生还。如果不这么处理的话 ,Rapid Miner 运行的结果就是生还的概率,而不是 0 或者 1 这样的结果。这样就不符合 Kaggle 提交的要求。此时,选择 “Numerical to polynominal” 这一操作器,然后选择 “Survived” ,将其处理成多类别的数据。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

5. 设置标签数据

在 Titanic 的训练数据集中,“Survived” 这一特征是标签(目标,label/target)数据,因此需要将其设置为 label 。这时可以使用 “Set role” 这一操作器。然后将 “Survived” 设置为 “label”。

使用 RapidMiner 参加 Kaggle Titanic 竞赛
使用 RapidMiner 参加 Kaggle Titanic 竞赛

6. 标准化数据

处理完上面的步骤后,接下来就要进行特征缩减,这时候可以将数据进行标准化。选择 “Normalize” 操作器,然后选择特征进行处理。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

所以,整个训练集数据的处理过程如下所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

对测试集数据也进行类似的上述步骤,具体过程如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

不过需要注意的是,在选择特征的时候,需要把 “PassengerId” 也选择进去,因为导出结果的时候会用到。

搭建模型

选择 “Decision Tree” 操作,然后将训练数据集处理后的输出连接到该操作器的输入口,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

训练完模型后,要将其应用在测试集上,这时候选择 “Apply Model” ,将模型训练后的输出和测试集处理完后的输出分别与 “Apply Model” 的两个输入口连接,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

导出结果

按照 Kaggle 的要求,只需要导出 “PassenerId” 和 “Prediction(Survived)” 这两列数据。所以先用“Select Attributes” 操作器选择这两个特征,然后用 “Write Excel” 操作器来完成导出任务,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

完整的搭建过程如下所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

上传结果

导出的结果如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

由于还是不符合提交要求,所以还需要进行处理。手工量不是特别大,所以可以直接在 Excel 中直接手动处理,然后导出为 csv 文件格式,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

然后将文件在 Kaggle 上提交,结果能达到 0.77511 的成绩,如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛

比用 Python 的结果 0.72727 的结果(一个星期前写的代码,处理数据的步骤完全一样)要好。

使用 RapidMiner 参加 Kaggle Titanic 竞赛

本篇文章首发于我的简书 (caoqi95)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

疯狂Java讲义

疯狂Java讲义

李刚 / 电子工业出版社 / 2012-1-1 / 109.00元

《疯狂Java讲义(附光盘第2版)》是《疯狂Java讲义》的第2版,第2版保持了第1版系统、全面、讲解浅显、细致的特性,全面介绍了新增的Java 7的新特性。 《疯狂Java讲义(附光盘第2版)》深入介绍了Java编程的相关方面,全书内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、Java注释、......一起来看看 《疯狂Java讲义》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具