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

Posted

技术标签:

【中文标题】在 Apache Spark Python 中自定义 K-means 的距离公式【英文标题】:Customize Distance Formular of K-means in Apache Spark Python 【发布时间】:2016-04-04 07:06:12 【问题描述】:

现在我使用 K-means 进行聚类并关注 this tutorial 和 API。

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

【问题讨论】:

【参考方案1】:

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

请参阅Why does k-means clustering algorithm use only Euclidean distance metric? 了解说明。

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

请注意,自 Spark 2.4 以来,有两个内置措施可用于 pyspark.ml.clustering.KMeanspyspark.ml.clustering.BisectingKMeans。 (见DistanceMeasure Param)。

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

使用风险自负。

【讨论】:

以上是关于在 Apache Spark Python 中自定义 K-means 的距离公式的主要内容,如果未能解决你的问题,请参考以下文章

使用Apache Spark实现python功能

为啥 Apache-Spark - Python 在本地比 pandas 慢?

spark的udf和udaf的注册

如何在 python 中消除 apache spark 数据帧中的标头和尾标

Apache Spark 使用的 python 版本

Apache Spark:SparkStream创建Receiver来实现模拟无边界流操作