Skip to main content

Implementation of K-means algorithm from scratch with adaptive distance metrics

Project description

Custom K-Means Clustering

This repository contains an implementation of the K-Means clustering algorithm from scratch, designed to work similarly to sklearn.cluster.KMeans. However, it uses a custom distance metric based on the dimensionality of the input data:

  • 1D Data → Uses Manhattan Distance (L1 norm)
  • 2D Data → Uses Euclidean Distance (L2 norm)
  • 3D and above → Cosine Distance

Example Output

when k=3 Clustered Data

Features

✅ Fully implemented from scratch ✅ Supports multiple distance metrics based on input dimensionality ✅ Works like Scikit-learn’s KMeans

Installation

You can install this package by cloning the repository and using pip:

pip install .

Or you can install it from pypi

pip install simple-kmeans

Usage

Here’s an example of how to use the custom K-Means implementation:

from simple_kmeans import KMeans
import numpy as np
import matplotlib.pyplot as plt

# Generate sample data
X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])

# Initialize and fit the model
kmeans = KMeansCustom(k=2, max_iters=100)
kmeans.fit(X)

# Get cluster centers and labels
print("Cluster Centers:", kmeans.centroids)
print("Labels:", kmeans.labels)

# Plot results
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels, cmap='viridis')
plt.scatter(kmeans.centroids[:, 0], kmeans.centroids[:, 1], marker='x', c='red', s=200, label='Centroids')
plt.legend()
plt.title("Custom K-Means Clustering")
plt.show()

License

This project is open-source and available under the MIT License.

Contributions

Contributions, issues, and feature requests are welcome! Feel free to fork this repository and submit a pull request.

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

simple_kmeans-0.1.2.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

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

simple_kmeans-0.1.2-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file simple_kmeans-0.1.2.tar.gz.

File metadata

  • Download URL: simple_kmeans-0.1.2.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.15

File hashes

Hashes for simple_kmeans-0.1.2.tar.gz
Algorithm Hash digest
SHA256 390f9a92936bb6ca2f335005e733633c58398a5dcd089beb3b1f7bd831f8dfc4
MD5 eade905b631a09c9451796b4a3e9cf23
BLAKE2b-256 186afe380a11c517a278ab597a2ff682da7fe594dab95c7a9174d530f15f4fe3

See more details on using hashes here.

File details

Details for the file simple_kmeans-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: simple_kmeans-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.15

File hashes

Hashes for simple_kmeans-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 05440aeeafcde6f9c80774843498c923351204a7034df32d081d83f0d9128fb6
MD5 66b96e7da24c0a25682649c9e1d1fdcc
BLAKE2b-256 d5d71fb9e924a816f1f35471937eba702f8610e2ba294e9ff6d1cdd2572fc422

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