标准化缩放

描述

标准化缩放器将会根据用户指定的均值与标准差值对给定数据集进行标准化缩放。 如果用户没有为其指定均值与标准差,标准化缩放器将会根据均值为 0、标准差为 1 对输入数据集进行缩放。 给定输入数据集 $x_1, x_2,… x_n$,它的均值为:

xˉ=1ni=1nxi\bar{x} = \frac{1}{n}\sum{i=1}^{n}x{i}

标准差为:

σx=1ni=1n(xixˉ)2\sigma{x}=\sqrt{ \frac{1}{n} \sum{i=1}^{n}(x_{i}-\bar{x})^{2}}

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

zi=std(xixˉσx)+meanz{i}= std \left (\frac{x{i} - \bar{x} }{\sigma_{x}}\right ) + mean

其中 $\textit{std}$ 与 $\textit{mean}$ 是用户指定的标准差与均值。

操作

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

拟合

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

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

转换

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

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

参数

标准化缩放器可由下面两个参数进行控制。

参数 描述
Mean

被缩放数据集的均值。(默认值:0.0

Std

被缩放数据集的标准差。(默认值:1.0

例子

  1. // 创建一个标准化缩放器
  2. val scaler = StandardScaler()
  3. .setMean(10.0)
  4. .setStd(2.0)
  5. // 加载需要进行缩放的数据
  6. val dataSet: DataSet[Vector] = ...
  7. // 计算被缩放数据的均值与标准差
  8. scaler.fit(dataSet)
  9. // 根据前面设定的 均值 =10、标准差 =2.0 对数据集进行缩放
  10. val scaledDS = scaler.transform(dataSet)