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. ]]
"""