今儿和大家聊一个简单的话题:
数据标准化与归一化的区别与应用场景。
好像很简单,但是为了更加的清晰,从各方面和大家详细的聊聊~
数据标准化与数据归一化
数据标准化(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()