ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

样本特征数据标准化

样本特征数据标准化
样本特征数据的标准化(Feature Scaling 或 Standardization)是数据预处理的关键步骤之一,尤其在线性回归、逻辑回归、神经网络、支持向量机等依赖距离度量的算法中至关重要。
标准化可以通过多种方法实现,最常用的是 Z-Score 标准化归一化(Min-Max Scaling)
1. Z-Score 标准化 (Standardization)
Z-Score 标准化将数据转换为均值为 0、标准差为 1 的分布。它假设数据服从或近似服从正态分布。
公式:
Xnew=X−μσcap X sub n e w end-sub equals the fraction with numerator cap X minus mu and denominator sigma end-fraction
𝑋𝑛𝑒𝑤=𝑋−𝜇𝜎

其中:
  • Xcap X
    𝑋
    是原始特征值。
  • μmu
    𝜇
    (mu)是该特征的均值。
  • σsigma
    𝜎
    (sigma)是该特征的标准差。 
特点及适用场景: 
  • 特点:经过标准化后,数据的范围不再固定(理论上可以从负无穷大到正无穷大,但绝大部分落在 [-3, 3] 之间)。它保留了数据的原始分布形状。
  • 适用算法:非常适合依赖距离度量的算法,如 KNN、K-Means、以及所有基于梯度的优化算法(如线性回归、逻辑回归、神经网络)。
  • 对异常值敏感:均值和标准差都受异常值影响较大,因此标准化也受影响。 
2. 归一化 (Min-Max Scaling) 
归一化将数据缩放到一个固定的特定范围内,通常是
[0,1]open bracket 0 comma 1 close bracket
[0,1]
[-1,1]open bracket negative 1 comma 1 close bracket
[−1,1]
 
公式(缩放到 [0] 范围):
Xnew=X−XminXmax−Xmincap X sub n e w end-sub equals the fraction with numerator cap X minus cap X sub m i n end-sub and denominator cap X sub m a x end-sub minus cap X sub m i n end-sub end-fraction
𝑋𝑛𝑒𝑤=𝑋−𝑋𝑚𝑖𝑛𝑋𝑚𝑎𝑥−𝑋𝑚𝑖𝑛

其中: 
  • Xmincap X sub m i n end-sub
    𝑋𝑚𝑖𝑛
    是该特征的最小值。
  • Xmaxcap X sub m a x end-sub
    𝑋𝑚𝑎𝑥
    是该特征的最大值。 
特点及适用场景: 
  • 特点:将所有数据压缩到固定区间,消除了量纲(单位)的影响。
  • 适用算法:在神经网络中常用于将输入值缩放到激活函数的敏感区域(如 Sigmoid 函数的 [0] 范围)。也适用于需要明确范围的算法。
  • 对异常值非常敏感:数据的最大值和最小值会严重影响缩放结果。如果存在一个极端异常值,大部分数据将被压缩在一个很小的范围内。 
3. 何时使用标准化? 
以下是需要进行特征标准化的主要原因: 
  • 消除量纲影响:不同特征可能具有不同的单位和数量级(例如,房屋面积通常是几百平方米,而房间数量是个位数)。标准化使得所有特征在同一尺度上,避免数量级大的特征主导模型。
  • 加速模型收敛:在线性回归、逻辑回归和神经网络中使用梯度下降算法时,标准化后的数据能使损失函数的等高线更接近圆形,从而让优化器更快地找到最小值(收敛速度更快)。
  • 算法要求:某些算法(如 SVM、KNN)假设特征在相似的尺度上,否则具有较大方差的特征将主导结果。 
在 Python 中如何实现? 
使用 Scikit-learn 库可以非常方便地实现标准化和归一化:
在虚拟环境中安装库 
(.vpyenv)$ pip install scikit-learn
from sklearn.preprocessing import StandardScaler, MinMaxScaler
import numpy as npdata = np.array([[100], [200], [300], [400], [1000]])# 1. Z-Score 标准化
scaler_z = StandardScaler()
data_standardized = scaler_z.fit_transform(data)
print("Standardized Data:\n", data_standardized)
# 结果的均值接近 0,标准差接近 1# 2. 归一化 (Min-Max Scaling)
scaler_mm = MinMaxScaler()
data_normalized = scaler_mm.fit_transform(data)
print("Normalized Data (0-1):\n", data_normalized)
# 结果范围在 [0, 1] 之间

 

 
返回列表