Skip to main content

PyPI version Tests

Hierarchical Boundary Coefficient Clustering

HBCC is a clustering algorithm is inspired by the work of Peng et al. [4]. Their CDC algorithm detects regions that separate clusters by quantifying how spread out points' neighbors are in feature space. The intuition for this process is as follows: (1) points within a clusters have near neighbors on all sides, and (2) points in-between clusters or on the edge of a cluster predominantly have neighbors in the direction of the cluster's core.

The same intuition was previously used by Vandaele et al. [2] to quantify how close points are to the boundary of the data's manifold. They used their boundary coefficient to extract manifold skeletons.

HBCC combines Vandaele et al. [2]'s boundary coefficient with HDBSCAN's [1], [3] principled density-based cluster selection strategies. This approach removes CDC's ratio parameter. Instead a clustering hierarchy is evaluated over all boundary coefficient values and clusters are selected from the hierarchy.

The implementation relies on McInnes' fast_hdbscan and its support for lensed clustering introduced for Bot et al. [5] to detect branches.

The HBCC algorithm works as follows:

  1. Compute k nearest neighbors and minimum spanning tree [3].
  2. Compute n-hop distances from nearest neighbors [2]
  3. Compute the boundary coefficient for each point [2].
  4. Compute minimum spanning tree from boundary coefficient weighted knn--mst graph union [5].
  5. Compute HDBSCAN cluster hierarchy and selection [1].

How to use HBCC

import numpy as np
import matplotlib.pyplot as plt
from fast_hbcc import HBCC

data = np.load('data/flareable/flared_clusterable_data.npy')
c = HBCC(
    num_hops=4,
    min_samples=10,
    min_cluster_size=100,
    cluster_selection_method="leaf",
).fit(data)
plt.scatter(*data.T, c=c.labels_ % 10, s=2, cmap='tab10', vmin=0, vmax=9)
plt.axis("off")
plt.show()

HBCC cluster scatterplot

Example Notebooks

A notebook demonstrating how the algorithm works is available on nbviewer.

Citing

Citing information not available yet.

Licensing

The fast_hbcc package has a 2-Clause BSD license.

References

  • [1] Campello, R. J., Moulavi, D., & Sander, J. (2013, April). Density-based clustering based on hierarchical density estimates. In Pacific-Asia Conference on Knowledge Discovery and Data Mining (pp. 160-172). Springer Berlin Heidelberg.

  • [2] Vandaele, R., Saeys, Y., & De Bie, T. (2019). The Boundary Coefficient : a Vertex Measure for Visualizing and Finding Structure in Weighted Graphs. 15th International Workshop on Mining and Learning with Graphs (MLG).

  • [3] McInnes, L., & Healy, J. (2017). Accelerated Hierarchical Density Based Clustering. 2017 IEEE International Conference on Data Mining Workshops (ICDMW), 2017-Novem, 33–42. https://doi.org/10.1109/ICDMW.2017.12.

  • [4] Peng, D., Gui, Z., Wang, D., Ma, Y., Huang, Z., Zhou, Y., & Wu, H. (2022). Clustering by measuring local direction centrality for data with heterogeneous density and weak connectivity. Nature Communications, 13(1), 1–14. https://doi.org/10.1038/s41467-022-33136-9.

  • [5] Bot, Daniël M., et al. "FLASC: A Flare-Sensitive Clustering Algorithm: Extending HDBSCAN* for Detecting Branches in Clusters." arXiv preprint arXiv:2311.15887 (2023). https://arxiv.org/abs/2311.15887.

Metadata

Release files for fast-hbcc 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fast-hbcc 0.1.0
File Size Uploaded
fast_hbcc-0.1.0.tar.gz 16.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fast-hbcc 0.1.0
File Interpreter ABI Platform
fast_hbcc-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 33.0 kB

Release files / fast_hbcc-0.1.0.tar.gz

Download URL fast_hbcc-0.1.0.tar.gz
Size 16.2 kB
Tags Source
SHA-256 checksum
How to use checksums
548a3f93221d87f2685f28c535d906dd5ff2d9d8381129358a1cd4c962ca6379
BLAKE2b-256 checksum
How to use checksums
ed0abac275dd1306aef202c50dcf67d148b164acfc2952064ee1fdf75aadc85c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.11

Release files / fast_hbcc-0.1.0-py3-none-any.whl

Download URL fast_hbcc-0.1.0-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
448de6f10ccc3a26f04e32e0402cc63d03f8b18e279819620e2e4ea572209ac5
BLAKE2b-256 checksum
How to use checksums
1a66d6b523b1fa6d877d92611e11dbce466c95f60fd5484307aea1a2f004181d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/4.0.1 CPython/3.11.11

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page