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-astro
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
# The number of centers to generate
centers = 4
# Generate synthetic data with 5 dimensions
X, y = make_blobs(n_samples=500, centers=centers, n_features=5, random_state=42)
# Scale the data
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# Create seed points (optional)
seed_points = np.array([
X[y == i].mean(axis=0) for i in range(centers)
])
seed_points_scaled = scaler.transform(seed_points)
# Initialize and fit CLiMB
climb = CLiMB(
constrained_clusters=4,
seed_points=seed_points_scaled,
density_threshold=0.15,
distance_threshold=2.5,
radial_threshold=1.2,
convergence_tolerance=0.05
)
climb.fit(X_scaled)
# Get cluster labels
labels = climb.get_labels()
# Visualize results (only possible in lower dimensions)
climb.inverse_transform(scaler)
fig = climb.plot_comprehensive_3d(save_path="./3d")
fig2 = climb.plot_comprehensive_2d(save_path="./2d")
Examples
See the examples/ directory for detailed usage examples:
simple_example.py: Basic usage with well-defined clustersmixed_data_example.py: Handling mixed data with both convex and non-convex clusterscompare_methods.py: Comparing different exploratory clustering methods
How It Works
CLiMB operates in two phases:
-
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
-
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
Tests Status
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file climb_astro-0.1.4.tar.gz.
File metadata
- Download URL: climb_astro-0.1.4.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be6d8fc3b984a7ad82bffc15bf121461279a1a6441621cdb2aaf699a55959ea2
|
|
| MD5 |
a8c45d48ad5c7ab6c4480ed6fedc9c38
|
|
| BLAKE2b-256 |
97ed63ba0edd745db8ffa1d5d12d5050d1d11171c69c6c6505f720a6c64d0b0b
|
File details
Details for the file climb_astro-0.1.4-py3-none-any.whl.
File metadata
- Download URL: climb_astro-0.1.4-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fed19708e600109f42ff63ed5cc29d2f04e672422adb145b05b161acd6492f97
|
|
| MD5 |
4789ccb09c74eac0be0924788cf2e029
|
|
| BLAKE2b-256 |
34f57fda68fbb56e38e531c2c665f98ed630d5fdc37afa4a55671abcf73d98c2
|