What kind of learning algorithm is suitable for classifying unknown number of groups of unlabeled data? I'm looking for a learning algorithm to analyze data, then group it and define how many classes are fit to distinguish the data set. Type of experiment is in the context of evolutionary biology, how a set of bacteria evolve over the course of time.


*

*The data is initially unlabeled so I'm assuming I should look into unsupervised learning algorithms.

*I'm trying to classify instances of the training set into groups, so I thought clustering types of algorithms would be more suitable (following a pre-processing of PCA for an easier grasp of the data).

*The number of groups are unknown, so something like K-Means might be more troubling since the number of centroids is preselected before the analysis step.
I did some reading/research and stumbled upon Hierarchical Clustering, which seemed like a great candidate for this problem.
 A: If you have only one or two feature variables (1D or 2D dataset), I would hesitate to recommend clustering methods, because you may even not know whether there will be clusters or how many clusters. I would rather try kernel density estimation on the data to observe the peaks of probability density. The python code with SciPy package  is shown on the page.
Regarding the clustering methods, I think this interesting page indicates how the characters (size, density, spherical, metric,...etc) of the data set matter when choosing different algorithms. 

A: If you don't know the number of clusters ahead Bayesian nonparametrics may be appropriate. Loosely these methods work by assuming there is an infinite number of clusters and using a prior, such as the Chinese restaurant process, which favors only using a small number of these clusters for any given finite data set. This allows one to do things like fit a Gaussian Mixture Model without specifying the number of mixture components. 
There is a lot of good, freely available information out there on the subject, but I recommend starting with A tutorial on Bayesian nonparametric models by Gershman and Blei. It is a short and fairly easy read.
A: Before applying clustering algorithms like K-means you could try to visualize the data to get some insights about the number of clusters. You could apply Self Organizing Maps (SOM - https://en.wikipedia.org/wiki/Self-organizing_map) first. With SOM you can analyse your data in 2D or 3D. This way you can find a good range of clusters to apply K-means or other clustering algorithms.
A: I think what you are looking for is indeed a clustering algorithm. 
In hierarchical clustering, you will also have to choose the number of groups unless you trust a criterion to stop the tree. 
What you can do for kmeans (and also hierarchical) is calculating a few metrics (like inertia, gap statistic or silhouette) to compare each models with a different number of clusters. (ex calculate silhouette coefficient for kmeans for k = 2, 5, 10, 15 ,20 and choose k for which silhouette coefficient is maximum). 
Now these two algorithms kind of supposed spherical clusters so other algorithms might be more adapted. 
The best algorithm will highly depend on your data so if you provide more details on what you are working with (marketing , genomic ...) , people may be able to guide you a little bit more. 
A: Excellent question I must say.
This is a situation I run into many times myself and unfortunately have not found a satisfactory answer.
As @Scratch has said, you can use the hierarchical clustering algorithm, since it is deterministic and then you can try to come up with a heuristic which traverses the hierarchy and tries to use a metric such has membership size of a cluster to extract a final cluster list.
Another method which I've not quite gotten to work is to use clustering resampled data sets and then looking to see if there is affinity between two elements. Here is a question I had asked which might give you some hints on how to accomplish this.
