特征处理:归一化和标准化的区别及使用

归一化

定义

把原始的特征数据映射到[0,1]范围内。这个[0,1]范围是默认的,可以手动指定。

计算公式

x’ = (x - min) / (max - min)
x’’ = x’ * (mx - mi) + mi
需要注意的是:x’’ 才是最终的计算结果
其中:x表示当前值,min表示每一列特征的最小值,max表示每一列特征的最大值;
mx表示[0,1]这个指定范围内的最大值,mi表示[0,1]这个指定范围内的最小值。

代码实现

from sklearn.preprocessing import MinMaxScaler


def minMax():
    """
    归一化:把原始数据映射到[0,1]之间,这个[0,1]的范围是默认的,可以手动指定。
    公式:x‘ = (x - min) / (max - min)     x'' = x' * (mx - mi) + mi
    :return:None
    """
    mm = MinMaxScaler()
    data = mm.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
    print(data)
    return None


if __name__ == "__main__":
    minMax()

归一化的缺点

归一化对数据的最大最小值比较敏感,受异常数据的影响较大,鲁棒性比较差。只适用于传统的精确小数据量的场景。

标准化

定义

把原始的特征数据映射为均值为0,方差为1的范围内。

计算公式

(x - mean) / σ
其中:mean是每一列特征的均值,σ(Sigma)是每一列的标准差。

代码实现

from sklearn.preprocessing import StandardScaler


def standard():
    """
    标准化:把原始特征数据映射到均值为0,方差为1的范围内
    公式:(x - mean) / σ
    :return:None
    """
    stand = StandardScaler()
    data = stand.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])
    print(data)
    return None


if __name__ == "__main__":
    standard()

标准化的特点

由于有一定的数据量,异常数据对平均值的影响较小,对方差的影响也较小。在已有的数据量足够大的情况下,适用于现代嘈杂的大数据场景。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值