Skip to main content

fastkmeanspp logo

K-Means++

Fast KMeans++ initialization.
A scikit-learn-compatible KMeans implementation with fast SIMD distance computations and parallel centroid initialization.

Documentation · PyPI

PyPI version Supported Python versions: 3.11–3.14 Lint status Coverage Documentation status License

fastkmeanspp is a Python package that implements a KMeans clone from scikit-learn with a faster KMeans++ centroid initialization. It is designed to be a drop-in replacement for scikit-learn's KMeans when initialization is the bottleneck.


✨ Features

  • Fast KMeans++ initialization: Uses optimized squared-distance computations while selecting candidate centroids.
  • Portable SIMD kernels: Uses Google Highway to compile vectorized kernels for supported CPU targets and select the best implementation at runtime.
  • Parallel initialization: Computes distance rows in parallel with Highway's thread pool.
  • scikit-learn compatibility: Provides familiar fit, predict, labels_, cluster_centers_, and inertia_ interfaces.
  • SIMD Lloyd updates: Uses the same native kernels for nearest-centroid assignment, cluster accumulation, and centroid updates.

How Google Highway fits in

Google Highway is a C++ library for portable SIMD programming. The distance and clustering kernels are written once with Highway's vector operations. Highway then builds target-specific versions for the available instruction sets, such as SSE, AVX2, and AVX-512 on x86 CPUs. A small runtime dispatch layer selects the strongest target supported by the current processor and keeps a scalar fallback for portability.

The distance kernel loads several feature values at a time, subtracts the corresponding centroid values, and uses fused multiply-add operations to build the squared distance. Feature dimensions that do not fill a complete vector are handled by a short scalar tail.

During KMeans++ initialization, Highway's thread pool divides independent data rows between workers. During Lloyd updates, each worker finds the closest centroid and accumulates feature sums and point counts. The native update then turns those sums into new centroid coordinates without changing the estimator interface.


🚀 Installation

python -m pip install fastkmeanspp

🔧 Usage

import numpy as np
from fastkmeanspp import KMeans

X = np.array([[0.0, 0.0], [0.1, 0.2], [4.0, 4.0], [4.2, 3.9]])
model = KMeans(n_clusters=2, random_state=42)
model.fit(X)

print(model.labels_)
print(model.cluster_centers_)

Set n_jobs=1 for serial centroid initialization or n_jobs=-1 to use all available threads.

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.

fastkmeanspp-0.5.5-cp314-cp314-win_arm64.whl (674.6 kB view details)

Uploaded CPython 3.14Windows ARM64

fastkmeanspp-0.5.5-cp314-cp314-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.14Windows x86-64

fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (269.9 kB view details)

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

fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (212.5 kB view details)

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

