机器学习中的数据预处理

1 数据清洗

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

1.1 缺失值处理

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

(1)拉格朗日插值法

拉格朗日插值法是一个数学问题任给定F中2n+2个数x1,X2,…,X0+1,y1,Y2,….,Yn+1,其中x1,X2,…Xn+1互不相同,则存在唯一的次数不超过n的多项式pn(X),满足Pn(Xi)=y1(i=1, 2 , … , 2,\ldots, 2,,n+1),这里:

P n ( x ) = y 1 ( x − x 2 ) ( x − x 3 ) ⋯ ( x − x n ) ( x − x n + 1 ) ( x 1 − x 2 ) ( x 1 − x 3 ) ⋯ ( x 1 − x n ) ( x 1 − x n + 1 ) P_n(x)=y_1\frac{(x-x_2)(x-x_3)\cdots(x-x_n)(x-x_{n+1})}{(x_1-x_2)(x_1-x_3)\cdots(x_1-x_n)(x_1-x_{n+1})} Pn(x)=y1(x1x2)(x1x3)(x1xn)(x1xn+1)(xx2)(xx3)(xxn)(xxn+1)
将缺失的函数值对应的点x带入插值公式即得到缺失值的近似值L(x)。

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

(2)牛顿插值法

  • 差商公式

函数f(x)在两个互异点xi,xj,处的一阶差商定义为: f [ x i , x j ] = f ( x i ) − f ( x j ) x i − x j ( i ≠ j , x i ≠ x j ) f[x_i,x_j]=\frac{f(x_i)-f(x_j)}{x_i-x_j}(i\neq j,x_i\neq x_j) f[xi,xj]=xixjf(xi)f(xj)(i=j,xi=xj)

2阶差商: f [ x i , x j , x k ] = f [ x i , x j ] − f [ x j , x k ] x i − x k ( i ≠ k ) f[x_i,x_j,x_k]=\frac{f[x_i,x_j]-f[x_j,x_k]}{x_i-x_k}(i\neq k) f[xi,xj,xk]=xixkf[xi,xj]f[xj,xk](i=k)

k+1阶差商:
f [ x 0 , … , x k + 1 ] = f [ x 0 , x 1 , … x k ] − f [ x 1 , … , x k , x k + 1 ] x 0 − x k + 1 = f [ x 0 , … , x k − 1 , x k ] − f [ x 0 , … , x k − 1 , x k + 1 ] x k − x k + 1 \begin{aligned}f[x_0,\ldots,x_{k+1}]&=\frac{f[x_0,x_1,\ldots x_k]-f[x_1,\ldots,x_k,x_{k+1}]}{x_0-x_{k+1}}\\&=\frac{f[x_0,\ldots,x_{k-1},x_k]-f[x_0,\ldots,x_{k-1},x_{k+1}]}{x_k-x_{k+1}}\end{aligned} f[x0,,xk+1]=x0xk+1f[x0,x1,xk]f[x1,,xk,xk+1]=xkxk+1f[x0,,xk1,xk]f[x0,,xk1,xk+1]

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

以次带入可得到牛顿差商公式:

f ( x ) = f ( x 0 ) + ( x − x 0 ) f ( x , x 0 ) + ( x − x 0 ) ( x − x 1 ) f ( x 0 , x 1 , x 2 ) + ⋯ ⋯ + ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x n ) f ( x 0 , x 1 , ⋯   , x n ) \begin{aligned}f\left(x\right)=&f\left(x_0\right)+\left(x-x_0\right)f\left(x,x_0\right)+\left(x-x_0\right)\left(x-x_1\right)f\left(x_0,x_1,x_2\right)+\cdots\\&\cdots+\left(x-x_0\right)\left(x-x_1\right)\cdots\left(x-x_n\right)f\left(x_0,x_1,\cdots,x_n\right)\end{aligned} f(x)=f(x0)+(xx0)f(x,x0)+(xx0)(xx1)f(x0,x1,x2)++(xx0)(xx1)(xxn)f(x0,x1,,xn)

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

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

1.2 异常值处理

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

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主要数据预处理函数

image-20230831092717838
始数据中的大部分变异。

(2)数值规约

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值