Skip to main content

tgmm: Gaussian Mixture Models in PyTorch

PyPI version Documentation Python 3.8+ PyTorch

tgmm Logo

tgmm is a flexible, GPU-accelerated implementation of Gaussian Mixture Models (GMM) in PyTorch, supporting EM and MAP estimation, multiple covariance types, several initialization strategies, and a comprehensive suite of clustering metrics and visualization tools.

Installation

Install the latest stable version from PyPI:

pip install tgmm

For development installation:

git clone https://github.com/adriansousapoza/tgmm.git
cd tgmm
pip install -e .

Requirements: Python 3.8+ and PyTorch 2.5+. For GPU usage, install the CUDA-enabled version of PyTorch as per the official instructions.

Documentation

Full documentation is hosted at adriansousapoza.github.io/tgmm:

Quick Start

import torch
import numpy as np
from tgmm import GaussianMixture

# Generate sample data
np.random.seed(42)
X = np.vstack([
    np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 1]], 300),
    np.random.multivariate_normal([3, 3], [[1, -0.3], [-0.3, 1]], 300),
    np.random.multivariate_normal([-2, 2], [[0.5, 0], [0, 2]], 200)
])
X_tensor = torch.tensor(X, dtype=torch.float32)

# Create and fit GMM
gmm = GaussianMixture(n_components=3, random_state=42)
gmm.fit(X_tensor)

# Make predictions
labels = gmm.predict(X_tensor)
print(f"Converged: {gmm.converged_}, Iterations: {gmm.n_iter_}")

See the Tutorials for runnable, end-to-end examples of every feature -- covariance types, all initialization strategies, MAP estimation with priors, Classification EM, constrained sampling, save/load, and more.

Key Features

1. Gaussian Mixture Model

The core GaussianMixture class supports:

  • Covariance Types: 'full', 'diag', 'spherical', 'tied_full', 'tied_diag', 'tied_spherical'
  • Estimation Methods: MLE (Maximum Likelihood) or MAP (Maximum A Posteriori) with priors
  • Algorithms: Standard EM or CEM (Classification EM) for hard assignments
  • Initialization: Multiple strategies via GMMInitializer
  • Model Selection: bic/aic methods for comparing fits at different n_components

2. Bayesian Inference with Priors

Support for conjugate priors enables proper Bayesian inference:

  • Weight Prior: Dirichlet distribution
  • Mean Prior: Gaussian distribution
  • Covariance Prior: Wishart/Inverse-Wishart distribution
  • NIW Conjugate Prior: Normal-Inverse-Wishart for joint mean-covariance updates

3. Clustering Metrics

Comprehensive evaluation with ClusteringMetrics:

Unsupervised Metrics (no ground truth needed):

  • Silhouette Score, Davies-Bouldin Index, Calinski-Harabasz Index, Dunn Index (BIC/AIC are bic/aic methods on GaussianMixture directly -- including GaussianMixture(n_components=None, ...) -- not ClusteringMetrics)

Supervised Metrics (with ground truth labels):

  • Adjusted Rand Index (ARI), Normalized/Adjusted Mutual Information, Purity
  • Confusion Matrix and per-class Classification Report (precision, recall, F1, ROC-AUC)

4. Visualization Tools

Flexible plotting utilities in tgmm.plotting:

  • Component ellipses at multiple confidence levels
  • Cluster coloring, ground-truth comparison, and log-likelihood coloring
  • Initial vs. final mean trajectories and weight-scaled markers

Citation

TBA

License

Released under the MIT License. © 2025, Adrián A. Sousa-Poza

Contributing

tgmm isn't yet set up to accept external contributions. If you're interested in contributing, please reach out to asp@di.ku.dk.

Metadata

Release files for tgmm 0.3.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 tgmm 0.3.0
File Size Uploaded
tgmm-0.3.0.tar.gz 89.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tgmm 0.3.0
File Interpreter ABI Platform
tgmm-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 155.9 kB

Release files / tgmm-0.3.0.tar.gz

Download URL tgmm-0.3.0.tar.gz
Size 89.0 kB
Tags Source
SHA-256 checksum
How to use checksums
8725114d4b28a9f3fe206c5dc92f1c49ad5a649ad4218f2743be3aed44ac53ef
BLAKE2b-256 checksum
How to use checksums
54fee6e859c7be7be411f8bda108705475fe1101967567f6a6aa7eb43e8c8f18
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / tgmm-0.3.0-py3-none-any.whl

Download URL tgmm-0.3.0-py3-none-any.whl
Size 66.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9415c688afb6eb93ba08e8f1c5d35d42e9003893de90e0f00b143745bc8ce2c3
BLAKE2b-256 checksum
How to use checksums
c35471fd57d927a38a9a964bc9c780ed5ea7e1880eaa7bc2767d5f9b1458d4e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

0.4.0

2 release files

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.5

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