数据预处理主要包括:数据清洗、数据集成、数据变换和数据规约。
数据清洗主要是删除原始数据中的无关数据、重复数据,平滑噪音数据,筛选掉和挖掘主题无关的数据,处理缺失值和异常值。
处理缺失值数据方法有三类:删除记录、数据插补和不处理。其中数据插补方法如下:
1)均值/中数值/众数插补:根据属性类型,用均值、中数值或众数进行插补。
2)使用固定值:将缺失的属性值用一个常量替换。
3)最近邻插补:在记录中找到缺失样本最近邻的样本的该属性进行插补。
4)回归方法:根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值。
5)插值法:利用已知点建立合适的插值函数f(x),未知值由对应点x求出函数值f(x)近似代替。(拉格朗日插值法、牛顿插值法、Hermite插值、分段插值、样条插值法)
异常值处理要视情况而定,因为有些异常值可能蕴含着有用的信息,处理方式如下:
1)删除含有异常值的记录
2)视为缺失值
3)平均值修正:用前后两个观察值的平均值修正该异常值。
4)不处理。
数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。
从不同的数据源识别出现实中的实体,统一不同源数据的矛盾之处:同名异义,异名同义,单位不统一
数据集成往往导致数据冗余,如:同一属性多次出现,同一属性名不一致导致重复。
数据变换主要是对数据进行规范化处理,将数据转换为“适当的”形式,以适用于挖掘任务及算法的需要。
对原始数据进行某些数学函数变换,常用的如平方、开方、取绝对值、差分运算等。
也叫归一化处理,往往不同的指标具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据的分析结果。为了消除影响,要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定区域,便于进行综合分析。
1)最小--最大规范化:也叫离差标准化,是对原始数据的线性变换,将数值值映射到[0, 1]之间。
2)零--均值规范化:也叫标准差规范化,经过处理的数据均值为0,标准差为1。
3)小数定标规范化:通过移动属性值的小数位数,将属性映射到[-1, 1]之间,移动小数的位数取决于属性值的最大值。
一些数据挖掘算法,特别是分类算法,要求数据是分类属性形式,这样常常需要将连续属性变换为分类属性。
1)离散化的过程
连续属性的离散化是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或数值代表每个落在区间内的数据值。
2)离散化方法
为了提取更有用的信息,挖掘更深层次的模型,提高挖掘结果的精度,我们需要利用已有的属性集构造出新的属性,并加入到现有属性集合中。
小波分析的理论和发放在信号处理、语音处理、图像处理、模式识别、量子物理等领域得到广泛应用。能够刻画某个问题的特征量往往隐含在一个信号中的某个或某些分量中,小波变换可以把非平稳信号分解为表达不同层次、不同频带信息的数据序列,即小波系数。
1)小波变化的特征提取方法:
对小波基函数进行伸缩和平移变换
在大数据集上进行复杂的数据分析和挖掘需要很长的时间,数据规约产生更小但保持原数据完整性的新数据集。
通过属性合并来创造新属性维度,或者直接通过删除不相关的属性(维度)来减少数据维度,从而提高数据挖掘效率。属性规约的目标是找出最小属性子集并确保新数据子集的概率分布尽可能地接近原来数据集的概率分布。属性规约常用方法:
1)合并属性:将一些旧属性合并为新属性
2)逐步向前选择:从一个空属性开始,逐步从原来属性集中选择一个当前最优属性添加到当前属性子集。直到无法选择到最优属性或满足一定阈值的约束为止。
3)逐步向后删除:从全属性集开始,每次从当前属性集中选择一个当前最差属性,并将其从当前属性集中消除。
4)决策树归纳:利用决策树归纳方法对初始数据进行归纳学习,获得一个初始决策树,所有没有出现在这个决策树的属性均可认为是无关属性,将其删除。
5)主成分分析:用较少的变量去解释原始数据中大部分变量,即将许多相关性很高的变量转换成彼此相互独立或不相关的变量。
数值规约是指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。
interpolate是Scipy的一个子库,包含大量的插值函数,如拉格朗日插值、样条插值、高维插值等。
去除数据中的重复元素,np.unique(S), D.unique() D为Pandas的Series对象
判断每个元素是否空值/非空值,D.isnull(),D.notnull()
random是Numpy的一个子库,可生成服从特定分布的随机矩阵,抽样时可使用。
对指标变量进行主成分分析。是sklearn下的一个模式对象。