Skip to main content

A library of fuzzy rough machine learning algorithms and data descriptors.

Project description

Travis AppVeyor Codecov CircleCI ReadTheDocs

fuzzy-rough-learn

fuzzy-rough-learn is a library of machine learning algorithms involving fuzzy rough sets, as well as data descriptors that can be used for one-class classification / novelty detection. It builds on scikit-learn, but uses a slightly different api, best illustrated with a concrete example:

from sklearn import datasets
from sklearn.metrics import accuracy_score, roc_auc_score
from sklearn.model_selection import train_test_split

from frlearn.base import probabilities_from_scores, select_class
from frlearn.classifiers import FRNN
from frlearn.feature_preprocessors import RangeNormaliser

# Import example data.
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Split into train and test sets.
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)

# Create an instance of the FRNN classifier, construct the model, and query on the test set.
clf = FRNN(preprocessors=(RangeNormaliser(), ))
model = clf(X_train, y_train)
scores = model(X_test)

# Convert scores to probabilities and calculate the AUROC.
probabilities = probabilities_from_scores(scores)
auroc = roc_auc_score(y_test, probabilities, multi_class='ovo')
print('AUROC:', auroc)

# Select classes with the highest scores and calculate the accuracy.
classes = select_class(scores)
accuracy = accuracy_score(y_test, classes)
print('accuracy:', accuracy)

Both classifiers and feature preprocessors are functions that take training data and output a model. Models are functions that take data and output something else. Classifier models output class scores, preprocessor models output a transformation of the data. Preprocessors can be added as a keyword argument when initialising a classifier, which automatically creates a preprocessor model on the basis of the training data and applies it to the training and the test data.

Contents

At present, fuzzy-rough-learn contains the following algorithms:

Multiclass classifiers

  • Fuzzy Rough Nearest Neighbours (FRNN; multiclass)

  • Fuzzy Rough OVO COmbination (FROVOCO; muliclass, suitable for imbalanced data)

  • Fuzzy ROugh NEighbourhood Consensus (FRONEC; multilabel)

Data descriptors

  • Average Localised Proximity (ALP)

  • Centre Distance (CD)

  • Extended Isolation Forest (EIF)

  • Isolation Forest (IF)

  • Local Outlier Factor (LOF)

  • Localised Nearest Neighbour Distance (LNND)

  • Mahalanobis Distance (MD)

  • Nearest Neighbour Distance (NND)

  • Support Vector Machine (SVM)

Regressors

  • Fuzzy Rough Nearest Neighbours (FRNN)

Feature preprocessors

  • Fuzzy Rough Feature Selection (FRFS)

  • Linear normaliser; in particular:

    • Interquartile range (IQR) normaliser

    • Maximum absolute value (MaxAbs) normaliser

    • Range normaliser

    • Standardiser

  • Shrink Autoencoder (SAE; unsupervised)

  • Vector size normaliser

Instance preprocessors

  • Fuzzy Rough Prototype Selection (FRPS)

Other

  • array functions

  • dispersion measures

  • location measures

  • nearest neighbour search methods

  • parametrisations

  • t_norms

  • transformations

  • vector size measures

  • weights

Documentation

The documentation is located here.

Dependencies

fuzzy-rough-learn requires python 3.7+ and the following packages:

  • scipy >= 1.1.0

  • numpy >=1.17.0

  • scikit-learn >=0.24.0

In addition, some algorithms require optional dependencies:

  • eif >= 2.0.0 (EIF)

  • tensorflow >= 2.2.0 (SAE)

Citing fuzzy-rough-learn

If you use or refer to fuzzy-rough-learn in a scientific publication, please cite this paper:

Lenz OU, Peralta D, Cornelis C (2020).
fuzzy-rough-learn 0.1: a Python library for machine learning with fuzzy rough sets.
IJCRS 2020: Proceedings of the International Joint Conference on Rough Sets, pp 491–499.
Lecture Notes in Artificial Intelligence, vol 12179, Springer.
doi: 10.1007/978-3-030-52705-1_36

Bibtex entry:

@inproceedings{lenz20fuzzyroughlearn,
  title={{f}uzzy-rough-learn 0.1: a {P}ython library for machine learning with fuzzy rough sets},
  author={Lenz, Oliver Urs and Peralta, Daniel and Cornelis, Chris},
  booktitle={{IJCRS} 2020: Proceedings of the International Joint Conference on Rough Sets},
  pages={491--499},
  year={2020},
  series={Lecture Notes in Artificial Intelligence},
  volume={12179},
  publisher={Springer}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fuzzy-rough-learn-0.2.2.tar.gz (12.0 MB view details)

Uploaded Source

Built Distribution

fuzzy_rough_learn-0.2.2-py3-none-any.whl (58.2 kB view details)

Uploaded Python 3

File details

Details for the file fuzzy-rough-learn-0.2.2.tar.gz.

File metadata

  • Download URL: fuzzy-rough-learn-0.2.2.tar.gz
  • Upload date:
  • Size: 12.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/0.0.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.5

File hashes

Hashes for fuzzy-rough-learn-0.2.2.tar.gz
Algorithm Hash digest
SHA256 6b51db735f903b74e77fcfaf31d86e06e515cc81eb84776b49af3b20ea653348
MD5 d00f4a6f7459e844a39033c967ef5723
BLAKE2b-256 76e7d9025d8fb039e87ff1e3566a0414a6815450ec5bdeee962407e69e113579

See more details on using hashes here.

File details

Details for the file fuzzy_rough_learn-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: fuzzy_rough_learn-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 58.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/0.0.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.5

File hashes

Hashes for fuzzy_rough_learn-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9d8bcaf435e4b90e17531ca37feb12697cc65cfd258aeed65af0c1f2fa8f5459
MD5 182f2a9589c72e89a6cb68be02c78941
BLAKE2b-256 2737972b4bb7b89f2eafd6b7cf9a6c25e323eee8c7bc5513788152c028aa0485

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page