Skip to main content

A Python library for clustering categorical data using K-Modes with various distance metrics.

Project description

KlusterFudge

A Python library for clustering categorical data using the K-Modes algorithm. It supports multiple initialization methods and distance metrics, optimized with numba for performance.

Features

  • Algorithms: K-Modes clustering for categorical data.
  • Distance Metrics: Hamming, Jaccard, and NG dissimilarity measures.
  • Initialization: Random, Huang, and Cao methods.
  • Optimization: Computationally intensive operations are accelerated using numba.
  • Integration: Supports all ArrayLikes (e.g. numpy arrays, pandas DataFrames, lists of lists, etc.)

Installation

Install KlusterFudge via pip:

pip install kluster-fudge

Or install from source:

git clone https://github.com/ethqnol/ClusterFudge.git
cd ClusterFudge
pip install .

Quick Start

import pandas as pd
from kluster_fudge import KModes

# 1. Load Data
df = pd.DataFrame({
    'color': ['red', 'blue', 'red', 'green', 'blue', 'green'],
    'size': ['small', 'large', 'small', 'large', 'medium', 'medium'],
    'shape': ['circle', 'square', 'circle', 'square', 'triangle', 'triangle']
})

# 2. Initialize Model
model = KModes(
    n_clusters=2, 
    init_method='cao', 
    dist_metric='hamming', 
    random_state=42
)

# 3. Fit and Predict
clusters = model.fit_predict(df)
print("Cluster Labels:", clusters)

Comparisons & Benchmarks

See benchmarks/benchmark_metrics.py

Metric Init Time (s)
jaccard cao 0.051574
jaccard huang 0.051677
hamming cao 0.052091
hamming huang 0.052477
ng huang 0.055497
ng cao 0.055761
jaccard random 0.569103
ng random 1.325702
hamming random 3.131030

(Run on 5000 samples, 20 features, 10 categories)

License

MIT 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

kluster_fudge-0.1.0.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

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

kluster_fudge-0.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file kluster_fudge-0.1.0.tar.gz.

File metadata

  • Download URL: kluster_fudge-0.1.0.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for kluster_fudge-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0e1f9e7e553e0915300acabcab0b6664b57ab4d16e0e28f6cf0b545623d9fc15
MD5 2556f31e40ad00f2294dd815e5c6cb4d
BLAKE2b-256 3cecfb02e1294ffa19816bafa7e21d89daf1a6f64f84635a439316239ff65753

See more details on using hashes here.

File details

Details for the file kluster_fudge-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kluster_fudge-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.18

File hashes

Hashes for kluster_fudge-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d02c4d0d02869c650f7511a3e3437715ec11108c59682bff7186f0e3c59fe9d
MD5 c7b66801aa7d9a07e11757f212df0826
BLAKE2b-256 dea5f619bfc43891b9988985a68cf8da8f638dbfada7b21f5812107b17f036f8

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