FlinkML 中的工具

2017/12/19 Flink

FLINKML中的工具

Flink提供了很多扩展工具,可以在处理数据和做预测的时候使用上。

Distance Metrics

Flink提供了系列的distance metrics ,同时也支持手动实现新的算法。 下列代码展示了如何实现新的算法。

class MyDistance extends DistanceMetric{
    override def distance(a:Vector,b:Vector) = ... //
}

object MyDistance{
    def apply() = new MyDistance()
}

val myMetric = MyDistance()



在KNN算法中,可以指定distance metrics算法

Splitter

有些情况下,数据不足,可能只有一份数据,这种情况下就要指定数据划分器。

Train-Test-Splitter

用来将一份数据划分成两份的工具,用法如下:

val dataTrainTest:TrainTestDataSet = splitter.trainTestSplit(data,0.6,true)

如上,60%的数据训练,40%的数据作为真实数据。

TrainTestHoldout

用法如下:

val dataTrainTestHO:trainTestHoldoutDataSet = Splitter.trainTestHoldoutSplit(data,Array(6.0,3.0,1.0))

K fold splitter

将数据平分K份,算法会在K份数据止运行并且相互验证。 代码如下:

val dataKFolded:Array[TrainTestDataSet] = Splitter.kFoldSplit(data,10)

Multi Random Splits

交数据分成手动指定的比例 代码如下:

//create an array of 5 datasets of 1 of 50%,and 5 of 10% ecah
val dataMultiRandom:Array[DataSet[T]] = Splitter.multiRandomSplit(data,Array(0.5,0.1,0.1,0.1))
Show Disqus Comments

Search

    Table of Contents