Как вы можете объединить несколько файлов результатов поиска (pkl), чтобы построить их все вместе? - PullRequest
0 голосов
/ 03 марта 2020

Я использовал несколько компьютеров для запуска одного и того же сценария, и теперь у меня есть несколько result_files.pkl.

results1 = gp_minimize(func=fitness,
                            dimensions=dimensions,
                            acq_func='gp_hedge',
                            n_calls=11,
                            x0=default_parameters)

Я хотел бы объединить их все для анализа всех результаты вместе. Это возможно. Я пытался использовать словарь для их добавления:

all_results = {}
for i in range(8):
    to_add = 'results'+str(i+1)
    all_results.update(to_add) 

Но получаю следующее сообщение об ошибке:

--------------------------------------------------------------------------- 
ValueError                                
Traceback (most recent call last) <ipython-input-33-fb7bb81cb72b> in <module>
      3     to_add = 'results'+str(i+1)
      4     print('adding: ',to_add)
----> 5     all_results.update(to_add)

ValueError: dictionary update sequence element #0 has length 1; 2 is required

Есть идеи, как их объединить?

Спасибо

1 Ответ

0 голосов
/ 07 марта 2020

Мне удалось объединить их, вручную выбрав значения, которые можно объединить. Чтобы сделать это, я должен был понять, что файл pkl - это в основном словарь, и вы можете получить ключи и значения для файлов, загрузив их, а затем используя file.keys () и file.values ​​(). В моем случае эти pkl-файлы были созданы с помощью scikit-optimize, и словарь выглядит следующим образом:

results1.keys () # подобно словарю, перечисляет все ключи results1.values ​​() # подобно словарю, перечисляет все значения results1.fun # лучшая производительность (mse) results1.func_vals #performance для каждой итерации (mse) results1.space # диапазон гиперпараметров results1.specs #параметры для запуска results1.x #hyperparameters для лучшей производительности (mse ) results1.x_iters #hyperparameters испытания results1.models #model используется для поиска по Гауссу? results1.random_state #random seed?

Я смог выполнить l oop через все файлы pkl и добавить значения 'func_vals' и 'x_iters'. Эти поля были просто numpy массивами. Другие значения являются идентификаторами наиболее эффективной модели или самого прогона. Тогда я смог нарисовать и другие функции в одном файле.

...