# What is a performant clustering algorithm for approx 10,000 vectors of approx 30 dimension?

I have a set of real-valed vectors, for example

$S = \{v_1, v_2, ..., v_k\}$

$v_i = \begin{pmatrix} age_i \\ height_i \\ weight_i \\ ... \end{pmatrix}$

or whatever. Each vector has on the order of 30 components, and $k\approx 10,000$. The vectors are not normalized.

Two objectives:

• count how many clusters are naturally formed by the data set,
• given arbitrary $N$, choose $N$ representatives from the set (or construct representative vectors) which span the clusters.

There are lots of clustering algorithms to choose from. I can be flexible on what the definition of clusters entails, but I do want "reasonable" behaviour if $N$ is different from the number of clusters which naturally exist:

• if N is too small, the biggest, densest clusters should be represented first,
• if N is too big the extra representatives should sit near the big clusters rather than anywhere else, and the extra representatives should not all congregate in the same place.

Simplicity and performance are the priority. The definition of a cluster is negotiable. It would be nice if the algorithm could be tuned to specify that certain components are "important" in defining a cluster, but that's just a wish.

What would be a fast, simple clustering method for this kind of data?

• What clustering algorithms have you considered? Why have you rejected the ones you considered? What do you want to do with the clusters? – Deathbreath Feb 15 '18 at 13:51