0

我使用了几台计算机来运行相同的脚本,现在有几个 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

关于如何合并它们的任何想法?

谢谢

4

1 回答 1

0

我可以通过手动选择可以合并的值来合并它们。为此,我必须意识到 pkl 文件基本上是一个字典,您可以通过加载文件然后使用 file.keys() 和 file.values() 来获取文件的键和值。就我而言,这些 pkl 文件是由 scikit-optimize 创建的,字典如下所示:

results1.keys() #像字典,列出所有键 results1.values() #像字典,列出所有值 results1.fun #best performance (mse) results1.func_vals #每次迭代的性能 (mse) results1.空间 #range 超参数 results1.specs #parameters for the run results1.x #hyperparameters for best performance (mse) results1.x_iters #hyperparameters test results1.models #model 用于高斯搜索?results1.random_state #随机种子?

我能够遍历所有 pkl 文件并附加 'func_vals' 和 'x_iters' 值。这些字段只是 numpy 数组。其他值是性能最佳模型或运行本身的标识符。然后我能够将其他功能绘制为单个 pkl 文件。

于 2020-03-07T03:58:13.600 回答