Часть 2: AutoML с генетическим программированием в TPOT

Автор Тигран Аветисян

В ЧАСТИ 1 нашей серии Сравнение AutoML Framework мы рассмотрели возможности AutoML платформы машинного обучения и анализа данных H2O.

Этот пост будет посвящен одному из конкурентов H2O — TPOT. В частности, в этом посте мы:

· Ознакомьтесь с возможностями AutoML TPOT.

· Проведите параллели между TPOT и H2O с точки зрения реализации, простоты использования, производительности и гибкости.

Мы обнаружили много больших различий между H2O и TPOT, так что это определенно будет интересное чтение! Давайте идти!

Что такое ТПОТ?

TPOT — это пакет автоматизированного машинного обучения, созданный на основе scikit-learn. Пакет основан на генетическом программировании, чтобы помочь пользователям определить лучший конвейер для выполнения поставленной задачи.

В отличие от многих других сред AutoML (например, H2O), TPOT может находить не только лучшие модели, но и лучшие конвейеры, состоящие из селекторов функций, препроцессоров и моделей ML/DL.

Графически, вот области, которые TPOT предназначен для автоматизации:

На более техническом уровне конвейеры TPOT выглядят примерно так:

Таким образом, при наличии чистых высококачественных данных TPOT может автоматически выполнять:

· Выбор признаков, предварительная обработка и построение.

· Выбор модели ML.

· Оптимизация гиперпараметров для моделей-кандидатов.

Внедрение AutoML в TPOT

По своей сути TPOT выполняет автоматическую оптимизацию гиперпараметров, т. е. просматривает ряд гиперпараметров и моделей, чтобы выбрать наилучшую комбинацию. Однако, в отличие от H2O, TPOT реализует некоторые приемы генетического программирования, а именно:

· Мутация, когда к конвейерам-кандидатам применяются случайные изменения.

· Crossover, когда конвейеры-кандидаты случайным образом меняются местами.

Благодаря этим приемам в процесс оптимизации конвейера вносится определенная степень случайности. Эта случайность может быть полезна, когда, например, модель застревает на каком-то уровне производительности и не может улучшиться только за счет настройки гиперпараметров.

Поскольку TPOT построен на scikit-learn, он обеспечивает доступ к большинству алгоритмов, реализованных в этом пакете. Помимо scikit-learn, TPOT также реализует классификационные нейронные сети в PyTorch и использует оценщики с ускорением на GPU в RAPIDS cuML и DMLC XGBoost.

Алгоритмы, протестированные TPOT AutoML, разбиты на конфигурации, которые, по мнению команды TPOT, хорошо подходят для оптимизации конвейера машинного обучения. Эти конфигурации следующие:

Если вы посмотрите исходный код этих конфигураций, вы увидите, что они по сути являются словарями, содержащими алгоритмы-кандидаты вместе с их диапазонами гиперпараметров. В качестве примера, вот фрагмент словаря конфигурации по умолчанию:

Каждая конфигурация содержит следующие классы алгоритмов:

· Классификаторы (DecisionTreeClassifier, KNeighborsClassifier, LinearSVC и другие) или регрессоры (ElasticNetCV, AdaBoostRegressor, LinearSVR и другие).

· Препроцессоры (например, Normalizer, MaxAbsScaler, MinMaxScaler или PCA).

· Селекторы функций (например, SelectFwe, SelectPercentile или VarianceThreshold).

В совокупности они называются «операторами» в TPOT.

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

Предпосылки для использования TPOT

В отличие от платформы H2O, которую мы рассмотрели в предыдущем посте, TPOT не требует настройки среды, отличной от Python. Вы настраиваете и используете TPOT почти так же, как и любой другой стандартный пакет Python — вам нужно только установить зависимости и сам TPOT.

Чтобы в полной мере использовать возможности TPOT, вам понадобятся NumPy, SciPy, scikit-learn, pandas, joblib и PyTorch. Вы можете установить их через pip:

pip install numpy scipy scikit-learn pandas joblib torch

Или в Анаконде:

conda install numpy scipy scikit-learn pandas joblib pytorch

Вам также понадобятся DEAP, update_checker, tqdm, stopit и xgboost:

