Skip to main content

A versatile two-phase clustering algorithm designed for datasets with both known and exploratory components.

Project description

CLustering In Multiphase Boundaries (CLiMB)

A versatile two-phase clustering algorithm designed for datasets with both known and exploratory components.

Features

  • Two-Phase Clustering: Combines constrained clustering with exploratory clustering to identify both known and novel patterns.
  • Density-Aware: Uses local density estimation to intelligently filter and assign points.
  • Flexible Exploratory Phase: Supports multiple clustering algorithms (DBSCAN, HDBSCAN, OPTICS) through a strategy pattern.
  • Visualization Tools: Built-in 2D and 3D visualization capabilities for cluster analysis.
  • Parameter Tuning: Builder pattern for flexible parameter adjustment.

Installation

pip install CLiMB

Or install from source:

git clone https://github.com/LorenzoMonti/CLiMB.git
cd CLiMB
pip install -e .

Quick Start

import numpy as np
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler
from CLiMB.core.CLiMB import CLiMB

# Generate synthetic data
X, y = make_blobs(n_samples=300, centers=3, n_features=3, random_state=42)

# Scale the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Create seed points (optional)
seed_points = np.array([
    X[y == 0].mean(axis=0),
    X[y == 1].mean(axis=0),
    X[y == 2].mean(axis=0)
])
seed_points_scaled = scaler.transform(seed_points)

# Initialize and fit CLiMB
climb = CLiMB(
    constrained_clusters=3,
    seed_points=seed_points_scaled,
    density_threshold=0.2,
    distance_threshold=2.0
)
climb.fit(X_scaled)

# Get cluster labels
labels = climb.get_labels()

# Visualize results (inverse transform to original scale first)
climb.inverse_transform(scaler)
fig = climb.plot_comprehensive_3d()

Examples

See the examples/ directory for detailed usage examples:

  • simple_example.py: Basic usage with well-defined clusters
  • mixed_data_example.py: Handling mixed data with both convex and non-convex clusters
  • compare_methods.py: Comparing different exploratory clustering methods

How It Works

CLiMB operates in two phases:

  1. Constrained Phase (KBound): A modified K-means that:

    • Uses seed points to guide initial clustering
    • Applies density and distance constraints
    • Prevents centroids from drifting too far using radial thresholds
  2. Exploratory Phase: Uses density-based clustering methods to discover patterns in points not assigned during the first phase.

Use Cases

CLiMB is particularly useful for:

  • Datasets with partially known structure
  • Astronomical data analysis
  • Particle physics clustering
  • Pattern discovery in scientific datasets
  • Data exploration with prior knowledge

Advanced Usage

Using Different Exploratory Algorithms

from CLiMB.core.CLiMB import CLiMB
from CLiMB.exploratory.HDBSCANExploratory import HDBSCANExploratory

# Create HDBSCAN exploratory algorithm
hdbscan = HDBSCANExploratory(min_cluster_size=5, min_samples=3)

# Use it with CLIMB
climb = CLiMB(
    constrained_clusters=3,
    exploratory_algorithm=hdbscan
)

Parameter Tuning with Builder Pattern

climb = CLiMB()
climb.set_density(0.3) \
     .set_distance(2.5) \
     .set_radial(1.0) \
     .set_convergence(0.1)

License

MIT

Citation

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

climb_astro-0.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

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

climb_astro-0.1-py3-none-any.whl (3.9 kB view details)

Uploaded Python 3

File details

Details for the file climb_astro-0.1.tar.gz.

File metadata

  • Download URL: climb_astro-0.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for climb_astro-0.1.tar.gz
Algorithm Hash digest
SHA256 3e754b569c9c8be792727d778fd68f71f59e917b5b8eb30248137765f99c7914
MD5 3754ef8e4b959f596cfd1e588716f76f
BLAKE2b-256 8df76f80b683cf4a3a0d3a0c1716dd01224a842e6d7cebc9c1b7626e3714340a

See more details on using hashes here.

File details

Details for the file climb_astro-0.1-py3-none-any.whl.

File metadata

  • Download URL: climb_astro-0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for climb_astro-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0386d85c39ee255f1d66d2b473545c26c5f98b9a09e2ea34adeca5d5fa29b46f
MD5 221586e0565520f105c80426e2315548
BLAKE2b-256 56ccd030415c61742f08784111202db8196361372875cd380eda2d7934602caa

See more details on using hashes here.

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