fastkmeanspp-0.5.5-cp314-cp314-macosx_11_0_arm64.whl (149.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fastkmeanspp-0.5.5-cp314-cp314-macosx_10_15_x86_64.whl (214.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

fastkmeanspp-0.5.5-cp313-cp313-win_arm64.whl (654.2 kB view details)

Uploaded CPython 3.13Windows ARM64

fastkmeanspp-0.5.5-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (269.8 kB view details)

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

fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (211.9 kB view details)

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

fastkmeanspp-0.5.5-cp313-cp313-macosx_11_0_arm64.whl (149.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fastkmeanspp-0.5.5-cp313-cp313-macosx_10_13_x86_64.whl (214.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

fastkmeanspp-0.5.5-cp312-cp312-win_arm64.whl (653.9 kB view details)

Uploaded CPython 3.12Windows ARM64

fastkmeanspp-0.5.5-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (269.7 kB view details)

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

fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (211.8 kB view details)

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

fastkmeanspp-0.5.5-cp312-cp312-macosx_11_0_arm64.whl (149.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

fastkmeanspp-0.5.5-cp312-cp312-macosx_10_13_x86_64.whl (214.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

fastkmeanspp-0.5.5-cp311-cp311-win_arm64.whl (652.4 kB view details)

Uploaded CPython 3.11Windows ARM64

fastkmeanspp-0.5.5-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (268.1 kB view details)

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

fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (209.7 kB view details)

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

fastkmeanspp-0.5.5-cp311-cp311-macosx_11_0_arm64.whl (147.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

fastkmeanspp-0.5.5-cp311-cp311-macosx_10_9_x86_64.whl (214.8 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 5181e604e4afb4590817c81699107570d4070d42e94c2b6a44b9366e6d790dc4
MD5 8975d106cd18b5af3321491d175c47c9
BLAKE2b-256 2c3aa526ecff3dd4ae8628d2d938b118ddf52ac87fb6ad0f505f00f8f06d2966

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d46218a53a613f10ba78861d6804a1a22ff70a12c4b0238e41622ea755b5c0dc
MD5 0836b60041aca8cbe252f98d1b57ff6f
BLAKE2b-256 4313c55ab3cceef676836a15b04350b71251488cf2685231b4354db2337580a6

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4826f84c185edb8476c14c0700d5fe22e8ef86fca6d6bb23dfcdd7d1593baf5
MD5 83ee4ecd4cb5414e4ac90c20dcd51522
BLAKE2b-256 d766971fa73571676be237979dafe0a25458213a3c0fa4def0b8d0e44096a9ba

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5f3de7f4faeb84790b25673bc7a6c48bf769cdb2fd829bb87da833b1369223c8
MD5 8f2acf7623d2bea4bab0cdc5f8b65893
BLAKE2b-256 87586ed7185a1d68bc82246627b394be889371ea0bd9d9af49d743db127c623f

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dca5319c4f01737a9eed1d6a0d605fe4ae53daac80f59861b06d515a11eb99a6
MD5 711153836319b684a492eef9cf4abc53
BLAKE2b-256 721275cd968c3aa386c4225a2aa29a9b343aee650ae5e322328720008591b4f1

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b92a8d1e97899195fafb9860d358e5318f8ac373a2ebe8313ebf119326aa3027
MD5 78390a517a7ac3acf8bc27456b08f7e7
BLAKE2b-256 7bc028bedd7c88e406203749d820b0cc3f29033f37ea0d77bc89e9eea96a0600

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 2672a0d03c0b029f50d78d31a3363c1383636ed38e1582e44ffc42296580de88
MD5 7f6d4f7aa3624a96491502141f52ea2f
BLAKE2b-256 6821c2a942afbc80a536ce7504ed5874839e2577a2219db193f5fbd9a053375b

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 33fa1304d14c4b17d29f8b27880907e01f08c6cf856d4284a799b913491bf825
MD5 e11be83e7b95b03ee8c48426808eecb2
BLAKE2b-256 e93d92c9ca1e244aa13f2ae126e3081a17c386aa76ddeb4eb8a0a432f4a1896f

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a9d325adf9edec8f5a38f3319eb7e2855ed8afb737b49c26e6ab579db8dff190
MD5 426e93bde76698028699567c4bfc6238
BLAKE2b-256 346679480050c132299bd1c1df03aaf191707af678e52ffc5101155f69787085

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24ac6a4a4bac831b8e1dec7e3f13b98023ce82228668b0ed00f6ac264fb940b7
MD5 9b6f5b8b6cf7c6ec75dd374d950b4e9a
BLAKE2b-256 533c3bdb755c9d77ba189f580bf6a843b98ff34ad215b5703c5d4f4137bd0082

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3f0d2695a351f0fe6eb9967de7cf66c7c90fb7fc44ab4ff369a8365716d2c214
MD5 696ce7bac939cc49f9871caa74e6c740
BLAKE2b-256 e61501df8953bdfe7e1fccb16b6bca7ce92711a0f90dd427d347faaf5629e2db

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a450d842e8d71373fb5aae71661002cbe04c069cc94d231c60cd17084996f77d
MD5 7120c254f027924bd3fceda4972ac6e4
BLAKE2b-256 befc7d18c916df251572c0957e80e4a10463dc0c172c1373da0fdb8fb1381b51

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 b87d87c8d4b2556dabb63e6944636ba5c47ef99147c7b352b388e0e61a94abba
MD5 c11a842196286dbe6d96f961cad2e6d6
BLAKE2b-256 978bc129aab1735a15f892b8f6276ff13cc52eef660fdb99538cf788793c4e12

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 91c61f90d2d1fc8f6183ae8f0529a77c76cf202cf5da00b06cebfe0393599a9f
MD5 b7a8681b34bb03d11b6f5aa8748fc3d0
BLAKE2b-256 e895f403893f715fd739e9cc887139ed84114db5c3d87249dceecf5e678af37f

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3b6096035bc9b7f74d69617176dccbe4f8af7410238f3deac724d4cff5ec686
MD5 7fa82f58d8d70b2b4f2a82235b0bfaba
BLAKE2b-256 0f48387444854c839ee483967f4547aa7530c23c7b5a5598ab84c73e04ae62fe

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4251a93de84ede224c990fdaab5474cbda83800bb0da269fe9bdfa3dab6f99f1
MD5 a4b36ef83941d2c2af86f106364a6778
BLAKE2b-256 b3604e37457acf32d0660e1472e2d7777d139a491c949b4026da9add3baa2121

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a965c93839f32855854f9c492112cccfc7717094d9b597c697cd360658ec28f
MD5 48ab47a683a5afb9d1a5a09acb9f42ad
BLAKE2b-256 1e0f45f71b431d1ef459d7433133b413eff432137889dbe55d43f968023ba474

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ea849613b3c288d8fe5f2c9e5dba4ecb4655e9d860c4d9261315d177dd4fa445
MD5 e7b9335cab4f62eb424bfbc403ddd764
BLAKE2b-256 f0594b04203f563072bb4d5e804cbd9b6209d72986295dcec0e71a7bd389ce0c

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 42322c52ffb0fb2ca568b09c77e4c06fd60e7543a89035fd106649e74a3e00e6
MD5 8e6353a522cac88731550e8e53d98670
BLAKE2b-256 af0d5f38dafc91df28218e6b4b0bd253047b769364b8cabdf9cdf40393669ce2

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 65b601e79fc6987492c3494ec473602ef5643fcc447b42c5e92a42cc6bd6a6fb
MD5 856fa6eb182573f6cd1ab6f00ed197e3
BLAKE2b-256 e74dd904801739e3b0f42fb6fd77d75d8353bc2bff90dbc403d0c944cefcbb63

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d84c7e962a92f765b9705a41bef31fcb917454ff0d66447c5b7a0dd4e86d6a9a
MD5 683990769bcdb125bb1afcc7c019a3be
BLAKE2b-256 21bd27543d3efed6dea28ab6489d0703922840295b0be39231c290d31543efa6

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f316d7bf21b96d2ae16a34db57911bdcab5c1afc35a6334ec098b746de6ccdfe
MD5 c4d343ca6fef46eee5ae659df1451bff
BLAKE2b-256 25b5fe17dd041bbb45e779acb514f709e2299acba131c6a408c40c53b76dbe94

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1fca4a3c8debcfa405529bbc1b52fcfc9555da26245ebbabdf5003c487d3b269
MD5 6885ddfacd6359c22c2f79434829cf94
BLAKE2b-256 c2a86f8e58f0bad7672af0511d808f21c31825a8459a7b04063d4985c63dbf22

See more details on using hashes here.

File details

Details for the file fastkmeanspp-0.5.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for fastkmeanspp-0.5.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b1346231507a44a1f53b74fbfbd8f74e7b54c89a33fd6f9b1b01d996b0cc2275
MD5 18faa9e9ad6f0a0adaf05e0352eff81a
BLAKE2b-256 f2ae576952c881c988661fd058ab6a0687f5824dcbfaa9c2a480ccb9955c4aa7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.5 This release

24 files

0.5.1

30 files

0.5.0

30 files

0.4.2

30 files

0.4.1

30 files

0.4.0

30 files

0.3.4

30 files

0.3.3

18 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page