Ex-Fuzzy Documentation#

PyPI version Python versions License GitHub stars

Ex-Fuzzy is a Python library for explainable fuzzy logic inference and approximate reasoning. It provides tools for building, training, and analyzing fuzzy rule-based classifiers with a focus on readable rules and reproducible experiments.

Quick Start

Get up and running with Ex-Fuzzy in minutes. Learn the basics of fuzzy classification and see practical examples.

Getting Started
User Guide

Comprehensive tutorials and examples for building fuzzy classifiers, analyzing patterns, and visualizing results.

User Guide
API Reference

Complete reference for all classes, functions, and modules with detailed descriptions and examples.

API Reference
Examples

Real-world examples and case studies demonstrating Ex-Fuzzy’s capabilities across different domains.

Examples

Key Features#

Explainable AI

Generate interpretable fuzzy rules that provide transparent decision-making processes for your machine learning models.

High Performance

GPU-accelerated evolutionary optimization with EvoX backend. Optimized implementations with support for both Type-1 and Type-2 fuzzy systems, automatic memory management, and 2-10x speedups on large datasets.

Rich Visualizations

Built-in plotting capabilities for fuzzy sets, rules, pattern stability analysis, and model performance metrics.

Flexible Architecture

Modular design allows easy customization of fuzzy sets, membership functions, and inference mechanisms.

Pattern Analysis

Advanced tools for analyzing pattern stability, variable importance, and rule discovery consistency across multiple runs.

Research Ready

Designed for academic research with comprehensive statistical testing, bootstrapping, and experimental validation tools.

Quick Example#

Here’s a simple example to get you started:

from ex_fuzzy import BaseFuzzyRulesClassifier, eval_tools
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd

# Load and prepare data
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = iris.target

# Split the data
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=0
)

# Create and train fuzzy classifier
classifier = BaseFuzzyRulesClassifier(nRules=10, nAnts=4)
classifier.fit(X_train, y_train, n_gen=50, pop_size=30)
# Early stopping defaults: patience=10, min_delta=1e-4

# Evaluate and visualize
evaluator = eval_tools.FuzzyEvaluator(classifier)
evaluator.eval_fuzzy_model(
    X_train, y_train, X_test, y_test,
    plot_rules=True, print_rules=True, plot_partitions=True
)

Installation#

Install Ex-Fuzzy using pip:

pip install ex-fuzzy

Or install from source:

git clone https://github.com/fuminides/ex-fuzzy.git
cd ex-fuzzy
pip install -e .

Choosing a Workflow#

Goal

Start with

Train a standard interpretable classifier

ex_fuzzy.BaseFuzzyRulesClassifier

Mine candidate rules before optimization

ex_fuzzy.RuleMineClassifier or ex_fuzzy.rule_mining

Return prediction sets with coverage guarantees

ex_fuzzy.ConformalFuzzyClassifier

Use GPU-accelerated evolutionary optimization

backend="evox" with the ex-fuzzy[evox] extra

Save and reload fuzzy variables

ex_fuzzy.persistence

Documentation Contents#

Community and Support#

💬 Discussion

Join our community discussions, ask questions, and share your projects.

https://github.com/fuminides/ex-fuzzy/discussions
🐛 Report Issues

Found a bug or have a feature request? Let us know on GitHub.

https://github.com/fuminides/ex-fuzzy/issues
Contributing

Help improve Ex-Fuzzy by contributing code, documentation, or examples.

Contributing
📧 Contact

Get in touch with the development team for collaboration or support.

mailto:your-email@example.com

Citation#

If you use Ex-Fuzzy in your research, please cite:

@article{fumanal2024ex,
    title={Ex-Fuzzy: A Library for Symbolic Explainable Ai Through Fuzzy Logic Programming},
    author={Fumanal Idocin, Javier and Andreu-Perez, Javier},
    journal={Neurocomputing},
    year={2024},
    publisher={Elsevier}
}

Indices and Tables#