数据归一化常见算法

数据归一化的几种方法

1 Min-Max归一化

Min-Max归一化是一种线性的归一化方法。该方法将数据进行一次线性变换,将数据映射到[0,1]区间。Min-Max归一化不改变数据的分布。其缺点为,过度依赖最大最小数,且容易受到离群点、异常数据的影响。其公式为:

x

=

x

M

i

n

M

a

x

M

i

n

x^\prime = \frac{ x – Min} {Max – Min}

x′=Max−Minx−Min​

其中

x

x

x是原始数据、

M

i

n

Min

Min为数据的最小值、

M

a

x

Max

Max为数据的最大值、

x

x^\prime

x′是变换后的数据。

2 Z-Score归一化

Z-Score归一化将数据尽可能处理成符合正态分布的数据。该方法难以将数据映射到一个固定的区间上。Z-Score归一化的公式为:

x

=

x

x

S

t

d

x^\prime = \frac{ x – \overline{x}} {Std}

x′=Stdx−x​

其中

x

x

x为原始数据、

x

\overline{x}

x为数据的均值、

S

t

d

Std

Std为数据的标准差

3 小数标定

通过直接除以一个整数,移动所有数据的小数点,进行数据归一化的方法,称之为小数标定归一化方法。该方法可将数据映射到[-1,1]区间。该方法的公式为:

x

=

x

1

0

j

x^\prime = \frac{x} {10^j}

x′=10jx​

其中,

j

j

j为数据绝对值最大数据的位数。

4 Sigmoid

Sigmoid函数的表达式为:

F

(

x

)

=

1

1

+

e

x

F(x) = \frac{1} {1+e^{-x}}

F(x)=1+e−x1​,其值域为[0,1].将所有数据经过Sigmoid映射以后,可以将数据映射到

[

0

,

1

]

[0,1]

[0,1]区间。该函数图像如图所示:

在这里插入图片描述

5 RankGauss归一化

今天刚刚看到的,记录一下

def ScaleRankgauss(x, epsilon=1e-6): 
    '''rankgauss'''
    x = x.argsort().argsort()     #排序
    x = (x/x.max()-0.5)*2         #转换尺度到[-1,1]
    #调整极端值 把在[-1,1]区间之外的数值截断为-1或1
    x = np.clip(x, -1+epsilon, 1-epsilon)
    x = erfinv(x)                 #函数映射
    return x

x = np.random.randint(0, 100, 1000)
plt.hist(x)
x_rankgauss = ScaleRankgauss(x)
plt.hist(x_rankgauss, bins=50)

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/e70935eb37.html