iOpt - фреймворк с открытым исходным кодом для автоматического выбора значений параметров как для математических моделей сложных промышленных процессов, так и для используемых в промышленности методов ИИ и МО. Фреймворк распространяется под лицензией 3-Clause BSD.
- Автоматический выбор значений параметров математических моделей и методов ИИ и МО, используемых в промышленности.
- Интеллектуальное управление процессом выбора оптимальных параметров для промышленных задач.
- Интеграция с внешними библиотеками или фреймворками искусственного интеллекта и машинного обучения, а также предметными моделями.
- Автоматизация предварительного анализа исследуемых моделей, например, выделение различных классов зависимостей модели от разных групп параметров.
- Визуализация процесса выбора оптимальных параметров.
git clone https://github.com/UNN-ITMM-Software/iOpt
cd iOpt
pip install virtualenv
virtualenv ioptenv
source ioptenv/bin/activate
python setup.py install
git clone https://github.com/UNN-ITMM-Software/iOpt
cd iOpt
pip install virtualenv
virtualenv ioptenv
ioptenv\Scripts\activate.bat
python setup.py install
Использование фреймворка iOpt для минимизации функции Растригина.
from problems.rastrigin import Rastrigin
from iOpt.solver import Solver
from iOpt.solver_parametrs import SolverParameters
from iOpt.method.listener import StaticNDPaintListener, ConsoleFullOutputListener
from subprocess import Popen, PIPE, STDOUT
if __name__ == "__main__":
"""
Минимизация функции Растригина и визуализация
"""
# Создание тестовой задачи
problem = Rastrigin(2)
# Установка параметров поиска оптимального решения
params = SolverParameters(r=2.5, eps=0.01, iters_limit=300, refine_solution=True)
# Создание решателя
solver = Solver(problem, parameters=params)
# Вывод результатов на консоль в процессе решения
cfol = ConsoleFullOutputListener(mode='full')
solver.add_listener(cfol)
# 3D визуализация по окончании решения
spl = StaticNDPaintListener("rastrigin.png", "output", vars_indxs=[0, 1], mode="surface", calc="interpolation")
solver.add_listener(spl)
# Запуск решения задачи
sol = solver.solve()
Продемонстрируем как использовать iOpt для настройки гиперпараметров модели машинного обучения. В метода опорных векторов (SVC) найдем оптимальные вещественные гиперпараметры (C - параметр регуляризации, gamma - коэффициент ядра) для решения задачи классификации рака молочной железы (подробное описание данных).
import numpy as np
from sklearn.utils import shuffle
from sklearn.datasets import load_breast_cancer
from iOpt.method.listener import StaticNDPaintListener, AnimationNDPaintListener, ConsoleFullOutputListener
from iOpt.solver import Solver
from iOpt.solver_parametrs import SolverParameters
from examples.Machine_learning.SVC._2D.Problems import SVC_2d
def load_breast_cancer_data():
dataset = load_breast_cancer()
x_raw, y_raw = dataset['data'], dataset['target']
inputs, outputs = shuffle(x_raw, y_raw ^ 1, random_state=42)
return inputs, outputs
if __name__ == "__main__":
x, y = load_breast_cancer_data()
regularization_value_bound = {'low': 1, 'up': 6}
kernel_coefficient_bound = {'low': -7, 'up': -3}
problem = SVC_2d.SVC_2D(x, y, regularization_value_bound, kernel_coefficient_bound)
method_params = SolverParameters(r=np.double(3.0), iters_limit=100)
solver = Solver(problem, parameters=method_params)
apl = AnimationNDPaintListener("svc2d_anim.png", "output", vars_indxs=[0, 1], to_paint_obj_func=False)
solver.add_listener(apl)
spl = StaticNDPaintListener("svc2d_stat.png", "output", vars_indxs=[0, 1], mode="surface", calc="interpolation")
solver.add_listener(spl)
cfol = ConsoleFullOutputListener(mode='full')
solver.add_listener(cfol)
solver_info = solver.solve()
Последняя стабильная версия iOpt находится в ветке main.
Репозиторий включает в себя следующие директории::
- Пакет iOpt содержит ядро фреймворка в виде классов на языке Python.
- Пакет examples содержит примеры применения фреймворка для модельных и прикладных задач.
- Модульные тесты размещены в каталоге test.
- Исходные файлы документации находятся в каталоге docs.
Подробное описание API фреймворка iOpt доступно в разделе Read the Docs.
Исследование проводится при поддержке Исследовательского центра сильного искусственного интеллекта в промышленности Университета ИТМО в рамках мероприятия программы центра: Фреймворк методов интеллектуальной эвристической оптимизации.