一、归一化
由于不同特征值的数值差别可能比较大,因此可以利用归一化对数据进行等比例的缩放到同一小区间内。归一化是以列为操作对象,对每一列的每个数据进行缩放,计算公式如下:
其中max和min为每一列(即每个特征列)数据的最大和最小值。
使用场景:不同特征列的特征值相差比较大,但是那些特征又同等重要的时候使用。
缺点:由于是根据每列的最大最小值得出的缩放值,所以容易受异常点的影响。
sklearn实现代码如下:
from sklearn.preprocessing import MinMaxScaler
def mm():
m=MinMaxScaler()
data=m.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
运行结果:
二、标准化
为了减小异常值对数据结果的影响,常用标准化对数据进行处理。标准化即根据数据的均值和标准差将数据化为均值为0,方差为1的数据集。计算公式如下:
使用场景:数据量较大,可能存在异常值的情况
sklearn代码如下(示例):
from sklearn.preprocessing import StandardScaler
def stds():
std=StandardScaler()
data=std.fit_transform([[1,-1.,3.],[2,4.,2],[4,6, -1.]])
print(data)
运行结果:
总结
归一化与标准化是常用的数据预处理方法。归一化实现的是将数据进行等比例缩放到特定区间的功能。标准化实现的是将数据化成均值为0,标准差为1的数据集,从而减小异常数据对运算的影响的功能。