首页 理论教育 数据规范化的重要性与方法

数据规范化的重要性与方法

时间:2023-06-27 理论教育 版权反馈
【摘要】:数据规范化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据规范化的方法有很多种,常用的有最小-最大规范化、z分数规范化和按小数定标规范化等。使用z分数规范化方法可将原始值x规范为x′。规范化可能将原来的数据改变很多,特别是使用z分数规范化或小数定标规范化时表现明显。如果使用z分数规范化,还有必要保留规范化参数,如均值和标准差,以便将来的数据可以用一致的方式规范化。

数据规范化的重要性与方法

二维码3-6 数据规范化

在数据分析前,常需要先将数据规范化,利用规范化后的数据进行数据分析。数据规范化处理主要包括数据同趋化处理和无量纲化处理两个方面。

数据同趋化处理主要解决不同性质的数据问题。数据无量纲化处理主要解决数据的可比性。数据规范化的方法有很多种,常用的有最小-最大规范化、z分数规范化和按小数定标规范化等。

规范化的作用是指对重复性事物和概念,通过规范、规程和制度等达到统一,以获得最佳秩序和效益。在数据分析中,度量单位的选择将影响数据分析的结果。例如,将长度的度量单位从米变成英寸[1],将质量的度量单位从公斤[2]改成磅[3],可能导致完全不同的结果。使用较小的单位表示属性将导致该属性具有较大的值域,因此导致这样的属性具有较大的影响或较高的权重。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。如将工资收入属性值映射到[-1,1]或者[0,1]内。

数据规范化可将原来的度量值转换为无量纲的值。通过将属性数据按比例缩放,将一个函数给定属性的整个值域映射到一个新的值域中,即每个旧的值都被一个新的值替代。例如将数据-4,45,300,89,72转换为-0.04,0.45,3.00,0.89,0.72。规范化可以防止具有较大初始值域的属性与具有较小初始值域的属性相比较的权重过大。下面介绍常用的三种数据规范化方法。

1.最小-最大规范化

最小-最大规范化对原始数据进行线性变换,最小-最大规范化也叫离差标准化,它保留了原来数据中存在的关系,它也是使用最多的方法。令MinA和MaxA表示属性A的最小值和最大值,最小-最大值标准化将值vi映射为,范围是[new_MinA,new_MaxA]。最小-最大规范化通过计算:

把A的值vi映射到区间[MinA,MaxA]中的

最小-最大值标准化保留了原有数据值的关系。如果后来输入标准化的数据落在了原有数据区间的外面,将会发生过界的错误

例如,假定收入属性X的最小值和最大值分别是$12 000和$98 000,将收入属性X映射到范围[0.0,1.0]上,则X值为$73 600的收入标准化为

(73 600-12 000)/(98 000-12 000)×(1.0-0)+0.0=0.716

最小-最大规范化能够保持原有数据之间的联系。在这种规范化方法中,如果输入值在原始数据值域之外,则将作为越界错误处理。

2.z分数规范化

z分数(z-score)规范化方法是基于原始数据的均值和标准差进行数据的规范化的。使用z分数规范化方法可将原始值x规范为x′。z分数规范化方法适用于x的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。

在z分数规范化中,可将属性A的值,基于平均值和标准差来标准化。x值的规范x′的计算公式如下:

式中,和σA分别是属性x的平均值和标准差,有(x1+x2+…+xn),而σA用x的方差平方根计算。

例如,如果x的均值和标准差分别为$54 000和$16 000,使用z分数规范化,值$73 600被转换为(73 600-54 000)/16 000=1.225。

这种方法在实际的最小值和最大值未知时很有用,或者离群点左右了最小-最大规范化时,该方法是有用的。

3.小数定标规范化

小数定标规范化是通过移动属性A的值的小数点位置进行规范化的。小数点的移动位数依赖于A的最大绝对值。A的值vi被规范为,由下列公式计算:

式中,j是使得max()<1的最小整数。

假设x的取值是-986~917,x的最大绝对值为986。因此,为使用小数定标规范化,利用1 000(j=3)除每个值。因此,-986被规范化为-0.986,而917被规范化为0.917。

规范化可能将原来的数据改变很多,特别是使用z分数规范化或小数定标规范化时表现明显。如果使用z分数规范化,还有必要保留规范化参数,如均值和标准差,以便将来的数据可以用一致的方式规范化。(www.xing528.com)

下面使用某只股票交易信息的数据来说明如何进行数据规范化。

例3_11_DataNormalization.py

首先导入要用到的包。

接着,我们选取该股票最后100个交易日的数据,选取每日关盘价格和成交量两个特征作为演示。很显然,这两个特征量纲不一样,数值相差很大,需要对它们进行一个数据预处理,先看一下原始数据:

原始数据分布如下:

执行结果如图3-5所示。

图3-5 数据预处理

下面代码演示如何对原始数据进行最小-最大规范化,将其规范化到[0,1]区间。

执行结果如图3-6所示。

下面的代码描述如何对原始数据进行z-score规范化。

图3-6 最小-最大规范化

执行结果如图3-7所示。

图3-7 z-score规范化

下面的代码演示了对原始数据进行小数定标规范化。

执行结果如图3-8所示。

图3-8 小数定标规范化

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