import%20marimo%0A%0A__generated_with%20%3D%20%220.10.17%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20title()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20notebook_name%20%3D%20'model_perfspec.py'%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_vars%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_vars.run()%0A%20%20%20%20perfspec%20%3D%20_defs%5B'perfspec'%5D%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_header%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_header.run()%0A%20%20%20%20lib_header%20%3D%20_defs%5B'header'%5D%0A%20%20%20%20lib_intro%20%3D%20_defs%5B'intro'%5D%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%7Blib_header(notebook_name)%7D%0A%0A%20%20%20%20%20%20%20%20%23%23%20Info%20about%20**%7Bperfspec%5B'app'%5D%5B'train_mode'%5D%7D**%20trained%20model%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20lib_header%2C%0A%20%20%20%20%20%20%20%20lib_intro%2C%0A%20%20%20%20%20%20%20%20mo%2C%0A%20%20%20%20%20%20%20%20notebook_name%2C%0A%20%20%20%20%20%20%20%20perfspec%2C%0A%20%20%20%20%20%20%20%20perfspec_header%2C%0A%20%20%20%20%20%20%20%20perfspec_vars%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20imports()%3A%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20return%20Path%2C%20np%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20intro_load(Path%2C%20lib_intro%2C%20mo%2C%20notebook_name%2C%20perfspec)%3A%0A%20%20%20%20verbose%20%3D%20perfspec%5B'settings'%5D%5B'verbose'%5D%0A%20%20%20%20perfspec%5B'vars'%5D%20%3D%20%7B%7D%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_args%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_args.run()%0A%0A%20%20%20%20if%20not%20Path(perfspec%5B'defaults'%5D%5B'models_dirpath'%5D).exists()%3A%20%0A%20%20%20%20%20%20%20exit(f%22Trained%20models%20dir%20path%20not%20found%3A%20%7Bperfspec%5B'defaults'%5D%5B'models_dirpath'%5D%7D%22)%20%20%0A%0A%20%20%20%20if%20not%20Path(perfspec%5B'defaults'%5D%5B'checkpoints_dirpath'%5D).exists()%3A%20%0A%20%20%20%20%20%20%20exit(f%22Trained%20checkpoints%20models%20dir%20path%20not%20found%3A%20%7Bperfspec%5B'defaults'%5D%5B'checkpoints_dirpath'%5D%7D%22)%20%20%0A%0A%20%20%20%20if%20not%20Path(perfspec%5B'defaults'%5D%5B'data_dirpath'%5D).exists()%3A%20%0A%20%20%20%20%20%20%20exit(f%22data%20dir%20path%20not%20found%3A%20%7Bperfspec%5B'defaults'%5D%5B'data_dirpath'%5D%7D%22)%20%20%0A%0A%20%20%20%20verbose%3Dperfspec%5B'settings'%5D.get('verbose')%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_load_actions%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_load_actions.run()%0A%20%20%20%20lib_load_actions%20%3D%20_defs%5B'load_actions'%5D%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_input_sequence%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_input_sequence.run()%0A%20%20%20%20lib_get_input_sequence%20%3D%20_defs%5B'get_input_sequence'%5D%0A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_predict%0A%20%20%20%20_%2C%20_defs%20%3D%20perfspec_predict.run()%0A%20%20%20%20lib_predict_action%20%3D%20_defs%5B'predict_action'%5D%0A%0A%20%20%20%20perfspec%5B'vars'%5D%5B'model'%5D%20%3D%20None%0A%20%20%20%20perfspec%5B'vars'%5D%5B'history'%5D%20%3D%20None%0A%0A%20%20%20%20(perfspec%5B'vars'%5D%5B'actions'%5D%2C%20%0A%20%20%20%20perfspec%5B'vars'%5D%5B'unique_actions'%5D%2C%20%0A%20%20%20%20perfspec%5B'vars'%5D%5B'label_encoder'%5D%2C%20%0A%20%20%20%20perfspec%5B'vars'%5D%5B'encoded_actions'%5D%0A%20%20%20%20)%20%3D%20lib_load_actions(%0A%20%20%20%20%20%20%20%20actions_path%3Dperfspec%5B'settings'%5D.get('actions_filepath')%2C%0A%20%20%20%20%20%20%20%20verbose%3DNone%0A%20%20%20%20)%0A%0A%20%20%20%20perfspec%5B'vars'%5D%5B'input_sequence'%5D%20%3D%20lib_get_input_sequence(%0A%20%20%20%20%20%20%20%20input_str%3Dperfspec%5B'settings'%5D%5B'input_str'%5D%2C%20%0A%20%20%20%20%20%20%20%20unique_actions%3Dperfspec%5B'vars'%5D%5B'unique_actions'%5D%0A%20%20%20%20)%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_prepare_model_train%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_prepare_model_train.run()%0A%20%20%20%20lib_prepare_train%20%3D%20_defs%5B'prepare_train'%5D%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_load_model_from_path%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_load_model_from_path.run()%0A%20%20%20%20lib_load_model_from_path%20%3D%20_defs%5B'load_model_from_path'%5D%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_evaluate_model%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_evaluate_model.run()%0A%20%20%20%20lib_evaluate_model%20%3D%20_defs%5B'evaluate_model'%5D%0A%20%20%20%20lib_run_evaluate%20%3D%20_defs%5B'run_evaluate'%5D%0A%20%20%20%20lib_history_info%20%3D%20_defs%5B'history_info'%5D%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_plot_history%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_plot_history.run()%0A%20%20%20%20plot_history%20%3D%20_defs%5B'plot_history'%5D%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_plot_defs%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_plot_defs.run()%0A%20%20%20%20lib_plot_accuracy%20%3D%20_defs%5B'plot_accuracy'%5D%0A%20%20%20%20lib_plot_loss%20%3D%20_defs%5B'plot_loss'%5D%0A%20%20%20%20lib_plot_precision%20%3D%20_defs%5B'plot_precision'%5D%0A%0A%20%20%20%20from%20train_perfspec%20import%20perfspec_define_confusion_matrix%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_define_confusion_matrix.run()%0A%20%20%20%20lib_make_confusion_matrix%20%3D%20_defs%5B'make_confusion_matrix'%5D%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%0A%20%20%20%20%20%20%20%20%7Blib_intro(notebook_name)%7D%0A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20lib_evaluate_model%2C%0A%20%20%20%20%20%20%20%20lib_get_input_sequence%2C%0A%20%20%20%20%20%20%20%20lib_history_info%2C%0A%20%20%20%20%20%20%20%20lib_load_actions%2C%0A%20%20%20%20%20%20%20%20lib_load_model_from_path%2C%0A%20%20%20%20%20%20%20%20lib_make_confusion_matrix%2C%0A%20%20%20%20%20%20%20%20lib_plot_accuracy%2C%0A%20%20%20%20%20%20%20%20lib_plot_loss%2C%0A%20%20%20%20%20%20%20%20lib_plot_precision%2C%0A%20%20%20%20%20%20%20%20lib_predict_action%2C%0A%20%20%20%20%20%20%20%20lib_prepare_train%2C%0A%20%20%20%20%20%20%20%20lib_run_evaluate%2C%0A%20%20%20%20%20%20%20%20perfspec_args%2C%0A%20%20%20%20%20%20%20%20perfspec_define_confusion_matrix%2C%0A%20%20%20%20%20%20%20%20perfspec_evaluate_model%2C%0A%20%20%20%20%20%20%20%20perfspec_input_sequence%2C%0A%20%20%20%20%20%20%20%20perfspec_load_actions%2C%0A%20%20%20%20%20%20%20%20perfspec_load_model_from_path%2C%0A%20%20%20%20%20%20%20%20perfspec_plot_defs%2C%0A%20%20%20%20%20%20%20%20perfspec_plot_history%2C%0A%20%20%20%20%20%20%20%20perfspec_predict%2C%0A%20%20%20%20%20%20%20%20perfspec_prepare_model_train%2C%0A%20%20%20%20%20%20%20%20plot_history%2C%0A%20%20%20%20%20%20%20%20verbose%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20perfspec_render_model_browser(mo%2C%20perfspec)%3A%0A%20%20%20%20model_file_browser%20%3D%20mo.ui.file_browser(%0A%20%20%20%20%20%20%20%20initial_path%3Dperfspec%5B'defaults'%5D%5B'models_dirpath'%5D%2C%20%0A%20%20%20%20%20%20%20%20multiple%3DFalse%2C%0A%20%20%20%20%20%20%20%20filetypes%3D%5B'.keras'%5D%2C%0A%20%20%20%20%20%20%20%20selection_mode%3D'file'%2C%0A%20%20%20%20%20%20%20%20restrict_navigation%3DTrue%2C%0A%20%20%20%20%20%20%20%20%23label%3D%22%3Csmall%3EModel%3C%2Fsmall%3E%22%2C%0A%20%20%20%20)%0A%0A%20%20%20%20def%20parse_model_browse_selection_value(values_only%3DTrue)%3A%0A%20%20%20%20%20%20%20%20if%20len(model_file_browser.value)%20%3E%200%20and%20not%20reset_model_button.value%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20values_only%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20model_file_browser.value%5B0%5D.path%20%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20f%22Selection%20%3Cb%3E%7Bmodel_file_browser.value%5B0%5D.path%7D%3C%2Fb%3E%22%20%0A%20%20%20%20%20%20%20%20else%3A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20values_only%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20f%22Use%20default%20value%22%0A%0A%20%20%20%20reset_model_button%20%3D%20mo.ui.button(label%3D%22Reset%20selected%20Model%22%2C%20kind%3D%22neutral%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20value%3DFalse%2C%20on_click%3Dlambda%20value%3A%20True%20if%20not%20value%20else%20False)%0A%20%20%20%20return%20(%0A%20%20%20%20%20%20%20%20model_file_browser%2C%0A%20%20%20%20%20%20%20%20parse_model_browse_selection_value%2C%0A%20%20%20%20%20%20%20%20reset_model_button%2C%0A%20%20%20%20)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20mo%2C%0A%20%20%20%20model_file_browser%2C%0A%20%20%20%20parse_model_browse_selection_value%2C%0A%20%20%20%20reset_model_button%2C%0A)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%7B%20%20%20mo.vstack(items%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(%22%22%22%20%23%23%20Model%20Selection%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%23%23%20Select%20a%20Model%20or%20use%20default%20one%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20model_file_browser%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(items%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%20%22%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20reset_model_button%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.hstack(items%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22%7Bparse_model_browse_selection_value(False)%7D%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22%3Csmall%3Ereset%3A%20%7Breset_model_button.value%7D%3C%2Fsmall%3E%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D)%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20settings(%0A%20%20%20%20Path%2C%0A%20%20%20%20lib_load_model_from_path%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20parse_model_browse_selection_value%2C%0A%20%20%20%20perfspec%2C%0A)%3A%0A%20%20%20%20_model_filepath%20%3D%20parse_model_browse_selection_value(True)%0A%20%20%20%20if%20_model_filepath%20!%3D%20%22%22%3A%0A%20%20%20%20%20%20%20%20perfspec%5B%22settings%22%5D%5B%22model_filepath%22%5D%20%3D%20_model_filepath%0A%20%20%20%20%20%20%20%20perfspec%5B%22settings%22%5D%5B%22model_history_filepath%22%5D%20%3D%20(%0A%20%20%20%20%20%20%20%20%20%20%20%20Path(_model_filepath).parent%20%2F%20perfspec%5B%22defaults%22%5D%5B%22history_path%22%5D%0A%20%20%20%20%20%20%20%20)%0A%0A%20%20%20%20%20%20%20%20if%20perfspec%5B%22settings%22%5D%5B%22verbose%22%5D%20!%3D%20None%20or%20mo.running_in_notebook()%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print(f%22Model%20filepath%3A%20%7Bperfspec%5B'settings'%5D%5B'model_filepath'%5D%7D%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20print(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20f%22History%20filepath%3A%20%7Bperfspec%5B'settings'%5D%5B'model_history_filepath'%5D%7D%22%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%0A%0A%20%20%20%20perfspec%5B%22vars%22%5D%5B%22model%22%5D%20%3D%20lib_load_model_from_path(perfspec%2C%20None)%0A%20%20%20%20if%20perfspec%5B%22vars%22%5D%5B%22model%22%5D%20%3D%3D%20None%3A%0A%20%20%20%20%20%20%20%20exit(%22No%20model%20loaded%20!%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20command_line_options(mo%2C%20notebook_name)%3A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_out_settings%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_out_settings.run()%0A%20%20%20%20out_settings%20%3D%20_defs%5B'out_settings'%5D%0A%0A%20%20%20%20mo.md(out_settings(notebook_name))%0A%20%20%20%20return%20out_settings%2C%20perfspec_out_settings%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20load_trainded_model(mo%2C%20notebook_name)%3A%0A%20%20%20%20from%20lib_perfspec%20import%20perfspec_cli_ops%0A%20%20%20%20(_%2C_defs)%20%3D%20perfspec_cli_ops.run()%0A%20%20%20%20out_cli_ops%20%3D%20_defs%5B'out_cli_ops'%5D%0A%20%20%20%20mo.accordion(%7B%20%0A%20%20%20%20%20%20%20%20%22Mostrar%20command%20Line%20options%20%22%3A%20out_cli_ops(notebook_name)%20%0A%20%20%20%20%7D)%0A%20%20%20%20return%20out_cli_ops%2C%20perfspec_cli_ops%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20model_summary(lib_load_model_from_path%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20def%20load_trained_model()%3A%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20%3D%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20_verbose%20%3D%20%221%22%20if%20mo.running_in_notebook()%20else%20perfspec%5B'settings'%5D%5B'verbose'%5D%0A%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'model'%5D%20%3D%20lib_load_model_from_path(perfspec%2C_verbose)%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20%3D%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%20(%22No%20model%20loaded%20!%22)%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Load%20trained%20model%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(load_trained_model%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20evaluate_mode(load_trained_model%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20def%20model_sumary()%3A%0A%20%20%20%20%20%20%20%20load_trained_model()%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20!%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'model'%5D.summary()%0A%0A%20%20%20%20_summary%20%3D%20model_sumary()%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Model%20Summary%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%20(model_sumary%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20history_info(lib_history_info%2C%20lib_run_evaluate%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20_evaluate_run%3Dlib_run_evaluate(perfspec)%0A%20%20%20%20_history%3Dlib_history_info(perfspec)%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Evaluate%20Model%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20model_plot_accuracy(lib_history_info%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20_history%3Dlib_history_info(perfspec)%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20History%20Model%20info%0A%0A%20%20%20%20%20%20%20%20%7Bmo.md(_history)%7D%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20model_plot_loss(lib_plot_accuracy%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20_plot_acc%3Dlib_plot_accuracy(perfspec)%0A%0A%20%20%20%20if%20perfspec%5B'vars'%5D%5B'history'%5D%20!%3D%20None%20and%20mo.running_in_notebook()%3A%0A%20%20%20%20%20%20%20_output%20%3D%20%20mo.as_html(_plot_acc.gcf())%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20_output%20%3D%20None%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%23%23%20Model%20Accuracy%20history%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20From%20model%20train%20plot%20accuracy%20and%20epochs%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B_output%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20model_plot_precision(lib_plot_loss%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20_plot_loss%20%3D%20lib_plot_loss(perfspec)%0A%0A%20%20%20%20if%20perfspec%5B'vars'%5D%5B'history'%5D%20!%3D%20None%20and%20mo.running_in_notebook()%3A%0A%20%20%20%20%20%20%20_output%20%3D%20%20mo.as_html(_plot_loss.gcf())%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20_output%20%3D%20None%0A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Model%20loss%20%20history%0A%20%20%20%20%20%20%20%20From%20model%20train%20loss%0A%0A%20%20%20%20%20%20%20%20%7B_output%7D%0A%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20confusion_matrix(lib_plot_precision%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20_plt_pre%20%3D%20lib_plot_precision(perfspec)%0A%20%20%20%20if%20_plt_pre%20is%20not%20None%3A%0A%20%20%20%20%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%20%20%20%20f%22%22%22%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20From%20model%20train%20plot%20Precision%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%7Bmo.as_html(_plt_pre.gcf())%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(lib_load_model_from_path%2C%20lib_make_confusion_matrix%2C%20mo%2C%20perfspec)%3A%0A%20%20%20%20if%20mo.running_in_notebook()%3A%0A%20%20%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D.get('model')%20%3D%3D%20None%3A%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20lib_load_model_from_path(perfspec%5B'settings'%5D%5B'verbose'%5D)%0A%20%20%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D.get('model')%20!%3D%20None%3A%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20lib_make_confusion_matrix(perfspec)%0A%0A%20%20%20%20mo.md(%22%23%23%23%20Confusion%20Matrix%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20title_show_values_prediction(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20f%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Run%20Model%20Prediction%0A%0A%20%20%20%20%20%20%20%20To%20explore%20in%20interactive%20mode%20use%20**run_perfspec.py**%20notebook%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20).callout('neutral')%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20show_values_prediction(mo%2C%20perfspec)%3A%0A%20%20%20%20def%20on_show_values_prediction()%3A%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'settings'%5D%5B'sequence_length'%5D%20%3E%201%20or%20len(perfspec%5B'vars'%5D%5B'unique_actions'%5D)%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%22%22%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20f%22%22%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%23%20Show%20Values%20Prediction%0A%20%20%20%20%20%20%20%20%20%20%20%20%22%22%22%0A%0A%20%20%20%20mo.md(on_show_values_prediction())%0A%20%20%20%20return%20(on_show_values_prediction%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20title_run_prediction(%0A%20%20%20%20lib_predict_action%2C%0A%20%20%20%20load_trained_model%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20perfspec%2C%0A)%3A%0A%20%20%20%20def%20show_values_prediction()%3A%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'settings'%5D%5B'sequence_length'%5D%20%3E%201%20or%20len(perfspec%5B'vars'%5D%5B'unique_actions'%5D)%20%3D%3D%200%3A%0A%20%20%20%20%20%20%20%20%20%20%20return%20None%0A%20%20%20%20%20%20%20%20%23if%20mo.running_in_notebook()%3A%0A%20%20%20%20%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20%3D%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20load_trained_model()%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20!%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20return%20None%0A%20%20%20%20%20%20%20%20data%3D%5B%5D%0A%20%20%20%20%20%20%20%20for%20act%20in%20perfspec%5B'vars'%5D%5B'unique_actions'%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%23print%20(act)%0A%20%20%20%20%20%20%20%20%20%20%20(_%2Cprediction)%20%3D%20lib_predict_action(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'model'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'settings'%5D%5B'sequence_length'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Bact%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'label_encoder'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22-1%22%0A%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%20%20%20data.append(%7B%22action%22%3A%20act%2C%20'prediction'%3A%20prediction%5B'action'%5D%5B0%5D%2C%20'value'%3A%20prediction%5B'max_value'%5D%7D)%0A%20%20%20%20%20%20%20%20df_res%20%3D%20pd.DataFrame(data)%20%20%20%20%0A%20%20%20%20%20%20%20%20transformed_df%20%3D%20mo.ui.dataframe(df_res)%0A%20%20%20%20%20%20%20%20return%20(transformed_df)%0A%0A%20%20%20%20data_frame%3Dshow_values_prediction()%0A%20%20%20%20data_frame%0A%20%20%20%20return%20data_frame%2C%20show_values_prediction%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(%0A%20%20%20%20lib_get_input_sequence%2C%0A%20%20%20%20lib_history_info%2C%0A%20%20%20%20lib_predict_action%2C%0A%20%20%20%20lib_run_evaluate%2C%0A%20%20%20%20mo%2C%0A%20%20%20%20model_sumary%2C%0A%20%20%20%20perfspec%2C%0A)%3A%0A%20%20%20%20_verbose%20%3D%20%221%22%20if%20mo.running_in_notebook()%20else%20perfspec%5B'settings'%5D%5B'verbose'%5D%0A%20%20%20%20_input_sequence%20%3D%20lib_get_input_sequence(perfspec%5B'settings'%5D%5B'input_str'%5D%2Cperfspec%5B'vars'%5D%5B'unique_actions'%5D)%0A%20%20%20%20if%20len(_input_sequence)%20%3E%200%3A%0A%20%20%20%20%20%20%20%20%23_model%20%3D%20lib_load_model_from_path(_verbose)%0A%20%20%20%20%20%20%20%20if%20_verbose%20%3D%3D%20%221%22%3A%0A%20%20%20%20%20%20%20%20%20%20%20model_sumary()%0A%20%20%20%20%20%20%20%20%20%20%20lib_run_evaluate(perfspec)%0A%20%20%20%20%20%20%20%20%20%20%20lib_history_info(perfspec)%0A%20%20%20%20%20%20%20%20%20%20%20print%20(%22%5CnPrediction%22)%0A%0A%20%20%20%20%20%20%20%20if%20perfspec%5B'vars'%5D%5B'model'%5D%20!%3D%20None%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20(encoded_input%2Cpredicted_probabilities)%20%3D%20lib_predict_action(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'model'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'settings'%5D%5B'sequence_length'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_input_sequence%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20perfspec%5B'vars'%5D%5B'label_encoder'%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_verbose%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%20(f%22No%20model%20found%20!%22)%0A%20%20%20%20return%20encoded_input%2C%20predicted_probabilities%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
c5d7c6b886c0bb6929370c9fe5ecc731059b28f4be29c11f8be7581ebf225a63