pip install deap update_checker tqdm stopit xgboost

После установки зависимостей установите TPOT с помощью pip install tpotили conda install -c conda-forge tpot(при использовании Anaconda).

Использование TPOT для AutoML

Теперь, когда мы знаем, чего ожидать от TPOT, давайте посмотрим, что может сделать для нас его алгоритм AutoML!

Создание оптимизатора конвейера

Чтобы начать работу с TPOT AutoML, нам нужно импортировать ряд инструментов и пакетов:

Сразу после этого мы можем инициализировать наш оптимизатор конвейера. TPOT имеет два класса для AutoML:

· TPOTClassifier.

· TPOTRegressor.

В этом руководстве мы будем использовать TPOTClassifier . Большинство шагов, которые вы увидите, будут перенесены на TPOTRegressor.

Вот как мы инициализируем TPOTClassifier:

Обратите внимание на аргументы, которые мы передали TPOTClassifier:

· config_dict=”TPOT light”: указывает алгоритму использовать только ограниченный набор операторов, что ускоряет обучение.

· generations=5: устанавливает количество итераций равным 5 (по умолчанию 100). Большее количество поколений, скорее всего, даст лучшие результаты, но мы используем небольшое число, чтобы сократить время обучения.

· verbosity=2: позволяет нам видеть простой индикатор выполнения обучения.

Оптимизация в AutoML может занять очень много времени — от часов до дней, в зависимости от выбранной конфигурации TPOT и набора данных. TPOTClassifier и TPOTRegressor имеют два параметра, которые позволяют ограничить время оптимизации:

· generations.

· max_time_mins: устанавливает лимит времени оптимизации в минутах. По умолчанию max_time_mins не установлен. Если вы установите generations на None, вы должны установить max_time_mins.

Если установлены оба этих параметра, оптимизация будет останавливаться при выполнении одного из условий.

Некоторые другие важные параметры, о которых нужно знать, включают:

· population_size: количество индивидуумов (конвейеров), которые необходимо сохранить для оптимизации каждого поколения.

· offspring_size: количество дочерних конвейеров, создаваемых в каждой итерации.

· mutation_rate: определяет, сколько конвейеров будет случайным образом изменено в каждом поколении. mutation_rate имеет диапазон [0,0, 1,0] и значение по умолчанию 0,9.

· crossover_rate: определяет, сколько конвейеров должны обмениваться своими частями («размножаться») в каждом поколении. crossover_rate имеет диапазон [0,0, 1,0] и значение по умолчанию 0,1.

· scoring: строковое имя функции, которая будет использоваться для оценки качества каждого конвейера. По умолчанию используется «точность» для классификации и «neg_mean_squared_error» для регрессии. Вы также можете передать пользовательский вызываемый объект с сигнатурой scorer(estimator, X, y).

· cv: указывает стратегию перекрестной проверки, используемую при оценке конвейеров. По умолчанию cv настроен на выполнение 5-кратной перекрестной проверки.

· config_dict: словарь или строка, определяющая набор операторов и их гиперпараметров для оптимизации. По умолчанию конфигурации не указаны, и TPOT использует свою конфигурацию по умолчанию. Вы можете передать строковое имя встроенной конфигурации TPOT, которую вы хотите использовать, или, в качестве альтернативы, пользовательский словарь конфигурации.

· template:предопределенная структура конвейера, которую должен использовать алгоритм AutoML.

· use_dask: указывает, должен ли оптимизатор использовать Dask для распределенных вычислений.

· log_file: путь, по которому оптимизатор должен сохранять журналы выполнения.

Полное описание этих и других параметров см. в Справочнике API TPOT.

Здесь следует отметить одну вещь: количество оцениваемых конвейеров зависит от generations, population_size и offspring_size и равно:

население_размер + поколения x потомство_размер

Подготовка данных для обучения

Мы будем использовать набор данных о раке молочной железы из scikit-learn, чтобы продемонстрировать TPOT AutoML в действии. Этот набор данных готов к использованию сразу после установки и позволит нам сразу перейти к AutoML после нескольких подготовительных шагов.

Давайте загрузим данные и разделим их на обучающие и тестовые наборы:

