Machine Learning and Data Mining Assignment: Agglomerative Clustering

Note to self: without shrinking, this didn't work well.

This time around, you will code up a version of agglomerative clustering. The approach is inspired by, but simpler than, the CURE approach.

You should use the same datasets that you used on the last assignment, and code up a version of agglomerative clustering with the following characteristics:
To make this efficient, you should use a heap as the CURE paper does to keep track of which clusters to merge next. The k-d tree that CURE uses is not necessary here, as we will not decide which points are representative and which are not. Instead, we will keep all points ("all points are representative"). This means that when you merge two clusters together, any other clusters that had either of these as the previous nearest will have the new cluster as the nearest.

I would encourage you not to code up your own heap, but rather to use one already available. Any of the languages that you are using should have libraries available.

As last time, you should vary the number of final clusters, and choose an appropriate number. Turn in on paper an explanation of the methodologies that you used, the results that you found, and a clear description of the final clusters that you discovered. Turn in your code via hsp.