Min-max 规范化方法是将原始数据变换到 [0,1] 的空间中。

min-max 有助于将数据转化为特定区间范围内的值

公式如下:

$$ x = \frac{ X-X.min()}{X.max()-X.min()} $$

对于单行数组, 直接应用上述公式即可.

这里我们简单说明一下矩阵下的规范化算法

假设有矩阵如下

$$ \left[\begin{matrix}0 & -3 & 1 \\ 3 & 1 & 2 \\ 0 & 1 & -1\end{matrix}\right] $$

则沿着 axis=0 轴, 即 y 轴, 计算最大值和最小值, 用公式描述, 即

$$ x = \frac{X-X.min(axis=0)}{X.max(axis=0)-X.min(axis=0)} $$

此时有 X.max(axis=0) = [3, 1, 2], X.min(axis=0) = [0, -3, -1]

X.max(axis=0) - X.min(axis=0) = [3, 4, 3] 则可以计算出规约化之后的矩阵.

用 python 描述如下

# coding:utf-8
from sklearn import preprocessing
import numpy as np
# 初始化数据,每一行表示一个样本,每一列表示一个特征
x = np.array([[ 0., -3.,  1.],
              [ 3.,  1.,  2.],
              [ 0.,  1., -1.]])
# 将数据进行 [0,1] 规范化
min_max_scaler = preprocessing.MinMaxScaler()
minmax_x = min_max_scaler.fit_transform(x) # 等价于 (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
print(minmax_x)
"""
Output:
[[0.         0.         0.66666667]
 [1.         1.         1.        ]
 [0.         1.         0.        ]]
"""