FlinkML 数据预处理

2017/12/20 Flink

FlinkML 数据预处理

Flink支持Python的scikit-learn风格的流水线。FlinkML中的流水线是Flink中的多种数据变换和预测组合。Flink允许通过流水线简化机器学习程序的构建过程。

流水线有三种组成部分:

  • Estimator:通过调用fit函数实现对模型的训练过程。
  • Transformer:调用transform方法来处理数据输入过程。
  • Predictor:调用predict方法来实现算法对于预测值的计算。 Predictor是流水线的结束节点。Flink支持很多数据预处理工具。

Polynomial features

Polynomial feature 是一种transformer,会将向量映射到多项式空间(原文是: maps a vector into the polynomial feature space of degree d)。Polynomial feature可以通过组建图计算来处理数据分类问题。

下面是一个例子:

假设有一个线性方程:

想像有两个观测点: - x=12和y=2 - x=5 和y=5.5

都能得到 。 如果两个观测点是不同类别的数据,我们就无法发现其差别,假设我们现在有一个新的因子z,并将z同x,y结合起来。

现在新的表达式是:

观测点的值就能相互区分。通过这种方式,成功的实现了对数据更好的区分。Flink Polynomial features 允许我们通过一些预家庭旅馆函数做到同样的事情。

例如:

val polyFeatures = PolynomialFeatures().setDegree(3)

Standard scaler

Standard scaler允许输入数据通过用户定义的变量和平均数来缩放输入数据。如果用户定义的平均数是0,数据方差就会是1。Standard scaler通过一个具有fit和transform方法的transformer来完成数据操作。

如下是一个例子:

val scaler = StandfardScaler().setMean(10.0).setStd(2.0)

scaler.fit(trainingDataSet)

val scaledDS = scaler.transform(trainingDataset)

MinMax scaler

例子如下:

val minMaxscaler=MinMaxScaler().setMin(1.0).setMax(3.0)

minMaxscaler.fit(trainingDataset)

val scaledDS = minMaxscaler.transform(trainingDataset)

这个方法会确保数据缩放后的范围是在min和max值之间。

Show Disqus Comments

Search

    Table of Contents