使用 RapidMiner 参加 Kaggle Titanic 竞赛

要准备 Data Mining 这门课的期中考发表,本来决定用 Python 代码来解决 Titanic 的预测,然后做一个 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 竞赛_第1张图片
选择有用的特征

2. 处理遗失的数据

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第2张图片
Age 存在遗失数据

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第3张图片

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第4张图片

3. 处理非数字数据

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

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第5张图片
使用 RapidMiner 参加 Kaggle Titanic 竞赛_第6张图片

4. 转换数据类型

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第7张图片

5. 设置标签数据

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第8张图片
使用 RapidMiner 参加 Kaggle Titanic 竞赛_第9张图片

6. 标准化数据

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第10张图片

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第11张图片
训练集处理过程

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第12张图片
测试集处理过程

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

搭建模型

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第13张图片

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第14张图片

导出结果

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第15张图片

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第16张图片

上传结果

导出的结果如下图所示:

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第17张图片

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

使用 RapidMiner 参加 Kaggle Titanic 竞赛_第18张图片

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

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

你可能感兴趣的:(使用 RapidMiner 参加 Kaggle Titanic 竞赛)