Skip to main content

A library for K-clustering algorithms with multiple distance metrics and kmeans++ initialisation

Project description

Introduction

This is an implementation of K-means/medians/medoids with various distance metrics (Euclidean, Manhattan, Cosine...) built over Numpy.

I created this library for my own use, because the KMeans class of the Scikit-learn library lacks options for customising the variant of the K-algorithm and options for using distance metrics besides Euclidean distance.

This library was developed with the intention to replicate the functionality and parameter convention used in Scikit-learn as close as possible so that end users, such as myself, will have little difficulty writing code for K-algorithm clustering machine learning tasks with KMars. The additional distance metrics not present in sklearn's clustering such as manhattan, minikowski, and cosine enable better results when working with high dimensional data.

Jupyter notebook comparison with sklearn https://github.com/jerrold110/Library-Kmars/blob/main/notebooks/Comparison%20of%20Sklearn%20and%20Kmars.ipynb

Example:

import numpy as np
from kmars import KMeans

X = np.array([[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]])

km = KMeans(4, dist='euclidean', init='kmeans++')
KMeans.fit(X)
labels = km.labels_
cetroids = km.cluster_centers_
print(help(KMeans))

Features:

  • Algorithms: KMeans, KMedians, KMedoids
  • Distance metrics: 'euclidean','manhattan','minikowski','cosine','hamming'
  • K-means++ centroid initialisation with seed search
  • Frobenius (L2) norm convergence, and tolerance parameter
  • Getter methods for positions, error_scores, closest centroid for for initial centroids and final centroids, and more
  • Selection of Sum-Square-Error or Sum-Error metric for KMedoids cluster centroid update and overall fit score
  • Data type changes to float64 during distance calculation to avoid numerical overflow

Distance metrics

The distance metric selected at initialisation is the same metric used for:

  • Centroid initialisation with kmeans++
  • Sum squares error metrics in distance metric at initialisation
  • Kmedoids centroid selection and all-cluster-centroid-update-approval The field that never changes how it is calculated:
  • Manhattan distance (L1 norm) for SSE residuals (to compare different metrics of the same algo)

Future features

  • Data validation to take in pandas dataframes
  • More algorithms, algorithm upgrades (FastPAM for Kmedoids instead of Naive)
  • More distance metrics (eg: improved sqrt cosine)
  • Heuristic centroid initialisation: picks the n_clusters points with the smallest sum distance to every other point

Issues

  • Currently only accepts 2 dimensional numpy arrays as input

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

kmars-0.2.10.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

kmars-0.2.10-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file kmars-0.2.10.tar.gz.

File metadata

  • Download URL: kmars-0.2.10.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for kmars-0.2.10.tar.gz
Algorithm Hash digest
SHA256 d9662dafc775846fd4354c882c5bf8f5317a322a6eebc387c58af8fc9407fe3c
MD5 731e6131d878a0950e63a1141a23d3fa
BLAKE2b-256 70ff0cfb8c498ca2ee75bc581f448e4bca1b3a40fd8b3c2c730dd2b01df72bdb

See more details on using hashes here.

File details

Details for the file kmars-0.2.10-py3-none-any.whl.

File metadata

  • Download URL: kmars-0.2.10-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for kmars-0.2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 6e853c0c5bf674d48f7874da859f3b7954566adb5c9fd65d4982e7fe86ffbb26
MD5 e7dd7a38aa0de8b707b89d47dcad1c59
BLAKE2b-256 9310c3592461986a28e1adf025cf6f29768ae4d1176e6ced174380023360af06

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