3 votes

Sauvegarde des résultats DEAP dans un dataframe pandas

J'utilise depuis un certain temps le progiciel DEAP pour les algorithmes génétiques.

J'ai connu la routine et j'ai obtenu des résultats valables.

Mais je souhaite connaître la variation de la fonction d'aptitude entre les populations.

Avec statistiques je peux imprimer la moyenne, l'écart-type, etc. en sortie.

Le manuel indique que journal de bord est utilisé pour enregistrer les résultats. Je n'ai pas appris cela et je ne connais pas bien la fonction cornichon .

Existe-t-il un moyen d'enregistrer directement les résultats au format .csv ou excel ?

1voto

Ohjeah Points 909

Le journal de bord est une liste de dictionnaires, vous devez donc "transposer" ces données dans un dictionnaire de listes.

Voici comment j'ai procédé pour un journal de bord avec des statistiques multiples en utilisant 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

Tout d'abord, j'analyse les statistiques dans un tableau et je crée un cadre de données. Ensuite, j'ajoute les colonnes qui ne sont pas basées sur une statistique (c'est-à-dire gen ou evals) en tant que colonne à mon df. Vous pouvez exporter le cadre de données au format csv en utilisant la fonction df.to_csv .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X