如何覆盖Kmeans算法的距离评估方法



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

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

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

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

最新更新