目录
4.2Titanic罹难乘客预测
1、背景
与“2.1.1.5决策树总结”节所探索的任务一样,Kaggle也在其平台上发布了“泰坦尼克号罹难乘客”的预测任务;并且这个预测问题一直作为其平台的教学任务,供初学者熟悉Kaggle的竞赛流程。时至今日已有几千名选手设计了他们的模型,同时网站的自动评估系统也对他们所提交的结果做了测试,并且发布了排名。
因此,通过这项兼具有纪念和缅怀意义的任务,来完成一次真正的实战演练,并与他人同台竞技。这跟之前的实践略有不同的是,Kaggle上的实战问题都不会提供测试集的正确答案,包括这项教学任务。所以,期待大家不断地尝试提及的机器学习模型,并且竭尽所能地优化它们。只有这样,才能从不懈的实战中积累经验,最终达到熟练掌握机器学习的应用技巧、快速构建机器学习系统的目的。
正如图4-6所示,在Titanic罹难乘客预测任务的竞赛主页的左边栏(Dashboard),不仅可以查阅当前竞赛的信息,包括竞赛的描述(Description)、如何评价提交结果(Evaluation)、竞赛规则(Rules)还有奖金悬赏的细节(Prizes);还能够在Data页面中下载必要的数据,进而在Make a submission页面提交结果。
2、下载数据
虽然可以在Data页面看到7个文件下载。但是,用于竞赛的数据只有train.csv(59.76KB)和test.csv(27.96KB)文件。这里下载这两份数据到本地计算机的Datasets/Titanic文件夹下。
备注:具体下载数据的方法参照。
3、搭建模型
接下来,读者可以有两种选择编写代码,一种是在自己的本地计算机编写代码;另一种是直接在Kaggle平台上编写代码并在线运行。对于后者,只需在左边栏点击New Script,进入类似于图4-2所示的Kaggle在线编程页面,按照所给的代码范例,并注意文件读写的正确路径即可。这里只给出本地IPython Notebook中运行的代码。不仅使用随机森林分类器与XGBoost模型,而且均采用交叉验证的方法搜索最优的超参数组合。
备注:图4-2参照。
4、编程实践
# 代码77:Titanic罹难乘客预测竞赛编码示例
# 导入pandas方便数据读取和预处理。
import pandas as pd
# 分别对训练和测试数据从本地进行读取。
train = pd.read_csv('../Datasets/Titanic/train.csv')
test = pd.read_csv('../Datasets/Titanic/test.csv')
# 先分别输出训练与测试数据的基本信息。这是一个好习惯,可以对数据的规模、各个特征的数据类型以及是否有缺失等,有一个总体的了解。
print(train.info())
print(test.info())
# 按照我们之前对Titanic事件的经验,人工选取对预测有效的特征。
selected_features = ['Pclass', 'Sex', 'Age', 'Embarked', 'SibSp', 'Parch', 'Fare']
X_train = train[selected_features]
X_test = test[selected_features]
y_train = train['Survived']
# 通过我们之前对数据的总体观察,得到Embarked特征存在缺失值,需要补完。
print(X_train['Embarked'].value_counts())
print(X_test['Embarked'].value_counts())
# 对于Embarked这种类别型的特征,我们使用出现频率最高的特征值进行补充,这也是相对可以减少引入误差的一种填充方法。
X_train['Embarked&#