Skip to content

CHANGELOG

v2.3.0 (2026-10-01)

Documentation

  • Add time and memory benchmarks (4113caf)

Features

  • Add k-means++ initialization via init parameter (23a9e3d)

  • Add n_init for multiple restarts keeping the best objective (6281eab)

v2.2.0 (2026-09-30)

Chores

  • Drop stale requirements files and commitlint, build docs with uv (0e6688d)

  • Drop unused readme link and shallow-clone history in test jobs (3e0fa8c)

  • Remove dead mypy, coverage and interrogate config, ignore mkdocs site/ (63eb585)

  • Remove unused cli helper and stale poetry kernel metadata (693a885)

  • Sync uv.lock with version 2.1.0 (2730041)

  • Use the interrogate threshold from pyproject in pre-commit (5633b2a)

Documentation

  • Add missing mathjax config, drop polyfill.io, list distances notebook in nav (157a160)

Features

  • Add fuzzy validity indices and select_n_clusters (48c69f5)

v2.1.0 (2026-09-30)

Chores

  • Sync uv.lock with version 2.0.3 (a1fdf3a)

v2.0.3 (2026-09-13)

Bug Fixes

  • Pin mkdocs-autorefs to a version compatible with mkdocstrings 0.24 (3b4f8a6)

  • Use absolute differences in minkowski distance (d59b3d4)

Build System

  • deps: Bump bleach from 4.1.0 to 6.4.0 (13d8fe4)

Bumps bleach from 4.1.0 to 6.4.0. - Changelog - Commits

--- updated-dependencies: - dependency-name: bleach dependency-version: 6.4.0

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump jupyter-server from 1.17.0 to 2.20.0 (274a1c2)

Bumps jupyter-server from 1.17.0 to 2.20.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jupyter-server dependency-version: 2.20.0

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump pillow from 9.0.1 to 12.2.0 (13827d1)

Bumps pillow from 9.0.1 to 12.2.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: pillow dependency-version: 12.2.0

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump urllib3 from 1.26.8 to 2.7.0 (0358053)

Bumps urllib3 from 1.26.8 to 2.7.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.7.0

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

Chores

  • Sync uv.lock with version 2.0.2 (ecf9337)

Features

  • Add fuzzy c-medoids (FCMedoids) and handle zero distance in soft_predict (edc28f7)

  • Add fuzzy-possibilistic c-means (FPCM) (0b77af1)

  • Add Gath-Geva clustering (GG) (10f03ac)

  • Add Gustafson-Kessel clustering (GK) (9b30048)

  • Add kernel fuzzy c-means (KFCM) (7e62313)

  • Add possibilistic c-means (PCM) (e4de1ec)

Refactoring

  • Split FCM.fit into _init_u and _update_centers hooks (0e951be)

v2.0.2 (2026-07-19)

Bug Fixes

  • Enforce lint checks and update stale actions in CI (f394ee7)

  • Repair broken pre-commit hook configuration (fe3bf0f)

Chores

  • Trigger release workflow to test push dispatch (ac06720)

Code Style

  • Format code and add missing docstrings for lint compliance (1af5acf)

v2.0.1 (2026-07-19)

Bug Fixes

  • Update readthedocs build os to ubuntu-24.04 (ee05f42)

v2.0.0 (2026-07-18)

