归一化与标准化的区别与实现方法

本文介绍了归一化和标准化两种数据预处理方法,对比了它们的原理、代码实现以及在异常值处理上的差异。强调在实际应用中,标准化更适合处理正态分布的数据,且需注意训练集和测试集独立标准化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、公式

  1. 归一化
    X ′ = x − m i n m a x − m i n X' = { x-min \above{1pt} max-min} X=maxminxmin
    X ′ ′ = X ′ ∗ ( m a − m i ) + m i X'' = X' * (ma-mi) + mi X′′=X(mami)+mi

  2. 标准化
    X ′ = x − m e a n s t d X' = { x-mean \above{1pt} std} X=stdxmean

ps:

  • max:特征最大值
  • min:特征最小值
  • ma:特征归一化后的最大值
  • mi:特征归一化后的最小值
  • mean:特征均值
  • std:特征标准差

二、代码

  1. 归一化
from sklearn.preprocessing import MinMaxScaler
import pandas as pd


if __name__ == '__main__':

    # 初始化数据
    columns = ['点赞', '投币', '收藏']
    data = [
        [1, 5, 12],
        [13, 2, 5],
        [9, 9, 6],
        [2, 5, 0]
    ]
    data = pd.DataFrame(data=data, columns=columns)
    print(data)
    #    点赞  投币  收藏
    # 0   1   5  12
    # 1  13   2   5
    # 2   9   9   6
    # 3   2   5   0

    # 定义缩放范围
    min_scaler, max_scaler = 0, 1
    # 初始化缩放器
    scaler = MinMaxScaler(feature_range=(min_scaler, max_scaler))
    # 执行归一化
    data_minmax = scaler.fit_transform(data[columns])
    print(data_minmax)
    # [[0.         0.42857143 1.        ]
    #  [1.         0.         0.41666667]
    #  [0.66666667 1.         0.5       ]
    #  [0.08333333 0.42857143 0.        ]]

  1. 标准化
from sklearn.preprocessing import StandardScaler
import pandas as pd


if __name__ == '__main__':

    # 初始化数据
    columns = ['点赞', '投币', '收藏']
    data = [
        [1, 5, 12],
        [13, 2, 5],
        [9, 9, 6],
        [2, 5, 0]
    ]
    data = pd.DataFrame(data=data, columns=columns)
    print(data)
    #    点赞  投币  收藏
    # 0   1   5  12
    # 1  13   2   5
    # 2   9   9   6
    # 3   2   5   0

    scaler = StandardScaler(with_mean=0, with_std=1)
    # 执行标准化【均值为0标准差为1】
    data_standard = scaler.fit_transform(data[columns])
    print(data_standard )
    # [[-1.05662467 -0.10050378  1.46552595]
    #  [ 1.35851743 -1.30654916 -0.17586311]
    #  [ 0.55347007  1.50755672  0.05862104]
    #  [-0.85536283 -0.10050378 -1.34828388]]

三、区别

归一化与标准化都是对数据的特征进行缩放,二者的区别是:

  1. 标准化受异常样本的影响小
    样本中如果出现异常值的话,该值可能会非常大或非常小,归一化的分母是最大值与最小值的差,这很可能会导致正常样本的值都挤在一个跟小的范围内,从而影响预测结果,而标准化的分母是样本标准差,受异常点的影响较小。
  2. 符合统计学假设
    自然界中的数值特征多是符合正态分布的,标准化基于这个隐含假设,将这个正态分布调整为均值为0,方差为1的标准正态分布。

四、结论

在需要进行特征缩放的数据集上 尽量采用标准化 而不是归一化去解决问题(另外还有一点需要特别注意,要把训练集和测试集分开后再分别标准化,否则会将测试集的信息引入到训练集中从而影响训练结果)


评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都干的派森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值