Skip to content

kulbachcedric/EvOAutoML

Repository files navigation

incremental dl logo

EvO AutoML is a Python library for Evolution based Online AutoML. EvO AutoML ambition is to enable hyperparameter optimization for online machine learning pipelines build on river.

PyPI PyPI - Downloads GitHub

EvO AutoML

EvO AutoML is a Python library for Evolution based Online AutoML.

💈 Installation

Use the package manager pip to install EvoAutoML.

pip install evoautoml

You can install the latest development version from GitHub as so:

pip install https://github.com/kulbachcedric/EvOAutoML//archive/refs/heads/master.zip

🍫 Quickstart

Classification

>>> from river import datasets, ensemble, evaluate, metrics, compose, optim
>>> from river import preprocessing, neighbors, naive_bayes, tree, linear_model
>>> from EvOAutoML import classification, pipelinehelper
>>> dataset = datasets.Phishing()
>>> model_pipeline = compose.Pipeline(
...     ('Scaler', pipelinehelper.PipelineHelperTransformer([
...         ('StandardScaler', preprocessing.StandardScaler()),
...         ('MinMaxScaler', preprocessing.MinMaxScaler()),
...         ('MinAbsScaler', preprocessing.MaxAbsScaler()),
...     ])),
...     ('Classifier', pipelinehelper.PipelineHelperClassifier([
...         ('HT', tree.HoeffdingTreeClassifier()),
...         ('LR', linear_model.LogisticRegression()),
...         ('GNB', naive_bayes.GaussianNB()),
...         ('KNN', neighbors.KNNClassifier()),
...     ])))
>>> model = classification.EvolutionaryBaggingClassifier(
...     model=model_pipeline,
...     param_grid={
...         'Scaler': model_pipeline.steps['Scaler'].generate({}),
...         'Classifier': model_pipeline.steps['Classifier'].generate({
...             'HT__max_depth': [10, 30, 60, 10, 30, 60],
...             'HT__grace_period': [10, 100, 200, 10, 100, 200],
...             'HT__max_size': [5, 10],
...             'LR__l2': [.0,.01,.001],
...             'KNN__n_neighbors': [1, 5, 20],
...             'KNN__window_size': [100, 500, 1000],
...             'KNN__weighted': [True, False],
...             'KNN__p': [1, 2],
...         })
...     },
...     seed=42
... )
>>> metric = metrics.F1()
>>> for x, y in dataset:
...     y_pred = model.predict_one(x)  # make a prediction
...     metric = metric.update(y, y_pred)  # update the metric
...     model = model.learn_one(x,y)  # make the model learn

📚 Cite

@inproceedings{DBLP:conf/pakdd/KulbachMBHB22,
  author    = {Cedric Kulbach and
               Jacob Montiel and
               Maroua Bahri and
               Marco Heyden and
               Albert Bifet},
  editor    = {Jo{\~{a}}o Gama and
               Tianrui Li and
               Yang Yu and
               Enhong Chen and
               Yu Zheng and
               Fei Teng},
  title     = {Evolution-Based Online Automated Machine Learning},
  booktitle = {Advances in Knowledge Discovery and Data Mining - 26th Pacific-Asia
               Conference, {PAKDD} 2022, Chengdu, China, May 16-19, 2022, Proceedings,
               Part {I}},
  series    = {Lecture Notes in Computer Science},
  volume    = {13280},
  pages     = {472--484},
  publisher = {Springer},
  year      = {2022},
  url       = {https://doi.org/10.1007/978-3-031-05933-9\_37},
  doi       = {10.1007/978-3-031-05933-9\_37},
  timestamp = {Tue, 17 May 2022 15:53:17 +0200},
  biburl    = {https://dblp.org/rec/conf/pakdd/KulbachMBHB22.bib},
  bibsource = {dblp computer science bibliography, https://dblp.org}
}

🏫 Affiliations

FZI Logo