机器学习笔记:特征缩放(sklearn实现)

1 特征缩放介绍

对于有些模型来说,特征缩放是很重要的,举几个例子:

  • 神经网络——进行梯度下降时,如果有一个方向数值特别大,那么梯度肯定是向着这个方向走的
  • PCA——需要计算类内和类间的variance
  • KNN和K-Means——需要计算点与点之间的距离

所以在送入模型之前,进行特征缩放是很重要的

机器学习笔记:特征缩放(sklearn实现)_第1张图片

 2 标准化 standardization

  • 标准化是将数据按比例缩放,使之落入一个小的特定区间,把数据转换为统⼀的标准。
  • 最常用的标准化是z-score标准化,即零-均值标准化
  • z=\frac{x-\mu}{\sigma}
  • 标准化缩放后,特征就变为具有标准正态分布了

2.1 sklearn 实现

from sklearn.preprocessing import StandardScaler
X = np.array([[0, 0, 0], 
              [0, 1, 1], 
              [1, 0, 1], 
              [1, 1, 1]])
stand_x=StandardScaler().fit_transform(X)
stand_x
'''
array([[-1.        , -1.        , -1.73205081],
       [-1.        ,  1.        ,  0.57735027],
       [ 1.        , -1.        ,  0.57735027],
       [ 1.        ,  1.        ,  0.57735027]])
'''

每一列进行标准化

3 规范化(归一化)normalization

把数据变为(0,1)之间的小数,可以使处理过程更加便捷、快速。

常见的规范化为 min-max缩放X_{norm}=\frac{X-X_{min}}{X_{max}-X_{min}}

3.1 sklearn实现

from sklearn.preprocessing import MinMaxScaler
X = np.array([[0, 1, 2], 
              [0, 2, 3], 
              [1, 4, 9], 
              [1, 1, 1]])
stand_x=MinMaxScaler().fit_transform(X)
stand_x
'''
array([[0.        , 0.        , 0.125     ],
       [0.        , 0.33333333, 0.25      ],
       [1.        , 1.        , 1.        ],
       [1.        , 0.        , 0.        ]])
'''

4 标准化和规范化的区别

机器学习笔记:特征缩放(sklearn实现)_第2张图片

 

  • 在规范化中只更改数据的范围,而在标准化中会更改数据分布的形状。

  • 规范化将这些值重新缩放到[0,1]的范围内。在所有参数都需要具有相同的正刻度的情况下是非常有效的。但是数据集中的异常值会丢失。

  • 而在标准化中,数据被缩放到平均值(μ)为0,标准差(σ)为1(单位方差)。

  • 规范化在0到1之间缩放数据,所有数据都为正。标准化后的数据以零为中心的正负值。

参考内容:特征工程中的缩放和编码的方法总结

你可能感兴趣的:(机器学习,机器学习,人工智能,python)