美文网首页机器学习
归一化、标准化和正则化及代码实现

归一化、标准化和正则化及代码实现

作者: 一位学有余力的同学 | 来源:发表于2019-08-06 22:07 被阅读0次

    归一化、标准化和正则化都是对数据进行处理的,那么这三种有什么区别呢?

    归一化(normalization)

    归一化有两个作用:

    • 把数据映射到(0,1)之间方便处理
    • 把有量纲表达式变换为无量纲表达式,成为纯量。经过归一化处理的数据,处于同一数量级,可以消除指标之间的量纲和量纲单位的影响,提高不同数据指标之间的可比性。

    归一化的主要方法
    1.线性转换,即min-max归一化:
    y = \frac{x-min}{max-min}
    2.对数函数转换:
    y=\log_{10}(x)
    3.反余切函数转换:
    y=atan(x)*2/PI

    可实现代码

    '''MinMaxScaler方法'''
    from sklearn import preprocessing
    scaler = preprocessing.MinMaxScaler(feature_range=(0,1), copy=True)
    scaler.fit_transform(data)
    

    分别对每一列做做最小最大化归一化,特征范围默认为(0,1)之间,原理比较简单,不再累述,详见官方文档

    标准化(Standardization)

    数据的标准化是将数据按比例缩放让数据落入某一特定区间内,使均值为0。公式为:(x-mean)/std
    与归一化相比,标准化更为常见,原因如下:

    • 标准化更好的保持了样本间的距离,当样本中存在异常点时,归一化有可能将正常值挤到一起,而标准化则不会,例如[1, 2, 10000],假设10000是异常值,那么归一化之后就会变成[0, 0.0001, 1],正常值1和2就被挤到了一块。如果不幸的是,1和2不是同一标签,那么我们在用梯度下降做模型训练时,模型会花更长的时间收敛,但标准化的结果是[-0.70721286,0.7070007,1.41421356],不会将样本“挤到”一起去;
    • 标准化更符合统计学假设。对于一个数值特征来说,很大可能它是服从正太分布的,而标准化是基于这个假设,将正态分布调整为标准正态分布。

    主要方法
    标准化最常用的方法是Z-Score方法,

    '''StandardScaler方法'''
    from sklearn import preprocessing
    scaler = preprocessing.StandardScaler(copy=True, with_mean=True,with_std=True)
    scaler.fit_transform(data)
    

    计算公式为:
    z=(x-u)/s
    u为每列训练样本均值,s为每列标准差,详见官方文档

    正则化(Regularization)

    '''normalize方法'''
    from sklearn import preprocessing
    scaler = preprocessing.normalize(data,norm='l2',axis=1,return_norm=False)
    

    norm='l1','l2'或'max',默认为‘l2’
    官方文档

    参考博客:
    数据归一化、标准化和正则化
    归一化,标准化,正则化的概念和区别
    sklearn.preprocessing官方文档

    相关文章

      网友评论

        本文标题:归一化、标准化和正则化及代码实现

        本文链接:https://www.haomeiwen.com/subject/yyuwdctx.html