An automated machine learning tool based on genetic programming.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs/source
examples [skip ci] Don't store analysis log for examples. Jan 16, 2019
gama
images
notebooks
paper Line break. Jan 17, 2019
tests
.gitignore Examples now accessible as separate python files. Dirty trick to copy… Jan 16, 2019
.travis.yml code coverage report only for gama and not dependencies. Oct 1, 2018
LICENSE
README.md [skip ci] Add citation guideline. Feb 1, 2019
code_of_conduct.md
setup.py Changed to YY.0M.MICRO versioning scheme. Jan 21, 2019

README.md

GAMA

Genetic Automated Machine learning Assistant
An automated machine learning tool based on genetic programming.
Make sure to check out the documentation.

Build Status codecov DOI


GAMA is an AutoML package for end-users and AutoML researchers. It uses genetic programming to efficiently generate optimized machine learning pipelines given specific input data and resource constraints. A machine learning pipeline contains data preprocessing (e.g. PCA, normalization) as well as a machine learning algorithm (e.g. Logistic Regression, Random Forests), with fine-tuned hyperparameter settings (e.g. number of trees in a Random Forest).

GAMA can also combine multiple tuned machine learning pipelines together into an ensemble, which on average should help model performance. At the moment, GAMA is restricted to classification and regression problems on tabular data.

In addition to its general use AutoML functionality, GAMA aims to serve AutoML researchers as well. During the optimization process, GAMA keeps an extensive log of progress made. Using this log, insight can be obtained on the behaviour of the population of pipelines. For example, it can produce a graph that shows pipeline fitness over time: graph of fitness over time

For more examples and information on the visualization, see this notebook.

Installing GAMA

Clone GAMA:

git clone https://github.com/PGijsbers/gama.git

Move to the GAMA directory (cd gama) and install: python setup.py install

All done!

Minimal Example

The following example uses AutoML to find a machine learning pipeline that classifies breast cancer as malign or benign. See the documentation for examples in classification, regression, using ARFF as input.

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import log_loss, accuracy_score
from gama import GamaClassifier

if __name__ == '__main__':
    X, y = load_breast_cancer(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)

    automl = GamaClassifier(max_total_time=180, keep_analysis_log=False)
    print("Starting `fit` which will take roughly 3 minutes.")
    automl.fit(X_train, y_train)

    label_predictions = automl.predict(X_test)
    probability_predictions = automl.predict_proba(X_test)

    print('accuracy:', accuracy_score(y_test, label_predictions))
    print('log loss:', log_loss(y_test, probability_predictions))
    # the `score` function outputs the score on the metric optimized towards (by default, `log_loss`)
    print('log_loss', automl.score(X_test, y_test))

note: By default, GamaClassifier optimizes towards log_loss.

Citing

If you want to cite GAMA, please use our JOSS publication.

@article{Gijsbers2019,
  doi = {10.21105/joss.01132},
  url = {https://doi.org/10.21105/joss.01132},
  year  = {2019},
  month = {jan},
  publisher = {The Open Journal},
  volume = {4},
  number = {33},
  pages = {1132},
  author = {Pieter Gijsbers and Joaquin Vanschoren},
  title = {{GAMA}: Genetic Automated Machine learning Assistant},
  journal = {Journal of Open Source Software}
}