归一化:
把数据变成(0,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
所谓“归一”,注意“一”,就是把数据归到(0,1)这个区间内。
常用的方法有: min-max归一化
y
=
x
−
m
i
n
m
a
x
−
m
i
n
y={x-min \over max-min}
y=max−minx−min
其中,x为原数据,y为处理后的数据,min为数据最小值,max为数据最大值
Python实现:
# 导入MinMaxScaler
from sklearn.preprocessing import MinMaxScaler
#使用MinMaxScaler进行数据预处理
x_minmax=MinMaxScaler().fit_transform(x)
标准化:
在机器学习中,我们可能要处理不同种类的资料,例如,音讯和图片上的像素值,这些资料可能是高维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均)、标准差变为1
所谓“标准”,就是标准正态分布,把数据转换成标准正态分布。
常用的方法有:z-score标准化,即零-均值标准化
y
=
x
−
μ
σ
y={x-μ\overσ}
y=σx−μ
其中,x为原数据,y为处理后的数据,μ为平均,σ为标准差
Python中的实现:
# 导入StandardScaler
from sklearn.preprocessing import StandardScaler
#使用StandardScaler进行数据预处理
x_stand=StandardScaler().fit_transform(x)
区别:
归一化是为了消除不同数据之间的量纲,方便数据比较和共同处理,比如在神经网络中,归一化可以加快训练网络的收敛性;标准化是为了方便数据的下一步处理,而进行的数据缩放等变换,并不是为了方便与其他数据一同处理或比较,比如数据经过零-均值标准化后,更利于使用标准正态分布的性质,进行处理