在 Apache Spark Python 中自定义 K-means 的距离公式

Pho*_*ham 4 k-means apache-spark apache-spark-ml apache-spark-mllib

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

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

zer*_*323 6

通常,使用不同的距离度量没有意义,因为 k-means(与k-medoids不同)算法仅针对欧几里德距离进行了明确定义。

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

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

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

  • 欧几里得距离。
  • cosine 表示余弦距离。

使用风险自负。