<p align="center"><img src=".github/images/niaclass_logo.png" alt="NiaClass" title="NiaClass"/></p>

---

[![PyPI Version](https://img.shields.io/pypi/v/niaclass.svg)](https://pypi.python.org/pypi/niaclass)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/niaclass.svg)
![PyPI - Downloads](https://img.shields.io/pypi/dm/niaclass.svg)
[![GitHub license](https://img.shields.io/github/license/lukapecnik/niaclass.svg)](https://github.com/lukapecnik/niaclass/blob/master/LICENSE)
![GitHub commit activity](https://img.shields.io/github/commit-activity/w/lukapecnik/niaclass.svg)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/lukapecnik/niaclass.svg)](http://isitmaintained.com/project/lukapecnik/niaclass "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/lukapecnik/niaclass.svg)](http://isitmaintained.com/project/lukapecnik/niaclass "Percentage of issues still open")
![GitHub contributors](https://img.shields.io/github/contributors/lukapecnik/niaclass.svg)

NiaClass is a framework for solving classification tasks using nature-inspired algorithms. The framework is written fully in Python. Its goal is to find the best possible set of classification rules for the input data using the <a href="https://github.com/NiaOrg/NiaPy">NiaPy framework</a>, which is a popular Python collection of nature-inspired algorithms. The NiaClass classifier supports numerical and categorical features.

* **Free software:** MIT license,
* **Documentation:** https://niaclass.readthedocs.io/en/latest/,
* **Python versions:** 3.7.x, 3.8.x, 3.9.x.

<p align="center"><img src=".github/images/niaclass.png" alt="NiaClass" title="NiaClass"/></p>

## Installation

### pip3

Install NiaClass with pip3:

```sh
pip3 install niaclass
```

In case you would like to try out the latest pre-release version of the framework, install it using:

```sh
pip3 install niaclass --pre
```

### Fedora Linux

To install NiaClass on Fedora, use:

```sh
$ dnf install python-niaclass
```

## Functionalities

- Binary classification,
- Multi-class classification,
- Support for numerical and categorical features.

## Examples

Usage examples can be found [here](examples).

## Reference Papers (software is based on ideas from):

[1] Iztok Fister Jr., Iztok Fister, Dušan Fister, Grega Vrbančič, Vili Podgorelec. [On the potential of the nature-inspired algorithms for pure binary classification](http://www.iztok-jr-fister.eu/static/publications/267.pdf). In. Computational science - ICCS 2020 : 20th International Conference, Proceedings. Part V. Cham: Springer, pp. 18-28. Lecture notes in computer science, 12141, 2020

## Licence

This package is distributed under the MIT License. This license can be found online at <http://www.opensource.org/licenses/MIT>.

## Disclaimer

This framework is provided as-is, and there are no guarantees that it fits your purposes or that it is bug-free. Use it at your own risk!

## Cite us

Pečnik L., Fister I., Fister Jr. I. (2021) [NiaClass: Building Rule-Based Classification Models Using Nature-Inspired Algorithms](https://link.springer.com/chapter/10.1007/978-3-030-78811-7_36). In: Tan Y., Shi Y. (eds) Advances in Swarm Intelligence. ICSI 2021. Lecture Notes in Computer Science, vol 12690. Springer, Cham.

