Skip to main content

MCMSTStream: applying minimum spanning tree to KD-tree-based micro-clusters to define arbitrary-shaped clusters in streaming data

Project description

MCMSTStream

PyPI version Python License: MIT Paper

MCMSTStream is a density-based stream clustering algorithm that applies a Minimum Spanning Tree (MST) over KD-tree-based micro-clusters to define arbitrary-shaped clusters in streaming data.

Published in Neural Computing and Applications (2024) 36:7025–7042.

Key features

  • Online (sliding-window) stream clustering
  • Detects arbitrary-shaped (non-spherical) clusters
  • Robust to outliers and noisy data
  • Handles high-dimensional streams via KD-tree range search
  • Scikit-learn-style API: fit, partial_fit, fit_predict, predict, get_params, set_params

Installation

pip install mcmststream

For the built-in visualization support:

pip install "mcmststream[viz]"

Quick start

import numpy as np
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import adjusted_rand_score
from mcmststream import MCMSTStream, load_exclastar

# Load the bundled ExclaStar benchmark dataset
X, y_true = load_exclastar()
X = MinMaxScaler().fit_transform(X)

clusterer = MCMSTStream(
    W=270,        # sliding window width
    N=2,          # min points to define a micro-cluster
    r=0.14,       # micro-cluster radius
    n_micro=2,    # min micro-clusters to define a macro-cluster
    random_state=42,
    keep_history=True,
)

# Process the stream point by point
for point in X:
    clusterer.partial_fit(point)

print("ARI = %.4f" % adjusted_rand_score(y_true, clusterer.history_labels_))

Optional visualization of the current window:

clusterer.visualize(title="MCMSTStream on ExclaStar")

Parameters

Parameter Description Paper symbol
W Sliding window width W
N Minimum number of points within radius r to define a micro-cluster N
r Micro-cluster radius; micro-clusters within 2r are linked by the MST r
n_micro Minimum number of micro-clusters to form a macro-cluster n_micro
dense_mc_promotion If True, a component whose total point count is ≥ n_micro * N also becomes a macro-cluster even with fewer than n_micro micro-clusters (extension beyond the paper; default False)

How it works

  1. Micro-clusters are formed with a KD-tree range search: at least N points within radius r.
  2. Macro-clusters are built by running Prim's MST over micro-cluster centers, connecting those within 2r.
  3. As the stream evolves, micro/macro-clusters are updated, merged, or deleted, adapting to concept drift.

Citation

If you use this package in your research, please cite:

@article{erdinc2024mcmststream,
  title   = {MCMSTStream: applying minimum spanning tree to KD-tree-based
             micro-clusters to define arbitrary-shaped clusters in streaming data},
  author  = {Erdin{\c{c}}, Berfin and Kaya, Mahmut and {\c{S}}enol, Ali},
  journal = {Neural Computing and Applications},
  volume  = {36},
  number  = {13},
  pages   = {7025--7042},
  year    = {2024},
  doi     = {10.1007/s00521-024-09443-1}
}

Related projects

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcmststream-1.2.0.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcmststream-1.2.0-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file mcmststream-1.2.0.tar.gz.

File metadata

  • Download URL: mcmststream-1.2.0.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcmststream-1.2.0.tar.gz
Algorithm Hash digest
SHA256 d49b417074ed83a6ae878e408402ee422b20834da9402d4f438b947ee33d7e95
MD5 1db6209151c37ea2bdad778034d72a01
BLAKE2b-256 b055d140acf4782cef27168217e17da0fb2d2cf3e88adbc15e303f8355397a19

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcmststream-1.2.0.tar.gz:

Publisher: publish.yml on senolali/MCMSTStream

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcmststream-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: mcmststream-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcmststream-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 67dac904a960edea82006b6ac596ffb37470079a6f547e58df0116a5df643da4
MD5 07e1eaeddcc8bc0d986c2c232202329e
BLAKE2b-256 32faf05af7b05cc825d3c7fba8ef61f5b639efdf12790eb8228761fd39fa53e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcmststream-1.2.0-py3-none-any.whl:

Publisher: publish.yml on senolali/MCMSTStream

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page