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.

Documentation | PyPI

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/KlusterFudge.git
cd KlusterFudge
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.post1.tar.gz (10.5 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.post1-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: kluster_fudge-0.1.0.post1.tar.gz
  • Upload date:
  • Size: 10.5 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.post1.tar.gz
Algorithm Hash digest
SHA256 6922970d5a62b633eb26c0e386535455635d549a966c5b10af88abf830458c8f
MD5 9013a81a9ce645d32c5aa28363f08d55
BLAKE2b-256 08ed8d532a8a0c99737f7cffc96c8840e3b486a42702b9dc0021ce6e5fc1970a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kluster_fudge-0.1.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 1ffc29a73b9c37a10395d3c7bb60932e446ec75de352e3068b784beb91c49a82
MD5 d8b3d0e8210615880191029cbcd127e5
BLAKE2b-256 f1333247ff091d2f19503dd6fb51a7b4b56d340aa69724b0ada15597ecea7fcf

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