ENH: Birch, first commit
add example for birch + make it more pythonic
Made the following changes
1. Improved documentation.
2. Added sanity test.
3. Moved example to a separate folder
4. Optimised compuation of centroids.
5. Added underscore to public attributes.
ENH: Made the following changes
1. Added partial_fit and predict methods
2. Inherit from ClusterMixin from fit_predict methods
3. Removed inplace modification of X and self.copy
4. Added final global clustering and n_clusters param.
OPT: Set check_X_y=False internally in birch
OPT: Increased the code speed by doing the following.
1. Prevent recomputing centroids.
2. Precompute the squared_norms as much as possible, and remove
call to pairwise_distances_argmin_min
3. Cached centroids_ and squared_norms_ to prevent repeated
iteration across subclusters_
4. Compute the closest_threshold when needed.
5. Remove enumeration of X
6. In plase modification of dot products.
OPT: Made the following changes.
1. Used np.unravel_index
2. Improved docs and removed unused imports.
ENH: Added example to compare birch and minibatchkmeans
ENH: Add arbitrary clusterer in the global clustering step and test
ENH: Sparse matrix support
TST: Add tests for branching_factor
OPT: Remove unwanted calls to np.asarray for self.centroids_
ENH: Add narrative documentation
STY: Cosmits in documentation
Made the following changes
1. Inherit from BaseEstimator to enable pretty printing
2. Add transform function
DOC: Update documentation of _CFNode
Made the following changes
1. Fix condition for checking threshold.
2. Fix the global clustering by remapping the samples to the
   subcluster_centers.
3. Add tests for threshold.
4. Minor doc and cosmits.
Made the following changes.
1. Prevent recomputation of updating centroids.
2. Use algorithm='brute' so that sparse data can be handled.
Made the following changes
1. Remove call to KNeighborsClassifier
2. Set default branching_factor to 50
Prevent preprocssing for iterating over dense data