fuzzy_cmeans 1.0.0+4 copy "fuzzy_cmeans: ^1.0.0+4" to clipboard
fuzzy_cmeans: ^1.0.0+4 copied to clipboard

A Dart/Flutter library for Fuzzy C-Means clustering with visualization support and built-in validity metrics.

🧠 fuzzy_cmeans #

A Dart/Flutter library for Fuzzy C-Means clustering with visualization support.

Pub Package License: MIT codecov DOI


πŸ“˜ Overview #

fuzzy_cmeans is a pure Dart implementation of the Fuzzy C-Means (FCM) clustering algorithm,
with optional Flutter visualization widgets for interactive analysis.

This library enables mobile, web, and desktop applications to perform soft clustering directly on-device β€”
ideal for teaching, prototyping, and embedded analytics.


πŸš€ Features #

  • βœ… FCM algorithm with k-means++ and random initialization
  • βœ… Configurable parameters:
    • c (number of clusters)
    • m (fuzziness)
    • maxIter, epsilon, seed, init
  • βœ… Built-in validity metrics:
    • Partition Coefficient (PC)
    • Partition Entropy (PE)
    • Xie–Beni Index (XB)
    • Silhouette Score
  • βœ… Modular architecture:
    • math_utils.dart, init.dart, metrics.dart, viz_utils.dart
  • βœ… Flutter visualization:
    • FCMDemoScatter – scatter chart (fl_chart)
    • FCMTabel – membership matrix table
  • βœ… Fully open-source (MIT License)

πŸ“¦ Installation #

Add dependency to your pubspec.yaml:

dependencies:
  fuzzy_cmeans: ^0.1.0

or install directly:

dart pub add fuzzy_cmeans

Then import:

import 'package:fuzzy_cmeans/fuzzy_cmeans.dart';

🧩 Example (Dart) #

import 'package:fuzzy_cmeans/fuzzy_cmeans.dart';

void main() {
  final data = [
    [1.0, 1.1],
    [0.9, 1.2],
    [5.0, 5.1],
    [5.2, 4.8],
    [9.0, 1.0],
  ];

  final fcm = FuzzyCMeans(c: 3, seed: 7);
  final result = fcm.fit(data);

  print('Centers: ${result.centers}');
  print('Iterations: ${result.iterations}');
  print('Objective: ${result.metrics.objective}');
}

🧠 Example (Flutter Demo) #

A live demo is included under example/flutter_demo/.

Run it using:

flutter run example/flutter_demo

Key files #

  • main.dart – entry point
  • scatter_demo.dart – cluster visualization using fl_chart
  • table_demo.dart – DataTable of membership values

Output #

  • Interactive clustering with sliders for parameters
  • Real-time updates on scatter plot & table
  • Metrics displayed (PC, PE, XB, Silhouette)

πŸ“Š Project Structure #

lib/
 β”œβ”€β”€ fuzzy_cmeans.dart        # public API
 └── src/
     β”œβ”€β”€ fcm.dart             # core FCM algorithm
     β”œβ”€β”€ init.dart            # initialization
     β”œβ”€β”€ metrics.dart         # validity metrics
     β”œβ”€β”€ math_utils.dart      # matrix helpers
     β”œβ”€β”€ types.dart           # FCMResult, FCMMetrics
     └── viz_utils.dart       # colors & alpha utilities
example/
 β”œβ”€β”€ main.dart                # Flutter app entry
 β”œβ”€β”€ scatter_demo.dart
 └── table_demo.dart

πŸ“ˆ Metrics Reference #

Metric Meaning Ideal Value
PC Partition Coefficient β†’ 1 (higher = better)
PE Partition Entropy β†’ 0 (lower = better)
XB Xie–Beni Index β†’ 0 (lower = better)
Sil Silhouette β†’ 1 (higher = better)

πŸ“— Citation #

If you use this software in your research, please cite it as:

@software{fuzzy_cmeans_2025,
  author       = {Nova Agustina},
  title        = {fuzzy_cmeans: A Dart/Flutter library for Fuzzy C-Means clustering and visualization},
  year         = {2025},
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.17388944},
  url          = {https://github.com/nova0893/fuzzy_cmeans}
}

🧾 License #

This project is licensed under the MIT License.
Β© 2025 Nova Agustina β€” Universitas Teknologi Bandung.


🧩 Maintainer #

Nova Agustina
πŸ“§ nova@utb-univ.ac.id
🌐 GitHub: nova0893


Developed as part of a research initiative on mobile machine learning and interactive visualization.

1
likes
125
points
4
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart/Flutter library for Fuzzy C-Means clustering with visualization support and built-in validity metrics.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

cupertino_icons, fl_chart, flutter

More

Packages that depend on fuzzy_cmeans