首先,我们读取原始数据,并查看各字段基本情况。
缺失值(missingvalue)是指现有数据集中某个或某些属性的值是不完全的。由于大部分机器学习模型无法处理缺失值,在数据建模前需要填补或者剔除缺失值。对于连续变量age,我们使用该列的均值进行填充,结果如下表所示。
对于离散变量gender,我们使用“未知”进行填充,结果如下表所示。
我们进一步用箱线图查看friends列是否存在异常值。箱线图中,小于Q_1-1.5\timesIQRQ11.5×IQR或大于Q_3+1.5\timesIQRQ3+1.5×IQR的数据点被视为异常值。
上图中绿色的数据点即为异常值,可以看到大于100左右即为异常值。
异常值(outlier),也称为极端值,是数据集中某些数值明显偏离其余数据点的样本点。因为线性回归模型等机器学习模型对异常值较为敏感,对异常值进行处理有利于提高建模的鲁棒性。
接下来,我们用直方图查看friends列数据分布情况。
由图可知,friends变量整体呈右偏,可能存在异常值。
通过数据筛选组件,我们可以剔除掉大于Q_3+1.5\timesIQRQ3+1.5×IQR的数据点,结果如下表所示。
剔除异常数据后,我们通过箱线图和直方图查看friends列的数据分布情况。
从上图来看,与异常值处理前相比,friends列中数据的异常值大大减少了,实验误差也会减少很多。
数据标准化指的是将数据按比例缩放的预处理操作。当我们希望消除量纲的影响、帮助模型收敛、适应模型假设时,就可能需要进行数据标准化。
在本案例中,我们将介绍比较常用的Z-Score标准化和MinMax标准化。下面我们对数据集中friends列做Z-Score标准化,使得处理后的数据均值为0,标准差为1。
下面我们对数据集中friends列做Min-Max标准化,使得处理后的数据取值分布在[0,1][0,1]区间上。
一般而言,我们需要将数据集中的非数值变量编码为数值才能用于模型训练。本案例将介绍两种常用的编码方法:数字编码与OneHot编码。我们先对数据集中的gender列进行数字编码。
通过数字编码,gender的三个取值被分别编码为0、1、2。
下面我们对数据集中的gender列进行OneHot编码。
在一些数据建模情景下,我们可能需要将连续变量转化为离散变量,即进行离散化处理。常见的离散化方法包括等距离散化和等频离散化。
我们先对friends列进行等距离散化处理,通过这种方法离散化处理后每个区间宽度相同。
可以看到friends列中数据被等距分为4组,取值分别为0、1、2、3。
然后我们对friends列进行等频离散化处理,通过这种方法离散化处理后落在每个区间内的数据点数量相同。
可以看到friends列中数据被等频分为4组,取值分别为0、1、2、3。