在上篇 泰坦尼克号幸存者数据分析 中,我们对泰坦尼克号的幸存者做了数据分析,通过性别、年龄、船舱等级等不同维度对幸存者进行了分类统计,回答了哪些人可能成为幸存者
本文我们将对泰坦尼克号数据集应用特征工程、训练分类模型并对幸存者进行预测
1、数据挖掘概述
数据挖掘的基本流程如下:
- 数据读取与数据探索(统计分析)
- 读取数据与概览
- 单变量分析:单个变量对标签的影响
- 多变量分析:多个变量对标签的影响
- 统计绘图
- 相关性分析(特征相关性热力图)
- 数据清洗与预处理
- 缺失值处理
- 标准化、归一化
- 特征工程
- 建模与预测
- 数据集切分
- 多模型评估优化对比:交叉验证、网格搜索
- 集成学习:提升算法(XGBoost、GBDT、LightGBM)、多种算法集成(神经网络)
2、特征工程概述
特征工程是机器学习工作流程中重要的组成部分,它是将原始数据转化成模型可理解的形式的过程。如何基于给定数据来发挥更大的数据价值就是特征工程要做的事情
在2016年的一项调查中发现,数据科学家的工作中,有超过80%的时间都在获取、清洗和组织数据;构造机器学习流水线的时间不到20%。可见特征工程的重要性
特征工程在机器学习流程中的位置如下:
特征工程处在原始数据和特征之间。它的任务就是将原始数据翻译成特征的过程,这个过程将数据转换为能更好的表示业务逻辑的特征,从而提高机器学习的性能
特征工程主要包括数据预处理、特征选择与提取等
3、相关性分析
相关性分析是指对两个或多个具备相关性的变量进行分析,从而衡量变量的相关密切程度(线性相关性)
热力图(Heatmap)是一种数据相关性可视化工具,它通过使用颜色的深浅来展示数据矩阵中数值的大小或密度。通常来说,颜色越深,相关度越高
可以使用Pandas中的corr()
函数来计算两个变量之间的相关系数。两个变量之间相关系数的计算公式为
即两个变量X、Y的Pearson相关系数 ρ X , Y ρ_{X,Y} ρX,Y等于它们之间的协方差 c o v ( X , Y ) cov(X,Y) cov(X,Y)除以它们各自的标准差的乘积 σ X σ Y σ_Xσ_Y σXσY
值得注意的是,该相关系数只能度量变量之间的线性相关性;也就是说,相关系数越高,则变量间的线性相关程度越高
常见的相关系数有:
- 皮尔森(Pearson)相关系数:最常用,适用于数据呈正态分布的场景,正态图可查看正态性,散点图展示数据关系
- 斯皮尔曼(Spearman)相关系数:适用于数据不满足正态分布的场景,正态图可查看正态性,散点图展示数据关系
- 肯德尔(Kendall)相关系数:适用于数据的一致性判断,通常用于非关系研究,如评委打分,数据排名等
按照相关的方向,相关性可以分为正相关和负相关。因此相关系数的取值始终在[-1,1]
之间
- -1:表示两个变量之间完全负线性相关
- 0:表示两个变量之间不存在线性相关
- 1:表示两个变量之间存在完全正线性相关
通常情况下通过以下取值范围判断变量的正相关强度:
相关系数 | 正相关强度 |
---|---|
0.8-1.0 | 极强相关或完全相关 |
0.6-0.8 | 强相关 |
0.4-0.6 | 中等程度相关 |
0.2-0.4 | 弱相关 |
0.0-0.2 | 极弱相关或无相关 |
通过绘制热力图,我们可以探究各个特征变量之间的相关性,进而探究特征之间是否存在多重共线性
1)计算相关系数
# 计算特征之间的相关系数
data_corr = data[['PassengerId', 'Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']]
print(data_corr.corr().to_string())
2)绘制相关性热力图
Seaborn是基于Matplotlib的Python数据可视化库。Seaborn在Matplotlib基础上进行了更高级的封装,它提供了一个高级界面,使得作图更加方便快捷