现在我使用 K-means 进行聚类并遵循本教程和 API。
但我想使用自定义公式来计算距离。那么如何使用 PySpark 在 k-means 中传递自定义距离函数?
一般来说,使用不同的距离度量是没有意义的,因为 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
)。
使用风险自负。