数据归一化的几种方法
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归一化
今天刚刚看到的,记录一下
defScaleRankgauss(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)
版权归原作者 Dasein817 所有, 如有侵权,请联系我们删除。