fuzzy_cmeans 1.0.0+4
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.
π 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 pointscatter_demo.dartβ cluster visualization using fl_charttable_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.