$$ \newcommand{\R}{\mathbb{R}} \newcommand{\E}{\mathbb{E}} \newcommand{\x}{\mathbf{x}} \newcommand{\y}{\mathbf{y}} \newcommand{\wv}{\mathbf{w}} \newcommand{\av}{\mathbf{\alpha}} \newcommand{\bv}{\mathbf{b}} \newcommand{\N}{\mathbb{N}} \newcommand{\id}{\mathbf{I}} \newcommand{\ind}{\mathbf{1}} \newcommand{\0}{\mathbf{0}} \newcommand{\unit}{\mathbf{e}} \newcommand{\one}{\mathbf{1}} \newcommand{\zero}{\mathbf{0}} \newcommand\rfrac[2]{^{#1}\!/_{#2}} \newcommand{\norm}[1]{\left\lVert#1\right\rVert} $$

最小最大值标准化

描述

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

最大值为:

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

其中 $\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)

例子

// 创建最大最小值标准化转换器
val minMaxscaler = MinMaxScaler()
  .setMin(-1.0)

// 获取需要标准化的数据集
val dataSet: DataSet[Vector] = ...

// 对训练集的最大最小值进行训练学习
minMaxscaler.fit(dataSet)

// 对提供的数据集进行缩放,最大值为 1.0 最小值为 -1.0
val scaledDS = minMaxscaler.transform(dataSet)