In [150]:
from bayes_opt import BayesianOptimization
from bayes_opt.observer import JSONLogger
from bayes_opt.event import Events
from bayes_opt.util import load_logs
In [151]:
import numpy as np
import sys
import json
import matplotlib.pyplot as plt
from matplotlib import gridspec
from matplotlib.backends.backend_pdf import PdfPages
In [152]:
sys.path.insert(0, "../python")
import BayesianOptimizationCustom as bo
In [153]:
optimizer_custum = bo.BayesianOptimizationCustom('../config/params_type.json',
'../config/params_init_probe.json',
None,
'output',
'output',
10,
'../config/params_type.json',
1)
params_range = optimizer_custum.ParamsRange()
params_range
Out[153]:
In [156]:
optimizer = BayesianOptimization(
f=None,
pbounds=params_range,
random_state=1, verbose=1
)
# New optimizer is loaded with previously seen points
load_logs(optimizer, logs=["../python/09_12_2019_v22_opt.json"])
Out[156]:
In [157]:
optimizer._gp.fit(optimizer._space.params, optimizer._space.target)
Out[157]:
In [158]:
optimizer._space.params.shape
Out[158]:
In [159]:
optimizer._space.params.shape
Out[159]:
In [160]:
optimizer._space.keys
Out[160]:
In [161]:
# params = {'activation_dense_post' : 0, 'activation_dense_pre': 1, 'dropout_rate_den_layers_post' : 2,
# 'dropout_rate_den_layers_pre' : 3, 'dropout_rate_rnn': 4, 'learning_rate_exp': 5, 'num_den_layers_post': 6,
# 'num_den_layers_pre': 7, 'num_rnn_layers': 8, 'num_units_den_layers_post': 9,
# 'num_units_den_layers_pre': 10, 'num_units_rnn_layer': 11, 'optimizers': 12,
# 'rnn_type': 13}
params = {'learning_rate_exp' : 0,
'num_den_layers_post' : 1,
'num_den_layers_pre': 2,
'num_rnn_layers': 3,
'num_units_den_layers_post': 4,
'num_units_den_layers_pre': 5,
'num_units_rnn_layer' : 6
}
In [162]:
params_pos = {}
for pos in range(len(optimizer._space.target)):
params_pos[optimizer._space.target[pos]] = pos
In [163]:
order_targets = optimizer._space.target
order_targets = -np.sort(-order_targets)
best_10_order_targets = order_targets[:10]
print(best_10_order_targets)
In [164]:
optimizer._space.target.argmax()
Out[164]:
In [165]:
best_params = []
for point in best_10_order_targets:
print(params_pos[point])
best_params.append(optimizer._space.params[params_pos[point]])
# max_point
In [166]:
# optimizer._space.params[1]
In [167]:
params_score = {}
# params = []
for n in range(10):
params_score[n] = best_params[n]
In [169]:
# with open('10_best_params', 'w') as f:
# f.write(json.dumps(best_params, indent=4))
In [170]:
max_point = optimizer._space.params[optimizer._space.target.argmax()]
max_point
Out[170]:
In [171]:
best_params[n].shape[0]
Out[171]:
In [172]:
def CreatePlots(max_point, var, pdf, n_bin, plot_title):
var_points = np.linspace(params_range[var][0], params_range[var][1], 1000)#np.array([0, 1, 2, 3, 4, 5])
x = np.zeros((var_points.shape[0], max_point.shape[0]))
for n in range(x.shape[0]):
x[n, :] = max_point[:]
x[n, params[var]] = var_points[n]
# print(x[:,0])
mu, sigma = optimizer._gp.predict(x, return_std=True)
max_idx = np.argmax(mu)
print('{} max: mu={}, val={}'.format(var, mu[max_idx], x[max_idx, params[var]]))
# print('mu:', mu)
# print('sigma:', sigma)
# print('2 * sigma:', 2 * sigma)
fig = plt.figure(figsize=(7, 6))
ax = plt.gca()
ax.plot(var_points, mu, '--', color='k', label='Prediction')
ax.fill(np.concatenate([var_points, var_points[::-1]]),
np.concatenate([mu - 2 * sigma, (mu + 2 * sigma)[::-1]]),
alpha=.6, fc='c', ec='None', label='95% confidence interval', color='yellow')
ax.fill(np.concatenate([var_points, var_points[::-1]]),
np.concatenate([mu - 1 * sigma, (mu + 1 * sigma)[::-1]]),
alpha=.6, fc='c', ec='None', label='68% confidence interval', color='green')
ax.set_ylabel('Purity')
ax.set_xlabel(plot_title)
plt.title(plot_title)
ax.legend(loc=2, bbox_to_anchor=(1.01, 1), borderaxespad=0.)
plt.draw()
plt.show()
pdf.savefig(fig, bbox_inches='tight')
plt.close()
In [173]:
for n in range(1):
with PdfPages('opt_plots_param_number_09_12_{}.pdf'.format(n)) as pdf:
for key,values in params_range.items():
CreatePlots(best_params[n], key, pdf, 'n_bin', key)