python数据预处理

写在前面

最近在看python数据分析与挖掘实战这本书,所以就顺手做个笔记,方便日后忘记了查找。这本书前面五章主要讲的是数据挖掘的建模过程,包括数据探索、数据预处理以及挖掘建模常用算法等几个方面。后面十章是案例分析,每章一个实战案例,加深对数据分析与挖掘的理解。前面的都比较基础,所以从第四章数据预处理开始看。

1. 数据清洗

数据清洗主要是删除原始数据集中的无关数据、重复数据,平滑噪声数据,筛选掉与挖掘主题无关的数据,处理缺失值、异常值等。

1.1 缺失值处理

处理缺失值主要有三种方法:删除记录、数据插补和不处理。当然这里数据插补是最使用最多的,包括均值/中位数/众数插补、固定值插补、最近邻插补、回归方法插补和插值法。

(1)拉格朗日插值法

拉格朗日插值法是一个数学问题


将缺失的函数值对应的点x带入插值公式即得到缺失值的近似值L(x)。

但是当插值结点增减时,插值多项式就会随之变化,这在实际计算中是很不方便的,为了克服这一点,提出了牛顿插值法。

(2)牛顿插值法

  • 差商公式


  • 联立以上差商公式建立插值多项式


  • 将缺失的函数值对应的点x带入插值公式即得到缺失值的近似值f(x)

牛顿插值法的优点是计算较简单,尤其是增加节点时,计算只增加一项,这是拉格朗日插值无法比的。 
缺点是仍没有改变拉格朗日的插值曲线在节点处有尖点,不光滑,插值多项式在节点处不可导等。

1.2 异常值处理

异常值处理方法 f方法描述
删除含有异常值的记录 a直接将含有异常值的记录删除
视为缺失值 l利用缺失值处理的方法进行处理
平均值修正 y用前后两个观测值的平均值修正该异常值
不处理 m某些异常值也是包含有用的信息

2. 数据集成

数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。

2.1 实体识别

指不同数据源识别出现实世界的实体,他的任务是同意不同数据源的矛盾之处。常见形式有:

  • 同名异义
  • 异名同义
  • 单位不同意

2.2 冗余属性识别

数据集成往往造成数据冗余,例如同一属性出现多次以及同一属性命名不一致导致重复

3. 数据变换

数据变换主要是对数据进行规范化处理,将数据转换成适当的形式,以适用与挖掘任务及算法的需要。

3.1 简单函数变换

是指对原始数据进行某些数学函数变换,常用的有平方、开方、取对数等等。

简单函数变换常用来将不具有正态分布的数据变换成具有正态分布的数据。

在时间序列分析中,有时简单的对数变换或者查分运算就可以将非平稳序列转换成平稳序列。

3.2 规范化

  • 最大-最小规范化
  • 零-均值规范化
  • 小数定标规范化

3.3 连续属性离散化

某些算法要求数据是分类属性形式,于是常常需要将连续属性变换成分类属性。

数据离散化涉及两个子问题:确定分类树以及如何将连续属性值映射到这些分类值。

常用的离散化方法:

(1)等宽法

将属性的至分成具有相同宽度的区间,区间的个数有数据本身的特点决定,类似于制作频率分布表

(2)等频法

将相同数量的记录放进每个区间。

(3)基于聚类分析的方法

首先将连续属性的值用聚类算法进行聚类,然后再将聚类得到的簇进行处理,合并到一个簇的连续属性值并做同一标记。

3.4 属性构造

在数据挖掘过程中,为了提取更有用的信息,挖掘更深层次的模式,我们需要对已有的属性集构造出新的属性,并加入到现有的属性集合中。

3.5 小波变换

小波变换在信号分析领域应用较为广泛。关于小波变换的具体细节可以随便去CSDN上找一篇教程来学习,这里就不再赘述。

小波变换可以把非平稳信号分解为表达不同层次、不同频带信息的数据序列,即小波系数。选取适当的小波系数,即完成了信号的特征提取。

在python中有专门的信号处理库Pywavelets(pywt)

4. 数据规约

如果数据集过大,则会导致分析过程耗时耗力,数据规约可以产生更小但保持原数据集完整性的新数据集。

(1)属性规约

通过属性合并来创建新属性维数,或者直接通过删除不相关的数学来减少数据维数。

属性规约方法主要有:合并属性、逐步向前选择、逐步向后删除、决策树归纳、主成分分析。

主成分分析(PCA)是一种用于连续属性的数据降维方法,它构造了原始数据的一个正交变换,新空间的基底取出了原始空间基底下数据的相关性,只需使用少数新变量就能够解释原始数据中的大部分变异。

(2)数值规约

参数规约是指通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法。

5. python主要数据预处理函数

函数名 h函数功能 s所属扩展库
interpolate y一维、高维数据插值 Scipy
unique q取出数据中的重复元素,得到单值元素列表 Pandas
isnull p判断是否空值 Pandas
notnull p判断是否空值 Pandas
PCA d对指标变量矩阵进行主成分分析 Scikit-learn
random s生成随机矩阵 Numpy

 

今天我的小橘猫,三月,跑丢整整24小时了。刚开始写这篇笔记的时候她还趴在我电脑前的。

对不起。

2018.05.06