机器学习中的数据标准化与归一化:概念、应用场景及区别
创作时间:
作者:
@小白创作中心
机器学习中的数据标准化与归一化:概念、应用场景及区别
引用
CSDN
1.
https://m.blog.csdn.net/fengdu78/article/details/145435578
数据标准化与数据归一化
数据标准化(Standardization)
定义:标准化是将数据转换为具有均值为 0 和标准差为 1 的标准正态分布。
数学公式:
其中 是原始数据, 是均值, 是标准差。
- 操作结果:经过标准化的数据没有单位限制,更适合基于距离或分布的算法。
数据归一化(Normalization)
定义:归一化是将数据按比例缩放到特定区间(通常为 [0,1] 或 [-1,1])。
数学公式:
其中 和 分别为数据的最小值和最大值。
- 操作结果:归一化后的数据保留了原始数值范围的比例关系。
对比项 | 标准化(Standardization) | 归一化(Normalization) |
|---|---|---|
核心目标 | 均值为 0,标准差为 1 | 缩放数据到固定区间 |
公式参数 | 均值和标准差 | 数据最小值和最大值 |
结果分布 | 标准正态分布 | 固定区间的比例缩放 |
适用场景
数据标准化的适用场景
- 机器学习算法对分布敏感:标准化适合需要数据服从正态分布的算法,例如:
- 主成分分析(PCA):需要将数据投影到低维空间时,假定变量具有相同的尺度。
- 线性回归、逻辑回归:模型对特征分布敏感,标准化能提升收敛速度和准确性。
基于距离的算法:如 K-Means、支持向量机(SVM),需要平衡不同量纲特征的影响。
数据归一化的适用场景
- 特征值范围差异显著:归一化适合数据范围差异大的场景,避免较大值特征对模型的主导性影响。
- 深度学习:神经网络通常以归一化的数据为输入,便于梯度下降优化快速收敛。
算法类型 | 推荐方法 | 原因 |
|---|---|---|
PCA、回归分析 | 标准化 | 需要均值为 0,标准差为 1 的特征分布 |
KNN、SVM、K-Means | 标准化 | 平衡不同量纲特征的距离权重 |
神经网络、梯度下降优化 | 归一化 | 小范围特征更便于快速迭代 |
优缺点
数据标准化的优缺点
优点:
- 对异常值较为鲁棒(异常值不会像归一化那样对比例造成较大干扰)。
- 提升基于分布假设的模型表现(如 PCA、回归分析)。
缺点:
- 转换后的数据失去了原始的物理意义(如温度、价格等直观性)。
- 对非高斯分布的数据可能效果较差。
数据归一化的优缺点
优点:
- 操作简单,范围固定,适合快速收敛的场景(如神经网络)。
- 能保留数据间比例关系。
缺点:
- 对异常值敏感,异常值可能过度影响缩放范围。
- 不适用于需要正态分布假设的模型。
完整案例
我们使用一个示例数据集,包含两个特征范围差异明显的列。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler, MinMaxScaler
# 创建数据集
np.random.seed(42)
data = {
"Feature1": np.random.randint(1, 100, 50), # 范围较大
"Feature2": np.random.rand(50) * 10, # 范围较小
}
df = pd.DataFrame(data)
# 原始数据分布
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.hist(df["Feature1"], bins=10, alpha=0.7, label="Feature1")
plt.hist(df["Feature2"], bins=10, alpha=0.7, label="Feature2")
plt.title("Original Data Distribution")
plt.legend()
plt.subplot(1, 2, 2)
plt.boxplot([df["Feature1"], df["Feature2"]], labels=["Feature1", "Feature2"])
plt.title("Original Data Boxplot")
plt.show()
标准化与归一化实现
# 标准化
scaler_std = StandardScaler()
df_std = pd.DataFrame(scaler_std.fit_transform(df), columns=["Feature1", "Feature2"])
# 归一化
scaler_norm = MinMaxScaler()
df_norm = pd.DataFrame(scaler_norm.fit_transform(df), columns=["Feature1", "Feature2"])
# 可视化比较
plt.figure(figsize=(12, 6))
# 标准化后的分布
plt.subplot(2, 2, 1)
plt.hist(df_std["Feature1"], bins=10, alpha=0.7, label="Feature1")
plt.hist(df_std["Feature2"], bins=10, alpha=0.7, label="Feature2")
plt.title("Standardized Data Distribution")
plt.legend()
# 归一化后的分布
plt.subplot(2, 2, 2)
plt.hist(df_norm["Feature1"], bins=10, alpha=0.7, label="Feature1")
plt.hist(df_norm["Feature2"], bins=10, alpha=0.7, label="Feature2")
plt.title("Normalized Data Distribution")
plt.legend()
# 标准化后的箱线图
plt.subplot(2, 2, 3)
plt.boxplot([df_std["Feature1"], df_std["Feature2"]], labels=["Feature1", "Feature2"])
plt.title("Standardized Data Boxplot")
# 归一化后的箱线图
plt.subplot(2, 2, 4)
plt.boxplot([df_norm["Feature1"], df_norm["Feature2"]], labels=["Feature1", "Feature2"])
plt.title("Normalized Data Boxplot")
plt.show()
- 原始数据分布显示了两个特征的范围差异。
- 标准化后,数据呈现均值为 0,标准差为 1 的分布;归一化后,数据被压缩到 [0,1] 的区间。
总结
异同点
- 共同点:两者都解决了不同量纲特征之间的权重不均问题。
- 不同点:标准化基于均值和标准差调整分布;归一化基于最大值和最小值调整范围。
选择建议
- 标准化:当算法对分布敏感或需要标准正态分布时(如 PCA、SVM、回归分析)。
- 归一化:当特征范围差异大,且需要固定区间范围时(如神经网络、梯度下降优化)。
热门推荐
女性熬夜会长胡子?与熬夜无关,关键是它的影响......
5G NR网络接口详解:Xn、NG、E1、F1、F2的功能与位置
太平天国水师的兴衰:从辉煌到消亡的历史教训
冬季血压波动频繁,是时候学会在家正确测压啦
白领长期腰疼怎么办?10大方法可缓解腰疼
面瘫康复训练:表情肌训练、按摩等主要方法及注意事项
根据肥胖类型选择减调方向收获窈窕身材
南京图书馆举办古籍修复技艺展,展现江苏古籍保护成就
飞度底盘的设计如何影响车辆的操控性能?这种设计对车辆的驾驶体验有何影响?
一日不见,如隔三秋,“三秋”究竟是多久?
男人压力大怎样减压
为何要了解人性?对人性三原色之一“趋利避害”的深入解读
袁世凯为什么会倒行逆施称帝?主要原因可能有这些
农村土地征收试点指南:程序、权益与林地变更
椎基底动脉系统的典型表现
拔牙后干槽症是什么症状,分享拔牙干槽症处理方法千万别错过!
黑暗森林——浅析章北海之于逃亡
高达GQuuuuuuX部分剧情及机体设定公开 平行世界的宇宙世纪
春秋时期两大经典火攻战例:楚昭王的火象阵与秦楚联军的雍澨之战
如何分辨西南大学自考助学点是否正规
持有C1驾照开心了!不用增驾,5类两轮、三轮、四轮电动车也都能开
电子合同盖章指南:法律适用与实践要点
白居易一首《琵琶行》堪称是一首脍炙人口的现实主义杰作
污水处理中厌氧段和缺氧段溶解氧的控制方法
深入解析正印格伤官大运的特点与影响
春节「抵抗长胖」的 10 个科学小秘方!现在看还来得及
“妈妈,我这次没考好......”父母这样聊成绩,孩子学习后劲足
中国烟草的传播——从古代到现代的历程
长期使用电脑的危害——警惕电子世界的副作用
治疗支原体感染的8种联合用药方案