机器学习中的数据预处理

数据挖掘流程

1. 获取数据
2. 数据预处理

数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程。可能面对的问题有:数据类型不同,比如有的是文字,有的是数字,有的含时间序列,有的连续,有的间断。也可能,数据的质量不行,有噪声,有异常,有缺失,数据出错,量纲不一,有重复,数据是偏态,数据量太大或太小。
数据预处理的目的:让数据适应模型,匹配模型的需求。

3. 特征工程

特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。其中创造特征又经常以降维算法的方式实现。可能面对的问题有:特征之间有相关性,特征和标签无关,特征太多或太小,或者干脆就无法表现出应有的数据现象或无法展示数据的真实面貌。
特征工程的目的: 降低计算成本,提升模型上限。

4. 建模,测试模型并预测结果
5. 上线,验证模型效果

sklearn 中的相关模块

1.png

模块 preprocessing :几乎包括数据预处理的所有内容

模块 Impute :填补缺失值专用

模块 feature_selection :包括特征选择的各种方法的实践

模块 decomposition :包含降维算法

数据预处理


1. 数据无量纲化

归一化: $x = \frac{x - min(x)}{max(x)-min(x)} \quad$

1.png

标准化:$x = \frac{x - \mu}{\sigma} \quad$

1.png

注意: 大多数机器学习算法中,会选择StandardScaler来进行特征缩放,因为MinMaxScaler对异常值非常敏感。在PCA,聚类,逻辑回归,支持向量机,神经网络这些算法中,StandardScaler往往是最好的选择。MinMaxScaler在不涉及距离度量、梯度、协方差计算以及数据需要被压缩到特定区间时使用广泛,比如数字图像处理中量化像素强度时,都会使用MinMaxScaler将数据压缩于[0,1]区间之中。建议先试试看StandardScaler,效果不好换MinMaxScaler 。

2. 缺失值处理

API:

1.png

演示:

1.png

1.png

1.png

3. 处理分类型特征:编码和哑变量

3.1 处理标签

API:

1.png

演示:

1.png

3.2 处理分类型特征,非独热编码

API:

1.png

演示:

1.png

3.3 分类型特征独热编码,创建哑变量

思考一个问题:在舱门Embarked这一列中,我们使用[0,1,2]代表了三个不同的舱门,然而这种转换是正确的吗 ?

1.png

API:

链接:OneHotEncoder

演示:

1.png

1.png

3.4 处理连续性特征:二值化

API:

1.png

演示:

1.png

3.5 处理连续性特征:分段

API:

链接:KBinsDiscretizer

1.png

演示:

1.png

参考资料

菜菜的机器学习