Это почти все, что нам нужно сделать, чтобы запустить AutoML с TPOT!

Обучение и оценка нашего алгоритма AutoML

Чтобы начать оптимизацию конвейера, нам просто нужно вызвать fit метод pipeline_optimizer, передав функции и метки X_train и y_train as.

С нашими настройками детализации мы увидим лучший внутренний балл CV, достигнутый во время каждого поколения. В итоге мы также увидим лучший пайплайн:

Generation 1 - Current best internal CV score: 0.9648351648351647Generation 2 - Current best internal CV score: 0.9824175824175825Generation 3 - Current best internal CV score: 0.9824175824175825Generation 4 - Current best internal CV score: 0.9824175824175825Generation 5 - Current best internal CV score: 0.9846153846153847Best pipeline: LogisticRegression(RobustScaler(CombineDFs(input_matrix, input_matrix)), C=0.1, dual=False, penalty=l2)TPOTClassifier(config_dict='TPOT light', generations=5, verbosity=2)

Мы можем оценить лучшую производительность пайплайна на тестовом наборе, вызвав pipeline_optimizer.score:

0.9736842105263158

Вы также можете получить доступ к лучшему пайплайну через атрибут оптимизатора fitted_pipeline:

Pipeline(steps=[('featureunion',FeatureUnion(transformer_list=[('functiontransformer-1',FunctionTransformer(func=<function copy at 0x000001897760FCA0>)),('functiontransformer-2',FunctionTransformer(func=<function copy at 0x000001897760FCA0>))])),('robustscaler', RobustScaler()),('logisticregression', LogisticRegression(C=0.1))])

Как видите, pipeline_optimizer.fitted_pipeline содержит имена выбранных операторов вместе с их гиперпараметрами.

Если вы хотите проверить все обученные конвейеры, используйте pipeline_optimizer.evaluated_individuals_. Этот атрибутсодержит словарь всех проверенных конвейеров вместе с проверенными параметрами.

Экспорт лучшего кода конвейера

Если результаты обучения вас устраивают, вы можете экспортировать конвейер в виде кода Python с помощью этого оператора:

Как только вы запустите этот оператор, у вас будет скрипт Python, который выглядит примерно так:

Это настоящий код, с помощью которого мы можем построить лучший конвейер! Таким образом, экспортируя наиболее подходящий конвейер, вы получаете шаблон для перестроения и повторного обучения конвейера в производственной среде!

Автоматическая генерация кода действительно удобна и является отличной функцией, поскольку она устраняет догадки, позволяя развертывать конвейеры сразу после обучения!

Вывод с помощью конвейера TPOT

Прогнозирование с помощью пайплайнов TPOT делается так же, как и в scikit-learn — вы просто используете predict method вашего пайплайна или модели:

[1 0 1 0 0 1 0 1 1 0]

Обратите внимание, что с классификацией predict вы получите предсказанные классы ваших образцов. Если вы хотите получить вероятности, используйте predict_proba вместо этого, но имейте в виду, что некоторые конвейеры могут не иметь этого метода.

Создание пользовательских конфигураций TPOT

Если вы хотите протестировать определенный набор операторов, вы можете настроить собственный словарь конфигурации, а затем передать его в TPOTClassifierили TPOTRegressor. Вот как должны быть структурированы пользовательские словари конфигурации TPOT:

Как видите, кастомные конфиги — это вложенные словари, где:

  • Ключ первого уровня указывает путь и имя оператора.
  • Ключи второго уровня перечисляют желаемые гиперпараметры вместе с их значениями для оценки.

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

Вы также можете оценить нейронные сети PyTorch с помощью TPOT. Начиная с версии TPOT 0.11.7, были реализованы только сети классификатора PyTorch, так что имейте это в виду.

После того, как вы настроите собственную конфигурацию, передайте ее в параметр config_dict параметра TPOTClassifier или TPOTRegressor:

А затем обучите оптимизатор, как и раньше:

Установка пользовательских шаблонов пайплайна

Как упоминалось ранее, TPOT оценивает три типа операторов во время обучения:

  • Селекторы функций.
  • Особенности препроцессоров.
  • Классификаторы или регрессоры.

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

