Skip to main content

No project description provided

Project description

CKmeans: Optimal Univariate Clustering

Ckmeans clustering is an improvement on 1-dimensional (univariate) heuristic-based clustering approaches such as Jenks. The algorithm was developed by Haizhou Wang and Mingzhou Song (2011) as a dynamic programming approach to the problem of clustering numeric data into groups with the least within-group sum-of-squared-deviations.

Minimizing the difference within groups – what Wang & Song refer to as withinss, or within sum-of-squares – means that groups are optimally homogenous within and the data is split into representative groups. This is very useful for visualization, where one may wish to represent a continuous variable in discrete colour or style groups. This function can provide groups that emphasize differences between data.

Being a dynamic approach, this algorithm is based on two matrices that store incrementally-computed values for squared deviations and backtracking indexes.

Unlike the original implementation, this implementation does not include any code to automatically determine the optimal number of clusters: this information needs to be explicitly provided. It does provide the roundbreaks method to aid labelling, however.

Implementation

This library uses the ckmeans Rust crate, by the same author.

Example

from ckmeans import ckmeans


data = [1.0, 2.0, 3.0, 4.0, 100.0, 101.0, 102.0, 103.0]
clusters = 2
result = ckmeans(data, clusters)
assert result == [[1.0, 2.0, 3.0, 4.0], [100.0, 101.0, 102.0, 103.0]]

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

ckmeans-0.2.2.tar.gz (8.0 kB view hashes)

Uploaded Source

Built Distributions

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.7 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.5+ i686

ckmeans-0.2.2-cp312-none-win_amd64.whl (125.9 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

ckmeans-0.2.2-cp312-none-win32.whl (122.6 kB view hashes)

Uploaded CPython 3.12 Windows x86

ckmeans-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

ckmeans-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (228.6 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ckmeans-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (240.3 kB view hashes)

Uploaded CPython 3.12 macOS 10.12+ x86-64

ckmeans-0.2.2-cp311-none-win_amd64.whl (125.6 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

ckmeans-0.2.2-cp311-none-win32.whl (122.8 kB view hashes)

Uploaded CPython 3.11 Windows x86

ckmeans-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

ckmeans-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (229.2 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ckmeans-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (241.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.12+ x86-64

ckmeans-0.2.2-cp310-none-win_amd64.whl (125.6 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

ckmeans-0.2.2-cp310-none-win32.whl (122.8 kB view hashes)

Uploaded CPython 3.10 Windows x86

ckmeans-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.8 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

ckmeans-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (229.1 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ckmeans-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl (241.3 kB view hashes)

Uploaded CPython 3.10 macOS 10.12+ x86-64

ckmeans-0.2.2-cp39-none-win_amd64.whl (125.5 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

ckmeans-0.2.2-cp39-none-win32.whl (122.8 kB view hashes)

Uploaded CPython 3.9 Windows x86

ckmeans-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.8 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

ckmeans-0.2.2-cp38-none-win_amd64.whl (125.4 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

ckmeans-0.2.2-cp38-none-win32.whl (122.7 kB view hashes)

Uploaded CPython 3.8 Windows x86

ckmeans-0.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ckmeans-0.2.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

ckmeans-0.2.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.1 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

ckmeans-0.2.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

ckmeans-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (998.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

ckmeans-0.2.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl (1.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.5+ i686

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page