使用DEAP包进行遗传算法一段时间。
我已经知道了例程并得到了一些有效的结果。
但我想知道人群之间适应度函数的变化。
使用stats功能,我可以打印均值、标准等作为输出。
该手册已告知日志用于保存结果。我没学过,也不熟悉泡菜。
有什么方法可以直接将结果保存为 .csv 或 excel 格式?
使用DEAP包进行遗传算法一段时间。
我已经知道了例程并得到了一些有效的结果。
但我想知道人群之间适应度函数的变化。
使用stats功能,我可以打印均值、标准等作为输出。
该手册已告知日志用于保存结果。我没学过,也不熟悉泡菜。
有什么方法可以直接将结果保存为 .csv 或 excel 格式?
要将单个统计信息(无章节)转换为 Pandas 数据框,请使用此
data = [[i for i in item.values()] for item in log]
df = pd.DataFrame(data, columns=log.header)
print(df)
因为数据在日志对象本身中。
日志是字典列表,因此您需要将这些数据“转置”到列表字典中。
这就是我使用 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
.