Skip to main content

K-Means clustering constrained with minimum and maximum cluster size

Project description

PyPI Python Build Documentation

k-means-constrained

K-means clustering implementation whereby a minimum and/or maximum size for each cluster can be specified.

This K-means implementation modifies the cluster assignment step (E in EM) by formulating it as a Minimum Cost Flow (MCF) linear network optimisation problem. This is then solved using a cost-scaling push-relabel algorithm and uses Google's Operations Research tools's SimpleMinCostFlow which is a fast C++ implementation.

This package is inspired by Bradley et al.. The original Minimum Cost Flow (MCF) network proposed by Bradley et al. has been modified so maximum cluster sizes can also be specified along with minimum cluster size.

The code is based on scikit-lean's KMeans and implements the same API with modifications.

Ref:

  1. Bradley, P. S., K. P. Bennett, and Ayhan Demiriz. "Constrained k-means clustering." Microsoft Research, Redmond (2000): 1-8.
  2. Google's SimpleMinCostFlow C++ implementation

Installation

You can install the k-means-constrained from PyPI:

pip install k-means-constrained

It is supported on Python 3.10, 3.11, 3.12, 3.13 and 3.14. Previous versions of k-means-constrained support older versions of Python and Numpy.

Example

More details can be found in the API documentation.

>>> from k_means_constrained import KMeansConstrained
>>> import numpy as np
>>> X = np.array([[1, 2], [1, 4], [1, 0],
...                [4, 2], [4, 4], [4, 0]])
>>> clf = KMeansConstrained(
...     n_clusters=2,
...     size_min=2,
...     size_max=5,
...     random_state=0
... )
>>> clf.fit_predict(X)
array([0, 0, 0, 1, 1, 1], dtype=int32)
>>> clf.cluster_centers_
array([[ 1.,  2.],
       [ 4.,  2.]])
>>> clf.labels_
array([0, 0, 0, 1, 1, 1], dtype=int32)
Code only
from k_means_constrained import KMeansConstrained
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
                [4, 2], [4, 4], [4, 0]])
clf = KMeansConstrained(
     n_clusters=2,
     size_min=2,
     size_max=5,
     random_state=0
 )
clf.fit_predict(X)
clf.cluster_centers_
clf.labels_

Time complexity and runtime

k-means-constrained is a more complex algorithm than vanilla k-means and therefore will take longer to execute and has worse scaling characteristics.

Given a number of data points $n$ and clusters $c$, the time complexity of:

  • k-means: $\mathcal{O}(nc)$
  • k-means-constrained1: $\mathcal{O}((n^3c+n^2c^2+nc^3)\log(n+c)))$

This assumes a constant number of algorithm iterations and data-point features/dimensions.

If you consider the case where $n$ is the same order as $c$ ($n \backsim c$) then:

  • k-means: $\mathcal{O}(n^2)$
  • k-means-constrained1: $\mathcal{O}(n^4\log(n)))$

Below is a runtime comparison between k-means and k-means-constrained whereby the number of iterations, initializations, multi-process pool size and dimension size are fixed. The number of clusters is also always one-tenth the number of data points $n=10c$. It is shown above that the runtime is independent of the minimum or maximum cluster size, and so none is included below.

Data-points vs execution time for k-means vs k-means-constrained. Data-points=10*clusters. No min/max constraints

System details
  • OS: Linux-5.15.0-75-generic-x86_64-with-glibc2.35
  • CPU: AMD EPYC 7763 64-Core Processor
  • CPU cores: 120
  • k-means-constrained version: 0.7.3
  • numpy version: 1.24.2
  • scipy version: 1.11.1
  • ortools version: 9.6.2534
  • joblib version: 1.3.1
  • sklearn version: 1.3.0
---

1: Ortools states the time complexity of their cost-scaling push-relabel algorithm for the min-cost flow problem as $\mathcal{O}(n^2m\log(nC))$ where $n$ is the number of nodes, $m$ is the number of edges and $C$ is the maximum absolute edge cost.

