highFIS
highFIS is a PyTorch-based library for high-dimensional Takagi–Sugeno–Kang (TSK) fuzzy systems. It brings differentiable fuzzy inference, numerical stability, and scikit-learn compatible estimators to both classification and regression.
🚀 Overview
- Differentiable TSK fuzzy systems built for high-dimensional data.
- Thirteen model families from the literature behind one API, each with a classifier and a regressor.
- Available as scikit-learn compatible estimators and as plain PyTorch model classes.
- Designed for numerical stability with log-space and inverse-log defuzzifiers.
📦 Installation
Install from PyPI:
pip install highfis
highFIS requires Python 3.11 or newer and depends on PyTorch, NumPy, scikit-learn, and tqdm. The diagnostic plots need matplotlib, an optional dependency:
pip install highfis[plot]
🧠 Quick Start
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from highfis import HTSKClassifier
X, y = make_classification(n_samples=800, n_features=10, n_informative=8, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
# Membership functions are sensitive to feature scale.
scaler = MinMaxScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
clf = HTSKClassifier(
n_mfs=3,
mf_init="kmeans",
epochs=100,
learning_rate=0.01,
random_state=42,
)
clf.fit(X_train, y_train)
print(f"Test accuracy: {clf.score(X_test, y_test):.2%}")
highFIS integrates with sklearn.pipeline.Pipeline, GridSearchCV, and
cross_val_score.
🧩 Model families
highFIS implements thirteen TSK model families, each following a published high-dimensional inference strategy.
TSK— generic TSK; by default the vanilla system with product antecedent aggregation and sum-based normalization, with selectable membership function, T-norm, and defuzzifier.HTSK— geometric mean aggregation with log-space softmax normalization.LogTSK— inverse-log normalization of log-domain rule weights.HDFIS— high-dimensional inference with product T-norm (HDFISProd) and minimum T-norm (HDFISMin) variants.DombiTSK— Dombi T-norm aggregation with a fixed shape parameter.ADMTSK— adaptive Dombi T-norm, with the shape parameter derived from the input dimensionality, and composite Gaussian membership functions.AYATSK— adaptive Yager T-norm with composite exponential membership functions.ADATSK— adaptive softmin antecedent aggregation.ADPTSK— adaptive double-parameter softmin antecedent aggregation.FSRE-ADATSK— ADATSK extended with embedded feature selection and rule extraction.DGTSK— double groups of gates for simultaneous feature selection and rule extraction.DGALETSK— adaptive Ln-Exp softmin with simultaneous feature selection and rule extraction.MHTSK— multihead TSK built from sparse subantecedents over random feature subsets.
Each family exposes classifier and regressor variants.
🔧 Core components
highFIS exposes a compact, model-family-driven API with both concrete model classes and sklearn-compatible estimator wrappers.
- Estimators:
*Classifierand*Regressorvariants for each model family, importable directly fromhighfis(for exampleHTSKClassifier,FSREADATSKRegressor,HDFISProdClassifier) - PyTorch models: the underlying
*ClassifierModeland*RegressorModelclasses inhighfis.models - Building blocks: membership functions (
highfis.memberships), defuzzifiers (highfis.defuzzifiers), T-norms (highfis.t_norms), and layers (highfis.layers) - Interpretation:
estimator.rules_as_text()writes the rule base asIF ... THEN ...sentences; the rule table, consequent coefficients, and gate values are available as estimator methods - Diagnostic plots:
estimator.plot(kind=...)for the learned membership functions, the training history, the rule activations, and the predictions - Utilities: evaluation metrics (
highfis.metrics), estimator checkpoints (highfis.persistence), and a membership-function initialization cache
For the full class list and API reference, see the documentation:
🛠️ Training options
highFIS uses gradient-based optimization and supports:
- an optimizer selected per model family (SGD, Adam, or AdamW), following the source paper
- mini-batch training with learning-rate schedulers and weight decay on the consequent parameters
- early stopping on a validation set passed to
fit - uniform regularization (
ur_weight) for balanced rule activation - a choice of membership function, T-norm, and defuzzifier in the generic
TSKClassifierandTSKRegressor; the other families keep their published combination - custom T-norms, rule bases, and defuzzifiers through the PyTorch model classes
📚 Documentation
The published documentation is available at:
https://dcruzf.github.io/highFIS
Start with the model families overview, the user guides, and the cookbook. The diagnostic plots guide shows how to inspect a fitted model.
Model reference pages:
- TSK Vanilla
- LogTSK
- AYATSK
- HTSK
- DombiTSK
- ADPTSK
- ADMTSK
- ADATSK
- DGTSK
- DG-ALETSK
- FSRE-ADATSK
- MHTSK
- HDFIS
🧪 Testing & quality
Format, lint, and type check:
hatch check --fix
Run the test suite with coverage:
hatch test -c -a
Run security scan:
hatch run security
📝 Citation
If you use highFIS in your research, please cite it using the metadata in CITATION.cff or the Zenodo DOI.
🤝 Contributing
Contributions are welcome! Please open issues or pull requests, and refer to our development guide in the documentation: contributing.
When reporting a bug, include the output of highfis.show_versions().
📄 License
Distributed under the GPLv3.
Metadata
Release files for highfis 0.33.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| highfis-0.33.0.tar.gz | 239.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| highfis-0.33.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 443.7 kB
Release files / highfis-0.33.0.tar.gz
| Download URL | highfis-0.33.0.tar.gz |
|---|---|
| Size | 239.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dadb9fa09117fb363d5a8b5f44cc5fafd9b5fd2320a2d1ffe7e161eb95ea0197
|
|
BLAKE2b-256 checksum How to use checksums |
d1cdd9fd4cc62b03e61f3aced612e699d3456ab3e24a74e4f140713c30b97fe4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / highfis-0.33.0-py3-none-any.whl
| Download URL | highfis-0.33.0-py3-none-any.whl |
|---|---|
| Size | 203.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3c800702c3b1cd40f6525ef4b37f70b6186030b83028a26badf5cdc227b08da1
|
|
BLAKE2b-256 checksum How to use checksums |
55662468d9d7439911d8725c9fec3a97d7029e2ac1a07ceb7d9d7726c39906c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|