将DEAP结果保存到pandas数据框中

3

我使用DEAP包进行遗传算法一段时间了。

我已经掌握了常规操作并得到了一些有效的结果。

但是,我想知道种群中适应度函数的变化。

使用stats函数,我可以将平均值、标准差等打印输出。

手册中提到要使用logbook保存结果。我还没有学过它,也不熟悉pickle

有没有直接以.csv或Excel格式保存结果的方法?

2个回答

1
要将单个统计数据(无章节)转换为Pandas数据框,请使用以下方法:
data = [[i for i in item.values()] for item in log]
df = pd.DataFrame(data, columns=log.header)
print(df)

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

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.to_csv将数据框导出为csv文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接