Howto BF-003: Store and plot data

Prerequisites

PLease install following packages to run this howto

Executable code

## -------------------------------------------------------------------------------------------------
## -- Project : MLPro - The integrative middleware framework for standardized machine learning
## -- Package : mlpro.bf.examples
## -- Module  : howto_bf_003_store_plot_and_save_variables.py
## -------------------------------------------------------------------------------------------------
## -- History :
## -- yyyy-mm-dd  Ver.      Auth.    DeŚscription
## -- 2021-06-16  1.0.0     SY       Creation/Release
## -- 2021-06-21  1.1.0     SY       Adjustment to updated DataPlotting class
## -- 2021-07-01  1.2.0     SY       Adjustment due to extension in save and load data
## -- 2021-09-11  1.2.1     MRD      Change Header information to match our new library name
## -- 2021-10-25  1.2.2     SY       Adjustment due to improvement in DataPlotting
## -- 2021-10-26  1.2.3     SY       Rename module
## -- 2023-03-02  1.2.4     LSB      Refactoring
## -------------------------------------------------------------------------------------------------

"""
Ver. 1.2.4 (2023-03-02)

This module demonstrates how to store, plot, save and load variables.

You will learn:

1. How to use the DataStoring class of MLPro and its functionalities.

2. How to add frames and data names in the data storing object.

3. How to memorize data using the DataStoring class.

4. How to plot the memorized frame from DataStoring object.
"""


from mlpro.bf.various import *
from mlpro.bf.data import *
from mlpro.bf.plot import *
import random


if __name__ == "__main__":
    num_eps         = 10
    num_cycles      = 10000
    data_names      = ["reward","states_1","states_2","model_loss"]
    data_printing   = {"reward":        [True,0,10],
                       "states_1":      [True,0,4],
                       "states_2":      [True,0,4],
                       "model_loss":    [True,0,-1]}

    ## 1. How to store data ##
    mem = DataStoring(data_names)
    for ep in range(num_eps):
        ep_id = ("ep. %s"%str(ep+1))
        mem.add_frame(ep_id)
        for i in range(num_cycles):
            mem.memorize("reward",ep_id,random.uniform(0+(ep*0.5),5+(ep*0.5)))
            mem.memorize("states_1",ep_id,random.uniform(2-(ep*0.2),4-(ep*0.2)))
            mem.memorize("states_2",ep_id,random.uniform(0+(ep*0.2),2+(ep*0.2)))
            mem.memorize("model_loss",ep_id,random.uniform(0.25-(ep*0.02),1-(ep*0.07)))

    ## 2. How to plot stored data ##        
    # 2.1. Plotting data per cycle
    # mem_plot    = DataPlotting(mem, p_type=DataPlotting.C_PLOT_TYPE_CY, p_window=100,
    #                             p_showing=True, p_printing=data_printing, p_figsize=(7,7),
    #                             p_color="darkblue")
    # 2.2. Plotting data with continuous cycle
    mem_plot    = DataPlotting(mem, p_type=DataPlotting.C_PLOT_TYPE_EP, p_window=1000,
                                p_showing=True, p_printing=data_printing, p_figsize=(7,7),
                                p_color="darkblue")
    # 2.3. Plotting data per epsiode according to its mean value
    # mem_plot    = DataPlotting(mem, p_type=DataPlotting.C_PLOT_TYPE_EP_M, p_window=1,
    #                             p_showing=True, p_printing=data_printing, p_figsize=(7,7),
    #                             p_color="darkblue")
    mem_plot.get_plots()

    ## 3. How to save plots and data in binary file (variables, classes, etc.) ##
    path_save   = input("Input path_save : ")
    #Do not include quote-unquote ("" or '' ) into target path name
    mem_plot.save_plots(path_save, "pdf")
    mem_plot.save(path_save, "plot_memory")
    mem.save(path_save, "data_memory")
    mem.save_data(path_save, "data_storage", "\t")

    ## 4. How to load data from binary file ##
    path_load   = path_save
    mem_load    = DataStoring.load(path_load, "data_memory")
    print("Comparison :")
    print("Original data                : %.5f"%mem.memory_dict["reward"]["ep. 1"][0])
    print("Loaded data from binary file : %.5f"%mem_load.memory_dict["reward"]["ep. 1"][0])

    ## 5. How to load data from csv file ##
    data_names = []
    mem_from_csv = DataStoring(data_names)
    mem_from_csv.load_data(path_load, "data_storage.csv", "\t")
    print("Comparison :")
    print("Original data             : %.5f"%mem.memory_dict["reward"]["ep. 1"][0])
    print("Loaded data from csv file : %.5f"%mem_from_csv.memory_dict["reward"]["ep. 1"][0])

Results

../../../../../../../_images/states_1.png ../../../../../../../_images/states_2.png ../../../../../../../_images/reward.png ../../../../../../../_images/model_loss.png

Cross Reference