Пользовательские шаблоны создаются следующим образом:

Обратите внимание, что «преобразователь» — это ключевое слово для операторов препроцессора в TPOT.

Это всего лишь один пример пользовательского шаблона — вы можете попробовать добавить, удалить или изменить порядок шагов. Однако помните, что шаблон ДОЛЖЕН заканчиваться словами «Классификатор» или «Регрессор» в зависимости от типа модели, который вы хотите.

Вместо общего ключа (например, «Трансформатор» или «Селектор») вы также можете указать имя конкретного оператора, который хотите оценить:

Здесь мы указали «SelectFwe» вместо общего «Selector».

После того, как вы определили свой шаблон, вы передаете его параметру template параметра TPOTClassifier или TPOTRegressor:

AutoML с TPOT и H2O — как сравниваются фреймворки?

Теперь, когда мы знаем основы TPOT, мы, наконец, можем сравнить его с H2O.

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

  • Реализация и масштабируемость.
  • Простота настройки среды.
  • Производительность.
  • Простота настройки и использования AutoML.
  • Тонкая настройка конвейера AutoML.
  • Объясняемость модели.

Реализация и масштабируемость

TPOT и H2O заметно отличаются под капотом. Более конкретно:

  • TPOT построен на основе библиотеки машинного обучения scikit-learn.
  • H2O по своей сути написан на Java и делает упор на распределенные вычисления. H2O также может взаимодействовать с scikit-learn.

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

  • H2O, как указано в ЧАСТИ 1 этой серии, ориентирована на корпоративных пользователей и масштабируемость. Платформа построена на основе модели Map/Reduce для крупномасштабной обработки данных и использует Java Fork/Join для многопоточности. H2O также совместим с Hadoop и Spark — признанными и надежными платформами в мире больших данных.
  • TPOT опирается на сторонний пакет Dask для параллельных вычислений, а также наследует многопроцессорность от scikit-learn.

В целом, H2O, по-видимому, сильнее в области распределенных вычислений, поскольку использует более устоявшиеся структуры больших данных. Тем не менее, Dask тоже не дурак, поскольку он создан для масштабирования до тысяч узлов.

Если вам интересно, как Dask сравнивается со Spark, ознакомьтесь с этим сравнением, написанным командой Dask.

Простота настройки среды

Поскольку H2O написан на Java, на вашем компьютере должна быть настроена среда Java, даже если вы будете использовать пакеты R или Python для H2O. Кроме того, если вы хотите использовать Hadoop и/или Spark, они также должны быть установлены на вашем компьютере.

Напротив, TPOT следует процедуре установки стандартных пакетов Python — никаких дополнительных действий не требуется. Для распределенного обучения вам также понадобится Dask, который, опять же, настроен так же, как и другие пакеты Python.

Производительность

Мы проверили разницу в производительности между H2O и TPOT. Поскольку эти фреймворки имеют существенные различия в реализации, мы попытались стандартизировать тестирование, по возможности используя одни и те же параметры для алгоритмов AutoML.

В этом разделе описывается наша методология тестирования и результаты сравнения.

Методология тестирования

Мы провели ряд тестов:

  • Классификация и регрессия за фиксированный период времени (3 минуты). Это позволило нам увидеть результаты, достигнутые алгоритмами AutoML за тот же период времени.
  • Классификация и регрессия с ранней остановкой и в течение 60 минут (допуск к остановке 2 поколения/тренировочные раунды). Это позволило нам увидеть, насколько быстро алгоритмы AutoML нашли оптимальную модель/конвейер для заданного набора данных. Мы определили, что 60 минут достаточно, чтобы модели достигли оптимальных решений с нашей конкретной установкой.
  • Классификация и регрессия с ограниченным количеством конвейеров/моделей (50 конвейеров/моделей). Это позволило нам увидеть результаты, достигнутые после обучения только ограниченного числа пайплайнов или моделей. Обратите внимание, что H2O на самом деле обучила более 50 моделей, потому что сложенные модели не учитываются при расчете лимита моделей.

Для сравнения использовались следующие наборы данных:

  • Набор данных Scikit-learn по раку молочной железы для классификации.
  • Набор данных о диабете Scikit-learn для регрессии.

