X-ANFIS: An Extensible and Cross-Learning ANFIS Framework for Machine Learning Tasks
Project description
X-ANFIS: Modular ANFIS Library with Classic, Gradient, and Bio-inspired Training Strategies
X-ANFIS is a Python library offering a powerful and extensible implementation of Adaptive Neuro-Fuzzy Inference System (ANFIS) using PyTorch and Scikit-Learn. The library is written with object-oriented principles and modular architecture, enabling easy customization, integration, and experimentation.It supports:
- 🔧 Classic ANFIS (Hybrid: Gradient Descent + Least Squares)
- 🌊 Gradient-based ANFIS (Fully differentiable training)
- 🧠 Bio-inspired ANFIS (Metaheuristics + Least Squares)
✨ Key Features
- Modular, object-oriented design for ease of extension.
- Scikit-Learn API:
.fit(),.predict(),.score()and compatible withGridSearchCV,Pipeline, etc. - Wide range of Gradient-based training optimizers:
SGD,Adam,RMSprop,Adagrad,AdamW, ... - Wide range of Bio-inspired optimizers:
GA,PSO,ACO,WOA,BA,FFA,CSA,GWO,ABC,DE, ... - Rich membership functions:
Triangular,Gaussian,Bell, ... - Over 67 built-in metrics and losses.
🧠 Model Zoo
| Model Class | Training Method | Type |
|---|---|---|
AnfisRegressor, AnfisClassifier |
Classic Hybrid | Regression / Classification |
GdAnfisRegressor, GdAnfisClassifier |
Gradient-based | Regression / Classification |
BioAnfisRegressor, BioAnfisClassifier |
Metaheuristic-based | Regression / Classification |
📌 Citation
Please include these citations if you plan to use this library:
@software{thieu20250414,
author = {Nguyen Van Thieu},
title = {X-ANFIS: An Extensible and Cross-Learning ANFIS Framework for Machine Learning Tasks},
month = June,
year = 2025,
doi = {10.6084/m9.figshare.28802531},
url = {https://github.com/thieu1995/X-ANFIS}
}
@article{van2023mealpy,
title = {MEALPY: An open-source library for latest meta-heuristic algorithms in Python},
author = {Van Thieu, Nguyen and Mirjalili, Seyedali},
journal = {Journal of Systems Architecture},
year = {2023},
publisher = {Elsevier},
doi = {10.1016/j.sysarc.2023.102871}
}
⚙️ General tutorial
Below tutorial is how you can install and use this library. For more complex examples and documentation please check the examples folder and documentation website.
📦 Installation
Install the latest version using pip:
pip install xanfis
After that, check the version to ensure successful installation:
$ python
>>> import xanfis
>>> xanfis.__version__
🧪 Quick Example
Let's say I want to use Adam optimization-based ANFIS for Iris classification dataset. Here how to do it.
from xanfis import Data, GdAnfisClassifier
from sklearn.datasets import load_iris
## Load data object
X, y = load_iris(return_X_y=True)
data = Data(X, y)
## Split train and test
data.split_train_test(test_size=0.2, random_state=2, inplace=True, shuffle=True)
print(data.X_train.shape, data.X_test.shape)
## Scaling dataset
data.X_train, scaler_X = data.scale(data.X_train, scaling_methods=("standard", "minmax"))
data.X_test = scaler_X.transform(data.X_test)
data.y_train, scaler_y = data.encode_label(data.y_train)
data.y_test = scaler_y.transform(data.y_test)
print(type(data.X_train), type(data.y_train))
## Create model
model = GdAnfisClassifier(num_rules=20, mf_class="Gaussian",
act_output=None, vanishing_strategy="blend", reg_lambda=None,
epochs=50, batch_size=16, optim="Adam", optim_params={"lr": 0.01},
early_stopping=True, n_patience=10, epsilon=0.001, valid_rate=0.1,
seed=42, verbose=True)
## Train the model
model.fit(X=data.X_train, y=data.y_train)
## Test the model
y_pred = model.predict(data.X_test)
print(y_pred)
print(model.predict_proba(data.X_test))
## Calculate some metrics
print(model.evaluate(y_true=data.y_test, y_pred=y_pred, list_metrics=["F2S", "CKS", "FBS", "PS", "RS", "NPV", "F1S"]))
💬 Contributing
We welcome contributions to X-ANFIS! If you have suggestions, improvements, or bug fixes, feel free to fork the repository, create a pull request, or open an issue.
X-ANFIS allows for customization at various levels, including:
-
Membership Functions: You can define custom membership functions to fit your problem requirements.
-
Learning Strategies: Easily switch between gradient-based or bio-inspired algorithms for training.
-
Model Components: Customize the architecture of the ANFIS model, including the number of input and output nodes, output activation function, number of rules, and rule strengths, L2 regularization, training methods.
📞 Community & Support
- 📖 Official Source Code
- 📖 Official Releases
- 📖 Official Docs
- 💬 Telegram Chat
- 🐛 Report Issues
- 🔄 Changelog
🧩 Related Projects
Explore other projects by the author:
- 🔧 MEALPY
- 🔍 Metaheuristics
- 🧪 Permetrics
- 📦 Opfunu
- 🔬 PFEvaluator
- 🧠 IntelELM
- 🔥 Reflame
- 🧭 MetaCluster
- 🧠 Enoppy
- 🤖 AIIR Team
Developed by: Thieu @ 2025
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xanfis-1.1.0.tar.gz.
File metadata
- Download URL: xanfis-1.1.0.tar.gz
- Upload date:
- Size: 54.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93c8e24651dfed5fd2216261a00dc21e0b7471008c588869d4a041ed305df0f3
|
|
| MD5 |
d4940c76ecfa45afdb662872b038431c
|
|
| BLAKE2b-256 |
f7082dad0d6929407af0ea1b251d17a8e661d899c5fb5be6ffad128456268171
|
Provenance
The following attestation bundles were made for xanfis-1.1.0.tar.gz:
Publisher:
publish-package.yaml on thieu1995/X-ANFIS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xanfis-1.1.0.tar.gz -
Subject digest:
93c8e24651dfed5fd2216261a00dc21e0b7471008c588869d4a041ed305df0f3 - Sigstore transparency entry: 232172052
- Sigstore integration time:
-
Permalink:
thieu1995/X-ANFIS@69bd2fd0a0d9a982b3021d9bf01b04dd6ca289b6 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/thieu1995
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yaml@69bd2fd0a0d9a982b3021d9bf01b04dd6ca289b6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file xanfis-1.1.0-py3-none-any.whl.
File metadata
- Download URL: xanfis-1.1.0-py3-none-any.whl
- Upload date:
- Size: 53.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6e0ae8d55fd1d8fa6d4f627987ba5d1b9231b6f5041daeed3e11cbbc373004b
|
|
| MD5 |
c0820e89610608651405764e51cf2059
|
|
| BLAKE2b-256 |
ab0c1777b47bc44b27ed42a11b7a55036c0e6dabcbc6716a7dfaab07c83dfd70
|
Provenance
The following attestation bundles were made for xanfis-1.1.0-py3-none-any.whl:
Publisher:
publish-package.yaml on thieu1995/X-ANFIS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xanfis-1.1.0-py3-none-any.whl -
Subject digest:
c6e0ae8d55fd1d8fa6d4f627987ba5d1b9231b6f5041daeed3e11cbbc373004b - Sigstore transparency entry: 232172053
- Sigstore integration time:
-
Permalink:
thieu1995/X-ANFIS@69bd2fd0a0d9a982b3021d9bf01b04dd6ca289b6 -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/thieu1995
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yaml@69bd2fd0a0d9a982b3021d9bf01b04dd6ca289b6 -
Trigger Event:
release
-
Statement type: