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.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.0-cp314-cp314-win_amd64.whl (329.7 kB view details)

Uploaded CPython 3.14Windows x86-64

k_means_constrained-0.9.0-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.0-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.0-cp314-cp314-macosx_11_0_arm64.whl (357.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

k_means_constrained-0.9.0-cp314-cp314-macosx_10_15_x86_64.whl (373.4 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

k_means_constrained-0.9.0-cp313-cp313-win_amd64.whl (321.3 kB view details)

Uploaded CPython 3.13Windows x86-64

k_means_constrained-0.9.0-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.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (355.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

k_means_constrained-0.9.0-cp313-cp313-macosx_10_13_x86_64.whl (373.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

k_means_constrained-0.9.0-cp312-cp312-win_amd64.whl (321.7 kB view details)

Uploaded CPython 3.12Windows x86-64

k_means_constrained-0.9.0-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.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (357.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

k_means_constrained-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl (375.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

k_means_constrained-0.9.0-cp311-cp311-win_amd64.whl (321.7 kB view details)

Uploaded CPython 3.11Windows x86-64

k_means_constrained-0.9.0-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.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (356.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

k_means_constrained-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl (372.6 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

k_means_constrained-0.9.0-cp310-cp310-win_amd64.whl (321.9 kB view details)

Uploaded CPython 3.10Windows x86-64

k_means_constrained-0.9.0-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.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (358.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

k_means_constrained-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl (376.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e1f27119cf1ffb70cfad289be19589c0ab0dc923e1f07ac204d3b3a881aa8370
MD5 f81295e65e6f250037565fbeb76c5fe8
BLAKE2b-256 6108561d847576e3083358696eda2a3397bfe8bd1c0d4dfda8f07daf154bc5a2

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.0-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.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11e2bc137f7529eaca509f61fabefac3e09fc5a735a680aaa9eb62a0f549fff3
MD5 30e490697bacd4bb2bf7cddf4a878d2d
BLAKE2b-256 e35474e0e377293521b5f3526a37d2158267e4f4596360616dc78b3c6bff7f77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 08bbae4ecbed299e6a5f432a2e68815eb8c7289ce8626ebce651a6f8b69dc1f5
MD5 0c4fad494431b4461daa23d522330287
BLAKE2b-256 d32d209d3b6cc6129050becdeb7eae8fd539af044170ee7b8261b236979dfbf2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3818c781167db663c254fb517e2a713c0abf4827ca5648d6175154d5f4b7aa7f
MD5 7f296e5fa8aae2c953990e2db8245809
BLAKE2b-256 e4c5baed54af3d9ad3c026c15c2688c8e34c14fc5f827ec09b82a9116e8d2566

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 78ecc2945a912e0a78adbf1072a1059a38dbd343cc93d140d1a4f5f7841810f7
MD5 ce285d4cb97ddb395709cb0bf96ab82f
BLAKE2b-256 32a4be295359b6f10efbea88c2c490363a51fd61494f3622281daedf87b68336

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5d491b2048fea0f7b1c326b2a5872656255392013cda928959d49d919e134431
MD5 7703a9d40c667409af294f6be2f77b82
BLAKE2b-256 f79351defebf56c4e80bd4e4c3168e58b865cb1dc1446f5b7f5bac44b60b033a

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.0-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.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 29a7adeb57294b3a677412dd7c02ab54a0f3a50ed13f16aa02bc3545139430e7
MD5 2152e65ead49bd27b7e7023930b1179f
BLAKE2b-256 965a39c06b4f5991ab89fe4d22bd8babcd930a4e5df3d541a22797a89f88dfb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e52ce1a7fddac2a12aca2b6e5c9b85f00927febc3c07188873dc2589a656d563
MD5 e0d32ebaaf3c3175ee1d60a30fad3625
BLAKE2b-256 8ccd782605259857ee76a1f3549842101d501ddc1e963cc71734913d37e9f501

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d834a5bee255b2e995279ee0b166e45c556975cc7559c4fd19c3ac7117e75ed9
MD5 bb76212f5bf1799d1128d335cf711624
BLAKE2b-256 68ffe681d11518d852899920c1ed26245b96fd34df1cc7971a6ec558d8d40e1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 bf1952aad1325851b4ff6514042db08d0e0da08df1c1688836baee2989f38785
MD5 1e3512240883109f2c6cc994b722c97c
BLAKE2b-256 90e5ec2661d31998b6b7c45bf9faf420f432a684b195f16b4fe885535baba763

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 010d3d97e0cf63988d00aa964a7a5e3c4c9e44226f415e831edc5c63daa49e4b
MD5 55dd222568cdc4789cf09de505e927b2
BLAKE2b-256 9e35a5b664f099053070d23e0dee1fa2039d5a7d08fd25c58788a24e533e2418

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.0-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.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba690cacd7ef5e367e2bc6c588c926b2d03a4bb3331a1f097e7bcf57550535df
MD5 25258fdc50644164aacefa2503670f0f
BLAKE2b-256 fdccf4538bfcb41bc0d6cff06a9b3319e1278acbc8b62e29f9d474796bf43508

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 799786f4fd9402ea159fc432a2f96004ae6cef47eb0a3d62df0c5c99b677a0ca
MD5 d16d7c500eeffea298baa6649aa8d279
BLAKE2b-256 946579bd817926a3ed0670aa033495a4702c3b70611339f18bd966b18d5e48b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0f5031f9db5c5bd5808c2c8b29c8c3c6d106f938d2df0c84d895fec0e6f53e1
MD5 f91b1cd155424720452a56d4432939e6
BLAKE2b-256 f84cdb9a769665cea1e21e85278b4c9a668edd42f902708816760e7dc8bdad33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 946f120a837bfb4f607e4e37379f4e9cb81e98a13229c2e89dfb9473b3a29dd3
MD5 c8ed3ae14babf4407edb0ba4e5f2aa28
BLAKE2b-256 293c97fa74c5476cd71c5e48217c9d745daac56c5530644dc4e5c17c1193e903

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a5bc30a0333bc3063681642e937ff8660915aaa9eeb63ad9560c91555d4afc5f
MD5 1b393f62a05ebc238bc0f0e67896e61f
BLAKE2b-256 d447043fcc4360d495385a6a3ab87a861e4241dbe7da76988f2e060ed0522c25

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.0-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.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a45b1519133c10858fdac7c862027690cd90ee5f2a92079572c8cb1b60e0a79
MD5 4b0a77ec81c9b4ae605785a47b46abee
BLAKE2b-256 bdf0f5fe16a146fc644dd84759c51ceb748e52f2b3379db41f52e5f95b667619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 50d57b8052a1827e679fb4d0eec624833ce831a76df73d0e9df1979b3b7e0439
MD5 037043b688cf8e3979437ad3d8ca72ce
BLAKE2b-256 a2e0ba7cdd1ad420fa0e9f0916078c018a02695ab30a9f9c5ddfa050ea7eb4ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc5eade4f39f8e3371a1846ac132421ceb7ed5d908868c0f5f48bbb52cfdadf4
MD5 39dbca2efb2317c61786b955887cfdd8
BLAKE2b-256 925c3fddb6beafcad01e3f7075cfb5ecc9de1a66e228d39583d883d5be122058

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 941ea7f87b5247a34c128c066fa82305ebbcd6377cbad0da08b4a4ccbee630e9
MD5 0465662f643141b9140b17369e0eb274
BLAKE2b-256 7a459473acc3715e891bb9de26da11ea89a03234db5ef61edf904f5870dc2d69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 16e43f8038783019cd412aa1082bee7f84f9f2747ed210f20e868ac929a5ebfa
MD5 87e440fd41dbcf1dd0d5a033de883407
BLAKE2b-256 07d7b698aba0ad2bc6d0932b2e7f05d53eeaac467dcdfd84c65afdd8398630c0

See more details on using hashes here.

File details

Details for the file k_means_constrained-0.9.0-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.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b7814923fd7b7997d47ab0773c071dcde0fa7cdf87a8ca65b0d4af1f411e927d
MD5 cf96bd06b343446a9b3c3628b442daeb
BLAKE2b-256 cb5448e3b4812efa13c3ba3ebfd87343b73a312c0152d1b41ae8675d4c8ca3f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c381ec9e4c30ad19a1de67bf93ca708589d902ed2a41d0ffa92fb2ce87249193
MD5 abd68157de28e717dc69c2d4eaf17b15
BLAKE2b-256 77b6a1b3636c10f6b2d695771672265770e6cb53b8fb3cc6b533609d0671c2de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c79b9c1c86291b4133fbb30f037f49f6aaac4970a535fa27225f116431ccc3ea
MD5 49c3f751fccefe4a1ca623d01bc0c22c
BLAKE2b-256 88452e7bb694f21781ca4d3e24f3b51047b5a233bcc0447c5916093eda348279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for k_means_constrained-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 25fb1a0d2dcf4417e376200196c09844779dbcd8f65fdc518c2fad8fee480e24
MD5 f536094b7ac77939ad3f73c5eb8d79c8
BLAKE2b-256 e0fd95688912cb88601b64e209703132606633987602366b49673fd154fb5260

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