/autoyml

AutoyML is a toy automatic machine learning library made for learning purposes.

Primary LanguagePython

AutoyML

Code style: black Checked with mypy Build Status

AutoyML is a toy automatic machine learning library made for learning purposes.

Notes

The aim was to develop a Keras model which could adapt its input layer based on the data, and automatically tune its core architecture to best fit it.

The actual class with the required methods, NeuralNetworkModel, can be found here.

It leverages the Keras Tuner library to tune the hyper parameters.

The unit tests can be found here in the tests folder, and are scheduled to run with Travis CI.

Installation

You will need pipenv to easily install all the required dependencies.

python3 -m pip install pipenv
PIPENV_VENV_IN_PROJECT=true pipenv install --dev

Useful commands

pipenv run <command> Description
pytest tests Run the test suite.
flake8 autoyml Run the flake8 linter.
mypy autoyml Run the MyPy type checker.

Application structure

.
├── autoyml                        # Application source code
│   ├── abstract_model.py          # Definition of the model interface
│   ├── decorators.py              # Decorator checking that the model can predict
│   ├── errors.py                  # Custom errors
│   ├── hypermodel.py              # Tunable neural network model and custom Keras Tuner's `KerasHyperModel`
│   ├── neural_network_model.py    # *** Actual wrapper class, implementing the required methods ***
│   ├── preprocessing.py           # Collection of helper functions to manipulate the data
│   └── tuner.py                   # Custom `Tuner` class with cross-validation evaluation
└── tests                          # Application tests
    └── test_autoyml.py            # Unit tests