{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/teddy/miniconda3/envs/gsnn-mds/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] } ], "source": [ "import networkx as nx \n", "from matplotlib import pyplot as plt\n", "import numpy as np\n", "from scipy.integrate import solve_ivp\n", "import networkx as nx\n", "import torch\n", "import copy\n", "from torch.distributions.bernoulli import Bernoulli\n", "import pandas as pd\n", "\n", "from gsnn.models.GSNN import GSNN\n", "from gsnn.models.NN import NN\n", "from gsnn.simulate.nx2pyg import nx2pyg\n", "from gsnn.simulate.datasets import simulate_3_in_3_out\n", "\n", "from gsnn.optim.Environment import Environment\n", "from gsnn.optim.RewardScaler import RewardScaler\n", "from gsnn.models.GSNN import GSNN\n", "\n", "from sklearn.metrics import roc_auc_score\n", "from gsnn.optim.REINFORCE import REINFORCE\n", "import argparse\n", "\n", "from sklearn.metrics import confusion_matrix\n", "import seaborn as sbn\n", "\n", "# for reproducibility \n", "torch.manual_seed(0)\n", "np.random.seed(0)\n", "\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Reinforcement learning for structure optimization\n", "\n", "In many cases, prior knowledge is incomplete, noisy or spurrious for specific prediction tasks. In this example, we will demonstrate how we can use the reinforcement learning for the optimal selection of prior knowledge. \n", "\n", "NOTE: This procedure requires running many sequential training loops, and therefore is not applicable to large graphs or large datasets (where training time is significant). That said, RL's ability to identify true edges does offer a convenient evaluation of our premise that *the true graph structure should result in better performances than alternative graph structures*. \n", "\n", "\n", "Thoughts: \n", "In my experience playing with the RL parameters, it appears that this approach is specific but not sensitive to true edges. For instance, the true input edges are almost always included (across different hyper-params), but some false edges also may have high policy probabilities. This suggests that the model is robust to noisy edges (as long as the true edge is included), but also may limit the ability to identify the true graph. Including a nonzero policy decay (L1 regularization on policy probabilities), seems to help improve the sensitivity of true edges. \n", "\n", "Additionally, I've found that the \"auc\" (sum of all epoch test scores) reward type seens to be more resilient than \"best\" or \"last\", which may suggest that the true graph has advantages in early training, but less so in terms of late training or best test performance. \n", "\n", "It is also worth noting that the rewards are farily noisy (same action can result in a varied rewards), which may account for why the \"best_action\" is not always the true action (graph), whereas the policy is often a more robust metric of the true action. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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oYCpMU49jkVy2pff8N38f8PL+Sn5E+VX7H8iw8X+zzq9vxPIx6jTNLgQE487cUnZvl9g+vzlbCxQ275gvtnnT2Qo2P9EhstQ+z87eS1fB8B0iepU3I5NxK3YRKg1bzZXAKARRQj/u5Dj228QE5mACraWKG9rmS9O9SYyZOx/IsNlaP3PAPgBGlFEXEoqYpPViE1WI2hXKMpXrIgqlSvB3MgItuYmsDU3gY2Zsd5f4ZuIMnq3/w8e+QcyExM0btiA/U+Uz73b/2cvXsLDR4/g4uyUr/qfATCLSpYsiYEDB2LatGlSl0JEOtauXTsAQHBwsMSVEJGuzZgxA6tXr8bDhw+lLiVHZSev6c+ObSIiIiLKEQyARERERAaGAZCIiIjIwDAAEhERERkYBkAiIiIiA8MASERERGRgGACJiIiIDAwDIBEREZGBYQAkIiIiMjAMgEREREQGhgGQiIiIyMAwABIREREZGAZAIiIiIgPDAEhERERkYBgAiYiIiAwMAyARERGRgWEAJCIiIjIwDIBEREREBoYBkIiIiMjAMAASERERGRgGQCIiIiIDwwBIREREZGAYAImIiIgMDAMgERERkYFhACQiIiIyMAyARERERAaGAZCIiIjIwDAAEhERERkYBkAiIiIiA8MASERERGRgGACJiIiIDAwDIBEREZGBYQAkIiIiMjAMgEREREQGhgGQiIiIyMAwABIREREZGAZAIiIiIgPDAEhERERkYBgAiYiIiAwMAyARERGRgWEAJCIiIjIwDIBEREREBoYBkIiIiMjAMAASERERGRgGQCIiIiIDwwBIREREZGAYAImIiIgMDAMgERERkYFhACQiIiIyMAyARERERAaGAZCIiIjIwDAAEhERERkYBkAiIiIiA8MASERERGRgGACJiIiIDAwDIBEREZGBYQAkIiIiMjAMgEREREQGhgGQiIiIyMAwABIREREZGAZAIiIiIgPDAEhERERkYBgAiYiIiAwMAyARERGRgWEAJCIiIjIwDIBEREREBoYBkIiIiMjAMAASERERGRgGQCIiIiIDwwBIREREZGAYAImIiIgMDAMgERERkYFhACQiIiIyMAyARERERAaGAZCIiIjIwDAAEhERERkYBkAiIiIiA8MASERERGRgGACJiIiIDAwDIBEREZGBMYgA+OjRI/j7+2dp3hcvXmDjxo25XBER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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "G, pos, x_train, x_test, y_train, y_test, \\\n", " input_nodes, function_nodes, output_nodes = simulate_3_in_3_out(n_train=100, n_test=500,\n", " noise_scale=0.5, zscorey=True)\n", "\n", "plt.figure(figsize=(8, 6))\n", "nx.draw_networkx(G, pos, with_labels=True, node_color='lightblue', node_size=500, font_size=10, arrowstyle='->', arrowsize=20)\n", "plt.title(\"Dummy Graph: 3 Inputs, 3 Outputs, 5 Function Nodes\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = nx2pyg(G, input_nodes, function_nodes, output_nodes) \n", "\n", "# add some false edges \n", "edge_index_dict = copy.deepcopy(data.edge_index_dict)\n", "\n", "# add some false input edges \n", "edge_index_dict['input', 'to', 'function'] = torch.cat((edge_index_dict['input', 'to', 'function'], \n", " torch.tensor([[0, 1, 2, 1], \n", " [1, 0, 1, 2]], \n", " dtype=torch.long)), dim=-1) \n", "\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "input_edges = set([(i.item(),j.item()) for i,j in data.edge_index_dict['input', 'to', 'function'].T])\n", "\n", "action_label_dict = {}\n", "action_label_dict[('input', 'to', 'function')] = [(i.item(), j.item()) in input_edges for i,j in edge_index_dict['input', 'to', 'function'].T] \n", "true_action = 1.*np.array(action_label_dict[('input', 'to', 'function')])\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n", "train_dataset = torch.utils.data.TensorDataset(x_train, y_train) \n", "test_dataset = torch.utils.data.TensorDataset(x_test, y_test) " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\t --> iter: 1 || auroc 0.500 || acc: 0.571 || prob(true_action): 7.812E-03 || last reward: -0.160\n", "\t --> iter: 2 || auroc 0.500 || acc: 0.571 || prob(true_action): 7.812E-03 || last reward: 0.214\n", "\t --> iter: 3 || auroc 0.500 || acc: 0.571 || prob(true_action): 7.812E-03 || last reward: 0.358\n", "\t --> iter: 4 || auroc 0.583 || acc: 0.571 || prob(true_action): 8.142E-03 || last reward: 0.404\n", "\t --> iter: 5 || auroc 0.750 || acc: 0.571 || prob(true_action): 9.008E-03 || last reward: 0.510\n", "\t --> iter: 6 || auroc 0.750 || acc: 0.571 || prob(true_action): 9.388E-03 || last reward: 0.118\n", "\t --> iter: 7 || auroc 0.750 || acc: 0.571 || prob(true_action): 9.655E-03 || last reward: 0.191\n", "\t --> iter: 8 || auroc 0.833 || acc: 0.714 || prob(true_action): 1.007E-02 || last reward: 0.123\n", "\t --> iter: 9 || auroc 0.833 || acc: 0.571 || prob(true_action): 1.076E-02 || last reward: -0.071\n", "\t --> iter: 10 || auroc 0.917 || acc: 0.571 || prob(true_action): 1.205E-02 || last reward: 0.601\n", "\t --> iter: 11 || auroc 1.000 || acc: 0.571 || prob(true_action): 1.315E-02 || last reward: 0.160\n", "\t --> iter: 12 || auroc 1.000 || acc: 0.571 || prob(true_action): 1.425E-02 || last reward: 0.329\n", "\t --> iter: 13 || auroc 1.000 || acc: 0.571 || prob(true_action): 1.544E-02 || last reward: 0.529\n", "\t --> iter: 14 || auroc 1.000 || acc: 0.571 || prob(true_action): 1.654E-02 || last reward: 0.017\n", "\t --> iter: 15 || auroc 1.000 || acc: 0.571 || prob(true_action): 1.813E-02 || last reward: 0.592\n", "\t --> iter: 16 || auroc 1.000 || acc: 0.714 || prob(true_action): 1.971E-02 || last reward: 0.312\n", "\t --> iter: 17 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.135E-02 || last reward: 0.481\n", "\t --> iter: 18 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.260E-02 || last reward: 0.502\n", "\t --> iter: 19 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.394E-02 || last reward: 0.577\n", "\t --> iter: 20 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.515E-02 || last reward: 0.334\n", "\t --> iter: 21 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.629E-02 || last reward: 0.407\n", "\t --> iter: 22 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.729E-02 || last reward: 0.458\n", "\t --> iter: 23 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.812E-02 || last reward: 0.451\n", "\t --> iter: 24 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.891E-02 || last reward: 0.431\n", "\t --> iter: 25 || auroc 1.000 || acc: 0.714 || prob(true_action): 2.974E-02 || last reward: 0.504\n", "\t --> iter: 26 || auroc 1.000 || acc: 0.714 || prob(true_action): 3.061E-02 || last reward: 0.377\n", "\t --> iter: 27 || auroc 1.000 || acc: 0.714 || prob(true_action): 3.132E-02 || last reward: 0.464\n", "\t --> iter: 28 || auroc 1.000 || acc: 0.857 || prob(true_action): 3.380E-02 || last reward: 0.608\n", "\t --> iter: 29 || auroc 1.000 || acc: 0.857 || prob(true_action): 3.611E-02 || last reward: 0.451\n", "\t --> iter: 30 || auroc 1.000 || acc: 0.857 || prob(true_action): 4.065E-02 || last reward: -0.038\n", "\t --> iter: 31 || auroc 1.000 || acc: 0.857 || prob(true_action): 4.517E-02 || last reward: 0.617\n", "\t --> iter: 32 || auroc 1.000 || acc: 1.000 || prob(true_action): 4.966E-02 || last reward: 0.494\n", "\t --> iter: 33 || auroc 1.000 || acc: 1.000 || prob(true_action): 5.369E-02 || last reward: 0.255\n", "\t --> iter: 34 || auroc 1.000 || acc: 1.000 || prob(true_action): 5.751E-02 || last reward: 0.296\n", "\t --> iter: 35 || auroc 1.000 || acc: 1.000 || prob(true_action): 6.090E-02 || last reward: 0.058\n", "\t --> iter: 36 || auroc 1.000 || acc: 1.000 || prob(true_action): 6.403E-02 || last reward: 0.246\n", "\t --> iter: 37 || auroc 1.000 || acc: 1.000 || prob(true_action): 6.695E-02 || last reward: 0.332\n", "\t --> iter: 38 || auroc 1.000 || acc: 1.000 || prob(true_action): 6.914E-02 || last reward: 0.548\n", "\t --> iter: 39 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.113E-02 || last reward: 0.345\n", "\t --> iter: 40 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.259E-02 || last reward: 0.503\n", "\t --> iter: 41 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.393E-02 || last reward: 0.426\n", "\t --> iter: 42 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.548E-02 || last reward: 0.462\n", "\t --> iter: 43 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.653E-02 || last reward: 0.287\n", "\t --> iter: 44 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.771E-02 || last reward: 0.565\n", "\t --> iter: 45 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.831E-02 || last reward: 0.170\n", "\t --> iter: 46 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.899E-02 || last reward: 0.535\n", "\t --> iter: 47 || auroc 1.000 || acc: 1.000 || prob(true_action): 7.942E-02 || last reward: 0.594\n", "\t --> iter: 48 || auroc 1.000 || acc: 1.000 || prob(true_action): 8.143E-02 || last reward: 0.171\n", "\t --> iter: 49 || auroc 1.000 || acc: 1.000 || prob(true_action): 8.328E-02 || last reward: 0.418\n", "\t --> iter: 50 || auroc 1.000 || acc: 1.000 || prob(true_action): 8.607E-02 || last reward: 0.604\n", "\t --> iter: 51 || auroc 1.000 || acc: 1.000 || prob(true_action): 8.858E-02 || last reward: 0.389\n", "\t --> iter: 52 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.090E-02 || last reward: 0.420\n", "\t --> iter: 53 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.291E-02 || last reward: 0.504\n", "\t --> iter: 54 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.461E-02 || last reward: 0.614\n", "\t --> iter: 55 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.581E-02 || last reward: 0.334\n", "\t --> iter: 56 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.661E-02 || last reward: 0.620\n", "\t --> iter: 57 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.739E-02 || last reward: 0.043\n", "\t --> iter: 58 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.799E-02 || last reward: 0.213\n", "\t --> iter: 59 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.901E-02 || last reward: 0.532\n", "\t --> iter: 60 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.950E-02 || last reward: 0.468\n", "\t --> iter: 61 || auroc 1.000 || acc: 1.000 || prob(true_action): 9.756E-02 || last reward: -0.022\n", "\t --> iter: 62 || auroc 1.000 || acc: 0.857 || prob(true_action): 9.552E-02 || last reward: 0.437\n", "\t --> iter: 63 || auroc 1.000 || acc: 0.857 || prob(true_action): 9.376E-02 || last reward: 0.339\n", "\t --> iter: 64 || auroc 1.000 || acc: 0.857 || prob(true_action): 9.152E-02 || last reward: 0.487\n", "\t --> iter: 65 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.948E-02 || last reward: 0.349\n", "\t --> iter: 66 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.778E-02 || last reward: 0.379\n", "\t --> iter: 67 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.577E-02 || last reward: 0.598\n", "\t --> iter: 68 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.369E-02 || last reward: 0.164\n", "\t --> iter: 69 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.165E-02 || last reward: 0.174\n", "\t --> iter: 70 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.972E-02 || last reward: 0.215\n", "\t --> iter: 71 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.820E-02 || last reward: 0.356\n", "\t --> iter: 72 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.709E-02 || last reward: 0.590\n", "\t --> iter: 73 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.627E-02 || last reward: 0.581\n", "\t --> iter: 74 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.535E-02 || last reward: 0.568\n", "\t --> iter: 75 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.464E-02 || last reward: 0.558\n", "\t --> iter: 76 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.449E-02 || last reward: 0.515\n", "\t --> iter: 77 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.418E-02 || last reward: -0.028\n", "\t --> iter: 78 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.447E-02 || last reward: 0.564\n", "\t --> iter: 79 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.514E-02 || last reward: -0.003\n", "\t --> iter: 80 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.601E-02 || last reward: 0.536\n", "\t --> iter: 81 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.679E-02 || last reward: 0.448\n", "\t --> iter: 82 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.801E-02 || last reward: 0.562\n", "\t --> iter: 83 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.944E-02 || last reward: 0.545\n", "\t --> iter: 84 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.043E-02 || last reward: 0.615\n", "\t --> iter: 85 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.130E-02 || last reward: 0.449\n", "\t --> iter: 86 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.192E-02 || last reward: 0.380\n", "\t --> iter: 87 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.254E-02 || last reward: 0.390\n", "\t --> iter: 88 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.314E-02 || last reward: 0.575\n", "\t --> iter: 89 || auroc 1.000 || acc: 0.857 || prob(true_action): 8.327E-02 || last reward: 0.539\n", "\t --> iter: 90 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.971E-02 || last reward: 0.175\n", "\t --> iter: 91 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.663E-02 || last reward: 0.516\n", "\t --> iter: 92 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.342E-02 || last reward: 0.562\n", "\t --> iter: 93 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.075E-02 || last reward: 0.398\n", "\t --> iter: 94 || auroc 1.000 || acc: 0.714 || prob(true_action): 6.965E-02 || last reward: 0.632\n", "\t --> iter: 95 || auroc 1.000 || acc: 0.714 || prob(true_action): 7.004E-02 || last reward: 0.177\n", "\t --> iter: 96 || auroc 1.000 || acc: 0.714 || prob(true_action): 7.044E-02 || last reward: 0.570\n", "\t --> iter: 97 || auroc 1.000 || acc: 0.714 || prob(true_action): 7.123E-02 || last reward: 0.207\n", "\t --> iter: 98 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.226E-02 || last reward: 0.528\n", "\t --> iter: 99 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.377E-02 || last reward: 0.607\n", "\t --> iter: 100 || auroc 1.000 || acc: 0.857 || prob(true_action): 7.500E-02 || last reward: 0.521\n" ] } ], "source": [ "# GSNN model parameters\n", "model_kwargs = {'edge_index_dict' : edge_index_dict, \n", " 'node_names_dict' : data.node_names_dict,\n", " 'channels' : 5, \n", " 'layers' : 5, \n", " 'dropout' : 0.0,\n", " 'init' : 'degree_normalized',\n", " 'residual' : True,\n", " 'share_layers' : False,\n", " 'node_attn' : False,\n", " 'add_function_self_edges' : True,\n", " 'norm' : 'layer',\n", " 'norm_first' : True,\n", " 'node_mlp_hidden' : 64}\n", "\n", "# GSNN training parameters\n", "training_kwargs = {'lr':1e-2, \n", " 'max_epochs':50, \n", " 'batch':250,\n", " 'workers':1, \n", " 'weight_decay':1e-4}\n", "\n", "# the action edge dict will be used to index the action for each edge \n", "# if and edge key is not provided, those values will not be optimized (always present)\n", "action_edge_dict = {('input', 'to', 'function'): torch.arange(edge_index_dict['input', 'to', 'function'].shape[1])} \n", "\n", "n_actions = sum([torch.unique(v).numel() for v in action_edge_dict.values()])\n", "\n", "env = Environment(action_edge_dict, train_dataset, test_dataset, model_kwargs, \n", " training_kwargs, metric='spearman', reward_type='best', verbose=False,\n", " raise_error_on_fail=True)\n", "\n", "\n", "hoptim = REINFORCE(env, n_actions, action_labels=true_action, clip=10, eps=1e-8, warmup=3, verbose=True, \n", " entropy=0., entropy_decay=0.99, min_entropy=0.0, window=10,\n", " init_prob=0.5, lr=1e-1, policy_decay=0.)\n", "\n", "for iter in range(100): \n", " hoptim.step()\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAADtCAYAAABeZf85AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAANk1JREFUeJzt3XlYlXX+//HXYRcFRExBwX0XU1PHJRdMcqvcJ81SabLRUVMzxyWbxJrqaymZE1qZgZZmlku2TOYClku5YpqkpqKWmLjlggvL/fvDH2c8suh9BA4Hno/rOtfl+dzb636fGy7e3suxGIZhCAAAAABwR1wcHQAAAAAAnAlNFAAAAACYQBMFAAAAACbQRAEAAACACTRRAAAAAGACTRQAAAAAmEATBQAAAAAm0EQBAAAAgAk0UQAAAABgAk0UABQDsbGxslgs1pebm5uCgoI0YMAAHTx40NHx8k21atUUERFh17JJSUmyWCyKjY21jkVGRspisZhaT2pqqiIjIxUfH29quZy2Va1aNT388MOm1nM7ixcv1qxZs3KcZrFYFBkZma/bA4CSyM3RAQAA+ScmJkb16tXT1atXtWnTJr3yyiuKi4vTL7/8In9/f0fHK3KGDh2qrl27mlomNTVV06ZNkySFhYUV6LbssXjxYu3du1djx47NNm3Lli0KDg4u8AwAUNzRRAFAMRIaGqrmzZtLuvEHfkZGhqZOnaqVK1fqySefdHC620tNTZW3t3ehbS84OLjAm4qsfSqMbd1Oq1atHLp9ACguuJwPAIqxrIbqjz/+sBnfvn27evTooXLlysnLy0tNmzbV0qVLrdMvXLggNzc3vfHGG9ax06dPy8XFRX5+fkpPT7eOjx49Wvfcc48Mw5AkrVmzRj179lRwcLC8vLxUq1YtDRs2TKdPn7bJkHV5286dO9WvXz/5+/urZs2akqS0tDRNmDBBgYGB8vb2Vtu2bbV169Y73u8TJ07o0UcflY+Pj/z8/NS/f3+dPHky23w5XWK3fv16hYWFKSAgQKVKlVKVKlXUt29fpaamKikpSffcc48kadq0adbLJ7MuMcxrn/K6dHDFihW699575eXlpRo1amj27Nk207Mu10xKSrIZj4+Pl8VisV5aGBYWpq+++kpHjx61ubwzS06X8+3du1c9e/aUv7+/vLy81KRJEy1YsCDH7Xz88ceaMmWKKlWqJF9fX4WHh2v//v057hMAFGeciQKAYuzIkSOSpDp16ljH4uLi1LVrV7Vs2VLvvPOO/Pz8tGTJEvXv31+pqamKiIiQr6+vWrRoobVr1+qf//ynJGndunXy9PTUxYsXtXXrVrVp00aStHbtWj3wwAPWP9YPHTqk1q1ba+jQofLz81NSUpKioqLUtm1b7dmzR+7u7jYZ+/TpowEDBmj48OG6fPmyJOnpp5/WwoULNX78eD344IPau3ev+vTpo4sXL952n69cuaLw8HCdOHFCr732murUqaOvvvpK/fv3v+2ySUlJeuihh9SuXTt98MEHKlu2rH7//Xd98803un79uoKCgvTNN9+oa9eueuqppzR06FBJsjZWee1TbhISEjR27FhFRkYqMDBQixYt0pgxY3T9+nWNHz/+tplvNmfOHP3973/XoUOHtGLFitvOv3//frVp00YVKlTQ7NmzFRAQoI8++kgRERH6448/NGHCBJv5n3/+ed1///16//33deHCBU2cOFGPPPKIEhMT5erqaiorADg1AwDg9GJiYgxJxg8//GCkpaUZFy9eNL755hsjMDDQaN++vZGWlmadt169ekbTpk1txgzDMB5++GEjKCjIyMjIMAzDMF544QWjVKlSxtWrVw3DMIyhQ4caXbt2Ne69915j2rRphmEYxu+//25IMt57770cc2VmZhppaWnG0aNHDUnG559/bp02depUQ5Lx4osv2iyTmJhoSDKeffZZm/FFixYZkowhQ4bkWYu5c+dm25ZhGMbTTz9tSDJiYmKyZcjy2WefGZKMhISEXNefkpJiSDKmTp2abVpu+5TTtgzDMKpWrWpYLJZs23vwwQcNX19f4/Lly4Zh/O/zPXLkiM18cXFxhiQjLi7OOvbQQw8ZVatWzTH7rbkHDBhgeHp6GseOHbOZr1u3boa3t7dx/vx5m+10797dZr6lS5cakowtW7bkuD0AKK64nA8AipFWrVrJ3d1dPj4+6tq1q/z9/fX555/Lze3GhQe//vqrfvnlFz3++OOSpPT0dOure/fuSk5Otl6e1alTJ125ckWbN2+WdOOM04MPPqjw8HCtWbPGOiZJ4eHh1gynTp3S8OHDFRISIjc3N7m7u6tq1aqSpMTExGyZ+/bta/M+Li5OkqwZszz66KPW/chLXFycfHx81KNHD5vxgQMH3nbZJk2ayMPDQ3//+9+1YMECHT58+LbL5OTWfcpLw4YN1bhxY5uxgQMH6sKFC9q5c6dd279T69evV6dOnRQSEmIzHhERodTUVG3ZssVm/Naa3nvvvZKko0ePFmhOAChqaKIAoBhZuHChtm3bpvXr12vYsGFKTEzUY489Zp2edW/U+PHj5e7ubvMaMWKEJFnvXWrTpo28vb21du1a/frrr0pKSrI2UT/++KMuXbqktWvXqkaNGqpevbokKTMzU507d9by5cs1YcIErVu3Tlu3btUPP/wg6caldrcKCgqyeX/mzBlJUmBgoM24m5ubAgICbluDM2fOqGLFitnGb11fTmrWrKm1a9eqQoUKGjlypGrWrKmaNWvqrbfeuu2yN7t1n/KSU66ssaxaFJQzZ87kmLVSpUo5bv/W+nt6ekrK+XMFgOKMe6IAoBipX7++9WESHTt2VEZGht5//3199tln6tevn8qXLy9Jmjx5svr06ZPjOurWrStJ8vDwUNu2bbV27VoFBwcrMDBQjRo1Uo0aNSTdeNjAunXrbL7naO/evdq9e7diY2M1ZMgQ6/ivv/6aa+ZbH7aQ9Yf6yZMnVblyZet4enr6HTUVAQEBOT6EIqcHS+SkXbt2ateunTIyMrR9+3b95z//0dixY1WxYkUNGDDgjtZh5runcsqVNZZVCy8vL0nStWvXbOa79WEdZgUEBCg5OTnb+IkTJyTJerwAAGxxJgoAirHXX39d/v7+evHFF5WZmam6deuqdu3a2r17t5o3b57jy8fHx7p8eHi4duzYoWXLllkv2StdurRatWql//znPzpx4oTNpXxZzUPWGYos77777h1nzvrupUWLFtmML1261OapgLnp2LGjLl68qFWrVtmML168+I4zSJKrq6tatmyp6OhoSbJeWpffZ19+/vln7d6922Zs8eLF8vHx0X333SfpxpfyStJPP/1kM9+t+5iV706zderUSevXr7c2TVkWLlwob29vHokOALngTBQAFGP+/v6aPHmyJkyYoMWLF+uJJ57Qu+++q27duqlLly6KiIhQ5cqVdfbsWSUmJmrnzp369NNPrct36tRJGRkZWrdunc1jr8PDwzV16lRZLBY98MAD1vF69eqpZs2amjRpkgzDULly5fTFF19Y76G6E/Xr19cTTzyhWbNmyd3dXeHh4dq7d69mzJghX1/f2y4/ePBgvfnmmxo8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SRUqVFDZsmVzzHzw4EGtWrVKmzZtUps2bSRJixYtUkhIiFauXKm//vWvkqS0tDS98847qlmzpiRp1KhReumll3JcJwAAAJCFJqqY6tixo+bOnWt9X7p0aUlSXFycXn31Ve3bt08XLlxQenq6rl69qsuXL1vnudm4ceM0dOhQffjhhwoPD9df//pXa9OxY8cO/frrr1q0aJF1fsMwlJmZqSNHjqh+/frZ1nf58mVNmzZNX375pU6cOKH09HRduXLFeiYqISFBrq6u6tChg937npiYKDc3N7Vs2dI6FhAQoLp16yoxMdE65u3tbd0XSQoKCtKpU6fs3i4AAABKBi7nK6ZKly6tWrVqWV9BQUE6evSounfvrtDQUC1btkw7duxQdHS0JNlc5nazyMhI/fzzz3rooYe0fv16NWjQQCtWrJAkZWZmatiwYUpISLC+du/erYMHD9o0Jzf75z//qWXLlumVV17R999/r4SEBDVq1EjXr1+XJJUqVequ990wjFzHLRaL9X3WZYlZLBZLrssCAAAAWTgTVYJs375d6enpmjlzplxcbvTPS5cuve1yderUUZ06dfTss8/qscceU0xMjHr37q377rtPP//8s2rVqnXHGb7//ntFRESod+/ekm7cI5WUlGSd3qhRI2VmZmrDhg3Wy/lu5uHhIUnKyMjIdRsNGjRQenq6fvzxR+vlfGfOnNGBAwdyPDsGAAAAmMGZqBKkZs2aSk9P13/+8x8dPnxYH374od55551c579y5YpGjRql+Ph4HT16VJs2bdK2bdusjcjEiRO1ZcsWjRw5UgkJCdZ7kZ555plc11mrVi0tX77cetZq4MCByszMtE6vVq2ahgwZor/97W9auXKljhw5ovj4eGuzV7VqVVksFn355ZdKSUnJ8cmCtWvXVs+ePfX0009r48aN2r17t5544glVrlxZPXv2tLd8AAAAgKQSeiYqOjpa0dHReZ7NyEtYWP7mKSxNmjRRVFSUpk+frsmTJ6t9+/Z67bXXNHjw4Bznd3V11ZkzZzR48GD98ccfKl++vPr06aNp06ZJku69915t2LBBU6ZMUbt27WQYhmrWrKn+/fvnmuHNN9/U3/72N7Vp00bly5fXxIkTdeHCBZt55s6dq+eff14jRozQmTNnVKVKFT3//POSpMqVK2vatGmaNGmSnnzySQ0ePFixsbHZthMT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NUrSjUv6WrZsabOMq6urJMlisah9+/aKj4+Xh4eHwsLCFBoaqoyMDO3Zs0ebN2/W2LFjrcs98sgjCgkJ0bx581SpUiVlZmYqNDRU169fz5YJAFDycE8UAMApTZ06VTNmzFBGRoYqV66sw4cPq1atWjav6tWrW+fPui8qPj5eYWFhslgsateunWbMmKErV65Y74c6c+aMEhMT9cILL6hTp06qX7/+HT1K3c/PT0FBQTaXBKanp2vHjh35v/MAAIfiTBQAwCmFhYWpYcOGevXVVxUZGanRo0fL19dX3bp107Vr17R9+3adO3dO48aNs84/ZswYubm5qV27dtax5557Tvfdd598fX0lSf7+/goICNB7772noKAgHTt2TJMmTbqjTGPGjNH//d//qXbt2qpfv76ioqJ0/vz5Atl/AIDjcCYKAOC0xo0bp3nz5qlLly56//33FRsbq0aNGqlDhw6KjY21ORMVGhqq8uXLq3HjxtaGqUOHDsrIyLC5H8rFxUVLlizRjh07FBoaqmeffVZvvPHGHeV57rnnNHjwYEVERKh169by8fFR796983enAQAOx9P5AAAAAMAEzkQBAAAAgAk0UQAAAABgAk0UAAAAAJhAEwUAAAAAJtBEAQAAAIAJNFEAAAAAYAJNFAAAAACYQBMFAAAAACbQRAEAAACACTRRAAAAAGACTRQAAAAAmPD/ADKfsbdp2CNmAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = pd.DataFrame({'true_action':[(a == true_action).all() for a in hoptim.actions], 'reward':hoptim.rewards})\n", "df = df.assign(rank=(-df['reward']).rank(method='first'))\n", "df = df.assign(action = [x.tolist() for x in hoptim.actions])\n", "_bins = np.linspace(min(df['reward']), max(df['reward']), 100)\n", "\n", "plt.figure(figsize=(10,2)) \n", "plt.hist(df[lambda x: x.true_action]['reward'], color='r', alpha=0.25, label='True action', density=True, bins=_bins)\n", "plt.hist(df[lambda x: ~x.true_action]['reward'], color='b', alpha=0.25, label='False action', density=True, bins=_bins)\n", "plt.legend()\n", "plt.title('Reward distribution')\n", "plt.xlabel('Reward')\n", "plt.ylabel('Density')\n", "plt.yscale('log')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Was the true action tested/explored? True\n", "\tRank of true action: 1.0\n", "policy [0.959391 0.93453723 0.66035795 0.5552905 0.26664048 0.4929847\n", " 0.23389855]\n", "best_action [1. 1. 1. 0. 0. 0. 0.]\n", "true_action [1. 1. 1. 0. 0. 0. 0.]\n", "best action accuracy: 1.000\n", "final policy auroc: 1.000\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhcAAAHFCAYAAABBx9vxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOvJJREFUeJzt3Xl4VPX5///XkGUSAwETSEiU1QUCyJYoBmUzFk0UAWkLVREQqBGqYorSwKcGpG1QqYIiCShbRBZrZCtIQUpATFCCoXVhqTWA0sQACkqUyXa+f/hjfg5ZyMA5mZB5Pnqd6+q855zzvmc6dO7c9/ucsRmGYQgAAMAkjTwdAAAAaFhILgAAgKlILgAAgKlILgAAgKlILgAAgKlILgAAgKlILgAAgKlILgAAgKlILgAAgKlILuBi6dKlstlsLluLFi3Uv39//f3vf7ds3h9++EHTp09XVlaWZXNcyF/+8hetXbu20nhWVpZsNptHY9uwYYMGDRqk8PBw+fv7KyQkRHFxcXrjjTdUWlpq6dyrV69W586dFRgYKJvNpn379pl6fk++v6NHj5bNZlOTJk105syZSs8fOXJEjRo1ks1m0/Tp090+/8V+rqdPny6bzeb2fEB9QXKBKi1ZskQ5OTnKzs7WwoUL5ePjo0GDBmnDhg2WzPfDDz9oxowZ9TK56Nmzp3JyctSzZ886j8kwDI0ZM0b33HOPKioq9MILL+jdd9/VsmXL1K1bN02YMEHz58+3bP7jx49r5MiRuuaaa7R582bl5OTo+uuvN3UOT76/kuTn56eysjKtXr260nNLlixRkyZNLvrcF/u5HjdunHJyci56XsDTfD0dAOqnLl26KCYmxvn4zjvv1JVXXqmVK1dq0KBBHoys7gUHB+vmm2/2yNzPP/+8li5dqhkzZujpp592eW7QoEF66qmn9Pnnn1s2/6FDh1RaWqoHHnhA/fr1s2QOT76/kuTv769BgwZp8eLFGjt2rHPcMAwtXbpUw4cP16uvvlonsfzwww+64oordPXVV+vqq6+ukzkBSxjAzyxZssSQZOzZs8dlvKKiwmjSpInx4IMPuow7HA5j5syZRocOHQx/f3+jefPmxujRo42ioiKX/bZt22b069fPCAkJMQICAoxWrVoZ9957r1FcXGzk5+cbkipto0aNqjHWoqIi45FHHjGioqKMoKAgo0WLFsaAAQOMnTt3Vtr37NmzxowZM4yOHTsadrvdCAkJMfr372+8//77hmEYVc7fr18/wzAMY/v27YYkY/v27S7nXLdunXHzzTcbgYGBRuPGjY3bb7/dyM7OdtknJSXFkGR88sknxogRI4zg4GAjLCzMGDNmjHHq1KkaX19JSYkREhJidOzY0aioqKhx33NOnjxpPPLII0ZkZKTh5+dntGvXzpg6dapx9uxZl/0kGRMnTjQyMjKMjh07GoGBgUbXrl2NDRs2OPcZNWpUte9Jv379nP/950aNGmW0adPGZWz+/PlG165djaCgIKNx48ZGhw4djOTkZOfznnp/z8UbFBRkbNmyxZBkHDhwwPncubHs7GxDkpGSkuJ8rjafvQt9rs/FvnfvXmPYsGFGs2bNjJYtW7o8d857771n+Pr6Gr///e9d4j/37/W111674GsF6hJtEVSpvLxcZWVlKi0t1VdffaVJkyapuLhY9913n3OfiooKDR48WLNmzdJ9992njRs3atasWdq6dav69++vH3/8UZJ0+PBh3XXXXfL399fixYu1efNmzZo1S0FBQSopKVFERIQ2b94sSRo7dqxycnKUk5OjP/7xjzXG+M0330iSUlJStHHjRi1ZskTt27dX//79XcrQZWVlio+P18yZM3X33XdrzZo1Wrp0qXr37q2jR49KknJychQYGKiEhATn/DW1G1asWKHBgwcrODhYK1eu1KJFi/Ttt9+qf//+2rVrV6X9hw0bpuuvv16ZmZn6wx/+oBUrVuiJJ56o8fXl5ubqm2++0eDBg2vVfz979qwGDBigjIwMJSUlaePGjXrggQf03HPP6d577620/8aNGzVv3jw988wzyszMVEhIiIYOHaovvvhCkvTHP/5Rr7zyiqSfWkYXek+qsmrVKk2YMEH9+vXTmjVrtHbtWj3xxBMqLi6u8bi6eH9/7vbbb1ebNm20ePFi59iiRYvUt29fXXfddZX2r81nr7af63vvvVfXXnut/va3vyk9Pb3K+G699Vb96U9/0l//+letX79ekvTpp59q4sSJeuCBB1wqLkC94OnsBvXLub+Ezt/sdrsxf/58l31XrlxpSDIyMzNdxvfs2WNIcu7/1ltvGZKMffv2VTvv8ePHK/116K6ysjKjtLTUiIuLM4YOHeocz8jIMCQZr776ao3HBwUFVVktOf8v6/LyciMyMtK44YYbjPLycud+33//vREWFmb07t3bOXbuL9DnnnvO5ZwTJkwwAgICaqxIrFq1ypBkpKen1xj3Oenp6YYk480333QZf/bZZw1JxpYtW5xjkozw8HDju+++c44VFhYajRo1MlJTUyu99r/97W8u56xt5eJ3v/ud0axZsxrj9tT7ey7eoKAg57latmxplJaWGidPnjTsdruxdOnSWn02q/vs1XTsudiffvrpap/7uYqKCiMhIcFo1qyZ8cknnxidOnUyOnbsaJw5c6bG1wh4ApULVCkjI0N79uzRnj179M4772jUqFGaOHGi5s2b59zn73//u5o1a6ZBgwaprKzMuXXv3l0tW7Z0/gXXvXt3+fv767e//a2WLVvm/Mu4tn5+7rKyMhmG4XwuPT1dPXv2VEBAgHx9feXn56dt27Zp//79zn3eeecdBQQE6KGHHrq0N+X/c/DgQf3vf//TyJEj1ajR//9PqHHjxho2bJh2796tH374weWYe+65x+Vx165ddfbsWRUVFZkSkyT985//VFBQkH75y1+6jI8ePVqStG3bNpfxAQMGuCxWDA8PV1hYmI4cOWJaTDfddJNOnTql3/zmN1q3bp1OnDhxwWM89f6OGTNGX3/9td555x298cYb8vf3169+9atq96/NZ682hg0bVqv9bDabMjIy1KRJE8XExCg/P19vvvmmgoKC3JoPqAskF6hSVFSUYmJiFBMTozvvvFMLFizQwIED9dRTT+nUqVOSpK+//lqnTp2Sv7+//Pz8XLbCwkLnF8k111yjd999V2FhYZo4caKuueYaXXPNNZo7d+4F4zh8+HClc+/YsUOS9MILL+iRRx5Rr169lJmZqd27d2vPnj268847nS0Z6acrHiIjI12+qC7FyZMnJf1U9j5fZGSkKioq9O2337qMh4aGujy22+2S5BLn+Vq3bi1Jys/Pr3VcLVu2rNRCCQsLk6+vrzPu6mI6F1dNMblr5MiRWrx4sY4cOaJhw4YpLCxMvXr10tatW6s9pq7e3/O1adNGcXFxWrx4sRYvXqwRI0boiiuuqHLf2n72aqOq11md0NBQ3XPPPTp79qzuvPNO3XDDDW7NBdQVrhZBrXXt2lX/+Mc/dOjQId10001q3ry5QkNDnX3l8/38r+I+ffqoT58+Ki8vV25url5++WVNmjRJ4eHhGjFiRLVzRkZGas+e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7FmX81xzzTXGggULDMMwjNjYWCMxMdHl+V69ehndunWrct7vvvvOsNvtxquvvlpljPn5+YYkIy8vz2W8VatWxooVK1zGZs6cacTGxhqGYRgLFiwwQkJCjOLiYufzaWlpVZ4LQMNGWwSoY3//+9/VuHFjBQQEKDY2Vn379tXLL78sSWrTpo1atGjh3Hfv3r06c+aMQkND1bhxY+eWn5+v//73v5Kk/fv3KzY21mWO8x//3P79++VwOBQXF1frmI8fP64vv/xSY8eOdYnjT3/6k0sc3bp10xVXXFGrOAA0XLRFgDo2YMAApaWlyc/PT5GRkS6LNoOCglz2raioUEREhLKysiqdp1mzZhc1f2BgoNvHVFRUSPqpNdKrVy+X5861bwzDuKh4ADQ8JBdAHQsKCtK1115bq3179uypwsJC+fr6qm3btlXuExUVpd27d+vBBx90ju3evbvac1533XUKDAzUtm3bNG7cuErPn1tjUV5e7hwLDw/XVVddpS+++EL3339/left1KmTXn/9df3444/OBKamOAA0XLRFgHrs9ttvV2xsrIYMGaJ//OMfOnz4sLKzs/V///d/ys3NlSQ9/vjjWrx4sRYvXqxDhw4pJSVFn376abXnDAgI0JQpU/TUU08pIyND//3vf7V7924tWrRIkhQWFqbAwEBt3rxZX3/9tU6fPi3ppxtzpaamau7cuTp06JA+/vhjLVmyRC+88IIk6b777lOjRo00duxYffbZZ9q0aZNmz55t8TsEoD4iuQDqMZvNpk2bNqlv37566KGHdP3112vEiBE6fPiwwsPDJUnDhw/X008/rSlTpig6OlpHjhzRI488UuN5//jHP+r3v/+9nn76aUVFRWn48OEqKiqSJPn6+uqll17SggULFBkZqcGDB0uSxo0bp9dee01Lly7VDTfcoH79+mnp0qXOS1cbN26sDRs26LPPPlOPHj00bdo0Pfvssxa+OwDqK5tBoxQAAJiIygUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADAVyQUAADDV/wPdKGivpMCX3QAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "best_action = hoptim.best_action.detach().cpu().numpy().ravel()\n", "policy = hoptim.logits.sigmoid().detach().cpu().numpy().ravel()\n", "\n", "print('Was the true action tested/explored?', df.true_action.any())\n", "if df.true_action.any(): print('\\tRank of true action:', df[lambda x: x.true_action]['rank'].min())\n", "\n", "print('policy', policy)\n", "print('best_action', best_action)\n", "print('true_action', true_action)\n", "\n", "acc = np.mean(best_action == true_action)\n", "auroc = roc_auc_score(true_action, policy)\n", "\n", "print(f'best action accuracy: {acc:.3f}')\n", "print(f'final policy auroc: {auroc:.3f}')\n", "\n", "# plot confusion matrix \n", "cm = confusion_matrix(true_action, best_action)\n", "\n", "plt.figure() \n", "sbn.heatmap(cm, annot=True, fmt='d', cmap='Blues') \n", "plt.title('Best-action Confusion Matrix')\n", "plt.xlabel('Predicted')\n", "plt.ylabel('True')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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kJOT0+73Nzc34+c//zkOHjyIt99+u8MD63Q64XQ6da+1N61mhp49e/LkihEe69jhsY4dHuvY4bGOHTOOdUcjQgqpwVB2djays7M73G706NFoaGjAzp07MWrUKADABx98gIaGBowZMybk9ymB0GeffYbNmzcjKyvLtH0nIiKi7iEhSusHDx6MSZMmYebMmdixYwd27NiBmTNn4qabbtIlTw8aNAivvfYaAKClpQU//elP8eGHH2LNmjXwer2or69HfX09PB6PrP8KERERxZmECIYAYM2aNRg2bBhKS0tRWlqK4cOH46WXXtJtc+DAAbX668iRI9iwYQOOHDmCK664Anl5eeqfbdu2yfgvGDidTjzwwAOGaTkyH4917PBYxw6PdezwWMeOjGOdEH2GiIiIiKIlYUaGiIiIiKKBwRARERFZGoMhIiIisjQGQ0RERGRpDIYkeeqpp1BYWIjU1FSUlJTgvffek71LCa+iogLf+973kJmZib59++LWW2/FgQMHdNsIIfDggw+iX79+SEtLw3XXXYdPPvlE0h53HxUVFbDZbJg3b576Go+1eY4ePYpf/vKXyMrKQnp6Oq644gpUVVWpX+exNkdLSwuWLl2KwsJCpKWloaioCMuWLYPP51O34bHunHfffRc333wz+vXrB5vNhtdff1339XCOq9vtxt13343s7GxkZGTglltuwZEjR8zZQUExt3btWuFwOMQzzzwj9u3bJ+bOnSsyMjJEbW2t7F1LaBMnThTPP/+8+Pjjj0VNTY2YPHmyGDhwoGhqalK3Wb58ucjMzBSvvvqq2Lt3r5gyZYrIy8sTjY2NEvc8se3cuVMUFBSI4cOHi7lz56qv81ib4+TJkyI/P1/ccccd4oMPPhAHDx4Ub731lvj888/VbXiszfHwww+LrKws8Z///EccPHhQ/POf/xQ9evQQK1asULfhse6cjRs3iiVLlohXX31VABCvvfaa7uvhHNdZs2aJ/v37i8rKSrF7925x/fXXi8svv1y0tLR0ef8YDEkwatQoMWvWLN1rgwYNEosXL5a0R93T8ePHBQCxZcsWIYQQPp9P5ObmiuXLl6vbnD9/XrhcLvH000/L2s2Edvr0aXHJJZeIyspKMX78eDUY4rE2z6JFi8TYsWNDfp3H2jyTJ08Wv/rVr3Sv3XbbbeKXv/ylEILH2iyBwVA4x/W7774TDodDrF27Vt3m6NGjIikpSWzatKnL+8RpshjzeDyoqqpCaWmp7vXS0tK4aQbZXSgNOHv37g0AOHjwIOrr63XH3ul0Yvz48Tz2nXTXXXdh8uTJ+P73v697ncfaPBs2bMDIkSPxs5/9DH379sWIESPwzDPPqF/nsTbP2LFj8d///heffvopAOCjjz7C+++/jx/+8IcAeKyjJZzjWlVVhebmZt02/fr1Q3FxsSnHXuraZFZ04sQJeL1ewwKzOTk5qK+vl7RX3Y8QAgsWLMDYsWNRXFwMAOrxDXbsa2trY76PiW7t2rXYvXs3du3aZfgaj7V5vvzyS6xatQoLFizAfffdh507d2LOnDlwOp2YPn06j7WJFi1ahIaGBgwaNAh2ux1erxePPPIIbr/9dgD8vY6WcI5rfX09UlJS0KtXL8M2Ztw7GQxJYrPZdP8WQhheo84rLy/Hnj178P777xu+xmPfdYcPH8bcuXPx5ptvIjU1NeR2PNZd5/P5MHLkSPzhD38AAIwYMQKffPIJVq1ahenTp6vb8Vh33bp16/Dyyy/jlVdewdChQ1FTU4N58+ahX79+mDFjhrodj3V0dOa4mnXsOU0WY9nZ2bDb7YZI9vjx44aomDrn7rvvxoYNG7B582ZceOGF6uu5ubkAwGNvgqqqKhw/fhwlJSVITk5GcnIytmzZgpUrVyI5OVk9njzWXZeXl4chQ4boXhs8eDAOHToEgL/XZvr973+PxYsXY+rUqRg2bBjKysowf/58VFRUAOCxjpZwjmtubi48Hg9OnToVcpuuYDAUYykpKSgpKUFlZaXu9crKSowZM0bSXnUPQgiUl5dj/fr1ePvtt1FYWKj7emFhIXJzc3XH3uPxYMuWLTz2Ebrhhhuwd+9e1NTUqH9GjhyJX/ziF6ipqUFRURGPtUmuueYaQ4uITz/9FPn5+QD4e22ms2fPIilJf1u02+1qaT2PdXSEc1xLSkrgcDh029TV1eHjjz8259h3OQWbIqaU1j/77LNi3759Yt68eSIjI0N89dVXsnctof3f//2fcLlc4p133hF1dXXqn7Nnz6rbLF++XLhcLrF+/Xqxd+9ecfvtt7Ms1iTaajIheKzNsnPnTpGcnCweeeQR8dlnn4k1a9aI9PR08fLLL6vb8FibY8aMGaJ///5qaf369etFdna2uOeee9RteKw75/Tp06K6ulpUV1cLAOLxxx8X1dXVakuZcI7rrFmzxIUXXijeeustsXv3bjFhwgSW1ie6J598UuTn54uUlBRx5ZVXquXf1HkAgv55/vnn1W18Pp944IEHRG5urnA6neLaa68Ve/fulbfT3UhgMMRjbZ5///vfori4WDidTjFo0CDxt7/9Tfd1HmtzNDY2irlz54qBAweK1NRUUVRUJJYsWSLcbre6DY9152zevDno9XnGjBlCiPCO67lz50R5ebno3bu3SEtLEzfddJM4dOiQKftnE0KIro8vERERESUm5gwRERGRpTEYIiIiIktjMERERESWxmCIiIiILI3BEBEREVkagyEiIiKyNAZDREREZGkMhoiIiMjSGAwRUVy57rrrMG/ePNm7oWOz2fD666/L3g0iihJ2oCaiuHLy5Ek4HA5kZmaioKAA8+bNi1lw9OCDD+L1119HTU2N7vX6+nr06tULTqczJvtBRLGVLHsHiIi0evfubfp7ejwepKSkdPr7c3NzTdwbIoo3nCYjoriiTJNdd911qK2txfz582Gz2WCz2dRttm3bhmuvvRZpaWkYMGAA5syZgzNnzqhfLygowMMPP4w77rgDLpcLM2fOBAAsWrQIl156KdLT01FUVIT7778fzc3NAIDVq1fjoYcewkcffaT+vNWrVwMwTpPt3bsXEyZMQFpaGrKysvCb3/wGTU1N6tfvuOMO3HrrrfjTn/6EvLw8ZGVl4a677lJ/FhHFFwZDRBSX1q9fjwsvvBDLli1DXV0d6urqALQGIhMnTsRtt92GPXv2YN26dXj//fdRXl6u+/7HHnsMxcXFqKqqwv333w8AyMzMxOrVq7Fv3z789a9/xTPPPIO//OUvAIApU6bgd7/7HYYOHar+vClTphj26+zZs5g0aRJ69eqFXbt24Z///Cfeeustw8/fvHkzvvjiC2zevBkvvPACVq9erQZXRBRfOE1GRHGpd+/esNvtyMzM1E1TPfbYY5g2bZqaR3TJJZdg5cqVGD9+PFatWoXU1FQAwIQJE7Bw4ULdey5dulT9e0FBAX73u99h3bp1uOeee5CWloYePXogOTm53WmxNWvW4Ny5c3jxxReRkZEBAHjiiSdw8803449//CNycnIAAL169cITTzwBu92OQYMGYfLkyfjvf/+rjlIRUfxgMERECaWqqgqff/451qxZo74mhIDP58PBgwcxePBgAMDIkSMN3/uvf/0LK1aswOeff46mpia0tLSgZ8+eEf38/fv34/LLL1cDIQC45ppr4PP5cODAATUYGjp0KOx2u7pNXl4e9u7dG9HPIqLYYDBERAnF5/Pht7/9LebMmWP42sCBA9W/a4MVANixYwemTp2Khx56CBMnToTL5cLatWvx5z//OaKfL4TQ5S9paV93OByGr/l8voh+FhHFBoMhIopbKSkp8Hq9uteuvPJKfPLJJ7j44osjeq+tW7ciPz8fS5YsUV+rra3t8OcFGjJkCF544QWcOXNGDbi2bt2KpKQkXHrppRHtExHFByZQE1HcKigowLvvvoujR4/ixIkTAForwrZv34677roLNTU1+Oyzz7Bhwwbcfffd7b7XxRdfjEOHDmHt2rX44osvsHLlSrz22muGn3fw4EHU1NTgxIkTcLvdhvf5xS9+gdTUVMyYMQMff/wxNm/ejLvvvhtlZWXqFBkRJRYGQ0QUt5YtW4avvvoKF110Efr06QMAGD58OLZs2YLPPvsM48aNw4gRI3D//fcjLy+v3ff60Y9+hPnz56O8vBxXXHEFtm3bplaZKX7yk59g0qRJuP7669GnTx/84x//MLxPeno63njjDZw8eRLf+9738NOf/hQ33HADnnjiCfP+40QUU+xATURERJbGkSEiIiKyNAZDREREZGkMhoiIiMjSGAwRERGRpTEYIiIiIktjMERERESWxmCIiIiILI3BEBEREVkagyEiIiKyNAZDREREZGkMhoiIiMjS/h/UiqW8GKu8TAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "avg_reward = np.array(hoptim.rewards)\n", "plt.figure() \n", "plt.plot(avg_reward)\n", "plt.plot(pd.Series(avg_reward).rolling(window=10).mean())\n", "\n", "plt.xlabel('iteration')\n", "plt.ylabel('average reward')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "gsnn-mds", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.11" } }, "nbformat": 4, "nbformat_minor": 2 }