ANFIS Toolbox is a comprehensive Python library for creating, training, and deploying Adaptive Neuro-Fuzzy Inference Systems (ANFIS). It provides an intuitive API that makes fuzzy neural networks accessible to both beginners and experts.
- TakagiβSugenoβKang (TSK) ANFIS with the classic four-layer architecture (Membership β Rules β Normalization β Consequent).
- Regressor and classifier facades with a familiar scikit-learn style (
fit,predict,score). - Trainers (Hybrid, SGD, Adam, RMSProp, PSO) decoupled from the model for easy experimentation.
- 10+ membership function families. The primary public interfaces are
ANFISRegressorandANFISClassifier. - Thorough test coverage (100%+).
Install from PyPI:
pip install anfis-toolboximport numpy as np
from anfis_toolbox import ANFISRegressor
X = np.random.uniform(-2, 2, (100, 2))
y = X[:, 0]**2 + X[:, 1]**2
model = ANFISRegressor()
model.fit(X, y)
metrics = model.evaluate(X, y)import numpy as np
from anfis_toolbox import ANFISClassifier
X = np.r_[np.random.normal(-1, .3, (50, 2)), np.random.normal(1, .3, (50, 2))]
y = np.r_[np.zeros(50, int), np.ones(50, int)]
model = ANFISClassifier()
model.fit(X, y)
metrics = model.evaluate(X, y)- Gaussian (
GaussianMF) - Smooth bell curves - Gaussian2 (
Gaussian2MF) - Two-sided Gaussian with flat region - Triangular (
TriangularMF) - Simple triangular shapes - Trapezoidal (
TrapezoidalMF) - Plateau regions - Bell-shaped (
BellMF) - Generalized bell curves - Sigmoidal (
SigmoidalMF) - S-shaped transitions - Diff-Sigmoidal (
DiffSigmoidalMF) - Difference of two sigmoids - Prod-Sigmoidal (
ProdSigmoidalMF) - Product of two sigmoids - S-shaped (
SShapedMF) - Smooth S-curve transitions - Linear S-shaped (
LinSShapedMF) - Piecewise linear S-curve - Z-shaped (
ZShapedMF) - Smooth Z-curve transitions - Linear Z-shaped (
LinZShapedMF) - Piecewise linear Z-curve - Pi-shaped (
PiMF) - Bell with flat top
- SGD (Stochastic Gradient Descent) β Classic gradient-based optimization with incremental updates
- Adam β Adaptive learning rates with momentum for faster convergence
- RMSProp β Scales learning rates by recent gradient magnitudes for stable training
- PSO (Particle Swarm Optimization) β Population-based global search strategy
- Hybrid SGD + OLS β Combines gradient descent with least-squares parameter refinement
- Hybrid Adam + OLS β Integrates adaptive optimization with analytical least-squares adjustment
- Comprehensive guides, API reference, and examples: docs/ (built with MkDocs).
Clone the repository:
git clone https://github.com/dcruzf/anfis-toolbox.git
cd anfis-toolboxCreate a virtual environment:
python -m venv .venvActivate it:
Linux / macOS
source .venv/bin/activate
Windows (PowerShell)
.venv\Scripts\Activate.ps1Install the project in editable mode with development dependencies (this includes Hatch and all test tools):
pip install -e .[dev]Run the full test suite with coverage:
hatch test -c --allThis project is tested on Python 3.10 | 3.11 | 3.12 | 3.13 | 3.14 across Linux, Windows and macOS.
Run the linter and format the codebase:
hatch fmtRun static type checks:
hatch run typingRun security checks with Bandit:
hatch run securityIssues and pull requests are welcome! Please open a discussion if youβd like to propose larger changes. See the docs/guide section for architecture notes and examples.
Distributed under the MIT License. See LICENSE for details.
- Jang, J. S. (1993). ANFIS: adaptive-network-based fuzzy inference system. IEEE transactions on systems, man, and cybernetics, 23(3), 665-685. https://doi.org/10.1109/21.256541