In canopy clustering http://www.kamalnigam.com/papers/canopy-kdd00.pdf, if a sample falls in an overlap of 2 canopies, how do we choose its cluster?
1 Answer
As thoroughly exaplained in: http://net.pku.edu.cn/~course/cs402/2012/book/%5BMahout.in.Action%282011%29%5D.Sean.Owen.pdf
Canopies aren't normally used for clustering, but merely as a single-iteration pre-stage for k-means, for choosing the initial k centroids.
But, if you insist on using the canopies as clusters, you can ask CanopyDriver to also cluster the data, and it will use the closest canopy for each point:
Canopy closest = clusterer.findClosestCanopy(vw.get(), clusters);
writer.append(new IntWritable(closest.getId()),
new WeightedVectorWritable(1, vw.get()));