【问题标题】:Saving DEAP results into pandas dataframe将 DEAP 结果保存到 pandas 数据框中
【发布时间】:2017-08-11 19:23:38
【问题描述】:

暂时使用DEAP包进行遗传算法。

我已经知道了例程并得到了一些有效的结果。

但我想知道人群之间适应度函数的变化。

使用 stats 功能,我可以打印均值、标准等作为输出。

手册已告知 日志 用于保存结果。我没学过,也不熟悉pickle

有没有办法直接将结果保存为.csv或excel格式?

【问题讨论】:

    标签: python python-2.7 genetic-algorithm deap


    【解决方案1】:

    日志是一个字典列表,因此您需要将这些数据“转置”到一个列表字典中。

    这就是我使用 pandas 为具有多统计数据的日志所做的。

    import pandas as pd
    from functools import reduce
    from operator import add, itemgetter
    
    chapter_keys = logbook.chapters.keys()
    sub_chaper_keys = [c[0].keys() for c in logbook.chapters.values()]
    
    data = [list(map(itemgetter(*skey), chapter)) for skey, chapter 
                 in zip(sub_chaper_keys, logbook.chapters.values())]
    data = np.array([[*a, *b] for a, b in zip(*data)])
    
    columns = reduce(add, [["_".join([x, y]) for y in s] 
                           for x, s in zip(chapter_keys, sub_chaper_keys)])
    df = pd.DataFrame(data, columns=columns)
    
    keys = logbook[0].keys()
    data = [[d[k] for d in logbook] for k in keys]
    for d, k in zip(data, keys):
        df[k] = d
    

    首先,我将统计信息解析为一个数组并创建一个数据框。其次,我将不基于统计数据的列(即 gen 或 evals)添加为我的 df 的列。您可以使用 df.to_csv 将数据框导出到 csv。

    【讨论】:

      【解决方案2】:

      要将单个统计信息(无章节)转换为 Pandas 数据框,请使用此

      data = [[i for i in item.values()] for item in log]
      df = pd.DataFrame(data, columns=log.header)
      print(df)
      

      因为数据在日志对象本身中。

      【讨论】:

        猜你喜欢
        • 2019-08-30
        • 2021-11-06
        • 2018-10-01
        • 2013-01-06
        • 2017-08-26
        • 1970-01-01
        • 1970-01-01
        • 2020-04-26
        • 1970-01-01
        相关资源
        最近更新 更多