【问题标题】:How can you merge several search result files (pkl) to plot them all together?如何合并多个搜索结果文件 (pkl) 以将它们全部绘制在一起?
【发布时间】:2020-06-16 07:19:13
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: python pickle scikit-optimize


    【解决方案1】:

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

    results1.keys() #像字典一样,列出所有的键 results1.values() #像字典一样,列出所有的值 results1.fun #最佳性能 (mse) results1.func_vals #每次迭代的性能(mse) results1.space #超参数的范围 results1.specs #parameters 运行 results1.x #hyperparameters 以获得最佳性能 (mse) results1.x_iters #hyperparameters 测试 results1.models #model 用于高斯搜索? results1.random_state #随机种子?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多