pandas:数据规范化方法与python实现

这里就不说为什么要做数据规范化了,直接讲几种规范化的方法。

有许多规范化的方法,我们将学习种:最大-最小规范化、z分数规范化、小数定标规范化。这里令A是数值属性,具有n个观测值v_{1},v_{2},...,v_{n}

一、原理

1.最大-最小规范化

假设min_{A}max_{A}分别为属性A的最大值和最小值。最小-最大规范化通过计算

           v_{i}^{'}=\frac{v_{i}-min_{A}}{max_{A}-min_{A}}(newmax_{A}-newmin_{A}) + newmin_{A}

把A的值v_{i}映射到区间newmin_{A},newmax_{A}中的v_{i}^{'}

最小-最大规范化保持原始数据值之间的联系。如果今后的输入实例落在A的原数据值域之外,则该方法将面临“越界”错误。

2.z分数(z-score)规范化(或零均值规范化)

属性 A的值基于 A的均值(即平均值)和标准差规范化。A的值v_{i}被规范化为v_{i}^{'},由下式计算:

           v_{i}^{'}=\frac{v_{i}-\overline{A}}{\sigma_{A}}

其中,\overline{A}\sigma _{A}分别为属性 A 的均值和标准差。

上面的标准差可以用均值绝对偏差替换。 A的均值绝对偏差(mean absolute deviation) s_{A}定义为

           s_{A}=\frac{1}{n}(\left | v_{1}-\overline{A} \right | + \left |v_{2}-\overline{A} \right |+...+\left | v_{n}-\overline{A} \right |)

这样,使用均值绝对差的 z分数规范化为

           v_{i}^{'}=\frac{v_{i}-\overline{A}}{s_{A}}

对于离群点,均值绝对偏差s_{A} 比标准差更加鲁棒。在计算均值绝对偏差时,不对到均值的偏差即(\left | x_{i}-\overline{x} \right |)取平方,因此离群点的影响多少有点降低。

3.小数定标规范化

小数定标规范化通过移动属性A值的小数定位置进行规范化。小数点的移动位数依赖于A的最大绝对值。A的值v_{i}被规范化为v_{i}^{'},由下式计算:

            v_{i}^{'}=\frac{v_{i}}{10^{j}}

其中j是使得max(v_{i}^{'})<1的最小整数。

举例:

假设 A的取值由 -986917A 的最大绝对值为 986。因此,为使用小数定标规范化,我们用 1000(即j=3)除每个值。因此, -986被规范化为 -0.986,而 917被规范化为 0.917

注意,规范化可能将原来的数据改变很多,特别是使用 z分数规范化或小数定标规范化时尤其如此。有必要保留规范化参数(如均值和标准差,如果使用 z分数规范化的话),以便将来的数据可以用一致的方式规范化。

4.归一化方法

由下式进行计算:

            y_{i}=\frac{x_{i}}{\sum_{i=1}^{n}x_{i}}

y_{i}\in [0,1]且无量纲,并且显然有\sum_{i=1}^{n}y_{i}=1

二、代码实现

#-*- coding: utf-8 -*-
#数据规范化
import pandas as pd
import numpy as np

datafile = '../data/normalization_data.xls' #参数初始化
data = pd.read_excel(datafile, header = None) #读取数据

(data - data.min())/(data.max() - data.min()) #最小-最大规范化
(data - data.mean())/data.std() #零-均值规范化
data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值