Отображение результатов dbscan в R - PullRequest
4 голосов
/ 26 июля 2011

Ваши комментарии, предложения или решения будут / будут высоко оценены, спасибо.

Я использую пакет fpc в R для анализа dbscan некоторых очень плотных данных (3 набора по 40000 точек в диапазоне -3,6).

Я нашел несколько кластеров, и мне нужно отобразить только наиболее значимые из них. Проблема в том, что у меня есть один кластер (первый) с 39 000 точек в нем. Мне нужно построить график всех других кластеров, кроме этого.

dbscan() создает специальный тип данных для хранения всех данных этого кластера. Он не индексируется, как фрейм данных (но, возможно, есть способ представить его таким образом?).

Я могу построить график типа dbscan, используя базовый вызов plot(). Но, как я уже сказал, это будет отображать несущественные 39 000 точек.

ТЛ; др: Как отобразить только определенные кластеры типа данных dbscan?

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Если вы посмотрите на страницу справки (?dbscan), она, как и все остальные, организована в разделы, обозначенные как Описание, Использование, Аргументы, Детали и Значение.Раздел Value описывает, что возвращает функция dbscan.В этом случае это просто список (стандартный тип данных R) с несколькими компонентами.

* Компонент cluster - это просто целочисленный вектор, длина которого равна числу строк в ваших данных, которое указываетв какой кластер входит каждое наблюдение.Таким образом, вы можете использовать этот вектор для поднабора ваших данных, чтобы извлечь только те кластеры, которые вам нужны, и затем отобразить только эти точки данных.

Например, если мы используем первый пример со страницы справки:

set.seed(665544)
n <- 600
x <- cbind(runif(10, 0, 10)+rnorm(n, sd=0.2), runif(10, 0, 10)+rnorm(n,
    sd=0.2))
ds <- dbscan(x, 0.2)

затем мы можем использовать результат, ds, чтобы построить только точки в кластерах 1-3:

#Plot only clusters 1, 2 and 3
plot(x[ds$cluster %in% 1:3,])
1 голос
/ 26 июля 2011

Не зная специфики dbscan, я могу порекомендовать вам взглянуть на функцию smoothScatter.Это очень полезно для изучения основных шаблонов на диаграмме рассеяния, когда в противном случае у вас было бы слишком много точек, чтобы понять данные.

0 голосов
/ 01 марта 2012

Вероятно, наиболее разумным способом построения результатов DBSCAN является использование альфа-форм с радиусом, установленным на значение epsilon. Альфа-формы тесно связаны с выпуклыми корпусами, но они не обязательно выпуклые. Альфа-радиус контролирует количество допустимой невыпуклости.

Это довольно тесно связано с DBSCAN кластерной моделью объектов, связанных плотностью, и поэтому даст вам полезную интерпретацию набора.

Поскольку я не использую R, я не знаю о возможностях альфа-формы R. Предположительно, есть пакет под названием alphahull, который можно быстро проверить в Google.

...