Pregunta

I need to a command, similar to length(), to find the number of clusters created in a dbscan.

Suppose I have perform a dbscan on this data set

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,.2,showplot=1)

I can use the command ds to view the number of clusters

ds

Is there a command that I can type and a value for the number of clusters is returned? i.e. I type a command and the value 12 is returned.

¿Fue útil?

Solución

If you look on the structure of object ds you will see that there are variable cluster containing cluster number for each observation. 0 in variable cluster is used to code noise observations (see help file of dbscan()).

 str(ds)
List of 4
 $ cluster: num [1:600] 1 2 3 4 5 10 6 7 8 9 ...
 $ eps    : num 0.2
 $ MinPts : num 5
 $ isseed : logi [1:600] TRUE TRUE TRUE TRUE TRUE FALSE ...
 - attr(*, "class")= chr "dbscan"

To find the number of clusters you can look on maximal value of that variable. Results is 11.

 max(ds$cluster)
[1] 11

Otros consejos

You can use the command

length(table(ds$cluster))-1

The -1 will remove the 0 cluster

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top