针对Titanic数据集的数据探索分析与预处理

1. 数据集介绍

Titanic数据集来自Kaggle竞赛平台的入门项目Titanic: Machine Learning from Disaster,数据记录了泰坦尼克号处女航撞上冰山沉没北大西洋时,不同年龄、性别和社会地位的乘客及船员的生存情况。数据一共包含两个文件,分别是训练数据(train.csv)和测试数据(test.csv)。数据经过适当的探索分析和预处理后,可开展泰坦尼克号乘客生存预测。数据字段及具体含义如下:

2. 数据探索分析与预处理

2.1 导入数据

合并数据,方便统一进行数据清洗

2.2 查看数据

查看数据导入情况

2.3 检查数据质量

针对数据可能存在的“不完整、不正确、不一致”问题,重点检查以下几个维度:

发现:1)Survived字段的缺失来自于测试集;2)Age和Cabin字段存在较多的数据缺失,Age字段可以尝试一定的缺失值补全,Cabin字段由于缺失值过多可以考虑删去。

发现:1)数据集中乘客平均年龄在30岁左右;2)数据集中乘客年龄存在异常点(高龄乘客)。3)平均而言,幸存者相对更年轻。

2.4 数据清洗

针对Titanic数据集,主要进行缺失值填充策略的探索。

  1. 使用特定值(如均值、众数)填充缺失值
  1. 基于近邻推断填充缺失值
    sklearn.impute.KNNImputer类能提供基于K近邻推断填补缺失值的方法。基本思路是
    1)基于其他未缺失值计算K近邻;2)利用K近邻对缺失字段的值进行推断,如加权平均。
    注意:该方法只能处理数值属性;
  1. 其他缺失值处理方法,可以查看链接

2.5 离散属性编码

  1. 对Sex根据指定的map进行0-1编码
  1. 对变量Embarked(登船港口)进行编码
  1. 对变量Pclass(船票等级)进行编码

2.6 特征工程

基于数据集已有字段和挖掘任务,有针对性地创建新的特征。

  1. 提取变量Name中的头衔并编码

变量Title中部分头衔并不常见,因此进行汇总处理,得到共6类,分别是Officer, Royalty, Mrs, Miss, Mr, Master

  1. 基于变量SibSp和Parch计算家庭规模数据

2.6 数据标准化

可以利用sklearn.preprocessing包实现数据标准化操作。其中,StandardScaler可用来做正态标准化,MinMaxScaler可用来做最小最大标准化。