最小最大值标准化

描述

最小最大值标准化通过对给定数据集进行缩放,使得所有值都落在指定的区间[min,max]内。如果用户没有指定区间的最大和最小值,则最小最大值标准化将会把输入特征缩放到[0,1]区间内。 给定输入数据集 $x_1, x_2,… x_n$ 的最小值为:

xmin=min(x1,x2,,xn)x_{min} = min({x_1, x_2,…, x_n})

最大值为:

xmax=max(x1,x2,,xn)x_{max} = max({x_1, x_2,…, x_n})

经过缩放的数据集 $z_1, z_2,…,z_n$ 为:

zi=xixminxmaxxmin(maxmin)+minz{i}= \frac{x{i} - x{min}}{x{max} - x_{min}} \left ( max - min \right ) + min

其中 $\textit{min}$ 与 $\textit{max}$ 是用户指定的最小值和最大值。

操作

MinMaxScaler 是一个转换器(Transformer),因此它支持拟合(fit)与转换(transform)两种操作。

拟合

MinMaxScaler 可以在所有VectorLabeledVector的子类型上进行训练:

  • fit[T <: Vector]: DataSet[T] => Unit
  • fit: DataSet[LabeledVector] => Unit

转换

MinMaxScaler 将 VectorLabeledVector 的子类型数据集转换到对应的相同类型的数据集:

  • transform[T <: Vector]: DataSet[T] => DataSet[T]
  • transform: DataSet[LabeledVector] => DataSet[LabeledVector]

参数

最小最大值标准化可由下列参数进行控制:

参数 描述
Min

目标缩放区间的最小值 (默认值:0.0)

Max

目标缩放区间的最大值 (默认值:1.0)

例子

  1. // 创建最大最小值标准化转换器
  2. val minMaxscaler = MinMaxScaler()
  3. .setMin(-1.0)
  4. // 获取需要标准化的数据集
  5. val dataSet: DataSet[Vector] = ...
  6. // 对训练集的最大最小值进行训练学习
  7. minMaxscaler.fit(dataSet)
  8. // 对提供的数据集进行缩放,最大值为 1.0 最小值为 -1.0
  9. val scaledDS = minMaxscaler.transform(dataSet)