要准备 Data Mining 这门课的期中考发表,本来决定用 Python 代码来解决 Titanic 的预测,然后做一个 report 发表。后来在同学的提醒下,为什么不用 Rapid Miner 来解决这个问题呢。所以就尝试用 Rapid Miner 了。结果发现用 Rapid Miner 来做的话,十分便利,节省了写代码和数据分析的时间。而且从提交的结果上来看,也比 Python 代码的结果要好上一点。
不会使用 Rapid Miner 软件的话,可以参考这一篇文章:Rapid Miner 基本使用
探索数据集,可以发现数据集中的有些特征是对预测来说是没有作用的。比如:
在 Rapid Miner 中选择 “Select Attributes” 操作器,双击该操作器,并选择除上面以外的特征。如下图所示:
选择有用的特征
选择完有用的数据后,统计可以发现,“Age” 特征存在遗失数据的情况,如下图所示:
Age 存在遗失数据
为了处理遗失的数据,在 Rapid Miner 中选择 “Replace Missing Value” 操作器,双击该操作器,选择需要执行该操作的特征 “Age”。
然后,在右侧一栏中,选择 “average”,即使用计算平均值的方法来填补遗失的数据。
在统计数据集的时候,可以发现,“Sex” 这项特征是非数字的。
这时候可以选用 “Norminal to Numerical” 操作器,选择 “Sex” 特征,将其转换成类似 one-hot 向量的数据。结果如下所示:
“Survived” 这一特征是数字型的特征,在这里我们需要将其处理成多类别的数据,0 表示死,1 表示生还。如果不这么处理的话 ,Rapid Miner 运行的结果就是生还的概率,而不是 0 或者 1 这样的结果。这样就不符合 Kaggle 提交的要求。此时,选择 “Numerical to polynominal” 这一操作器,然后选择 “Survived” ,将其处理成多类别的数据。
在 Titanic 的训练数据集中,“Survived” 这一特征是标签(目标,label/target)数据,因此需要将其设置为 label 。这时可以使用 “Set role” 这一操作器。然后将 “Survived” 设置为 “label”。
处理完上面的步骤后,接下来就要进行特征缩减,这时候可以将数据进行标准化。选择 “Normalize” 操作器,然后选择特征进行处理。
所以,整个训练集数据的处理过程如下所示:
训练集处理过程
对测试集数据也进行类似的上述步骤,具体过程如下图所示:
测试集处理过程
不过需要注意的是,在选择特征的时候,需要把 “PassengerId” 也选择进去,因为导出结果的时候会用到。
选择 “Decision Tree” 操作,然后将训练数据集处理后的输出连接到该操作器的输入口,如下图所示:
训练完模型后,要将其应用在测试集上,这时候选择 “Apply Model” ,将模型训练后的输出和测试集处理完后的输出分别与 “Apply Model” 的两个输入口连接,如下图所示:
按照 Kaggle 的要求,只需要导出 “PassenerId” 和 “Prediction(Survived)” 这两列数据。所以先用“Select Attributes” 操作器选择这两个特征,然后用 “Write Excel” 操作器来完成导出任务,如下图所示:
完整的搭建过程如下所示:
导出的结果如下图所示:
由于还是不符合提交要求,所以还需要进行处理。手工量不是特别大,所以可以直接在 Excel 中直接手动处理,然后导出为 csv 文件格式,如下图所示:
然后将文件在 Kaggle 上提交,结果能达到 0.77511 的成绩,如下图所示:
比用 Python 的结果 0.72727 的结果(一个星期前写的代码,处理数据的步骤完全一样)要好。