Change log

  • v0.9.1 (2026-07-05) Free-threaded Python (no-GIL) support. cp314t wheels for Linux. (Note that ortools provides a free-threading build 3.14t but doesn't declare "GIL-not-used" and re-enables the GIL. You can force no GIL by using PYTHON_GIL=0. ortools PR to fix this)
  • v0.9.0 (2026-01-27) Added Python 3.14 support. Bumped ortools to >= 9.15.6755.
  • v0.8.0 (2025-11-26) Fixed IndexError due to imprecision in _k_init centroid selection. Ported fix from scikit-learn: scikit-learn#11756
  • v0.7.6 (2025-06-30) Add Python v3.13 and Linux ARM support.
  • v0.7.5 fix comment in README on Python version that is supported
  • v0.7.4 compatible with Numpy +v2.1.1. Added Python 3.12 support and dropped Python 3.8 and 3.9 support (due to Numpy). Linux ARM support has been dropped as we use GitHub runners to build the package and ARM machines was being emulated using QEMU. This however was producing numerical errors. GitHub should natively support Ubuntu ARM images soon and then we can start to re-build them.
  • v0.7.3 compatible with Numpy v1.23.0 to 1.26.4

Citations

If you use this software in your research, please use the following citation:

@software{Levy-Kramer_k-means-constrained_2018,
  author = {Levy-Kramer, Josh},
  month = apr,
  title = {{k-means-constrained}},
  url = {https://github.com/joshlk/k-means-constrained},
  year = {2018}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp314-cp314-win_amd64.whl (330.3 kB view details)

Uploaded CPython 3.14Windows x86-64

k_means_constrained-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp314-cp314-macosx_11_0_arm64.whl (369.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

k_means_constrained-0.9.1-cp314-cp314-macosx_10_15_x86_64.whl (378.8 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

k_means_constrained-0.9.1-cp313-cp313-win_amd64.whl (321.9 kB view details)

Uploaded CPython 3.13Windows x86-64

k_means_constrained-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp313-cp313-macosx_11_0_arm64.whl (367.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

k_means_constrained-0.9.1-cp313-cp313-macosx_10_13_x86_64.whl (379.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

k_means_constrained-0.9.1-cp312-cp312-win_amd64.whl (322.1 kB view details)

Uploaded CPython 3.12Windows x86-64

k_means_constrained-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp312-cp312-macosx_11_0_arm64.whl (369.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

k_means_constrained-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl (381.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

k_means_constrained-0.9.1-cp311-cp311-win_amd64.whl (325.3 kB view details)

Uploaded CPython 3.11Windows x86-64

k_means_constrained-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp311-cp311-macosx_11_0_arm64.whl (365.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

k_means_constrained-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl (378.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

k_means_constrained-0.9.1-cp310-cp310-win_amd64.whl (325.2 kB view details)

Uploaded CPython 3.10Windows x86-64

k_means_constrained-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

k_means_constrained-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (2.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

k_means_constrained-0.9.1-cp310-cp310-macosx_11_0_arm64.whl (369.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

k_means_constrained-0.9.1-cp310-cp310-macosx_10_9_x86_64.whl (382.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fd284485d5b1b312e7624ce322c5bab77cc1750b917448e35b153c68e8a851a8
MD5 fa2c7647d4a8b4e8b2515121ad957651
BLAKE2b-256 2ea197f09ae20071f603372dd288b99c8eba0c43d3ea888aca1dae3ffcbb0337

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eaebf63e2854f58ef66f5b5bd20d83ef6937a3b19adcd63a6bf8bf4d4eacc397
MD5 f8cfd4d08ff50d5aa6240e82c7283a37
BLAKE2b-256 f63f10627390ad35c974e2b742c93577aae20a02a5c38511c44893d388287ebe

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 968b15033cb0fcd8a6895cfcc2b1081f02845e7c15f6e50c3547cda0deb87710
MD5 5263125424475d473120e9304d137f5b
BLAKE2b-256 209c618220ab6822bdea076364483044d114d31f2c26eb10ed7e3a52b61204da

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 47d125579a9b9742c53dd9d3dae00c2745b55b2616459daa9b6d7aeda53f7c35
MD5 07727b111fda483a0cddefb709cf1d81
BLAKE2b-256 ddaf33a8661c313057ae4eb03e86fc87265ac94111f4f1400a60f774797111d7

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e1b5e4b482b185e22dcf39aa28e4741ec9d808a4f7a669537ca6a60f56e32372
MD5 85755ae4bd1159274d27c1657560e195
BLAKE2b-256 4d966e5f6f39790ae114532ca1aee4fb889b989cb709961aad89505cfd7f97b2

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d6f61e639c4809da49100a8be05aa3dcca34e31bdd8ca9f8b55bcbd9f312abe
MD5 5853a927b9838f437329ce7698654186
BLAKE2b-256 839f815173ef3279e1e8ca66c8ba69b2e2565a35c23160387822855c3940de79

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2aedda0fbc9eda8a3baa4ad4b1eadb24f27d86b03abae5917b90504c775cc222
MD5 192d81d697570c1de86aec3dcf77e431
BLAKE2b-256 5bf035ed33b441481a607bae343783d13c61c11e8519485332d39ab963e4911d

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ddc5cb77eee500a61ef6053e5b3e3b701c027aa3c3e0af2c1a6adb9dbcb9196c
MD5 d83365e1597d3f826db88c3fb41ba405
BLAKE2b-256 71a12a08d1d79a81421af35a6b40aea8ebaafdeee65f88c57d8e3d59f35f5d70

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0349cdf06191dc81ae11605b1f015a205ec4e28abc3d3543c1ffda68d349d8da
MD5 e6f8d55add5086423ff66e9688d9dda1
BLAKE2b-256 d224f6becb92d2c1a41fb711943fb0dff1971a73a9d27c7540d913a316bafb5f

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a2791d523ea783b3816a4a14d198d5fa93b2901b8c11c884695479e8cbd7d1fc
MD5 06e7e44a8b4393cb39ba758e3a8afba7
BLAKE2b-256 911c9c1c80b736c043a9309495e072b03fe2b53af45df1b14ede56d8f33b4fe3

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3abbccb40c856e9882c74f249316923d75038de978f15604b6b3303dcffbde3
MD5 4a64e4caa7cfdb97fa19ce35fa92e1eb
BLAKE2b-256 b078321fc073c892285bb1a761208826e503422c5373b5d91e040f64d00a3066

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 09609b99e0a2882a488ff39a8020660c800113669f6fc7cd22160f6715342baf
MD5 f7946f5d02b95db4ddc1a427f338fe84
BLAKE2b-256 31c491eaeb1eb64e708d5d9b1d88e486eca184f12ee25aabd37019c68d51b09d

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d12b7b347cc37bca83cd07364b591f6f9c001cd95781e73d06dcd688d05068d9
MD5 6e95ca6fa7887a016fe9f212d34c263f
BLAKE2b-256 347e2ae1a5ed9c10dfb4f71027f5287d7bbadf97983452a50b094b2813991fa1

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4526eb9597812127e880928f8a396cd8d36e18b236b3e1a3689418175d3adc3a
MD5 379a4e21e5bbb957fbe67394f94db602
BLAKE2b-256 1d7cc4158b9e37c1e1e7cce192c6c1768e1ff50e7b44fa6240c0df889471712d

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cfa74d61adf330ce2ff02ac994dc574bbac7ead8fe778e9d986e8d88d2b9b1a3
MD5 ed8f2f1805836c4edd4460708d8cd807
BLAKE2b-256 c9cea9c8b7526f90da2abc660b37b0b675aa884aa464dc62be16d348a6f60c6f

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5457d4463fb6f1179a094b713e15264917cf00490d0238b2fa8f4f021c5982ff
MD5 713057311fc38d7ea6d9bb5b1d8af896
BLAKE2b-256 05765f1c483ca38df508868dd5163f71a6863196bb0ee47aba0f42ac29906c1e

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eccc1aa14652a7f6d01366828c584acbea6ed97fa4b6640221d6840b182baed5
MD5 289bf3535bc28174f2a2108d31284f4b
BLAKE2b-256 f7063a63cff4fabb94e2354da7335b0b0c21a8fb061a428bb497b9b08ea67392

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4fefc9b8fcfc5f256ec21001850dc25f1064748b78951ecbe57db8fe3247a5b1
MD5 43b1dbb5ab34a6f0f02c8110597037e6
BLAKE2b-256 f8ea54f135793fa1ead09e1e49a15f45b68428ae8cee7758c107a350e04806ca

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d238879a096798e222e1d5340c2a497c16955793eae48595828a5a05de56b1f
MD5 f82a1e1e887f1d53235335172e82851c
BLAKE2b-256 73c8fd0b10f1254ca25d8c32ed7d429f89576ad1cc9586d2490da9f1d263f33c

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 21437824e3b6a9aed6f07d18efdb7821bcb2e00b10289ef03f41ec865f88b9e8
MD5 1eb9ad1c18cb3075aa069575e8da10dc
BLAKE2b-256 4a5e5311ca77361fd52a266caf62fc2b39db8536e1267f6f3eed0925a9fae586

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18215f7d36aca1bdbf6e1bb859d95af160e998f47f62005935bff7cd9a3b236e
MD5 5322b073575a870c792b5481aaf6239a
BLAKE2b-256 09eece480ddde5c98b38b6852f73b6016cdc1fcd0f0d3918d9d8c9ad54f311bc

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e3575903035ae9a40dc6f8fe39064f60c8a2c221584d00ffd43fe3a6cb96053b
MD5 903a8c0e60ff44f09957a384ff30188c
BLAKE2b-256 fca324702fef770530fcd66ec7fe9a36a49c771984ae7c2dee904eb168b9c285

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 33105639a4fc85e4fc72ada4c1d912bdbac4b5391cf88ca6bd207ff045833930
MD5 f409b73da4661dd5245ae1225f84995e
BLAKE2b-256 a3ebc34a12de689ab758ac0cf2f6b2d5f7544c7982fc73507220659729b2d7ce

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ad7463cc56b972335f48e981e86093bac9a8441f0e82185fec77abcc34a7534
MD5 f1532fa3d4869a411878557e485ec441
BLAKE2b-256 e76ae22f49406345aeeb980336ab06881d49fd71ed86ce4834bceb3dce9c51a5

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8ffa233cca25bb8ee71c4a3c5d0737b6a4d3ec8dd3703211ddb13f51d2189222
MD5 a1f459d40fae93a4658802284828065d
BLAKE2b-256 7169cb97ddeea0fdea2f558c5f5f5eb9c1aa43b022af0ed86a4dba54349a0295

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33ed20fcc3f67df86efd26113eb956861292ddce7c92f976952e85ed94ccd95a
MD5 a010dd0fe2efd11df9155c163c80063b
BLAKE2b-256 6b255cafd9b96eee94d8378dca02fd075b71c15247ca6514a1285daaa15d3699

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for k_means_constrained-0.9.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 01b61eba9ba67e77a33eeadb5507449ca5fa375c6626c458df0c5577f7870f45
MD5 7df8395362b00345431be01c34ea0a64
BLAKE2b-256 c3ca5b97510d1ff76ced3d56eeb02b7ff00554cc941ad9132e3a7df4bd206b46

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