Hyperopt-это библиотека Python для последовательной и параллельной оптимизации по сравнению с неловкими поисковыми пространствами, которая может включать в себя реальные, дискретные и условные измерения.
Установите Hyperopt из PYPI
pip install hyperoptЧтобы запустить свой первый пример
# define an objective function
def objective ( args ):
case , val = args
if case == 'case 1' :
return val
else :
return val ** 2
# define a search space
from hyperopt import hp
space = hp . choice ( 'a' ,
[
( 'case 1' , 1 + hp . lognormal ( 'c1' , 0 , 1 )),
( 'case 2' , hp . uniform ( 'c2' , - 10 , 10 ))
])
# minimize the objective over the space
from hyperopt import fmin , tpe , space_eval
best = fmin ( objective , space , algo = tpe . suggest , max_evals = 100 )
print ( best )
# -> {'a': 1, 'c2': 0.01420615366247227}
print ( space_eval ( space , best ))
# -> ('case 2', 0.01420615366247227} Если вы разработчик и хотите внести свой вклад, пожалуйста, следуйте этим шагам.
Создайте учетную запись на GitHub, если у вас ее еще нет.
Вилка репозитория проекта: нажмите кнопку «Вилка» рядом с верхней частью страницы. Это создает копию кода в соответствии с вашей учетной записью в учетной записи пользователя GitHub. Для получения более подробной информации о том, как разобраться в хранилище, см. Это руководство.
Клонировать свою вилку репо с гипериоптом из вашей учетной записи GitHub на местный диск:
git clone https://github.com/ < github username > /hyperopt.git
cd hyperopt Создать среду с:
$ python3 -m venv my_env или $ python -m venv my_env или с conda:
$ conda create -n my_env python=3
Активируйте окружающую среду:
$ source my_env/bin/activate
или с Conda:
$ conda activate my_env
Установите зависимости для дополнительных (вам понадобится это для запуска Pytest): Linux/Unix: $ pip install -e '.[MongoTrials, SparkTrials, ATPE, dev]'
или Windows:
pip install -e .[MongoTrials]
pip install -e .[SparkTrials]
pip install -e .[ATPE]
pip install -e .[dev]Добавьте вверх по течению пульт. Это сохраняет ссылку на основной репозиторий Hyperopt, который вы можете использовать, чтобы сохранить синхронизированный репозиторий с последними изменениями:
$ git remote add upstream https://github.com/hyperopt/hyperopt.git
Теперь вы должны иметь рабочую установку Hyperopt, и ваш репозиторий GIT должным образом настроен. Следующие шаги теперь описывают процесс изменения кода и отправки PR:
Синхронизируйте свою главную ветвь с помощью главной ветви вверх по течению:
git checkout master
git pull upstream masterСоздайте филиал функций, чтобы удержать изменения в разработке:
$ git checkout -b my_feature
и начать вносить изменения. Всегда используйте филиал. Это хорошая практика, чтобы никогда не работать над главной ветвью!
Мы рекомендуем использовать Black для форматирования вашего кода перед отправкой PR, который автоматически устанавливается на шаге 6.
Затем, как только вы совершите, убедитесь, что git Hooks активированы (например, Pycharm имеет возможность опустить их). Это можно сделать с помощью предварительной коммиты, которая установлена автоматически на шаге 6, следующим образом:
pre-commit installЭто будет работать Black автоматически, когда вы совершаете все изменения, которые вы изменяете, в сборе, если есть какие -либо файлы, необходимые для затемнения. В случае, если черный не запускает следующее:
black {source_file_or_directory}Разработайте функцию на вашей филиале функции на вашем компьютере, используя GIT для управления версией. Когда вы закончите редактирование, добавьте измененные файлы, используя git add, а затем GIT Commit:
git add modified_files
git commit -m " my first hyperopt commit " Тесты для этого проекта используют Pytest и могут быть запускаются, вызывая pytest .
Запишите свои изменения в GIT, затем нажмите изменения в свою учетную запись GitHub:
git push -u origin my_featureОбратите внимание, что Dev -зависимости требуют Python 3.6+.
В настоящее время три алгоритма реализованы в Hyperopt:
Hyperopt был разработан для размещения алгоритмов байесовской оптимизации на основе гауссовых процессов и деревьев регрессии, но они в настоящее время не реализованы.
Все алгоритмы могут быть параллелизованы двумя способами, используя:
Документация Hyperopt можно найти здесь, но частично по -прежнему размещена на вики. Вот несколько быстрых ссылок на самые важные страницы:
См. Проекты, используя Hyperopt на вики.
Объявления
Дискуссия
Если вы используете это программное обеспечение для исследования, пожалуйста, сослатесь на статью (http://proceedings.mlr.press/v28/bergstra13.pdf) следующим образом:
Bergstra, J., Yamins, D., Cox, DD (2013). TPROC. 30-й Международной конференции по машинному обучению (ICML 2013), июнь 2013 г., с. I-115 до I-23.
Этот проект получил поддержку от