如何优化Kmeans算法的距离评估方法

时间:2016-02-16 05:37:34

标签: scala apache-spark k-means

我要求重写Kmeans的火花框架距离评估算法。我不想实现欧几里德距离计算方法,但想要自定义它。我怎样才能覆盖它呢?

1 个答案:

答案 0 :(得分:0)

据我所知,遗憾的是没有办法为Apache Spark的K-Means的mllib实现提供自定义距离函数。

如果您愿意放弃mllib实现,那么有几种选择。一个是K-Means算法的Apache Math Commons' implementation,它允许您提供自己的距离函数作为构造函数参数之一。

还有一个名为Nak的Scala本地库,它提供了自己的implementation。 Nak的实现还允许您提供自己的距离函数,并且还可以在任何类型T上进行参数化,因此如果您广泛使用Spark,可能会在转换类型时给您带来一些不便。不幸的是,Nak似乎遇到了一些维护问题,因为使用它会将你锁定在一个相当旧版本的Scala Breeze(0.9与目前的0.12相比),这对你来说可能是也可能不是问题。