def __init__(self, param_priors, param_hyperparameters, n_iter):
self.hyperparameters = collections.OrderedDict(sorted(param_hyperparameters.items()))
self.n_iter = n_iter
self.param_index = []
self.distributions = {}
kde_data = None
for name, hyperparameter in param_hyperparameters.items():
if isinstance(hyperparameter, UniformFloatHyperparameter):
self.param_index.append(name)
data = np.array(param_priors[name])
if hyperparameter.log:
data = np.log2(data)
if kde_data is None:
kde_data = np.reshape(np.array(data), (1, len(data)))
else:
reshaped = np.reshape(np.array(data), (1, len(data)))
kde_data = np.concatenate((kde_data, reshaped), axis=0)
elif isinstance(hyperparameter, UniformIntegerHyperparameter):
raise ValueError('UniformIntegerHyperparameter not yet implemented:', name)
elif isinstance(hyperparameter, CategoricalHyperparameter):
self.distributions[name] = openmlpimp.utils.rv_discrete_wrapper(name, param_priors[name])
else:
raise ValueError()
if len(self.param_index) < 2:
raise ValueError('Need at least 2 float hyperparameters')
self.kde = gaussian_kde(kde_data)
评论列表
文章目录