# Cluster detection in a distribution [duplicate]

Possible Duplicate:
Determine different clusters of 1d data from database

I am trying to detect clusters, i.e. segments on a linear scale, with visibly higher concentration of distribution elements. Consider the following simplified distribution

VAR01=3
VAR02=17
VAR03=18
VAR04=21
VAR05=23
VAR06=44
VAR07=61
VAR08=89
VAR09=90
VAR10=92
VAR11=94
VAR12=117


If you put these values on a diagram, you could see that there is a visible concentration (cluster) between 17-23 and 89-94 with VAR01, VAR06, VAR07 and VAR12 being lone outliers.

What are the best techniques in programmatically recognizing such clusters in a distrubution?

Usually, the term clustering is used to multivariate problems only.

In single dimensions, the problem is significantly easier, simply because you can sort the data. Any method that comes from multivariate clustering will be easily outperformed by a simpler method that exploits the sortedness of the data set.

You may want to have a look at natural breaks optimization, or kernel density estimation (look for minima in the KDE, and split there).

Plus, this question has been asked a dozen times before. E.g.

https://stackoverflow.com/questions/5738490/not-random-clusters-in-1d-data-set

Clustering 1D data

How to 'intelligently' bin a collection of sorted data?

Alternative to Otsu for dividing data into two groups

https://stackoverflow.com/questions/5738490/not-random-clusters-in-1d-data-set

https://stackoverflow.com/questions/6147466/what-clustering-algorithm-to-use-on-1-d-data

https://stackoverflow.com/questions/7869609/cluster-one-dimensional-data-optimally

https://stackoverflow.com/questions/11513484/1d-number-array-clustering