# Finding number of clusters in a dataset

I am learning the basics of data classification using competitive learning, and am somewhat confused regarding the way this is implemented.

I understand at the start an amount N of prototypes is randomly positioned in the input space. (Ie: weights of output neurons are randomly generated). Subsequently training the data over unlabeled sample input data and changing weight connections shifts each prototype towards the center of a cluster, such data data is more and more accurately labelled.

My question is: How do I know how many classes I want my data to be clustered in? Wouldn't this mean knowing the number of clusters/classes in advance? Are there any techniques to estimate this?

I looked at the leader-follower algorithm, which adds neurons whenever the closest neuron is still more distant than a threshold X. Would this solve the problem?

• Finding clusters is NP-hard so you use approximations or heuristics. Some such will always give you $k$ clusters (relatively fast) given a $k$. Yes, you may need some idea about your target $k$, or you have to try several values. Other algorithms don't need such an input but have other weaknesses. I suggest you start by reading on Wikipedia, the sources linked there and/or a good textbook on the matter. – Raphael Mar 12 '15 at 6:49
• The problem here is, without some actual classification, you could enforce there being any number of clusters on a given dataset. – Sinkingpoint Mar 12 '15 at 9:33