Automated modeling and machine learning framework FEDOT
.. |eng| image:: https://img.shields.io/badge/lang-en-red.svg :target: /README_en.rst
.. |rus| image:: https://img.shields.io/badge/lang-ru-yellow.svg :target: /README.rst
.. image:: docs/fedot_logo.png :alt: Logo of FEDOT framework
.. start-badges .. list-table:: :stub-columns: 1
FEDOT - это open-source фреймворк для решения задач из области автоматизированного моделирования и машинного обучения (AutoML). Фреймворк распространяется под лицензией 3-Clause BSD.
FEDOT предоставляет возможность использовать генеративный дизайн для проектирования пайплайнов машинного обучения для различных реальных задач. Ядро фреймворка основано на эволюционном подходе и поддерживает классификацию (бинарную и мультиклассовую), регрессию, и задачи прогнозирования временных рядов.
.. image:: docs/fedot-workflow.png :alt: Реализация процесса автоматического машинного обучения в FEDOT
Ключевой особенностью фреймворка является управление сложными взаимодействиями между различными частями пайплайнов. Они представлены в виде графа, который определяет связи между предварительной обработкой данных и блоками модели.
Проект поддерживается исследовательской группой Natural Systems Simulation Lab, которая является частью Национального центра когнитивных разработок Университета ИТМО <https://actcognitive.org/>
__.
Более подробная информация о FEDOT доступна в следующем видео:
.. image:: https://res.cloudinary.com/marcomontalbano/image/upload/v1606396758/video_to_markdown/images/youtube--RjbuV6i6de4-c05b58ac6eb4c4700831b2b3070cd403.jpg :target: http://www.youtube.com/watch?v=RjbuV6i6de4 :alt: Introducing 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, табличные данные и т.д.) для повышения эффективности;пользовательские библиотеки <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>
_, включая пользовательские метрики оценивания и пространства параметров моделей;не ограничивается конкретными задачами моделирования <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>
_, для воспроизведения экспериментов;настраивать сложность моделей <https://fedot.readthedocs.io/en/master/introduction/fedot_features/automation_features.html#models-used>
_, тем самым, получать необходимое качество.Самый простой способ установить FEDOT - это использовать pip
:
.. code-block::
$ pip install fedot
Установка с дополнительными зависимостями для обработки изображений и текста, а также для DNN:
.. code-block::
$ pip install fedot[extra]
Информацию по доступным образам можно посмотреть здесь <https://github.com/aimclub/FEDOT/tree/master/docker/README.rst>
_.
FEDOT предоставляет высокоуровневый API, который удобно использовать. API может использоваться для задач классификации, регрессии и прогнозирования временных рядов. Чтобы использовать API, выполните следующие действия:
Fedot
.. code-block:: python
from fedot.api.main import Fedot
Fedot.fit()
запускает оптимизацию и возвращает получившийся составной пайплайн;Fedot.predict()
прогнозирует целевые значения для заданных входных данных, используя уже полученный пайплайн;Fedot.get_metrics()
оценивает качество предсказаний с использованием выбранных показателей.В качестве источников входных данных могут использоваться массивы NumPy, датафреймы Pandas и путь к файлу. В приведенном ниже примере x_train
, y_train
и x_test
являются numpy.ndarray()
:
.. code-block:: python
model = Fedot(problem='classification', timeout=5, preset='best_quality', n_jobs=-1)
model.fit(features=x_train, target=y_train)
prediction = model.predict(features=x_test)
metrics = model.get_metrics(target=y_test)
Более подробная информация об API доступна в документации <https://fedot.readthedocs.io/en/latest/api/api.html>
, а более сложные примеры показаны в этом разделе <https://github.com/aimclub/FEDOT/tree/master/examples/advanced>
.
Jupyter ноутбуки с примерами находятся в репозитории fedot-examples <https://github.com/ITMO-NSS-team/fedot-examples>
__. Там вы можете найти следующие руководства:
Intro to AutoML <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/1_intro_to_automl.ipynb>
__Intro to FEDOT functionality <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/2_intro_to_fedot.ipynb>
__Intro to time series forecasting with FEDOT <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/3_intro_ts_forecasting.ipynb>
__Advanced time series forecasting <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/4_auto_ts_forecasting.ipynb>
__Gap-filling in time series and out-of-sample forecasting <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/5_ts_specific_cases.ipynb>
__Hybrid modelling with custom models <https://github.com/ITMO-NSS-team/fedot-examples/blob/main/notebooks/latest/6_hybrid_modelling.ipynb>
__Версии ноутбуков выпускаются в соответствии с версиями релизов (версия по умолчанию - "latest").
Также доступны примеры на внешних платформах:
Kaggle: baseline for Microsoft Stock - Time Series Analysis task <https://www.kaggle.com/dreamlone/microsoft-stocks-price-prediction-automl>
__Расширенные примеры:
binary classification task <https://github.com/aimclub/FEDOT/blob/master/cases/credit_scoring/credit_scoring_problem.py>
__random process regression <https://github.com/aimclub/FEDOT/blob/master/cases/metocean_forecasting_problem.py>
__natural language preprocessing <https://github.com/aimclub/FEDOT/blob/master/cases/spam_detection.py>
__multi-modal data <https://github.com/aimclub/FEDOT/blob/master/examples/advanced/multimodal_text_num_example.py>
__Также доступно несколько видео уроков <https://www.youtube.com/playlist?list=PLlbcHj5ytaFUjAxpZf7FbEaanmqpDYhnc>
__ (на русском).
Мы опубликовали несколько постов о различных аспектах фреймворка:
На английском:
towardsdatascience.com <https://towardsdatascience.com/how-automl-helps-to-create-composite-ai-f09e05287563>
__towardsdatascience.com <https://towardsdatascience.com/automl-for-time-series-definitely-a-good-idea-c51d39b2b3f>
__towardsdatascience.com <https://towardsdatascience.com/automl-for-time-series-advanced-approaches-with-fedot-framework-4f9d8ea3382c>
__towardsdatascience.com <https://towardsdatascience.com/winning-a-flood-forecasting-hackathon-with-hydrology-and-automl-156a8a7a4ede>
__towardsdatascience.com <https://towardsdatascience.com/clean-automl-for-dirty-data-how-and-why-to-automate-preprocessing-of-tables-in-machine-learning-d79ac87780d3>
__youtube.com <https://www.youtube.com/watch?v=9Rhqcsrolb8&ab_channel=NSS-Lab>
__towardsdatascience.com <https://towardsdatascience.com/hyperparameters-tuning-for-machine-learning-model-ensembles-8051782b538b>
__На русском:
habr.com <https://habr.com/ru/company/spbifmo/blog/558450>
__habr.com <https://habr.com/ru/post/559796/>
__habr.com <https://habr.com/ru/post/577886/>
__ODS blog <https://habr.com/ru/company/ods/blog/657525/>
__presentation <https://docs.yandex.ru/docs/view?url=ya-disk-public%3A%2F%2Fi27LScu3s3IIHDzIXt9O5EiEAMl6ThY6QLu3X1oYH%2FFiAl%2BLcNp4O4yTSYd2gRZnW5aDQ4kMZEXE%2BwNjbq78ug%3D%3D%3A%2F%D0%94%D0%B5%D0%BD%D1%8C%201%2F4.%D0%A1%D0%B8%D0%BD%D0%BD%D0%B0%D0%BA%D1%81%2F9.Open%20source-%D1%82%D1%80%D0%B8%D0%B1%D1%83%D0%BD%D0%B0_HL_FEDOT.pptx&name=9.Open%20source-%D1%82%D1%80%D0%B8%D0%B1%D1%83%D0%BD%D0%B0_HL_FEDOT.pptx>
__habr.com <https://habr.com/ru/post/672486/>
__На китайском:
youtube.com <https://www.youtube.com/watch?v=PEET0EbCSCY>
__Последняя стабильная версия FEDOT находится в ветке master <https://github.com/aimclub/FEDOT/tree/master>
__.
Репозиторий включает в себя следующие директории:
core <https://github.com/aimclub/FEDOT/tree/master/fedot/core>
__ находятся основные классы и скрипты. Это ядро фреймворка FEDOT.examples <https://github.com/aimclub/FEDOT/tree/master/examples>
__ собраны несколько примеров использования, с которых можно начать знакомство с FEDOT.test <https://github.com/aimclub/FEDOT/tree/master/test>
__.docs <https://github.com/aimclub/FEDOT/tree/master/docs>
__.В настоящее время мы работаем над новыми функциями и пытаемся улучшить производительность и удобство использования FEDOT. Основные текущие задачи и планы:
Кроме того, мы работаем над рядом исследовательских задач, связанных с бенчмаркингом прогнозирования временных рядов с помощью AutoML и мультимодального моделирования.
Наша научно-исследовательская команда открыта для сотрудничества с другими научными коллективами, а также с партнерами из индустрии.
Подробное описание FEDOT API доступно в разделе Read the Docs <https://fedot.readthedocs.io/en/latest/>
__.
репозитории <https://github.com/aimclub/FEDOT/blob/master/docs/source/contribution.rst>
__.Мы благодарны контрибьютерам за их важный вклад, а участникам многочисленных конференций и семинаров - за их ценные советы и предложения.
GOLEM <https://github.com/aimclub/GOLEM/>
__.MetaFEDOT <https://github.com/ITMO-NSS-team/MetaFEDOT>
__.FEDOT.WEB <https://github.com/aimclub/FEDOT.Web>
__.Telegram-канал <https://t.me/FEDOT_helpdesk>
_ для решения проблем и ответов на вопросы о FEDOTNatural System Simulation <https://itmo-nss-team.github.io/>
_Анна Калюжная <https://scholar.google.com/citations?user=bjiILqcAAAAJ&hl=ru>
_, руководитель ([email protected])Новости <https://t.me/NSS_group>
_Youtube канал <https://www.youtube.com/channel/UC4K9QWaEUpT_p3R4FeDp5jA>
_Национальный центр когнитивных разработок Университета ИТМО <https://actcognitive.org/>
_@article{nikitin2021automated, title = {Automated evolutionary approach for the design of composite machine learning pipelines}, author = {Nikolay O. Nikitin and Pavel Vychuzhanin and Mikhail Sarafanov and Iana S. Polonskaia and Ilia Revin and Irina V. Barabanova and Gleb Maximov and Anna V. Kalyuzhnaya and Alexander Boukhanovsky}, journal = {Future Generation Computer Systems}, year = {2021}, issn = {0167-739X}, doi = {https://doi.org/10.1016/j.future.2021.08.022}}
@inproceedings{polonskaia2021multi, title={Multi-Objective Evolutionary Design of Composite Data-Driven Models}, author={Polonskaia, Iana S. and Nikitin, Nikolay O. and Revin, Ilia and Vychuzhanin, Pavel and Kalyuzhnaya, Anna V.}, booktitle={2021 IEEE Congress on Evolutionary Computation (CEC)}, year={2021}, pages={926-933}, doi={10.1109/CEC45853.2021.9504773}}
Другие статьи доступны на ResearchGate <https://www.researchgate.net/project/Evolutionary-multi-modal-AutoML-with-FEDOT-framework>
_.
.. |docs| image:: https://readthedocs.org/projects/ebonite/badge/?style=flat :target: https://fedot.readthedocs.io/en/latest/ :alt: Documentation Status
.. |build| image:: https://github.com/aimclub/FEDOT/actions/workflows/unit-build.yml/badge.svg :alt: Build Status :target: https://github.com/aimclub/FEDOT/actions/workflows/unit-build.yml
.. |integration| image:: https://github.com/aimclub/FEDOT/actions/workflows/integration-build.yml/badge.svg :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
.. |pypi| image:: https://badge.fury.io/py/fedot.svg :alt: Supported Python Versions :target: https://badge.fury.io/py/fedot
.. |python| image:: https://img.shields.io/pypi/pyversions/fedot.svg :alt: Supported Python Versions :target: https://img.shields.io/pypi/pyversions/fedot
.. |license| image:: https://img.shields.io/github/license/aimclub/FEDOT :alt: Supported Python Versions :target: https://github.com/aimclub/FEDOT/blob/master/LICENSE.md
.. |downloads_stats| image:: https://static.pepy.tech/personalized-badge/fedot?period=total&units=international_system&left_color=grey&right_color=brightgreen&left_text=Downloads :target: https://pepy.tech/project/fedot
.. |tg| image:: https://img.shields.io/badge/Telegram-Group-blue.svg :target: https://t.me/FEDOT_helpdesk :alt: Telegram Chat
.. |ITMO| image:: https://raw.githubusercontent.com/aimclub/open-source-ops/43bb283758b43d75ec1df0a6bb4ae3eb20066323/badges/ITMO_badge_rus.svg :alt: Acknowledgement to ITMO :target: https://itmo.ru
.. |NCCR| image:: https://raw.githubusercontent.com/aimclub/open-source-ops/43bb283758b43d75ec1df0a6bb4ae3eb20066323/badges/NCCR_badge.svg :alt: Acknowledgement to NCCR :target: https://actcognitive.org/
.. |gitlab| image:: https://img.shields.io/badge/mirror-GitLab-orange :alt: GitLab mirror for this repository :target: https://gitlab.actcognitive.org/itmo-nss-team/FEDOT