文章目录
在数据挖掘中,原始数据存在大量不完整、有异常的数据,严重影响建模的执行效率,甚至会导致结果偏差,因此非常有必要进行数据清洗,数据清洗完成后接着或同时进行数据集成、转换、规约等一系列处理,这个过程就是数据预处理。
总而言之,数据预处理的主要内容包括数据清洗、数据集成、数据变换和数据规约。
一、数据清洗
数据清洗主要是删除原始数据集中的无关数据、重复数据,平滑噪声数据,筛选掉与挖掘主题无关的数据,处理异常值、缺失值等。
1. 缺失值处理
缺失值处理主要包含三类:删除记录、数据插补和不处理。
常用数据插补方法如下:
2. 异常值处理
二、数据集成
数据集成是将多个数据源合并存放在一个一致的数据存储中的过程。
在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,考虑实体识别问题和属性冗余问题,从而将源数据在最底层上加以转换、提炼和集成。
1. 实体识别
有同名异义、异名异义和单位不统一
2. 冗余属性识别
有:
同一属性多次出现;
同一属性命名不一致导致重复。
有些冗余属性可以用相关性分析检测。用相关系数度量两个属性之间的相互之间的蕴含程度。
三、数据变换
数据变化主要是对数据进行规范化的处理,将数据转换成“适当的”形式。以适用于挖掘任务和算法的需要。
1. 简单函数变换
平方、开方、取对数、差分运算等等
2. 规范化(归一化)
比如将数据映射到[-1, 1]或者[0, 1]内。
数据规范化对于基于距离的算法尤为重要。
3. 连续属性离散化
一些数据挖掘算法,尤其是某些分类算法,要求数据是分离属性形式。因此,需要将连续属性变换成为分类属性,即连续属性离散化。
连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或者整数值代表落在每个子区间的数据值。因此离散化涉及到:确定分类数以及如何将连续属性映射到这些分类值。
常用离散化方法:
等宽法、等频法、基于聚类分析的方法
4. 属性构造
利用已有的属性集构造出新的属性,并融合到现有的属性集合当中。
例如:
5. 小波变换
四、数据规约
数据规约产生更小但是保持原来数据完整性的新数据集,规约后的数据集分析和挖掘起来更有效率。
1. 属性规约
通过属性合并来创造新的属性维数,或者通过删除不相关的属性来减少数据维度。从而提高数据挖掘效率、降低计算成本。
属性规约的目标是寻找出最小的属性子集并确保新的数据子集的概率分布尽可能接近原来的。
2. 数值规约
通过选择替代的、较小的数据来减小数据量,包括有参数方法和无参数方法。
有参数方法是用一个模型评估数据,只需存放参数,而不需要存放实际数据。例如回归和对数线性模型等。
无参数方法就需要存放实际数据,例如直方图、聚类、抽样(采样)。
小笔记:桶表示给定属性的一个连续区间。
五、Python主要数据预处理函数
参考书籍:
《Python数据分析与挖掘实战》