数据预处理之归一化和标准化

对于数据的预处理分在思想上称之为归一化以及标准化(normalization)。

首先将归一化/ 标准化,就是将数据缩放(映射)到一个范围内,比如[0,1],[-1,1],还有在图形处理中将颜色处理为[0,255];归一化的好处就是不同纬度的数据在相近的取值范围内,这样在进行梯度下降这样的算法的时候,曲线将会更加简单(由原始的椭圆变成了圆形),如下图所示:

至于缩放的原理就是量纲代表,比如身高和指甲宽度,如果统一都是厘米那么两者不是一个数量级,如果把身高的量纲改为米,那么你会发现身高取值范围和指甲宽度其实是相近的取值范围,这样避免了某个维度成为了影响学习结果的主导。

常见的归一化/ 标准化

1. Standard Scala(z-score standardization):是标准化处理;将元素通过下面的公式进行处理:

x =(x - 𝜇)/𝜎

标准缩放只是是和数据近似服从正态分布的场景;而且数据的分布发生变化,变为相对标准的正态分布

2. MaxMinScala:其实这个是归一化处理,MaxMinScaler并没有改变数据分布,只是将按照某个规则进行缩放;处理公式如下:

x = (x-min)/(max-min)

适合于整体数据比较分布平和(集中),没有离群数据,或者很少的离群数据,否则max的值的偏差将会导致计算不准确;而且MaxMinScala不稳定,如果有新加入的数据需要重新进行计算;

3. RobustScaler:是一种鲁棒性特别好的算法;如果数据有很多异常值,那么使用该方法对数据进行处理;

4. 非线性化归一:对于一些场景下数据分化非常大,那么可以使用log,指数以及反正切的方式对数据进行缩放;

log函数:x = lg(x)/lg(max);反正切函数:x = atan(x)*2/pi

 

总结:

1)在分类和聚类的算法中,牵涉到了距离的计算,那么,PCA降维计算的时候,Standard Scaler表现的比较好;

2)不涉及距离,协方差计算,数据不符合正态分布的场景下,可以使用MinMaxScaler来计算;

 

可以通过scipy库中内容来做正态性检验;

什么是协方差?用来表明(X,Y)是否独立的概念

 

 

 

参考:

https://www.cnblogs.com/bjwu/p/8977141.html

正态性检验实现

https://blog.csdn.net/QimaoRyan/article/details/72861387

posted on 2018-10-07 19:14  下士闻道  阅读(3321)  评论(0编辑  收藏  举报

导航