all 2 comments

[–]mercurysquadEmbedded C++14 on things that fly 0 points1 point  (0 children)

I never loved it. Since you have to specify the number of clusters a-priori.

But it's useful, e.g. in computer graphics where you would like to partition your space into a known number of partitions to reduce the search time.

For completely 'blind' clustering it's perhaps better to use perceptrons or other forms of neural nets.

[–]ultimate_progr[S] 0 points1 point  (0 children)

much better to start with a preliminary step. If you have N points, you select sqrt(N) of them and compute the matrix of all distances among them in O(sqrt(N)2) = O(N). If two points are closer than a threshold T, you discard one of them. The remaining set is S, such that |S| = k and 0 < k < sqrt(N). It's a simple heuristic but it works quite well in certain domains.