数据分析与挖掘笔记(五)------数据预处理

数据预处理主要包含以下几个步骤:

数据分析与挖掘笔记(五)------数据预处理_第1张图片

数据预处理步骤介绍:

数据预处理

定义

具体操作

数据清洗

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

缺失值处理

异常值处理

数据集成

数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一直的数据存储(如数据仓)中的过程。

在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最低层上加以转换、提炼和集成。

实体识别

冗余属性识别

数据变换

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

简单函数变换

规范化

连续属性离散化

属性构造

小波变换

数据规约

 

属性规约

数值规约

一、数据清洗

   1.缺失值处理

  • 删除记录

    • 缺点:减少历史数据换取了数据的完备,会造成资源的大量浪费,将丢弃一些隐藏在这些记录中的信息。尤其在数据集本来就包含很少的情况下,删除少量记录可能会严重影响分析结果的客观性和正确性。

  • 不处理

  • 插补记录

      常用插补方法:

 

插补方法

方法描述

均值/中位数/众数插补

根据属性值的类型,用该属性取值的均值/中位数/众数进行插补

使用固定值

将确实的属性值用一个常量代替。如用外来务工人员工资标准2000元/月代替基本工资缺失值

最近临插补

在记录中找到与缺失样本最接近的样本的该属性值插补

回归方法

对带有缺失值的变量,根据已有数据和其有关的其他变量(因变量)的数据建立拟合模型来预测缺失的属性值

插值法

利用已知点建立合适的插值函数f(x),未知点由对应x点求出其函数值f(x)近似代替

常用插值法:

插值法

方法描述

优缺点

拉格朗日插值法

对于平面上已知的n个点(无两点在一条直线上)可以找到一个n-1次多项式

使此多项式曲线绕过这n个点。

拉格朗日插值法要首先求出这个n-1次多项式,之后在将缺失值对应的x点的值代入插值多项式得到其缺失值的近似值

拉格朗日插值公式结构紧凑,在理论分析中很方便,凡是当插值节点增减时,插值多项式就会随之变化,这在实际计算中很不方便。

牛顿插值法

(1)求已知n个点对的所有阶差商公式

数据分析与挖掘笔记(五)------数据预处理_第2张图片

(2)联立以上差商公式建立如下插值多项式f(x)

数据分析与挖掘笔记(五)------数据预处理_第3张图片

P(x)是牛顿插值逼近函数, R(x)是误差函数

(3)将缺失的函数函数值对应的点X带入插值多项式得到缺失的近似值f(x)。

牛顿插值法也是多项式插值,但采用了另一种构造插值多项式的方法,与拉格朗日插值相比,具有易袭性和易于变动节点的特点。从本质上来说,两者给出的结果是一样的(相同次数、相同系数的多项式),只不过表示的形式不同。

 

在Scipy库中,只提供了拉格朗日插值法的函数。

Hermite插值法

(埃尔米特插值法)

 

 

拉格朗日插值实例:

# 拉格朗日插值代码

import pandas as pd # 导入数据分析库Pandas

from scipy.interpolate import lagrange #导入拉格朗日插值函数


inputfile = '../data/catering_sale.xls' #销量数据路径

outputfile = '../tmp/sales.xls' #输出数据路径


data = pd.read_excel(inputfile) #读入数据

data[u'销量'][(data[u'销量'] < 400) | (data[u'销量'] > 5000)] = None #过滤异常值,将其变为空值


#自定义列向量插值函数

#s为列向量,n为被插值的位置,k为取前后的数据个数,默认为5

def ployinterp_column(s, n, k=5):

 y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))] #取数

 y = y[y.notnull()] #剔除空值

 return lagrange(y.index, list(y))(n) #插值并返回插值结果


#逐个元素判断是否需要插值

for i in data.columns:

 for j in range(len(data)):

   if (data[i].isnull())[j]: #如果为空即插值。

     data[i][j] = ployinterp_column(data[i], j)


data.to_excel(outputfile) #输出结果,写入文件

2.异常值处理

异常值处理常用方法:

通常先要分析异常值出现的可能原因,再判断异常值是都应该舍弃,如果是正确的数据,可以直接在具有异常值的数据集上进行挖掘建模。

 

处理方法

方法描述

优缺点

删除含有异常值的记录

直接将含有异常值的记录删除

简单易行,但在观测值很少的情况下删除数据会造成样本量不足,进而导致分析结果不准确

视为缺失值

将异常值视为缺失值,利用缺失值处理的方法进行处理

可以利用现有变量的信息对异常值进行处理

平均值修正

