Skip to main content

Python-Inspired Optimum-Path Forest Classifier

Project description

OPFython: A Python-Inspired Optimum-Path Forest Classifier

Latest release DOI Build status Open issues License

Welcome to OPFython.

Note that this implementation relies purely on the standard LibOPF. Therefore, if one uses our package, please also cite the original LibOPF authors.

Have you ever wanted to classify data into labels? If yes, OPFython is for you! This package is an innovative way of dealing with an optimum-path forest classifier. From bottom to top, from samples and datasets to the actual classifier, we will foster all research related to this new trend.

Use OPFython if you need a library or wish to:

  • Create your datasets;
  • Design or use pre-loaded state-of-art classifiers;
  • Mix-and-match different strategies to solve your problem;
  • Because it is cool to classify things.

Read the docs at opfython.readthedocs.io.

OPFython is compatible with: Python 3.6+.


Package guidelines

  1. The very first information you need is in the very next section.
  2. Installing is also easy if you wish to read the code and bump yourself into, follow along.
  3. Note that there might be some additional steps in order to use our solutions.
  4. If there is a problem, please do not hesitate. Call us.

Citation

If you use OPFython to fulfill any of your needs, please cite any of the following:

@article{rosa2021simpa,
    title = {OPFython: A Python implementation for Optimum-Path Forest},
    author = {Gustavo H. {de Rosa} and João P. Papa},
    journal = {Software Impacts},
    pages = {100113},
    year = {2021},
    issn = {2665-9638},
    doi = {https://doi.org/10.1016/j.simpa.2021.100113},
}
@misc{rosa2021speedup,
      title={Speeding Up OPFython with Numba},
      author={Gustavo H. de Rosa and João Paulo Papa},
      year={2021},
      eprint={2106.11828},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}

Datasets

In search for datasets? We have some already pre-loaded into OPF file format. Just check them out at our website!


Getting started: 60 seconds with OPFython

First of all. We have examples. Yes, they are commented. Just browse to examples/, chose your subpackage, and follow the example. We have high-level examples for most tasks we could think.

Alternatively, if you wish to learn even more, please take a minute:

OPFython is based on the following structure, and you should pay attention to its tree:

- opfython
    - core
        - heap
        - node
        - opf
        - subgraph
    - math
        - distance
        - general
        - random
    - models
        - knn_supervised
        - semi_supervised
        - supervised
        - unsupervised
    - stream
        - loader
        - parser
        - splitter
    - subgraphs
        - knn
    - utils
        - constants
        - converter
        - decorator
        - exception
        - logging

Core

Core is the core. Essentially, it is the parent of everything. You should find parent classes defining the basis of our structure. They should provide variables and methods that will help to construct other modules.

Math

Just because we are computing stuff, it does not means that we do not need math. Math is the mathematical package, containing low-level math implementations. From random numbers to distributions generation, you can find your needs in this module.

Models

Each machine learning OPF-based technique is defined in this package. From Supervised OPF to Unsupervised OPF, you can use whatever suits your needs.

Stream

Every pipeline has its first step, right? The stream package serves as primary methods to load data, parse it into feasible arrays, and split them into the desired sets (training, evaluation, testing).

Subgraphs

As each type of OPF classifier might need a particular subgraph, we opted to define a unique package to hold them all. The subgraph's package is in charge of implementing some of its varities, such as the k-nearest neighbour (KNN) subgraph.

Utils

This is a utility package. Common things shared across the application should be implemented here. It is better to implement once and use it as you wish than re-implementing the same thing over and over again.


Installation

We believe that everything has to be easy. Not tricky or daunting, OPFython will be the one-to-go package that you will need, from the very first installation to the daily-tasks implementing needs. If you may just run the following under your most preferred Python environment (raw, conda, virtualenv, whatever):

pip install opfython

Alternatively, if you prefer to install the bleeding-edge version, please clone this repository and use:

pip install -e .

Environment configuration

Note that sometimes, there is a need for additional implementation. If needed, from here you will be the one to know all of its details.

Ubuntu

No specific additional commands needed.

Windows

No specific additional commands needed.

MacOS

No specific additional commands needed.


Support

We know that we do our best, but it is inevitable to acknowledge that we make mistakes. If you ever need to report a bug, report a problem, talk to us, please do so! We will be available at our bests at this repository or gustavo.rosa@unesp.br.


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

opfython-1.0.12.tar.gz (34.9 kB view details)

Uploaded Source

Built Distribution

opfython-1.0.12-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file opfython-1.0.12.tar.gz.

File metadata

  • Download URL: opfython-1.0.12.tar.gz
  • Upload date:
  • Size: 34.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for opfython-1.0.12.tar.gz
Algorithm Hash digest
SHA256 c6945e40c4ebbee8313c7e6447a21082712ca9edb719b4dc1252e87105414609
MD5 06017d948651c6c5d0f3efd122aa3177
BLAKE2b-256 c603536dcf853ad158c6909e45f221b9f3d9da817c0a88bac664f22085c4fe1e

See more details on using hashes here.

File details

Details for the file opfython-1.0.12-py3-none-any.whl.

File metadata

  • Download URL: opfython-1.0.12-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.9.12

File hashes

Hashes for opfython-1.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 aa8412fab9038c41e8a410fd8766fd410d3c190c30fb46c29a1de951a3d04ed9
MD5 298ad9b872e1f417de948b005825c10c
BLAKE2b-256 53f1464ffc9c29d5419e0f294fb35c7f695041c1c9b6d93b7612c976f3596ab4

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