Теперь я использую K-means для кластеризации и следую этому руководству и API.
Но я хочу использовать пользовательскую формулу для расчета расстояний. Итак, как я могу передать пользовательские функции расстояния в k-средних с помощью PySpark?
Теперь я использую K-means для кластеризации и следую этому руководству и API.
Но я хочу использовать пользовательскую формулу для расчета расстояний. Итак, как я могу передать пользовательские функции расстояния в k-средних с помощью PySpark?
Как правило, использование другой меры расстояния не имеет смысла, поскольку k-средние (в отличие от k-medoids) корректно определен только для евклидовых расстояний.
Объяснение см. в разделе Почему алгоритм кластеризации k-средних использует только метрику евклидова расстояния?.
Более того, алгоритмы MLlib реализованы в Scala, а PySpark предоставляет только обёртки, необходимые для выполнения кода Scala. Поэтому предоставление пользовательской метрики в виде функции Python было бы технически невозможно без значительных изменений в API.
Обратите внимание, что, начиная с Spark 2.4, есть две встроенные меры, которые можно использовать с pyspark.ml.clustering.KMeans
и pyspark.ml.clustering.BisectingKMeans
. (см. DistanceMeasure Param
).
Используйте на свой страх и риск.