StandardScaler(标准差标准化,适用于正态分布数据),MinMaxScaler(极差标准化,适用于分布范围稳定的数据)和RobustScaler(稳健标准化,适用于异常值较多的数据)

1 StandardScaler()—标准差标准化

from sklearn.preprocessing import StandardScaler
# 选择需要标准化的列(通常不标准化类别变量,如 hour, month, is_weekend)
numeric_cols = ['lag_1', 'lag_2', 'lag_3', 'lag_4', 'total_power']  # 数值列
scaler = StandardScaler() #(Z-score标准化)
# 标准化数值列
data[numeric_cols] = scaler.fit_transform(data[numeric_cols])
  • 计算方法:

μ是列的均值,σ 是标准差。

  • 结果范围

如果数据原本服从正态分布,标准化后约 99.7%的数据落在[-3,3]区间内(根据 3σ原则),如果数据有极端异常值,可能会超出这个范围(例如-5或10)。

2 MinMaxScaler()—极差标准化(归一化)

scaler = MinMaxScaler() #(归一化)
  • 计算方法:

  • 结果范围:在[0, 1]之间
  • 如果指定目标范围不是 [0,1],而是 [a,b],则公式扩展为:

3 RobustScaler()—稳健标准化

scaler = RobustScaler()
  • 计算方法:

计算中位数:对于每个特征,计算其中位数(第50百分位数)

计算四分位距(IQR):IQR=第75百分位数(Q3)-第25百分位数(Q1)

缩放数据:对每个数据点执行以下转换:

  • 结果范围:没有严格的上下限

4 三种标准化方法比较

特性

StandardScaler

MinMaxScaler

RobustScaler

计算方法

(X - μ) / σ(μ: 均值,σ: 标准差)

(X - min) / (max - min)

(X - median) / IQR(IQR = Q3 - Q1)

结果范围

无固定范围(理论±∞,通常±3内)

默认 [0, 1](可调范围)

无固定范围(异常值可能超出)

对异常值敏感度

高(均值和标准差受异常值影响大)

高(min/max 直接受异常值影响)

低(基于中位数和IQR)

适用场景

数据近似正态分布且无显著异常值

需要固定范围(如图像像素归一化)

数据含异常值或非正态分布

优点

保留原始分布形状,适用于许多模型

结果严格限定范围,直观易解释

抗异常值能力强,适用于非正态数据

缺点

受异常值影响大

对异常值敏感,可能压缩正常数据

非异常值范围可能不如StandardScaler稳定

Scikit-learn 类

sklearn.preprocessing.StandardScaler

sklearn.preprocessing.MinMaxScaler

sklearn.preprocessing.RobustScaler

选择建议:

  • 无异常值且分布较正态→StandardScaler(如线性回归、SVM、神经网络)
  • 需要固定范围→MinMaxScaler(如深度学习输入归一化、图像处理)
  • 存在异常值或长尾分布→RobustScaler(如金融数据、离群点多的场景) 
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