深度学习中几种常见数据标准化方法

目录

一、介绍

二、总结

三、详情 

1. StandardScaler

2. MinMaxScaler

3. RobustScaler

4. MaxAbsScaler

5. Normalizer

6. QuantileTransformer

7. PowerTransformer

8. Log Transform

四、示例 

五、心得


一、介绍

方法名称缩放范围适用条件
StandardScaler均值为0,方差为1数据具有正态分布的情况下效果最佳
MinMaxScaler[0, 1]数据分布不平衡或有明显的上下界限
RobustScaler根据四分位数缩放数据包含异常值
MaxAbsScaler[-1, 1]数据已经中心化,即没有偏移
Normalizer每个样本的范数为1样本之间有显著的差异,需要将其归一化
QuantileTransformer[0,1]或正态分布数据分布不均匀
PowerTransformer (Yeo-
Johnson)
均值为0,方差为1数据具有正态分布或接近正态分布
Log Transform非负数据的对数缩放数据必须为正值或非负值

二、总结

  • StandardScaler:适用于数据本身的分布近似正态分布,通过将数据缩放到均值为0、方差为1,消除不同特征的量纲影响。
  • MinMaxScaler:将数据缩放到指定的最小值和最大值(默认是0和1)之间,适合数据分布有明显上下界的情况。
  • RobustScaler:基于四分位数进行缩放,对于异常值不敏感,适用于数据包含离群点的情况。
  • MaxAbsScaler:将数据缩放到最大绝对值为1,适用于已经中心化的数据,特别适合稀疏数据
  • Normalizer:对每个样本独立进行缩放,将其范数缩放为1,适用于需要将样本归一化的情况。
  • QuantileTransformer:通过非线性变换将数据转换为均匀分布或正态分布,适用于数据分布不均匀的情况。
  • PowerTransformer (Yeo-Johnson):对数据进行幂变换,使其更接近正态分布,适用于包含负值的数据。
  • Log Transform:对数据进行对数变换,适用于数据呈指数型增长的情况,但要求数据必须为正值或非负值

三、详情 

1. StandardScaler

        功能: 通过将数据的均值调整为0,标准差调整为1,使数据服从标准正态分布。

        公式: X_{\text {scaled }}=\frac{X-\mu}{\sigma}  其中,\mu 是均值,\sigma 是标准差。

        适用场景: 大多数机器学习算法,特别是假设数据服从正态分布的算法,如线性回归、逻辑回归和支持向量机。

2. MinMaxScaler

        功能: 将数据缩放到给定的最小值和最大值(通常是0和1)之间。

        公式: X_{\text {scaled }}=\frac{X-X_{\min }}{X_{\max }-X_{\min }}

        适用场景: 数据范围已知且确定要将数据缩放到特定范围内的场景,例如图像处理(像素值通常在0到255之间)。

3. RobustScaler

        功能: 使用中位数和四分位距进行缩放,适用于包含异常值的数据。

        公式: X_{\text {scaled }}=\frac{X-\operatorname{median}(X)}{I Q R(X)} 其中,I Q R 表示四分位距(75th percentile - 25th percentile)。

        适用场景: 数据中存在较多异常值。

4. MaxAbsScaler

        功能: 按每个特征的最大绝对值进行缩放,使数据在 [-1, 1] 范围内。

        公式: X_{\text {scaled }}=\frac{X}{\max (|X|)}

        适用场景: 数据已经被稀疏化且包含正负值。

5. Normalizer

        功能: 将每个样本缩放为单位范数(通常是L2范数),使每个样本的向量长度为1。

        公式: X_{\text {scaled }}=\frac{X}{\|X\|}

        适用场景: 当你希望将数据缩放为相同的尺度(单位向量)以用于聚类或其它机器学习算法。

6. QuantileTransformer

        功能: 通过将数据转换为服从均匀分布或高斯分布,减小数据中的偏态和异常值的影响。

        方法:使用分位数进行转换。

        适用场景: 当数据具有很强的偏态或需要服从特定分布时。

7. PowerTransformer

        功能: 使用幂变换(如Box-Cox或Yeo-Johnson)将数据变换为更接近正态分布的形式。

         公式: Box-Cox变换: X_{\text {new }}=\frac{X^\lambda-1}{\lambda}​ (需要所有值为正)

                   Yeo-Johnson变换: 适用于正负值数据。

        适用场景: 当数据分布明显偏离正态分布且包含负值时。

8. Log Transform

        功能: 通过对数据应用对数变换,减小数据的偏态。

        公式: X_{\text {new }}=\log (X+1)

        适用场景: 数据具有指数增长或极度偏态分布。

四、示例 

import numpy as np
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler, MaxAbsScaler, Normalizer, QuantileTransformer, PowerTransformer

# 示例数据
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# StandardScaler
standard_scaler = StandardScaler()
data_standard_scaled = standard_scaler.fit_transform(data)
print("StandardScaler:", data_standard_scaled)

# MinMaxScaler
minmax_scaler = MinMaxScaler()
data_minmax_scaled = minmax_scaler.fit_transform(data)
print("MinMaxScaler:", data_minmax_scaled)

# RobustScaler
robust_scaler = RobustScaler()
data_robust_scaled = robust_scaler.fit_transform(data)
print("RobustScaler:", data_robust_scaled)

# MaxAbsScaler
max_abs_scaler = MaxAbsScaler()
data_max_abs_scaled = max_abs_scaler.fit_transform(data)
print("MaxAbsScaler:", data_max_abs_scaled)

# Normalizer
normalizer = Normalizer()
data_normalized = normalizer.fit_transform(data)
print("Normalizer:", data_normalized)

# QuantileTransformer
quantile_transformer = QuantileTransformer(output_distribution='normal')
data_quantile_transformed = quantile_transformer.fit_transform(data)
print("QuantileTransformer:", data_quantile_transformed)

# PowerTransformer (Yeo-Johnson)
power_transformer_yeo_johnson = PowerTransformer(method='yeo-johnson')
data_power_yeo_johnson_transformed = power_transformer_yeo_johnson.fit_transform(data)
print("PowerTransformer (Yeo-Johnson):", data_power_yeo_johnson_transformed)

# Log Transform
data_log_transformed = np.log1p(data)  # 使用log1p避免对零值进行log变换时出现负无穷大
print("Log Transform:", data_log_transformed)

五、心得

        最常用的还是 StandardScaler 或者 MinMaxScaler,其他的几种标准化方法很少用到,不到特殊情况下不要轻易尝试。

        当换了一种标准化方法时,切记模型中的激活函数可能也要跟随调整。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值