Выбор и реализация метода кластеризации: DBSCAN что-то еще?

Мне нужно сгруппировать набор данных с координатами широты и долготы. Я использую python в качестве языка и планирую использовать DBSCAN, поскольку я не хочу указывать количество кластеров.

Цель и задача - иметь возможность вводить большой набор данных с широтой и долгими координатами, к которым прикреплено множество функций, и назначать группы кластеров, которые будут возвращены. Исходная база данных, которая содержит записи в форме [долгая долгая характеристика1, характеристика2 ....], должна быть изменена новым полем с названием «группа кластеров»: [долгая долгая группа кластеров особенность1, характеристика2 ....]. Это поможет мне определить, какие точки данных сгруппированы близко друг к другу, без необходимости наносить на карту. Я надеюсь, что выбросам будут предоставлены отдельные идентификаторы групп, а точкам, которые в значительной степени сгруппированы вместе, будет предоставлен один и тот же идентификатор группы.

Моим вводом в DBSCAN будут координаты x, y после преобразования lat, long -> x, y и пренебрежения координатой z. Я использую:

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html#sklearn.cluster.DBSCAN http://scikit-learn.org/stable/auto_examples/index.html

Мне сложно понять, как настроить вход для этой функции. Могу ли я ввести координаты x, y? Будет ли это список кортежей? Если бы кто-то мог помочь мне визуализировать это, это было бы большим подспорьем.

Кроме того, не могли бы вы объяснить, чем DBSCAN будет отличаться от иерархической кластеризации?


person bud    schedule 16.03.2014    source источник


Ответы (1)


Прежде всего, это DBSCAN, а не сканирование БД - это акроним.

DBSCAN требует, чтобы в плотных областях было больше объектов minPts. Если вы выберете слишком низкое значение minPts (1 или 2), результаты действительно будут соответствовать иерархической кластеризации с одной связью. Так что используйте более высокое значение.

Scipy реализация может использовать матрицу расстояний. Так что просто вычислите все расстояния, выберите параметры и запустите функцию. Документация scipy также довольно хороша, вы ее читали?

person Has QUIT--Anony-Mousse    schedule 18.03.2014