Запуск DBSCAN для данных GPS: ошибка памяти

Для проекта, над которым я сейчас работаю, мне нужно сгруппировать относительно большое количество пар GPS в разные кластеры местоположения. После прочтения множества сообщений и предложений здесь, в StackOverflow и использования разных подходов, у меня все еще есть проблема с его запуском ...

Размер набора данных: чуть более 200 тысяч пар GPS-координат.

[[108.67235   22.38068 ]
 [110.579506  16.173908]
 [111.34595   23.1978  ]
 ...
 [118.50778   23.03158 ]
 [118.79726   23.83771 ]
 [123.088512  21.478443]]   

Испробованные методы: 1. Пакет HDBSCAN

coordinates = df5.values
print(coordinates)
clusterer = hdbscan.HDBSCAN(metric='haversine', min_cluster_size=15)
clusterer.fit(coordinates)
  1. DBSCAN min_samples = 15, метрика = гаверсинус, алгоритм = 'мяч_дерево'

  2. По совету Anony-Mousse я тоже попробовал ELKI. НАСТРОЙКА пользовательского интерфейса ELKI

И все эти методы дали мне одну и ту же ошибку памяти

Я прочитал эти сообщения: DBSCAN для кластеризации данных о географическом местоположении Кластеризация 500 000 геопространственных точек в Python

Все эти сообщения предполагали, что размер набора данных не должен быть проблемой. Однако почему-то я продолжал получать сообщение об ошибке. Прошу прощения, если это окажется простым ответом. Это из-за настроек? или просто потому, что я запускаю его на своем ноутбуке с памятью 16 ГБ ...?


person Timothy.L    schedule 22.08.2018    source источник
comment
Ошибка памяти не имеет смысла. Поскольку для DBSCAN требуется только O (n) памяти, вы сможете запустить это на Raspberry Pi, если у вас будет достаточно времени. Пожалуйста, предоставьте дамп памяти и другие диагностические данные, а не только расплывчатое описание нехватки памяти. Может быть, у вас открыто слишком много других вещей? Какой размер дней все еще работает?   -  person Has QUIT--Anony-Mousse    schedule 23.08.2018
comment
Для справки: для 200к точек потребуется около 3,5 МБ ОЗУ. Даже с некоторыми накладными расходами DBSCAN должен легко справиться с этой задачей с помощью нескольких мегабайт ОЗУ, а не гигабайт. Покажите настоящее сообщение об ошибке!   -  person Has QUIT--Anony-Mousse    schedule 23.08.2018
comment
@ Anony-Mousse Привет !! Ты моя счастливая звезда! По какой-то причине я попытался запустить его с помощью DBSCAN сегодня утром, чтобы начать свой день, и он прошел! :) Спасибо!!!   -  person Timothy.L    schedule 23.08.2018
comment
Возможно, вам стоит держать меньше открытых вещей и время от времени проверять диспетчер задач, чтобы узнать, какой процесс использует вашу память ... Время от времени закрывайте питомники, которые вы не используете!   -  person Has QUIT--Anony-Mousse    schedule 23.08.2018


Ответы (1)


Для sklearn: я столкнулся с той же проблемой, когда использовал старую версию на sklearn 0.19.1, потому что сложность была O (N ^ 2).

Но теперь проблема была решена в новой версии 0.20.2, и ошибки памяти больше нет, а сложность стала O (n.d), где d - среднее количество соседей. это не кумир сложности, но намного лучше старых версий.

Ознакомьтесь с примечаниями в этом выпуске, чтобы избежать чрезмерного использования памяти: https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html

person MMamdouh    schedule 18.02.2019