Как я могу восстановить n-ю лучшую (например, третью лучшую) модель из объекта базы данных Trial с использованием библиотеки hyperopt Python?
Я адаптировал функцию из здесь чтобы получить результаты от n-й лучшей модели:
def nthBestModelFromTrials(trials, # trials database object
rank = 2): # n-th best model, in this case the third best model
# filter out trials with status non-ok
valid_trial_list = [trial for trial in trials
if STATUS_OK == trial['result']['status']]
# get the losses of the remaining trials
losses = [float(trial['result']['loss']) for trial in valid_trial_list]
# get index of the n-th best model
index_having_nth_minumum_loss = losses.index(sorted(losses)[rank])
# get results data from the n-th best model object
best_trial_obj = valid_trial_list[index_having_nth_minumum_loss ]
Однако best_trial_obj дает мне следующее ...
{
'state': 2,
'tid': 4,
'spec': None,
'result': {'loss': 2339973.0105,
'status': 'ok',
'validation_technique_used': 'validation set 30% of newest data'},
'misc': {'tid': 4,
'cmd': ('domain_attachment', 'FMinIter_Domain'),
'workdir': None,
'idxs': {'D': [1],
'P': [0],
'Q': [0],
'changepoint_prior_scale': [],
'classifier': [4],
'd': [1],
'external_regressors_prophet': [],
'external_regressors_sarimax': [4],
'growth_type': [],
'p': [3],
'q': [2],
'regressor_prior_scale': [],
's': [12],
'yearly_fourier_order': [],
'yearly_seasonality_prior_scale': []},
'vals': {'D': [1],
'P': [1],
'Q': [1],
'changepoint_prior_scale': [],
'classifier': [1],
'd': [1],
'external_regressors_prophet': [],
'external_regressors_sarimax': [0],
'growth_type': [],
'p': [1],
'q': [2],
'regressor_prior_scale': [],
's': [0],
'yearly_fourier_order': [],
'yearly_seasonality_prior_scale': []}},
'exp_key': None,
'owner': None,
'version': 0,
'book_time': datetime.datetime(2020, 2, 10, 16, 25, 35, 277000),
'refresh_time': datetime.datetime(2020, 2, 10, 16, 25, 35, 499000)
}
... но мне нужно форма, которую я также получаю, когда применяю функцию fmin (откуда я получаю только лучшую модель), а именно такую форму:
{'D': 1,
'P': 0,
'Q': 0,
'classifier': 1,
'd': 1,
'external_regressors_sarimax': 0,
'p': 3,
'q': 2,
's': 12}
В чем разница между "idxs" и "vals"? Если бы я знал разницу между этими двумя, я мог бы просто создать вывод самостоятельно.