本次学习我们主要是从数学角度简单介绍一下为什么要数据规范,如何数据规范。
一、什么是数据规范化
数据规范化(归一化)处理时数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。如将工资收入属性值映射到[-1,1]或者[0,1]内。
PS:数据规范化对于基于距离的挖掘算法尤为重要。
二、规范化的处理方法
1、最小-最大规范化——离差标准化
离差标准化是对原始数据的线性变换,将数值映射到[0,1]之间。转换公式如下:
$$x^* = \frac{x-min}{max-min}$$
其中,$max$为样本数据的最大值,$min$为样本数据的最小值。$max-min$为极差。离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单方法。这种处理方法的缺点是若数值集中且某个数值很大,规范化后各值会接近于0,并且将会相差不大。若将来遇到超过目前属性$[min,max]$取值范围的时候,会引起系统出错,需要重新确定$min$和$max$。
2、零-均值规范化——标准差标准化
标准差标准化经过处理的数据的均值为0,标准差为1。转化公式为:
$$x^* = \frac{x-\bar{x}}{\sigma}$$
其中$\bar{x}$为原始数据的均值,$\sigma$为原始数据的标准差,是当前用得最多的数据标准化方法。
3、小数定标规范化
通过移动属性值的小数位数,讲属性值映射到[-1,1]之间,移动的小数位数取决于属性值绝对值的最大值。转化公式为:
$$x^* = \frac{x}{10^k}$$
三、python实现三种规范化
1 | #-*- coding:utf-8 -*- |
可以尝试以上代码,观察一下三种规范化处理完的数据有何不同。