Персонализирайте формулата за разстояние на K-средните в Apache Spark Python

Сега използвам K-средства за клъстериране и следвам този урок и API.

Но искам да използвам персонализирана формула за изчисляване на разстояния. И така, как мога да предам персонализирани функции за разстояние в k-средства с PySpark?


person Phong Pham    schedule 30.12.2015    source източник


Отговори (1)


По принцип използването на различна мярка за разстояние няма смисъл, тъй като k-означава (за разлика от k-medoids) алгоритъмът е добре дефиниран само за евклидови разстояния.

Вижте Защо алгоритъмът за клъстериране на k-средства използва само метрика на евклидово разстояние? за обяснение.

Освен това MLlib алгоритмите са внедрени в Scala, а PySpark предоставя само обвивките, необходими за изпълнение на Scala код. Следователно предоставянето на персонализиран показател като функция на Python не би било технически възможно без значителни промени в API.

Моля, имайте предвид, че от Spark 2.4 има две вградени мерки, които могат да се използват с pyspark.ml.clustering.KMeans и pyspark.ml.clustering.BisectingKMeans. (вижте DistanceMeasure Param).

  • евклидово за евклидово разстояние.
  • косинус за косинус разстояние.

Използвайте на свой собствен риск.

person zero323    schedule 30.12.2015