From f3663b8d9aff84da3d5564f23140cd6c101ed5b5 Mon Sep 17 00:00:00 2001 From: bbstats <81766437+bbstats@users.noreply.github.com> Date: Tue, 2 May 2023 13:51:48 -0400 Subject: [PATCH 1/3] add diff_evo wrapper --- src/datascitools/optimization.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/datascitools/optimization.py diff --git a/src/datascitools/optimization.py b/src/datascitools/optimization.py new file mode 100644 index 0000000..3c181c0 --- /dev/null +++ b/src/datascitools/optimization.py @@ -0,0 +1,22 @@ +from typing import List +from dataclasses import dataclass +from scipy.optimize import differential_evolution + +@dataclass +class EvoVar: + varname : str + init : float + bounds : tuple + +def diff_evo(loss_fn : callable, params : List): + varnames = [p.varname for p in params] + x0 = tuple([p.init for p in params]) + bounds = [p.bounds for p in params] + opt_val = differential_evolution(loss_fn, x0=x0, bounds=bounds) + return {k:v for k,v in zip(varnames, opt_val.x)} + +# b = EvoVar(varname='b', init=-0.4, bounds=(-4,4)) +# c = EvoVar(varname='c', init=23_000, bounds=(5_000,50_000)) +# w = EvoVar(varname='w', init=0.2, bounds=(0.001,0.999)) +# s = EvoVar(varname='s', init=0.5, bounds=(0.1,2)) +# best_params = diff_evo(get_weighted_loss_wrapper, [b,c,w,s]) \ No newline at end of file From 3bd050075939eb3cc5dd6eeeb8a380413b05a4fe Mon Sep 17 00:00:00 2001 From: bbstats <81766437+bbstats@users.noreply.github.com> Date: Tue, 2 May 2023 13:51:55 -0400 Subject: [PATCH 2/3] update dependencies --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d7634c3..147883b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,8 @@ dependencies = [ "catboost", "BorutaShap", "dataclasses", - "tqdm" + "tqdm", + "scipy" ] [project.urls] From b0fabdb03d6aa92a53f2c1bcf727558076e2a81d Mon Sep 17 00:00:00 2001 From: bbstats <81766437+bbstats@users.noreply.github.com> Date: Tue, 2 May 2023 13:53:55 -0400 Subject: [PATCH 3/3] appeasing the python gods --- src/datascitools/optimization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datascitools/optimization.py b/src/datascitools/optimization.py index 3c181c0..ff842fc 100644 --- a/src/datascitools/optimization.py +++ b/src/datascitools/optimization.py @@ -13,7 +13,7 @@ def diff_evo(loss_fn : callable, params : List): x0 = tuple([p.init for p in params]) bounds = [p.bounds for p in params] opt_val = differential_evolution(loss_fn, x0=x0, bounds=bounds) - return {k:v for k,v in zip(varnames, opt_val.x)} + return dict(zip(varnames, opt_val.x)) # b = EvoVar(varname='b', init=-0.4, bounds=(-4,4)) # c = EvoVar(varname='c', init=23_000, bounds=(5_000,50_000))