Я работаю над использованием hyperopt для настройки моей модели ML, но у меня проблемы с использованием qloguniform в качестве пространства поиска.Я привожу пример из официальной вики и изменил пространство поиска.
import pickle
import time
#utf8
import pandas as pd
import numpy as np
from hyperopt import fmin, tpe, hp, STATUS_OK, Trials
def objective(x):
return {
'loss': x ** 2,
'status': STATUS_OK,
# -- store other results like this
'eval_time': time.time(),
'other_stuff': {'type': None, 'value': [0, 1, 2]},
# -- attachments are handled differently
'attachments':
{'time_module': pickle.dumps(time.time)}
}
trials = Trials()
best = fmin(objective,
space=hp.qloguniform('x', np.log(0.001), np.log(0.1), np.log(0.001)),
algo=tpe.suggest,
max_evals=100,
trials=trials)
pd.DataFrame(trials.trials)
Но появляется следующая ошибка.
ValueError: ('отрицательный аргумент в lognormal_cdf', массив ([- 3.45387764, -3.45387764, -3.45387764, -3.45387764, -3.45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764, -3,45387764,-3.45387764, -3.45387764, -3.45387764]))
Я пробовал без преобразования журнала, как показано ниже, но выходные значения оказываются преобразованием журнала (например, 1.017,1.0008), 1.02456), что неверно.Это соответствует документации.
hp.qloguniform('x', 0.001,0.1, 0.001)
Спасибо