Мы сравнили производительность TPOT и H2O в двух областях:

  • Производительность в классификации и регрессии на контрольном наборе тестов.
  • Время завершить обучение. Это было измерено с помощью магической команды %%time. TPOT и H2O измеряют время обучения, но мы использовали внешний инструмент, чтобы свести на нет возможные различия в том, как фреймворки отслеживают время.

Показатели производительности, используемые для этих тестов, были следующими:

  • Классификация: область под ROC-кривой.
  • Регрессия: среднеквадратическая ошибка, или RMSE. Обратите внимание, что TPOT вычисляет отрицательное среднеквадратичное отклонение. На практике это не сильно влияет на результаты, но все же важно знать.

Для TPOT мы провели каждый из трех вышеприведенных тестов с двумя шаблонами:

  • По умолчанию, с разрешенными селекторами функций и препроцессорами.
  • «Классификатор» или «Регрессор», чтобы разрешить использование только классификаторов или регрессоров. Эти шаблоны были протестированы, потому что в H2O нет предварительной обработки и выбора функций, как в TPOT.

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

Обратите внимание, что мы сделали только один тестовый прогон для получения результатов. Было бы идеально провести несколько тестов и усреднить результаты, но это потребовало бы много времени.

При построении тестов мы также заметили, что разница в производительности между запусками была очень небольшой, хотя время обучения иногда заметно различалось.

Вот краткое изложение параметров, которые мы использовали для этих тестов:

Вы можете найти код для тестирования производительности в этом репозитории GitHub.

Результаты тестирования

Достигнутые результаты были следующими. Помните, что AUC и RMSE были рассчитаны на тестовом наборе.

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

Из этих результатов мы можем заметить следующее:

  • В целом H2O и TPOT достигли примерно одинаковой производительности, а различия между их оценками были незначительными (хотя TPOT в целом был впереди). Любая из этих платформ хорошо подходит для задач классификации и регрессии.
  • Когда указаны ограничения по времени, TPOT имеет тенденцию превышать лимит времени, в то время как H2O, как правило, не использует все предоставленное время. Это может быть связано с тем, что TPOT отдает приоритет выполнению полных поколений, в то время как H2O прекращает обучение, когда не остается достаточно времени для обучения другой модели.
  • Для обучения конвейеров TPOT требуется меньше времени, чем для моделей H2O. В результате за то же время TPOT оценивает гораздо больше моделей, чем H2O.
  • За одно и то же время и H2O, и TPOT достигают одинакового уровня производительности, даже несмотря на то, что TPOT удается оценить гораздо больше конвейеров.

Обратите внимание, что с другими наборами данных вы можете увидеть большие различия во времени обучения и оценках. Предварительная обработка данных также может выявить пробелы в производительности.

Простота настройки и использования AutoML

Следующая область, в которой мы должны сравнить TPOT и H2O, — это настройка алгоритма AutoML.

В целом, TPOT позволит вам настроить базовые конвейеры намного быстрее и с гораздо меньшим количеством кода. Чтобы продемонстрировать это, вот что вам нужно сделать, чтобы настроить оптимизатор AutoML с набором данных о раке молочной железы:

Коротко и аккуратно, правда?

Напротив, базовый AutoML с H2O потребует от вас написать что-то вроде этого:

H2O требует, чтобы вы написали больше кода и сделали больше шагов, при прочих равных условиях! Чтобы продемонстрировать это, вот сравнение шагов, которые необходимо предпринять для настройки модели в H2O и TPOT:

Как видите, в H2O есть три дополнительных шага:

  • Запуск кластера H2O.
  • Загрузка предварительно обработанных данных в H2OFrame objects.
  • Преобразование меток в категории для классификации.

Кроме того, TPOT может выполнять предварительную обработку признаков (включая PCA, масштабирование, нормализацию, агломерацию признаков и горячее кодирование) и выбор. Начиная с версии 3.34.0.3, H2O может выполнять только целевое кодирование. Это означает, что с H2O вам может потребоваться выполнить подготовку элементов вручную, тогда как TPOT при необходимости может сделать это автоматически.

Тонкая настройка конвейера AutoML

