Skip to content

Commit

Permalink
added examples
Browse files Browse the repository at this point in the history
deleted redundant files

corrected typos

simplifeid code

remove redundant

correct pep8 issues

add example

add mutations

correct visualization fiting process

improve visualization

add partial in solver.py

add example in .py format

examples/confidence_intervals

move prediction intervals in core/pipelines

delete old examples

add unit tests

Refactoring of ApiParams and ApiMetrics (aimclub#1041)

* WIP refactor ApiParams

* Remove explicit ApiParams initialization

* Move all params initialization to ApiParams

* Minor changes

* Remove _divide_params

* WIP create ApiParamsBuilder

* Add ApiParamsBuilder

* Minor

* Rename history_folder to history_dir

* Remove train_data from ApiParams

* Fixes after rebase

* Move obtain_metric to ApiMetrics

* Fix plot_pareto

* Fix Fedot.tune

* Refactor Fedot.get_metrics

* Fix Fedot.tune

* Fix metric names

* Fixes after rebase

* Remove ApiParamsBuilder

* Structure parameters in Fedot docstring

* Refactor init_composer_requirements

* Refactor init_optimizer_params

* Refactor init_optimizer_params

* Fix docstrings

* Add tests for ApiParamsRepository

* Minors

* Fix test_api_params

* Review fixes

* Review fixes

* Review fixes

Hotfix of pipeline import export example (aimclub#1064)

meta rules  (aimclub#1057)

* initial assumption

* final architecture

* add meta rules

* minor

* simplify

* add meta rule

* fix with cv folds

* minors

* fix types

* minor

* golem fixes

* add log messages

* pep8

* remove log file

Fix initial assumptions as list of pipelines (aimclub#1070)

`Fedot(..., initial_assumption=...)` is expected to get a sequence of pipelines and pass them as initial graphs to an optimizer via composer.

Moreover, FEDOT itself generates more than one initial assumption by default.

As the result of this bug, composer passed only one of the initial assumptions to an optimizer.

This PR fixes the bug and adds the corresponding test.

tests fix (aimclub#1073)

* remove some assumptions

* update requirements

* fix pep8

* update to golem

Docs updated, badges added (aimclub#1072)

* Docs updated, badges added

* Mirror workflow fix

Improve API documentation (aimclub#1067)

- Moved type hints from method headers to corresponding parameters.

- Allowed referencing GOLEM objects in FEDOT documentation.

- Replaced all url links to documentation pages with sphinx references - it fixed some broken links.

- FEDOT now uses its own directory for cache, instead of using GOLEM folder.

- Documented `**composer_tuner_params` of `Fedot` with type hints and default values.

All parameters with no usage examples are placed to the separate issue aimclub#1076

minor meta fix (aimclub#1078)

* minor fix

* indent fix

* minor

Add catboost to default initial assumptions (aimclub#1081)

* add catboost to default initial assumptions for classification

* restrict mutating loss function in CatBoost

* evaluate f1 as expected in the example

* pep8

F1 averaging fix (aimclub#1083)

Minor logging fix (aimclub#1082)

* fix print instead of logging for memory consumption

1059 timestamp bug (aimclub#1065)

879 FEDOT features (aimclub#1075)

describe framework's features

add example for surrogate optimizer (aimclub#1085)

Example with surrogate optimizer was added. External parameters field was removed from api (now we should use partial)

related pull request in GOLEM aimclub/GOLEM#82

has_one_root fix (aimclub#1091)

* has_one_root fix

* test fix

Remove outdated test handled in thegolem (aimclub#1101)

358 Reduce execution time for unit tests (aimclub#1098)

Update RTD benchmarks tabular data page (aimclub#1099)

* +csv support

Golem update requirements (aimclub#1088)

* Upd RemoveType in Advisor (golem sync)

* Upd requirements.txt for stable GOLEM

* Fix few imports

Add ts bench (aimclub#1104)

Add results from ts benchmark

Release 0.7.1 and test workflow updates (aimclub#1105)

* Upd release version

* Add pre-release tests actions on 'release' branch; Disable auto-publish

* Upd GOLEM version

* Remove manual-build.yml (dup of integration-build.yml)

* Add integration tests badge to README

* Revert "Upd GOLEM version" (for PR in master)

This reverts commit 257ff16.

Hotfix some integration tests for release 071 (aimclub#1107)

* Fix integration test of ApiParams

* Fix integration test of composition_time

* Fix integration test of metocean_forecasting

* Fix integration test of nemo_multiple.py

* Workaround for sqlite exception raised in tests

* pep8 fixes

* fix different seed in quality imporvement tests

* simplify condition

* remove test that barely tested anything

* fix condition

* remove seed from example

* fix typo

parallel cache files test fix (aimclub#1109)

Add IOptTuner (aimclub#1102)

* Refactor search space

* Fix ParametersChanges

* Redact tuner builder

* PEP 8

* Fix examples and correct tuning docs

* Add IOpt example to docs

* Add simple IOpt example

* Fix integration tests (6 steal not work)

* Fix integration test test_tuner_builder_with_custom_params (6 steal not work)

* Fix pep8

* Add tuners comparison in docs

* Update golem version in requirements

* Fix warn_requirements

* Fix warn_requirements

* Fix table in tuning docs

* Fix credit_scoring_problem_multiobj.py

* Fix extra requirements

* Edit docs

* Fix table in docs

* Change requirements

* Test requirements

* Set stable branch

+ h2o benchmark's tabular data values  (aimclub#1106)

* +h2o vals

* change csv to html

* specified table uuid

* change max values style

* add df to html converter

---------

Co-authored-by: nicl-nno <[email protected]>

Added results for multimodal benchmark into FEDOT.docs (aimclub#1115)

* - added results for multimodal benchmark

...

add docstrings and type hints

add prediction intervals unit test

simplified solvers code

correct pep issues

add class defining PredictionIntervals params

fix MutationStrength import issue

correct test_data path

update imports

updated unit tests

correct type-hint

small corrections

take short ts for unit test

update pred_int test

change ql_models to 'max' in pred_ints test

update params for ql method

...

update example

update tests

add base_quantiles visualization

fix import get_base_quantiles

update examples and deleted ql from tests

update

pep

pep issues

pep

pep

update requirements.txt
  • Loading branch information
GrigoriJasnovidov committed Aug 17, 2023
1 parent f3dc209 commit d821935
Show file tree
Hide file tree
Showing 212 changed files with 5,723 additions and 2,887 deletions.
4 changes: 3 additions & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ ignore:
- "fedot/sensitivity" # unit test are moved to integration test due to the time restrictions
- "fedot/utilities" # unit test are moved to integration test due to the time restrictions
- "fedot/visualisation" # complicated to test in unit-like way, tested in integration tests
- "fedot/core/operations/evaluation/automl.py" # require to heavy external dependencies - tested in integration test
- "fedot/core/operations/evaluation/automl.py" # require to heavy external dependencies - tested in integration test
- "fedot/api/help.py" # unit test are moved to integration test due to the time restrictions
- "fedot/core/pipelines/tuning/search_space.py" # unit test are moved to integration test due to the time restrictions
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
name: Manual build
name: Integration

on:
schedule:
- cron: '0 12 * * *'
push:
branches: [ release ]
pull_request:
branches: [ release ]
workflow_dispatch:

jobs:
integration_test:
scheduled:
runs-on: ubuntu-latest
timeout-minutes: 20
timeout-minutes: 95
strategy:
matrix:
python-version: [ 3.8, 3.9, '3.10' ]
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mirror_repo_to_gitlab.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Mirror repo to GitLab

on: [push, pull_request, delete]
on: [ push, delete ]

jobs:
call-nss-ops-mirror-workflow:
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/publish_pypi.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
name: Build and publish package to PyPi

on:
push:
branches: [ release ]

workflow_dispatch:

jobs:
build_and_publish:
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/unit-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name: Build

on:
push:
branches: [ master ]
branches: [ master, release ]
pull_request:
branches: [ master ]
branches: [ master, release ]

jobs:
build:
Expand All @@ -28,8 +28,7 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install pytest
pip install .[extra]
pip install .[examples]
pip install .
pip install pytest-cov
- name: Test with pytest
run: |
Expand Down
65 changes: 38 additions & 27 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* - package
- | |pypi| |python|
* - tests
- | |build| |coverage|
- | |build| |integration| |coverage|
* - docs
- |docs|
* - license
Expand All @@ -25,16 +25,20 @@
- | |tg|
* - languages
- | |eng| |rus|
* - mirror
- | |gitlab|
* - funding
- | |ITMO| |NCCR|
.. end-badges
**FEDOT** - это open-source фреймворк для решения задач из области автоматизированного моделирования и машинного обучения (AutoML). Фреймворк распространяется под лицензией 3-Clause BSD.

FEDOT предоставляет возможность использовать генеративный дизайн для проектирования пайплайнов машинного обучения для различных реальных задач. Ядро фреймворка основано на эволюционном подходе и поддерживает классификацию (бинарную и мультиклассовую), регрессию, кластеризацию и задачи прогнозирования временных рядов.
FEDOT предоставляет возможность использовать генеративный дизайн для проектирования пайплайнов машинного обучения для различных реальных задач. Ядро фреймворка основано на эволюционном подходе и поддерживает классификацию (бинарную и мультиклассовую), регрессию, и задачи прогнозирования временных рядов.

.. image:: docs/fedot-workflow.png
:alt: Реализация процесса автоматического машинного обучения в FEDOT

Ключевой особенностью фреймворка является управление сложными взаимодействиями между различными частями пайплайнов. Они представлены в виде графика, который определяет связи между предварительной обработкой данных и блоками модели.
Ключевой особенностью фреймворка является управление сложными взаимодействиями между различными частями пайплайнов. Они представлены в виде графа, который определяет связи между предварительной обработкой данных и блоками модели.

Проект поддерживается исследовательской группой Natural Systems Simulation Lab, которая является частью `Национального центра когнитивных разработок Университета ИТМО <https://actcognitive.org/>`__.

Expand All @@ -45,23 +49,16 @@ FEDOT предоставляет возможность использовать
:target: http://www.youtube.com/watch?v=RjbuV6i6de4
:alt: Introducing Fedot

Особенности фреймворка
=====================

Основные особенности фреймворка:

- **Гибкость.** FEDOT очень гибкий: его можно использовать для автоматизации поиска решений для различных классов задач, типов данных и моделей;
- **Интеграция с другими библиотеками МО.** FEDOT поддерживает широко используемые библиотеки МО (Scikit-Learn, Can boost, Xgboost и т.д.) и позволяет интегрировать пользовательские библиотеки;
- **Расширяемость для новых видов задач.** Алгоритмы для оптимизации пайплайнов не зависят от вида данных и задач, однако можно использовать специальные шаблоны для определенных классов задач или типов данных (прогнозирование временных рядов, NLP, табличные данные и т.д.) для повышения эффективности;
- **Отсутствие ограничений.** Фреймворк универсальный и не ограничивается конкретными задачами моделирования, например, его можно использовать в ODE или PDE;
- **Поддержка настройки гиперпараметров.** Поддерживаются методы настройки гиперпараметров. Пользовательские методы также могут быть интегрированы в FEDOT;
- **Воспроизводимость.** Можно экспортировать получившиеся паплайны в формате JSON для воспроизводимости эксперимента.

По сравнению с другими фреймворками, FEDOT:
Концепции FEDOT'а
=================

- можно считать универсальным и расширяемым, т.к. у него нет ограничений для видов задач моделирования;
- позволяет управлять сложностью моделей и тем самым достигать лучших результатов;
- позволяет строить пайплайны состоящие из различных моделей, используя различные типы входных данных (тексты, изображения, таблицы и т.д.).
- **Гибкость.** FEDOT может быть использован для автоматизации поиска решений для различных `классов задач <https://fedot.readthedocs.io/en/master/introduction/fedot_features/main_features.html#involved-tasks>`_, `типов данных <https://fedot.readthedocs.io/en/master/introduction/fedot_features/automation_features.html#data-nature>`_ (тексты, изображения, таблицы), и `моделей <https://fedot.readthedocs.io/en/master/advanced/automated_pipelines_design.html>`_;
- **Расширяемость.** Алгоритмы для оптимизации пайплайнов не зависят от вида данных и задач, однако можно использовать `специальные стратегии <https://fedot.readthedocs.io/en/master/api/strategies.html>`_ для определенных классов задач или типов данных (прогнозирование временных рядов, NLP, табличные данные и т.д.) для повышения эффективности;
- **Интегрируемость.** FEDOT поддерживает широко используемые библиотеки МО (Scikit-learn, CatBoost, XGBoost и т.д.) и позволяет интегрировать `пользовательские библиотеки <https://fedot.readthedocs.io/en/master/api/strategies.html#module-fedot.core.operations.evaluation.custom>`_;
- **Тюнингуемость.** Поддерживаются различные методы `настройки гиперпараметров <https://fedot.readthedocs.io/en/master/advanced/hyperparameters_tuning.html>`_, включая пользовательские метрики оценивания и пространства параметров моделей;
- **Универсальность.** FEDOT `не ограничивается конкретными задачами моделирования <https://fedot.readthedocs.io/en/master/advanced/architecture.html>`_, например, его можно использовать в ODE или PDE;
- **Воспроизводимость.** Получаемые паплайны можно `экспортировать в формате JSON отдельно <https://fedot.readthedocs.io/en/master/advanced/pipeline_import_export.html>`_ или `вместе с входными данными в формате архива ZIP <https://fedot.readthedocs.io/en/master/advanced/project_import_export.html>`_, для воспроизведения экспериментов;
- **Кастомизируемость.** FEDOT позволяет `настраивать сложность моделей <https://fedot.readthedocs.io/en/master/introduction/fedot_features/automation_features.html#models-used>`_, тем самым, получать необходимое качество.

Установка
=========
Expand Down Expand Up @@ -182,11 +179,9 @@ Jupyter ноутбуки с примерами находятся в репоз
В настоящее время мы работаем над новыми функциями и пытаемся улучшить производительность и удобство использования FEDOT.
Основные текущие задачи и планы:

* Эффективные и готовые к использованию шаблоны пайплайнов для определенных задач и типов данных;
* Интеграция с GPU через Rapids framework;
* Альтернативные методы оптимизации пайплайнов с фиксированной формой;
* Интеграция с ML Flow для импорта и экспорта пайплайнов;
* Улучшение высокоуровневого API.
* Реализация методов и алгоритмов мета-обучения
* Повышение эффективности оптимизационного ядра GOLEM.
* Поддержка более сложных вариантов пайплайнов, особенно для задач прогнозирования временных рядов.


Кроме того, мы работаем над рядом исследовательских задач, связанных с бенчмаркингом прогнозирования временных рядов с помощью AutoML и мультимодального моделирования.
Expand All @@ -196,8 +191,6 @@ Jupyter ноутбуки с примерами находятся в репоз
Документация
============

Общее описание доступно в репозитории `FEDOT.Docs <https://itmo-nss-team.github.io/FEDOT.Miscellaneous>`__.

Подробное описание FEDOT API доступно в разделе `Read the Docs <https://fedot.readthedocs.io/en/latest/>`__.

Как участвовать
Expand All @@ -212,7 +205,9 @@ Jupyter ноутбуки с примерами находятся в репоз

Дополнительные проекты
======================
- Прототип web-GUI для FEDOT доступен в репозитории `FEDOT.WEB <https://github.com/aimclub/FEDOT.Web>`__.
- Оптимизационное ядро, вынесенное в библиотеку `GOLEM <https://github.com/aimclub/GOLEM/>`__.
- Прототип реализации Meta-AutoML - `MetaFEDOT <https://github.com/ITMO-NSS-team/MetaFEDOT>`__.
- Прототип web-GUI для FEDOT - `FEDOT.WEB <https://github.com/aimclub/FEDOT.Web>`__.


Контакты
Expand Down Expand Up @@ -258,6 +253,10 @@ Jupyter ноутбуки с примерами находятся в репоз
:alt: Build Status
:target: https://github.com/aimclub/FEDOT/actions

.. |integration| image:: https://github.com/aimclub/FEDOT/workflows/Integration/badge.svg?branch=master
:alt: Integration Build Status
:target: https://github.com/aimclub/FEDOT/actions/workflows/integration-build.yml

.. |coverage| image:: https://codecov.io/gh/aimclub/FEDOT/branch/master/graph/badge.svg
:alt: Coverage Status
:target: https://codecov.io/gh/aimclub/FEDOT
Expand All @@ -280,3 +279,15 @@ Jupyter ноутбуки с примерами находятся в репоз
.. |tg| image:: https://img.shields.io/badge/Telegram-Group-blue.svg
:target: https://t.me/FEDOT_helpdesk
:alt: Telegram Chat

.. |ITMO| image:: https://github.com/ITMO-NSS-team/open-source-ops/blob/add_badge/badges/ITMO_badge_rus.svg
:alt: Acknowledgement to ITMO
:target: https://itmo.ru

.. |NCCR| image:: https://github.com/ITMO-NSS-team/open-source-ops/blob/add_badge/badges/NCCR_badge.svg
:alt: Acknowledgement to NCCR
:target: https://actcognitive.org/

.. |gitlab| image:: https://camo.githubusercontent.com/9bd7b8c5b418f1364e72110a83629772729b29e8f3393b6c86bff237a6b784f6/68747470733a2f2f62616467656e2e6e65742f62616467652f6769746c61622f6d6972726f722f6f72616e67653f69636f6e3d6769746c6162
:alt: GitLab mirror for this repository
:target: https://gitlab.actcognitive.org/itmo-nss-team/FEDOT
Loading

0 comments on commit d821935

Please sign in to comment.