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=190,        # sliding window width
    N=2,          # min points to define a micro-cluster
    r=0.23,       # micro-cluster radius
    n_micro=2,    # min micro-clusters to define a macro-cluster
    dense_mc_promotion=True,
    random_state=42,
    keep_history=True,
)

# Process the stream point by point
for point in X:
    clusterer.partial_fit(point)
    clusterer.visualize(title="MCMSTStream on ExclaStar") # to see step-by-step visual results
    

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.3.tar.gz (24.7 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.3-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcmststream-1.2.3.tar.gz
  • Upload date:
  • Size: 24.7 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.3.tar.gz
Algorithm Hash digest
SHA256 4a58eee45ef750c8d33ef758ed84dfdc2af306af46adb8cdb183d2d130bb28d1
MD5 2020b8e1fc0a970920253a52766c31a8
BLAKE2b-256 28b838acddad5fc647e460ab50058374ef023dd2f018b0ce15da8f3f8d69edec

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcmststream-1.2.3.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.3-py3-none-any.whl.

File metadata

  • Download URL: mcmststream-1.2.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 61d91c0cdafc7c5c8b73e0f3a5e70403cfcc599ee594aee890c051b8e65f55bc
MD5 258494dbc90fa15deb2b7e966d2ec5bb
BLAKE2b-256 9944818691409c3c6f7ada6b20dbac6875883ccbee2d0f9b5e113085a2887694

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcmststream-1.2.3-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