И H2O, и TPOT имеют преимущества, когда речь идет о точной настройке AutoML. На высоком уровне:

· TPOT обеспечивает детальный контроль над оцениваемыми операторами и их гиперпараметрами. У H2O нет простого способа настройки гиперпараметров модели-кандидата.

· H2O, в отличие от TPOT, позволяет настроить максимальное время выполнения для каждой модели, проще исключить алгоритмы и настроить допуск на остановку для обучения.

Есть и другие, более тонкие различия между возможностями AutoML фреймворков, но эти были самыми большими.

Потенциально дополнительная гибкость TPOT может позволить вам достичь большей производительности, чем с H2O. Например, с TPOT вы можете:

1. Запустите оптимизатор TPOT и определите лучший конвейер (например, DecisionTreeClassifier).

2. Возьмите этот лучший конвейер и переобучите его с более широким диапазоном гиперпараметров, возможно, добившись лучшей производительности.

С учетом сказанного, функции H2O также могут позволить вам достичь отличных результатов, поэтому TPOT не имеет здесь астрономического преимущества.

Объяснимость модели

H2O значительно упрощает изучение обученных моделей, чем TPOT.

Во-первых, H2O позволяет вам взглянуть на таблицу лидеров обученных моделей, чтобы сравнить их производительность. Если вы помните из нашего поста H2O, таблица лидеров выглядела так:

TPOT не предоставляет столь же удобного способа сравнения моделей — вы можете установить verbosity оценщика на 3и записать результаты в файл, но H2O упрощает задачу.

Во-вторых, H2O предоставляет подробные показатели производительности для своих моделей, включая результаты перекрестной проверки, матрицы путаницы, таблицы прироста/подъема, таблицы важности функций и многое другое. Чтобы получить их, вам просто нужно получить доступ к соответствующим атрибутам моделей. Вы также можете получить эти показатели с помощью TPOT и scikit-learn, но вам нужно будет вычислить их вручную, используя функции из scikit-learn или где-либо еще.

В-третьих, у H2O есть замечательный интерфейс объяснимости, который умеет:

  • Сделайте остаточный анализ.
  • Создание тепловых карт важности.
  • Показать вклад функций в прогнозы.
  • Вычислите корреляцию между прогнозами модели AutoML.

При всем при этом у TPOT есть одна действительно приятная функция, которой нет у H2O — автоматическая генерация конвейерного кода. Эта функция позволяет перестроить конвейер с нуля в другой среде для дальнейшего тестирования или производственного развертывания. Возможно, вам эта функция вообще не нужна, но факт остается фактом — H2O не предлагает ничего подобного.

Заключительные слова и следующие шаги

Итак, в целом, вот основные выводы, которые следует помнить при работе с H2O и TPOT:

  • H2O написан на Java, поэтому его легче интегрировать в среду Java.
  • TPOT построен на основе scikit-learn, что будет преимуществом для пользователей scikit-learn или сред, которые в значительной степени полагаются на scikit-learn.
  • TPOT и H2O достигают более или менее одинаковой производительности за один и тот же период времени, хотя TPOT удается оценить больше конвейеров.
  • В целом TPOT является более гибким, поскольку позволяет настраивать диапазоны гиперпараметров и решать, какие операторы должны и не должны быть в тестируемых пайплайнах.
  • TPOT оценивает не только модели ML/DL, но также селекторы функций и препроцессоры.
  • H2O имеет превосходный понятный интерфейс, который позволяет просматривать статистические свойства ваших данных и обученных моделей всего несколькими строками кода.

В конце концов, H2O и TPOT являются жизнеспособными вариантами для автоматизированного машинного обучения. Ваш выбор в конечном итоге сводится к двум вещам:

  • Среда, в которой вы собираетесь развертывать рабочий процесс AutoML.
  • Какая структура более привлекательна для вас, исходя из ваших потребностей и предпочтений в кодировании.

В ЧАСТИ 3 этой серии мы собираемся эмулировать пользовательский интерфейс H2O Flow для AutoML, но с TPOT. В частности, мы создадим веб-приложение, в котором мы сможем удобно выбирать параметры AutoML для TPOT и запускать его алгоритм AutoML с очень небольшим количеством кода!