как извлечь выбранный гиперпараметр из гиперопции hp.choice? - PullRequest
0 голосов
/ 23 января 2020

Я использую hyperopt, чтобы найти оптимальные гиперпараметры для catboost регрессора. Я следую этому руководству . соответствующая часть:


ctb_reg_params = {
    'learning_rate':     hp.choice('learning_rate',     np.arange(0.05, 0.31, 0.05)),
}
ctb_fit_params = {
    'verbose': False
}
ctb_para = dict()
ctb_para['reg_params'] = ctb_reg_params
ctb_para['fit_params'] = ctb_fit_params
ctb_para['loss_func' ] = lambda y, pred: np.sqrt(mean_squared_error(y, pred))

def ctb_reg(self, para):
    reg = ctb.CatBoostRegressor(**para['reg_params'])
    reg.fit(x_train, y_train, **para['fit_params'])
    pred = reg.predict(x_test)
    loss = para['loss_func'](y_test, pred)
    return {'loss': loss, 'status': STATUS_OK}

fmin(fn=ctb_reg, space=ctb_para, algo=tpe.suggest, max_evals=100, trials=Trials())

и через несколько минут я получаю это:

{'learning_rate': 4}

как извлечь лучшую скорость обучения? Это np.arange(0.05, 0.31, 0.05)[4]? Есть ли лучший способ извлечь его?

1 Ответ

0 голосов
/ 23 января 2020
from hyperopt import space_eval
print(space_eval(ctb_para, fmin_result))
...