Различные результаты между fpc :: dbscan и dbscan :: dbscan - PullRequest
1 голос
/ 23 марта 2019

Я хочу реализовать DBSCAN в R для некоторых GPS-координат.У меня есть матрица расстояний (dist_matrix), которую я добавила в следующие функции:

dbscan :: dbscan (dis_matrix, eps = 50, minPts = 5, borderPoints = TRUE) fpc :: dbscan (dis_matrix, eps =50, MinPts = 5, method = "dist")

, и я получаю очень разные результаты от обеих функций с точки зрения количества кластеров и, если точка является точкой шума или принадлежит кластеру.По сути, результаты несовместимы между двумя алгоритмами.Я понятия не имею, почему они генерируют эти очень разные результаты, хотя здесь http://www.sthda.com/english/wiki/wiki.php?id_contents=7940 мы видим для данных радужной оболочки, обе функции сделали то же самое.

моя матрица расстояний [исходит из функции (geosphere ::distm), который вычисляет пространственное расстояние между более чем 2000 координатами.

Кроме того, я кодировал dbscan в соответствии с этим источником псевдокода: https://cse.buffalo.edu/~jing/cse601/fa13/materials/clustering_density.pdf Мои результаты совпадают с результатами, полученными из пакета fpc.Кто-нибудь может заметить, почему они разные.Я уже изучил обе функции и ничего не нашел.

1 Ответ

2 голосов
/ 23 марта 2019

Документация geosphere::distm говорит, что она не возвращает объект dist, а матрицу. dbscan::dbscan предполагает, что у вас есть матрица данных, а не расстояния. Преобразуйте вашу матрицу в dist объект с as.dist первым. Это должно решить проблему.

...