Performance Improvements

  • Vectorize soft_predict and drop the joblib dependency (#116, b3cec35)

soft_predict computed cluster memberships with a joblib.Parallel loop over clusters, adding pickling overhead for problems with only a handful of clusters. Replace it with an equivalent vectorized numpy expression and drop joblib and the n_jobs parameter entirely.

BREAKING CHANGE: removes the public n_jobs parameter. Existing FCM(n_jobs=...) calls keep working since extra fields are allowed and ignored, but n_jobs no longer has any effect.

Refs #116

Refactoring

  • Consolidate trained-state guard into _require_trained (#116, 0778114)

predict, centers, partition_coefficient and partition_entropy_coefficient each duplicated the same if/else ReferenceError check via _is_trained. Replace it with a single _require_trained() guard called up front.

Refs #116

Testing

  • Cover membership normalization and predict determinism (#116, 6b2133d)

Add regression coverage for the vectorized soft_predict and the consolidated trained-state guard: u rows sum to one, soft_predict(X) reproduces the fitted membership matrix, and predict returns deterministic labels within range.

Refs #116

Breaking Changes

  • Removes the public n_jobs parameter. Existing FCM(n_jobs=...) calls keep working since extra fields are allowed and ignored, but n_jobs no longer has any effect.

v1.7.5 (2026-07-18)

Bug Fixes

  • Allow datasets containing 0.0 values in CLI (8ed2271)

_read_data rejected any CSV with a legitimate 0.0 value because np.all(X) treats 0 as falsy. The check also never caught its intended case: a wrong delimiter makes genfromtxt produce NaN, which np.all() treats as truthy, so the existing NaN check below already covers both wrong-delimiter and NaN-data cases on its own.

v1.7.4 (2026-07-18)

Bug Fixes

  • Relax tabulate version constraint to allow 0.9.x (5e0f277)

Allows tabulate>=0.9.0 alongside pandas[output-formatting]/[all] (>=2.2), which requires tabulate>=0.9.0 and previously conflicted with our <0.9 pin.

v1.7.3 (2026-07-17)

Bug Fixes

  • Rename commitlint config to .cjs to fix ESM error (8a4b169)

The action's runtime has "type": "module" in its package.json, so a .js file using module.exports is loaded as ESM and throws "module is not defined in ES module scope". Renaming to .cjs forces CommonJS regardless of that setting.

  • Repair broken release and publish pipeline (584087f)

  • semantic_release.version_toml pointed at tool.poetry.version, a key that no longer exists after the uv migration; version now lives at project.version - build_command still called poetry build

  • publish.yml never ran: it triggers on tag push, but release.yml creates tags using GITHUB_TOKEN, and GitHub does not fire workflows from events created by the default token - .pre-commit-config.yaml coverage hook still called poetry run pytest

Moves build+publish into release.yml itself, gated on the release step's released output, so there's no cross-workflow tag trigger to rely on. Removes the now-unreachable publish.yml.

  • Use admin PAT for semantic-release push to bypass PR rule (bd45b22)

The "Require a pull request before merging" ruleset on master blocks any direct push, including the version bump commit and tag that python-semantic-release pushes with GITHUB_TOKEN. Switching to a PAT from an account added to the ruleset's bypass list (Repository admin role) lets that push go through without weakening the rule for regular contributors.

Build System

  • Change package and dependencies manager from poetry to uv (4132664)

  • Migrate to uv. (d485079)

Continuous Integration

  • Enforce conventional commits on pull requests (0e8b177)

Adds a commitlint job so non-conforming commit messages are caught before merge instead of being silently ignored by semantic-release after the fact.

v1.7.2 (2024-03-18)

Bug Fixes

  • Fix release and publish scripts. (7718856)

v1.7.1 (2024-03-18)

Bug Fixes

  • Correction of the cosine distance calculation method (#78). (c0fd2f8)

Build System

  • Change publish pipeline. (2ec4255)

  • deps: Bump markdown-it-py from 2.1.0 to 2.2.0 (a5af1d9)

Bumps markdown-it-py from 2.1.0 to 2.2.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: markdown-it-py dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

  • deps-dev: Bump jinja2 from 3.1.2 to 3.1.3 (bff083f)

Bumps jinja2 from 3.1.2 to 3.1.3. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jinja2 dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Chores

  • Add new env var. (8a2cd12)

  • Change semantic release options. (ee5ffef)

  • Remove notebook outputs (b9bd71c)

Refactoring

  • Update pydantic and typer version. (5d6384e)

v1.7.0 (2022-12-09)

Build System

  • deps: Bump jupyter-server from 1.13.5 to 1.15.4 (7dc2a2e)

Bumps jupyter-server from 1.13.5 to 1.15.4. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jupyter-server dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump jupyter-server from 1.13.5 to 1.15.4 in /docs (741a4c9)

Bumps jupyter-server from 1.13.5 to 1.15.4. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jupyter-server dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump jupyter-server from 1.15.4 to 1.17.0 (aeed1c0)

Bumps jupyter-server from 1.15.4 to 1.17.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jupyter-server dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump jupyter-server from 1.15.4 to 1.17.0 in /docs (77f3dc0)

Bumps jupyter-server from 1.15.4 to 1.17.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: jupyter-server dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump nbconvert from 6.4.2 to 6.5.1 (f9ca62f)

Bumps nbconvert from 6.4.2 to 6.5.1. - Release notes - Commits

--- updated-dependencies: - dependency-name: nbconvert dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump notebook from 6.4.10 to 6.4.12 (57199d7)

Bumps notebook from 6.4.10 to 6.4.12.

--- updated-dependencies: - dependency-name: notebook dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump notebook from 6.4.10 to 6.4.12 in /docs (c6cf621)

Bumps notebook from 6.4.10 to 6.4.12.

--- updated-dependencies: - dependency-name: notebook dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump notebook from 6.4.8 to 6.4.10 (9a15579)

Bumps notebook from 6.4.8 to 6.4.10.

--- updated-dependencies: - dependency-name: notebook dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump notebook from 6.4.8 to 6.4.10 in /docs (24edbbe)

Bumps notebook from 6.4.8 to 6.4.10.

--- updated-dependencies: - dependency-name: notebook dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

Chores

  • Change interrogate pre-commit. (e2a4b57)

Documentation

docs: create documentation

Features

  • Add support for custom distance metrics (#61, 1b0a340)

v1.6.4 (2022-02-19)

Bug Fixes

fix: tests and packaging method

  • Tests and packaging method (797d283)

Build System

Code Style

  • Adding black style. (02133e5)

  • Adds black on jupyter notebooks (80ef85f)

Documentation

v1.6.3 (2021-09-09)

v1.6.2 (2021-09-08)

v1.4.0 (2021-05-10)

Build System

  • Add extra cli dependencies (9e9f6d1)

Documentation

  • CLI.md: Add documentation about cli (3aee113)

Add typer generated documentation about fcm commands.

Features

  • fcmeans/cli.py: Add the command line interface tool (01906b3)

Add a command line tool that allows you to train and use models without the need for programming, just by executing commands.

Refactoring

  • Rename old files due to library name conflict (eb8169b)

Change of jax and numpy submodules because they are conclicting with the libraries

v1.3.1 (2021-05-06)

Bug Fixes

  • pyproject.toml: Change extra dependencies (ffd3477)

v1.3.0 (2021-05-06)

Build System

  • Add commitizen and pre-commit (eb382d6)

Documentation

  • README.md: Add new installation instructions (cc95952)

Add instructions to install extra dependencies of windows and examples

Features

v1.2.4 (2020-12-15)

v1.2.3 (2020-12-07)

v1.2.2 (2020-12-07)

v1.2.1 (2020-12-02)

v1.2.0 (2020-12-01)

v1.1.1 (2020-11-20)

v1.1.0 (2020-11-20)