数据预处理的主要内容包括数据清洗、数据集成、数据变换和数据规约。
数据清洗主要是删除原始数据集的无关数据、重复数据,平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值、异常值等.
处理缺失值的方法可分为3类:
如果存在大量缺失的列,可以采用删除含有缺失值的记录的方法
其中常用的数据插补方法:
均值/中位数/众数插补:根据属性值的类型,用该属性取值的平均数/中位数/众数进行插补
使用固定值:将缺失的属性值用一个常量替换.
最近临插补:在记录中找到与缺失样本最接近的样本的该属性值插补
回归方法:对带有缺失值的变量,根据已有数据和与其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值.
插值法:插值法是利用已知点建立合适插值函数f(x),未知值由对应点求出的函数近似代替值
常见的插值法:拉格朗日插值法和牛顿插值法
(1)拉格朗日插值法:
用一个n-1阶多项式去拟合n个点 ,将缺失值代入多项式得到对应的值
(2)牛顿插值法:
拉格朗日插值公式结构紧凑,在理论分析中很方便,但是当插值节点增减时,插值多项式就会随之变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值法。
在数据预处理时,异常值是否剔除,需视具体情况而定,因为有些异常值可能蕴含着有用的信息。
删除含有异常值的记录:直接将含有异常值的记录删除
视为缺失位:将异常值视为缺失值利用缺失位处理的方法进行处理
平均值修正:可用前后两个现测值的平均值修正该异常值
不处理:直接在具有异常值的数据集上进行挖掘建模
数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程
(1)同名异义
(2)异名同义
(3)单位不统一描述同一个实体分别用的是国际单位和中国传统的计量单位
检测和解决这此冲突就是实体识别的任务
数据集成往往导致数据冗余.例如
同一属性多次出现;
同一属性命名不一致导致重复
仔细整合不同源数据能减少甚至避免数据冗余与不一致从而提高数据挖掘的速度和质量。对于冗余属性要先分析、检测到后再将其删除
数据变换主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。
简单函数变换是对原始数据进行某些数学函数变换,常用的变换包括平方、开方、取对数、差分运算等。简单的函数变换常用来将不具有正态分布的数据变换成具有正态分布的数据。在时间序列分析中,有时简单的对数变换或者差分运算就可以将非平稳序列转换成平稳序列。在数据挖掘中,简单的函数变换可能更有必要。
数据规范化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落人一个特定的区域,便于进行综合分析。
数据规范化对于基于距离的挖掘算法尤为重要。
(1)最小—最大规范化
最小—最大规范化也称为离差标准化,是对原始数据的线性变换,将数值值映射到[0,1]之间。
(2)零—均值规范化
零—均值规范化也称标准差标准化,经过处理的数据的均值为0,标准差为1。
(3)小数定标规范化
通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。
一些数据挖掘算法,特别是某些分类算法(如ID3算法,Apriori算法等),要求数据是分类属性形式这样,常常需要将连续属性变换成分类属性,即连续属性离散化。
连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区问,最后用不同的符号或整数代表落在每个子区间中的数据值,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这此分类值。
常用的离散化方法有等宽法、等频法和(一维)聚类.
(1)等宽法
将属性的值域分成具有相同宽度的区问,区间的个数由数据本身的特点决定,或者由用户指定类似于制作频率分布表.
(2)等频法
将相同数量的记录放进每个区间,等宽法的缺点在于它对离群点比较敏感,倾向于不均匀地把属性值分布到各个区间,有些区间包含许多数据,另外一些区间的数据极少,这样会严重损坏建立的决策模型。
(3)基于聚类分析的方法
在数据挖掘的过程中,为了提取更有用的信息,挖掘更深层次的模式,提高挖掘结果的精度,我们需要利用已有的属性集构造出新的属性加入到现有的属性集合中。
在大数据集上进行复杂的数据分析和挖掘需要很长的时问,数据规约产生更小但保持原数据完整性的新数据集在规约后的数据集上进行分析和挖掘将更有效率。
数据规约的意义在于:
降低无效、错误数据对建模的影响,提高建模的准确性;
少量且具代表性的数据将大幅缩减数据挖掘所需的时间;
降低储存数据的成本。
属性规约通过属性合并来创建新属性维数,或者直接通过删除不相关的属性(维)来减少数据维数,从而提高数据挖掘的效率、降低计算成本属性规约的目标是寻找出最小的属性子集并确保新数据子集的概率分布尽可能地接近原来数据集的概率分布。
合并属性:将一些旧属性合并为新属性。
逐步向前选择:从一个空属性集开始,依次从原来属性集合中选择一个当前最优的属性添加到当前属性子集中。直到无法选择出最优属性或满足一定阈值约束为止。
逐步向后删除:从一个全属性集开始,每次从当前属性子集中选择一个当前最差的属性并将其从当前属性集中消除直到无法选择出最差属性为止或满足一定阈值约束为止。
决策树归纳: 利用决策树的归纳方法对原始数据进行分类归纳学习。获得一个初始决策树,所有没有出现在这个决策树的属性均可认为是无关属性因此将这些属性从原始集合中删除.就可以获得一个较优的属性子集。
主成分分析: 用较少的变量去解释原始数据中的大部分变量.即将许多相关性很高的变量转化成彼此相互独立或不相关的变量。
数值规约指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类,有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如回归(线性回归和多元回归)和对数线性模(近似离散属性集中的多维概率分布)。无参数方法就需要存放实际数据,例如直方图、聚类、抽样(采样)、参数回归。
interpolate :一维、高维数据插值 :Scipy
unique : 去除数据中的重复元素,得到单值元素列表,它是对象的方法名 :pandas/Numpy
isnull:判断是否空值:Pandas
notnull : 判断是否作空值 :Pandas
PCA: 对指标变量矩阵进行主成分分析:Scikit-Learn
random: 生成随机矩阵:Numpy