特征工程之特征归一化

参考资料

  1. 《百面机器学习》
  2. https://blog.csdn.net/wei18791957243/article/details/91360356

为什么需要特征归一化

为了消除数据特征之间的量纲影响,使得不同指标之间具有可比性。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的。但对于决策树模型并不适用。

线性函数归一化(Min-Max Scaling)

对原始数据进行线性变换,使结果映射到[0,1],实现对原始数据的等比缩放。公式如下:

X n o r m = X − X m i n X m a x − X m i n X_{norm}=\frac{X-X_{min}}{X_{max}-X_{min}} Xnorm​=Xmax​−Xmin​X−Xmin​​

其中 X X X为原始数据, X m a x X_{max} Xmax​、 X m i n X_{min} Xmin​分别为数据的最大值和最小值。

代码示例

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()

X = [[90, 2, 10, 40],
    [60, 4, 15, 45],
    [75, 3, 13, 46]]

X_norm = scaler.fit_transform(X)

print(X_norm)
# [[1.         0.         0.         0.        ]
#  [0.         1.         1.         0.83333333]
#  [0.5        0.5        0.6        1.        ]]

零均值归一化(Z-Score Normalization)

又称标准化,即将原始数据映射到均值为0、标准差为1的分布上。具体地,设原始特征的均值为 μ \mu μ、标准差为 σ \sigma σ,公式为:

z = x − μ σ z=\frac{x-\mu }{\sigma } z=σx−μ​

代码示例

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

X = [[90, 2, 10, 40],
    [60, 4, 15, 45],
    [75, 3, 13, 46]]

X_norm = scaler.fit_transform(X)

print(X_norm)
# [[ 1.22474487 -1.22474487 -1.29777137 -1.3970014 ]
#  [-1.22474487  1.22474487  1.13554995  0.50800051]
#  [ 0.          0.          0.16222142  0.88900089]]
上一篇:【tf.wiki】02-TensorFlow基础示例:线性回归 (分别使用np和ts进行梯度下降预测房价+反归一化还原数据)


下一篇:关于人脸识别的视频图片处理