Skip to content

Commit d8b3004

Browse files
committed
Pushing the docs for revision for branch: master, commit 4d6d749d87f725a9e1a2f3ace4d188c6d8603b0b
1 parent 8597180 commit d8b3004

File tree

151 files changed

+1960
-720
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+1960
-720
lines changed

_downloads/0125ffa429cf97cfbaa8c01b31f985c2/sampling_comparison.ipynb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
},
5656
"outputs": [],
5757
"source": [
58-
"from matplotlib.pyplot import cm\nimport time\nfrom skopt import gp_minimize, forest_minimize, dummy_minimize\n\ndef plot_convergence(result_list, true_minimum=None, yscale=None, title=\"Convergence plot\"):\n\n ax = plt.gca()\n ax.set_title(title)\n ax.set_xlabel(\"Number of calls $n$\")\n ax.set_ylabel(r\"$\\min f(x)$ after $n$ calls\")\n ax.grid()\n if yscale is not None:\n ax.set_yscale(yscale)\n colors = cm.hsv(np.linspace(0.25, 1.0, len(result_list)))\n\n for results, color in zip(result_list, colors):\n name, results = results\n n_calls = len(results[0].x_iters)\n iterations = range(1, n_calls + 1)\n mins = [[np.min(r.func_vals[:i]) for i in iterations]\n for r in results]\n ax.plot(iterations, np.mean(mins, axis=0), c=color, label=name)\n #ax.errorbar(iterations, np.mean(mins, axis=0),\n # yerr=np.std(mins, axis=0), c=color, label=name)\n if true_minimum:\n ax.axhline(true_minimum, linestyle=\"--\",\n color=\"r\", lw=1,\n label=\"True minimum\")\n ax.legend(loc=\"best\")\n return ax\n\n\ndef run(minimizer, initial_point_generator, init_point_gen_kwargs,\n n_random_starts=10, n_repeats=1):\n return [minimizer(func, bounds, n_random_starts=n_random_starts,\n initial_point_generator=initial_point_generator,\n init_point_gen_kwargs=init_point_gen_kwargs,\n n_calls=n_calls, random_state=n)\n for n in range(n_repeats)]\n\n\ndef run_measure(initial_point_generator,\n n_random_starts=10,\n init_point_gen_kwargs=None):\n start = time.time()\n # n_repeats must set to a much higher value to obtain meaningful results.\n n_repeats = 1\n res = run(gp_minimize, initial_point_generator, init_point_gen_kwargs,\n n_random_starts=n_random_starts, n_repeats=n_repeats)\n duration = time.time() - start\n # print(\"%s %s: %.2f s\" % (initial_point_generator,\n # str(init_point_gen_kwargs),\n # duration))\n return res"
58+
"from matplotlib.pyplot import cm\nimport time\nfrom skopt import gp_minimize, forest_minimize, dummy_minimize\n\ndef plot_convergence(result_list, true_minimum=None, yscale=None, title=\"Convergence plot\"):\n\n ax = plt.gca()\n ax.set_title(title)\n ax.set_xlabel(\"Number of calls $n$\")\n ax.set_ylabel(r\"$\\min f(x)$ after $n$ calls\")\n ax.grid()\n if yscale is not None:\n ax.set_yscale(yscale)\n colors = cm.hsv(np.linspace(0.25, 1.0, len(result_list)))\n\n for results, color in zip(result_list, colors):\n name, results = results\n n_calls = len(results[0].x_iters)\n iterations = range(1, n_calls + 1)\n mins = [[np.min(r.func_vals[:i]) for i in iterations]\n for r in results]\n ax.plot(iterations, np.mean(mins, axis=0), c=color, label=name)\n #ax.errorbar(iterations, np.mean(mins, axis=0),\n # yerr=np.std(mins, axis=0), c=color, label=name)\n if true_minimum:\n ax.axhline(true_minimum, linestyle=\"--\",\n color=\"r\", lw=1,\n label=\"True minimum\")\n ax.legend(loc=\"best\")\n return ax\n\n\ndef run(minimizer, initial_point_generator,\n n_initial_points=10, n_repeats=1):\n return [minimizer(func, bounds, n_initial_points=n_initial_points,\n initial_point_generator=initial_point_generator,\n n_calls=n_calls, random_state=n)\n for n in range(n_repeats)]\n\n\ndef run_measure(initial_point_generator, n_initial_points=10):\n start = time.time()\n # n_repeats must set to a much higher value to obtain meaningful results.\n n_repeats = 1\n res = run(gp_minimize, initial_point_generator,\n n_initial_points=n_initial_points, n_repeats=n_repeats)\n duration = time.time() - start\n # print(\"%s %s: %.2f s\" % (initial_point_generator,\n # str(init_point_gen_kwargs),\n # duration))\n return res"
5959
]
6060
},
6161
{
@@ -73,7 +73,7 @@
7373
},
7474
"outputs": [],
7575
"source": [
76-
"from functools import partial\nexample = \"hart6\"\n\nif example == \"hart6\":\n func = partial(hart6, noise_level=0.1)\n bounds = [(0., 1.), ] * 6\n true_minimum = -3.32237\n n_calls = 40\n n_random_starts = 10\n yscale = None\n title = \"Convergence plot - hart6\"\nelse:\n func = partial(branin, noise_level=2.0)\n bounds = [(-5.0, 10.0), (0.0, 15.0)]\n true_minimum = 0.397887\n n_calls = 30\n n_random_starts = 10\n yscale=\"log\"\n title = \"Convergence plot - branin\""
76+
"from functools import partial\nexample = \"hart6\"\n\nif example == \"hart6\":\n func = partial(hart6, noise_level=0.1)\n bounds = [(0., 1.), ] * 6\n true_minimum = -3.32237\n n_calls = 40\n n_initial_points = 10\n yscale = None\n title = \"Convergence plot - hart6\"\nelse:\n func = partial(branin, noise_level=2.0)\n bounds = [(-5.0, 10.0), (0.0, 15.0)]\n true_minimum = 0.397887\n n_calls = 30\n n_initial_points = 10\n yscale=\"log\"\n title = \"Convergence plot - branin\""
7777
]
7878
},
7979
{
@@ -84,7 +84,7 @@
8484
},
8585
"outputs": [],
8686
"source": [
87-
"# Random search\ndummy_res = run_measure( \"random\", n_random_starts)\nlhs_res = run_measure(\"lhs\", n_random_starts,\n {\"lhs_type\": \"classic\",\n \"criterion\": None})\nlhs2_res = run_measure(\"lhs\", n_random_starts,\n {\"criterion\": \"maximin\"})\nsobol_res = run_measure(\"sobol\", n_random_starts,\n {\"randomize\": False,\n \"min_skip\": 1, \"max_skip\": 100})\nhalton_res = run_measure(\"halton\", n_random_starts)\nhammersly_res = run_measure(\"hammersly\", n_random_starts)"
87+
"from skopt.utils import cook_initial_point_generator\n\n# Random search\ndummy_res = run_measure(\"random\", n_initial_points)\nlhs = cook_initial_point_generator(\n \"lhs\", lhs_type=\"classic\", criterion=None)\nlhs_res = run_measure(lhs, n_initial_points)\nlhs2 = cook_initial_point_generator(\"lhs\", criterion=\"maximin\")\nlhs2_res = run_measure(lhs2, n_initial_points)\nsobol = cook_initial_point_generator(\"sobol\", randomize=False,\n min_skip=1, max_skip=100)\nsobol_res = run_measure(sobol, n_initial_points)\nhalton_res = run_measure(\"halton\", n_initial_points)\nhammersly_res = run_measure(\"hammersly\", n_initial_points)\ngrid_res = run_measure(\"grid\", n_initial_points)"
8888
]
8989
},
9090
{
@@ -102,7 +102,7 @@
102102
},
103103
"outputs": [],
104104
"source": [
105-
"plot = plot_convergence([(\"random\", dummy_res),\n (\"lhs\", lhs_res),\n (\"lhs_maximin\", lhs2_res),\n (\"sobol\", sobol_res),\n (\"halton\", halton_res),\n (\"hammersly\", hammersly_res)],\n true_minimum=true_minimum,\n yscale=yscale,\n title=title)\n\nplt.show()"
105+
"plot = plot_convergence([(\"random\", dummy_res),\n (\"lhs\", lhs_res),\n (\"lhs_maximin\", lhs2_res),\n (\"sobol\", sobol_res),\n (\"halton\", halton_res),\n (\"hammersly\", hammersly_res),\n (\"grid\", grid_res)],\n true_minimum=true_minimum,\n yscale=yscale,\n title=title)\n\nplt.show()"
106106
]
107107
},
108108
{
@@ -127,7 +127,7 @@
127127
},
128128
"outputs": [],
129129
"source": [
130-
"lhs2_15_res = run_measure(\"lhs\", 12,\n {\"criterion\": \"maximin\"})\nlhs2_20_res = run_measure(\"lhs\", 14,\n {\"criterion\": \"maximin\"})\nlhs2_25_res = run_measure(\"lhs\", 16,\n {\"criterion\": \"maximin\"})"
130+
"lhs2 = cook_initial_point_generator(\"lhs\", criterion=\"maximin\")\nlhs2_15_res = run_measure(lhs2, 12)\nlhs2_20_res = run_measure(lhs2, 14)\nlhs2_25_res = run_measure(lhs2, 16)"
131131
]
132132
},
133133
{

_downloads/17233f04e84c7fb9fb96b6267eb354f3/initial-sampling-method-integer.ipynb

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"outputs": [],
2828
"source": [
29-
"print(__doc__)\nimport numpy as np\nnp.random.seed(1234)\nimport matplotlib.pyplot as plt\nfrom skopt.space import Space\nfrom skopt.sampler import Sobol\nfrom skopt.sampler import Lhs\nfrom skopt.sampler import Halton\nfrom skopt.sampler import Hammersly\nfrom scipy.spatial.distance import pdist"
29+
"print(__doc__)\nimport numpy as np\nnp.random.seed(1234)\nimport matplotlib.pyplot as plt\nfrom skopt.space import Space\nfrom skopt.sampler import Sobol\nfrom skopt.sampler import Lhs\nfrom skopt.sampler import Halton\nfrom skopt.sampler import Hammersly\nfrom skopt.sampler import Grid\nfrom scipy.spatial.distance import pdist"
3030
]
3131
},
3232
{
@@ -37,7 +37,7 @@
3737
},
3838
"outputs": [],
3939
"source": [
40-
"def plot_searchspace(x, title):\n fig, ax = plt.subplots()\n plt.plot(np.array(x)[:, 0], np.array(x)[:, 1], 'bo', label='samples')\n plt.plot(np.array(x)[:, 0], np.array(x)[:, 1], 'bs', markersize=40, alpha=0.5)\n # ax.legend(loc=\"best\", numpoints=1)\n ax.set_xlabel(\"X1\")\n ax.set_xlim([0, 5])\n ax.set_ylabel(\"X2\")\n ax.set_ylim([0, 5])\n plt.title(title)\n ax.grid(True)\n\n\nn_samples = 10\nspace = Space([(0, 5), (0, 5)])\nspace.set_transformer(\"normalize\")"
40+
"def plot_searchspace(x, title):\n fig, ax = plt.subplots()\n plt.plot(np.array(x)[:, 0], np.array(x)[:, 1], 'bo', label='samples')\n plt.plot(np.array(x)[:, 0], np.array(x)[:, 1], 'bs', markersize=40, alpha=0.5)\n # ax.legend(loc=\"best\", numpoints=1)\n ax.set_xlabel(\"X1\")\n ax.set_xlim([0, 5])\n ax.set_ylabel(\"X2\")\n ax.set_ylim([0, 5])\n plt.title(title)\n ax.grid(True)\n\n\nn_samples = 10\nspace = Space([(0, 5), (0, 5)])"
4141
]
4242
},
4343
{
@@ -202,6 +202,24 @@
202202
"hammersly = Hammersly()\nx = hammersly.generate(space.dimensions, n_samples)\nplot_searchspace(x, 'Hammersly')\nprint(\"empty fields: %d\" % (36 - np.size(np.unique(x, axis=0), 0)))\npdist_data.append(pdist(x).flatten())\nx_label.append(\"hammersly\")"
203203
]
204204
},
205+
{
206+
"cell_type": "markdown",
207+
"metadata": {},
208+
"source": [
209+
"Grid sampling\n-------------\n\n"
210+
]
211+
},
212+
{
213+
"cell_type": "code",
214+
"execution_count": null,
215+
"metadata": {
216+
"collapsed": false
217+
},
218+
"outputs": [],
219+
"source": [
220+
"grid = Grid(border=\"include\", use_full_layout=False)\nx = grid.generate(space.dimensions, n_samples)\nplot_searchspace(x, 'Grid')\nprint(\"empty fields: %d\" % (36 - np.size(np.unique(x, axis=0), 0)))\npdist_data.append(pdist(x).flatten())\nx_label.append(\"grid\")"
221+
]
222+
},
205223
{
206224
"cell_type": "markdown",
207225
"metadata": {},

_downloads/285ba9b2b7077a2b8a0045abf2f5d258/initial-sampling-method-integer.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from skopt.sampler import Lhs
3232
from skopt.sampler import Halton
3333
from skopt.sampler import Hammersly
34+
from skopt.sampler import Grid
3435
from scipy.spatial.distance import pdist
3536

3637
#############################################################################
@@ -50,7 +51,6 @@ def plot_searchspace(x, title):
5051

5152
n_samples = 10
5253
space = Space([(0, 5), (0, 5)])
53-
space.set_transformer("normalize")
5454

5555
#############################################################################
5656
# Random sampling
@@ -151,6 +151,17 @@ def plot_searchspace(x, title):
151151
pdist_data.append(pdist(x).flatten())
152152
x_label.append("hammersly")
153153

154+
#############################################################################
155+
# Grid sampling
156+
# -------------
157+
158+
grid = Grid(border="include", use_full_layout=False)
159+
x = grid.generate(space.dimensions, n_samples)
160+
plot_searchspace(x, 'Grid')
161+
print("empty fields: %d" % (36 - np.size(np.unique(x, axis=0), 0)))
162+
pdist_data.append(pdist(x).flatten())
163+
x_label.append("grid")
164+
154165
#############################################################################
155166
# Pdist boxplot of all methods
156167
# ----------------------------

_downloads/43e5f44bcbdd86676fcefed360c94018/initial-sampling-method.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from skopt.sampler import Lhs
3333
from skopt.sampler import Halton
3434
from skopt.sampler import Hammersly
35+
from skopt.sampler import Grid
3536
from scipy.spatial.distance import pdist
3637

3738
#############################################################################
@@ -50,7 +51,7 @@ def plot_searchspace(x, title):
5051
n_samples = 10
5152

5253
space = Space([(-5., 10.), (0., 15.)])
53-
space.set_transformer("normalize")
54+
# space.set_transformer("normalize")
5455

5556
#############################################################################
5657
# Random sampling
@@ -142,6 +143,16 @@ def plot_searchspace(x, title):
142143
pdist_data.append(pdist(x).flatten())
143144
x_label.append("hammersly")
144145

146+
#############################################################################
147+
# Grid sampling
148+
# -------------
149+
150+
grid = Grid(border="include", use_full_layout=False)
151+
x = grid.generate(space.dimensions, n_samples)
152+
plot_searchspace(x, 'Grid')
153+
pdist_data.append(pdist(x).flatten())
154+
x_label.append("grid")
155+
145156
#############################################################################
146157
# Pdist boxplot of all methods
147158
# ----------------------------

_downloads/55e499d257673f3a6610c4c61b7957e6/sampling_comparison.py

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,20 @@ def plot_convergence(result_list, true_minimum=None, yscale=None, title="Converg
7878
return ax
7979

8080

81-
def run(minimizer, initial_point_generator, init_point_gen_kwargs,
82-
n_random_starts=10, n_repeats=1):
83-
return [minimizer(func, bounds, n_random_starts=n_random_starts,
81+
def run(minimizer, initial_point_generator,
82+
n_initial_points=10, n_repeats=1):
83+
return [minimizer(func, bounds, n_initial_points=n_initial_points,
8484
initial_point_generator=initial_point_generator,
85-
init_point_gen_kwargs=init_point_gen_kwargs,
8685
n_calls=n_calls, random_state=n)
8786
for n in range(n_repeats)]
8887

8988

90-
def run_measure(initial_point_generator,
91-
n_random_starts=10,
92-
init_point_gen_kwargs=None):
89+
def run_measure(initial_point_generator, n_initial_points=10):
9390
start = time.time()
9491
# n_repeats must set to a much higher value to obtain meaningful results.
9592
n_repeats = 1
96-
res = run(gp_minimize, initial_point_generator, init_point_gen_kwargs,
97-
n_random_starts=n_random_starts, n_repeats=n_repeats)
93+
res = run(gp_minimize, initial_point_generator,
94+
n_initial_points=n_initial_points, n_repeats=n_repeats)
9895
duration = time.time() - start
9996
# print("%s %s: %.2f s" % (initial_point_generator,
10097
# str(init_point_gen_kwargs),
@@ -121,33 +118,34 @@ def run_measure(initial_point_generator,
121118
bounds = [(0., 1.), ] * 6
122119
true_minimum = -3.32237
123120
n_calls = 40
124-
n_random_starts = 10
121+
n_initial_points = 10
125122
yscale = None
126123
title = "Convergence plot - hart6"
127124
else:
128125
func = partial(branin, noise_level=2.0)
129126
bounds = [(-5.0, 10.0), (0.0, 15.0)]
130127
true_minimum = 0.397887
131128
n_calls = 30
132-
n_random_starts = 10
129+
n_initial_points = 10
133130
yscale="log"
134131
title = "Convergence plot - branin"
135132

136133
#############################################################################
137-
134+
from skopt.utils import cook_initial_point_generator
138135

139136
# Random search
140-
dummy_res = run_measure( "random", n_random_starts)
141-
lhs_res = run_measure("lhs", n_random_starts,
142-
{"lhs_type": "classic",
143-
"criterion": None})
144-
lhs2_res = run_measure("lhs", n_random_starts,
145-
{"criterion": "maximin"})
146-
sobol_res = run_measure("sobol", n_random_starts,
147-
{"randomize": False,
148-
"min_skip": 1, "max_skip": 100})
149-
halton_res = run_measure("halton", n_random_starts)
150-
hammersly_res = run_measure("hammersly", n_random_starts)
137+
dummy_res = run_measure("random", n_initial_points)
138+
lhs = cook_initial_point_generator(
139+
"lhs", lhs_type="classic", criterion=None)
140+
lhs_res = run_measure(lhs, n_initial_points)
141+
lhs2 = cook_initial_point_generator("lhs", criterion="maximin")
142+
lhs2_res = run_measure(lhs2, n_initial_points)
143+
sobol = cook_initial_point_generator("sobol", randomize=False,
144+
min_skip=1, max_skip=100)
145+
sobol_res = run_measure(sobol, n_initial_points)
146+
halton_res = run_measure("halton", n_initial_points)
147+
hammersly_res = run_measure("hammersly", n_initial_points)
148+
grid_res = run_measure("grid", n_initial_points)
151149

152150
#############################################################################
153151
# Note that this can take a few minutes.
@@ -157,7 +155,8 @@ def run_measure(initial_point_generator,
157155
("lhs_maximin", lhs2_res),
158156
("sobol", sobol_res),
159157
("halton", halton_res),
160-
("hammersly", hammersly_res)],
158+
("hammersly", hammersly_res),
159+
("grid", grid_res)],
161160
true_minimum=true_minimum,
162161
yscale=yscale,
163162
title=title)
@@ -172,12 +171,10 @@ def run_measure(initial_point_generator,
172171

173172
#############################################################################
174173
# Test with different n_random_starts values
175-
lhs2_15_res = run_measure("lhs", 12,
176-
{"criterion": "maximin"})
177-
lhs2_20_res = run_measure("lhs", 14,
178-
{"criterion": "maximin"})
179-
lhs2_25_res = run_measure("lhs", 16,
180-
{"criterion": "maximin"})
174+
lhs2 = cook_initial_point_generator("lhs", criterion="maximin")
175+
lhs2_15_res = run_measure(lhs2, 12)
176+
lhs2_20_res = run_measure(lhs2, 14)
177+
lhs2_25_res = run_measure(lhs2, 16)
181178

182179
#############################################################################
183180
# n_random_starts = 10 produces the best results
@@ -191,4 +188,4 @@ def run_measure(initial_point_generator,
191188
yscale=yscale,
192189
title=title)
193190

194-
plt.show()
191+
plt.show()
Binary file not shown.

0 commit comments

Comments
 (0)