 $$ \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} $$

# MinMax缩放器

## 描述

最小值缩放器缩放给定的数据集，以便所有值都位于用户指定的范围[min,max]之间。如果用户没有为缩放范围提供特定的最小值和最大值，则MinMax缩放器将根据输入数据集的特征转换为位于[0,1]区间。给定一组输入数据$x_1, x_2，…x_n$，最小值:

最大值：

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

当$\textit{min}$和$\textit{max}$是用户指定的要缩放范围的最小值和最大值。


## 操作

MinMaxScaler是一个Transformer。因此，它支持拟合和变换操作。


### 拟合

MinMaxScaler针对'Vector'或'LabeledVector'的所有子类型进行训练:

*   `fit[T &lt;: Vector]: DataSet[T] =&gt; Unit`
*   `fit: DataSet[LabeledVector] =&gt; Unit`

### 转换

MinMaxScaler将'Vector'或'LabeledVector'的所有子类型转换为各自的类型:


*   `transform[T &lt;: Vector]: DataSet[T] =&gt; DataSet[T]`
*   `transform: DataSet[LabeledVector] =&gt; DataSet[LabeledVector]`

## 参数

MinMax缩放器的实现受到下面两个参数的控制

| 参数 | 描述 |
| --- | --- |
| **Min** | 缩放数据集的范围的最小值。 (默认值: **0.0**) |
| **Max** | 缩放数据集的范围的最大值。 (默认值: **1.0**) |

## 例子



```
// Create MinMax scaler transformer val minMaxscaler = MinMaxScaler()
  .setMin(-1.0)

// Obtain data set to be scaled val dataSet: DataSet[Vector] = ...

// Learn the minimum and maximum values of the training data minMaxscaler.fit(dataSet)

// Scale the provided data set to have min=-1.0 and max=1.0 val scaledDS = minMaxscaler.transform(dataSet)
```