可用前后两个观测值的平均值修正该异常值

 

不处理

直接在具有异常值 的数据集上进行挖掘建模

 

二、数据集成

1.实体识别

从不同数据源识别出现实世界的实体,他的任务是统一不同源数据的矛盾之处,常见形式如下:

(1)同名异义:两个表的字段名相同,但意义不同

(2)异名同义:两个表的字段名不同,但意义相同

(3)单位不统一

检测和解决以上这些问题就是实体识别的任务。

 

2.冗余属性识别

数据集成往往导致属性冗余,例如:

(1)同一属性多次出现

(2)同一属性命名不一致导致重复

仔细整合不同源数据能够减少甚至避免数据冗余与不一致。对于冗余属性要先分析,检测到后再将其删除。

有些冗余属性可以通过相关分析检测。给定两个数值型的属性A和B,根据其属性值,用相关系数度量一个属性在多大程度上蕴含另一个属性。

三、数据变换

变换方法

内容

应用场景

简单函数变换

对原始数据进行某些数学函数变换,常用的变换:平方、开方、取对数、差分运算等

数据分析与挖掘笔记(五)------数据预处理_第4张图片

1.将不具有正态分布的数据变换成具有正态分布的数据。

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

3.使用对数变换对数据区间进行压缩。

规范化

(1)最小-最大规范化(离差标准化)

对原始数据的线性变换,将数值值映射到[0,1]之间。公式:

优点:保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单方法。

缺点:若数据集中某个数据很大,则规范化后每个数值会接近于0,并且将会相差不大。若将来遇到超过目前属性取值范围的时候,会引起系统出错,需要重新确定min和max。

 

(2)零-均值规范化(标准差规范化)

经过处理的数据的均值为0,标准差为1

公式:

其中,为原始数据均值,为原始数据标注差。

此公式为档期那用的最多的数据标准化方法。

 

(3)小数定标规范化

通过移动属性值的小数位数,将属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。

 

实例:

对于一个含有N个记录P个属性的数据集,分别对每一个属性的取值进行规范化。对原始的数据矩阵分别用最小-最大规范化、零-均值规范化、小数定标规范化进行规范化

数据分析与挖掘笔记(五)------数据预处理_第5张图片

数据分析与挖掘笔记(五)------数据预处理_第6张图片

输出:

数据分析与挖掘笔记(五)------数据预处理_第7张图片

 

数据分析与挖掘笔记(五)------数据预处理_第8张图片

连续属性离散化

一些数据挖掘算法,特别是某些分类算法,如ID3算法(一种贪心算法,用来构造决策树),Apriori算法( 最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法)。

常用离散方法:

(1)等宽法:

将属性的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定,或者由用户指定,类似于制作频率分布表。

缺点:对离群点比较敏感,倾向于不均匀的把属性值分布到各个区间。有些区间包含许多数据,而另外一些区间的数据极少,这样会严重损坏建立的决策模型。

(2)等频法:

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

缺点:可能将相同的数据值分到不同的区间以满足每个区间中固定的数据个数。

以上两种方法虽然简单,但都需要人为的规定划分区间的个数。

 

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

首先将连续属性的值用聚类算法(如K-Means算法)进行聚类,然后再将聚类得到的簇进行处理,合并到一个簇的连续属性值并作同一标记。聚类分析的离散化方法也需要用户指定簇的个数,从而决定产生的区间数。

 

实例:

数据分析与挖掘笔记(五)------数据预处理_第9张图片

输出:

数据分析与挖掘笔记(五)------数据预处理_第10张图片

数据分析与挖掘笔记(五)------数据预处理_第11张图片

数据分析与挖掘笔记(五)------数据预处理_第12张图片

 

属性构造

为获取更有用的信息,挖掘更深层次的模式,提高挖掘结果的精度,我们需要利用已有的属性集构造出新的属性,并加入到现有的属性集合中。

数据分析与挖掘笔记(五)------数据预处理_第13张图片

小波变换

能够刻画某个问题的特征量往往是隐含在一个信号中的某个或者某些分量中,小波变换可以把非平稳信号分解为表达不同层次、不同频带信息的数据序列,即小波系数。选取适当的小波系数,即完成了信号的特征提取。

基于小波变换的信号特征提取方法:

(1)基于小波变换的多尺度空间能量分布特征提取

(2)基于小波变换的多尺度空间的模极大值特征提取

(3)基于小波包变换的特征提取

(4)基于适应性小波神经网络的特征提取

信号处理、图像处理、语音处理、模式识别、量子物理等领域

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(数据分析)