4

现在我使用 K-means 进行聚类并遵循本教程API

但我想使用自定义公式来计算距离。那么如何使用 PySpark 在 k-means 中传递自定义距离函数?

4

1 回答 1

6

一般来说,使用不同的距离度量是没有意义的,因为 k-means (与k-medoids不同)算法仅针对欧几里德距离进行了很好的定义。

请参阅为什么 k-means 聚类算法仅使用欧几里得距离度量?解释一下。

此外,MLlib 算法是在 Scala 中实现的,PySpark 仅提供执行 Scala 代码所需的包装器。因此,如果不对 API 进行重大更改,从技术上讲,将自定义指标作为 Python 函数提供是不可能的。

请注意,从Spark 2.4开始,有两个内置度量可以与pyspark.ml.clustering.KMeans和一起使用pyspark.ml.clustering.BisectingKMeans。(见DistanceMeasure Param)。

  • 欧几里得距离。
  • 余弦距离的余弦。

使用风险自负。

于 2015-12-30T10:55:25.337 回答