数据集及代码链接:https://github.com/CCH21/Lab_MLGroup_Tasks/tree/master/Task_Titanic
数据集概述
如下图所示,Titanic数据集共包含有三个csv文件,其中train.csv
是训练集,test.csv
是待预测的测试集,gender_submission.csv
是测试集的真实结果。
数据描述
import pandas as pd
from IPython.display import display
# 查看训练集和测试集
training_set = pd.read_csv('train.csv')
test_set = pd.read_csv('test.csv')
display(training_set)
display(test_set)
特征选择与数据预处理
首先,我们需要查看一下训练集和测试集的特征值缺失情况。
# 查看训练集各特征的缺失情况
for column in training_set.columns:
print('%-15s%-10.4f%-3d' % (column, training_set[column].count() / len(training_set), training_set[column].count()))
# 查看测试集各特征的缺失情况
for column in test_set.columns:
print('%-15s%-10.4f%-3d' % (column, test_set[column].count() / len(test_set), test_set[column].count()))
可以看出,在训练集中,Age
, Cabin
和Embarked
特征是有缺失值的,其中Cabin
的缺失值占到了超过77%的比例。在测试集中,Age
, Fare
和Cabin
特征有缺失值。
观察数据。Cabin
的缺失值过多,这时有两种解决方案,一是给所有的缺失值标记上Unknown
,二是直接删除这一特征。由于船舱号比较复杂,难以进行分析,因此选择直接删除这一特征列。PassengerID
肯定与最终的预测结果无关,因此删除此列。Ticket
特征同样难以分析,因此删掉。比较特殊的是Name
一列,它其实包含了一些人物的性别、社会地位等信息,可以保留但不易分析。其实,性别