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

# 多项式特征

## 描述

多项式特征变换将向量映射到次元d元的多项式特征空间。输入向量的维数决定了多项式因子的个数，这些多项式因子的值是各自的向量项。给定向量$(x, y, z， \ldots)^T，得到的特征向量如下:

Flink的实现是按多项式次数递减的顺序排列多项式。

给定向量$\left(3,2\right)^T$，多项式特征向量的3次幂是这样的

这个转换器可以被预先添加到所有的“Transformer”和“Predictor”实现中，这些实现期望输入类型为“LabeledVector”或任何子类型的“Vector”。

## 操作

”PolynomialFeatures“是一个”Transformer”。因此，它支持“fit”和“transform”操作。

### 拟合

多项式特征不针对数据进行训练，因此支持所有类型的输入数据。

### 转换

多项式特征将“Vector”和“LabeledVector”的所有子类型转换为它们各自的类型:

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

## 参数
多项式特征转换器可由以下参数控制:

| 参数 | 描述 |
| --- | --- |
| **Degree** | 最大多项式次数。. (默认值: **10**) |

## 例子



```
// Obtain the training data set val trainingDS: DataSet[LabeledVector] = ...

// Setup polynomial feature transformer of degree 3 val polyFeatures = PolynomialFeatures()
.setDegree(3)

// Setup the multiple linear regression learner val mlr = MultipleLinearRegression()

// Control the learner via the parameter map val parameters = ParameterMap()
.add(MultipleLinearRegression.Iterations, 20)
.add(MultipleLinearRegression.Stepsize, 0.5)

// Create pipeline PolynomialFeatures -> MultipleLinearRegression val pipeline = polyFeatures.chainPredictor(mlr)

// train the model pipeline.fit(trainingDS)
```



