# Cluster analysis with constraints on number of clusters and their abundance

How to perform cluster analysis in a set:

1. With the number of clusters bounded but not specified, e.g. $$k\in[3,5]$$
2. With a bounded abundance of clusters (the number of elements in each of the clusters), e.g. $$n_i \geq 4$$

FindClusters[] allows to specify the number of clusters or leave it complitely free. I do not know how to force the number of clusters to belong to the given range.

All the more I do not know how to impose a condition on the minimal abundance of clusters, so that extremely scanty clusters do not arise.

It seams to be a quite reasonable functionality, so maybe I miss something important. I would be grateful for help.

• You need to specify some clustering criterion for any algorithm to be able to "choose" the appropriate number of clusters. You can limit the range (e.g., between 3 and 5) but you must impose some criterion that will allow the algorithm to make 4, rather than 3, say. – David G. Stork Mar 27 '19 at 18:59
• Sounds good. Is it about changing CriterionFunction->? If so, how to edit the function? I'm asking because I see only a selection of several built-in functions, such as "StandardDeviation" or "CalinskiHarabasz". If you meant anything else, get me out of error. Maybe you're talking about editing the algorithm hidden under Method->, such as "Agglomerate". If so, how to do it? – Druid Mar 28 '19 at 11:44
• @DavidG.Stork Your answer to my question suggests that you are an expert in this field. Could you develop a topic, how to change the settings of the clustering function, to impose constraints on the number of clusters and their abundance? – Druid Mar 28 '19 at 12:30
• I've worked in the field for three decades, have taught in leading academic departments and wrote the leading book in Pattern classification. I urge you to read key papers and books... the field is too deep to cast into a comment on StackExchange. – David G. Stork Mar 28 '19 at 18:55