多项式特征转换器 (polynomial features transformer) 能把一个向量映射到一个自由度为 $d$ 的多项式特征空间。 输入特征的维度决定了多项式因子的个数,多项式因子的值就是每个向量的项。 给定一个向量 $(x, y, z, \ldots)^T$,那么被映射的特征向量为:
Flink 的实现以自由度降序的方式给多项式排序。
如果一个向量为 $\left(3,2\right)^T$,自由度为 3 的多项式特征向量为:
该转换器能够前置于所有 Transformer 和 Predictor 的实现,这些实现的输入需要是 LabeledVector 类或者 Vector 的子类。
PolynomialFeatures 是一个 Transformer (转换器)。
因此,它支持 fit (拟合) 和 transform (转换) 操作。
PolynomialFeatures 并不对数据进行训练,因此它支持所有类型的输入数据。
PolynomialFeatures 把所有 Vector 和 LabeledVector 的子类转换成各自的类型,如下所示:
transform[T <: Vector]: DataSet[T] => DataSet[T]transform: DataSet[LabeledVector] => DataSet[LabeledVector]多项式特征转换器可以由以下参数控制:
| 参数 | 描述 |
|---|---|
| 自由度 |
最大多项式自由度. (默认值: 10) |
// 获取训练数据集
val trainingDS: DataSet[LabeledVector] = ...
// 设置一个自由度为 3 的多项式特征转换器
val polyFeatures = PolynomialFeatures()
.setDegree(3)
// 设置一个复线性回归学习器
val mlr = MultipleLinearRegression()
// 通过参数映射 (ParameterMap) 控制学习器
val parameters = ParameterMap()
.add(MultipleLinearRegression.Iterations, 20)
.add(MultipleLinearRegression.Stepsize, 0.5)
// 创建管道 (pipeline) PolynomialFeatures -> MultipleLinearRegression
val pipeline = polyFeatures.chainPredictor(mlr)
// 训练模型
pipeline.fit(trainingDS)