{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d563033c",
   "metadata": {},
   "source": [
    "# Import tools/models be used"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "fc9e6e26",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from math import pi\n",
    "from sklearn.ensemble import RandomForestRegressor     \n",
    "import joblib                                         # to store model\n",
    "import os\n",
    "import errno\n",
    "from sklearn.model_selection import train_test_split  # this is very important"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "313e157e",
   "metadata": {},
   "source": [
    "# Read data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bdc08ed0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>$M_{inv}$</th>\n",
       "      <th>$rapidity$</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>121.079631</td>\n",
       "      <td>-0.304619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>196.219429</td>\n",
       "      <td>-0.401002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>478.422633</td>\n",
       "      <td>-1.010334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>99.018601</td>\n",
       "      <td>0.097534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>423.950224</td>\n",
       "      <td>2.223391</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9996</th>\n",
       "      <td>128.145991</td>\n",
       "      <td>0.246759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9997</th>\n",
       "      <td>576.782956</td>\n",
       "      <td>-0.554320</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9998</th>\n",
       "      <td>35.437849</td>\n",
       "      <td>0.628855</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9999</th>\n",
       "      <td>189.229229</td>\n",
       "      <td>0.462469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10000</th>\n",
       "      <td>443.127754</td>\n",
       "      <td>-1.858528</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10001 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        $M_{inv}$  $rapidity$\n",
       "0      121.079631   -0.304619\n",
       "1      196.219429   -0.401002\n",
       "2      478.422633   -1.010334\n",
       "3       99.018601    0.097534\n",
       "4      423.950224    2.223391\n",
       "...           ...         ...\n",
       "9996   128.145991    0.246759\n",
       "9997   576.782956   -0.554320\n",
       "9998    35.437849    0.628855\n",
       "9999   189.229229    0.462469\n",
       "10000  443.127754   -1.858528\n",
       "\n",
       "[10001 rows x 2 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "directory = '../data/'\n",
    "filein    = 'checkLO.txt'\n",
    "file      = directory+filein\n",
    "data = np.genfromtxt(file)\n",
    "\n",
    "m        = data[:,0:1]\n",
    "rap      = data[:,1:2]\n",
    "x2       = data[:,2:3]\n",
    "\n",
    "m = np.concatenate((m),axis=0) \n",
    "rap = np.concatenate((rap),axis=0) \n",
    "x2 = np.concatenate((x2),axis=0) \n",
    "\n",
    "Data_ave = np.stack((m,rap),axis=-1)\n",
    "df = pd.DataFrame(Data_ave)\n",
    "df.columns = ['$M_{inv}$','$rapidity$']\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0248b96b",
   "metadata": {},
   "source": [
    "# Split data into training and testing sub-sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "de4cf784",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for reproducibility\n",
    "#X_train, X_test, y_train, y_test = train_test_split(Data_ave, x2, test_size=0.4, train_size=0.6 , random_state=0)\n",
    "X_train, X_test, y_train, y_test = train_test_split(Data_ave, x2, test_size=0.4, train_size=0.6 )\n",
    "\n",
    "# rename data for convenience\n",
    "x2_train   = y_train\n",
    "m_train    = X_train[:,0:1]\n",
    "rap_train  = X_train[:,1:2]\n",
    "\n",
    "x2_test   = y_test\n",
    "m_test    = X_test[:,0:1]\n",
    "rap_test  = X_test[:,1:2]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2624e86c",
   "metadata": {},
   "source": [
    "# Now let's do some training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b8ef444a",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''Training and prediction with Linear Model'''\n",
    "#-----------------------------------------------------------------------------#\n",
    "# Input:                                                                      #\n",
    "# X_train  := training data set                                               #\n",
    "# y_train  := targets for training                                            #\n",
    "# X_trest  := testing data set                                                #\n",
    "# y_test   := targets for testing                                             #\n",
    "# filename := name for training storage                                       #\n",
    "# model    := name of the mode we want to use                                 #\n",
    "# ----------------------------------------------------------------------------#\n",
    "# Output:                                                                     #  \n",
    "# loaded_model := trained model                                               #\n",
    "# R2 := quality of the training on the testing set                            #\n",
    "# y_fit := predicted targets                                                  #\n",
    "# y_est := estimated targets                                                  #\n",
    "# ----------------------------------------------------------------------------#\n",
    "# Output labelling :                                                          #\n",
    "# Training(X,y,filename)[0] -> R2                                             #\n",
    "# Training(X,y,filename)[1] -> y_new                                          #\n",
    "# ----------------------------------------------------------------------------#\n",
    "\n",
    "def training (X_train, y_train, X_test, y_test,filename,model):\n",
    "\n",
    "    # train \n",
    "    model.fit(X_train, y_train)\n",
    "\n",
    "    # save trained model\n",
    "    joblib.dump(model, filename)\n",
    "\n",
    "    # load model \n",
    "    loaded_model = joblib.load(filename)\n",
    "\n",
    "    # R^2\n",
    "    R2   = loaded_model.score(X_test, y_test)\n",
    "    \n",
    "    # predicted targets \n",
    "    y_fit = loaded_model.predict(X_test)\n",
    "    \n",
    "    # estimated targets\n",
    "    y_est = loaded_model.predict(X_train)\n",
    "\n",
    "    \n",
    "    return R2, y_fit,y_est#, model.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "06b6bed9",
   "metadata": {},
   "outputs": [],
   "source": [
    "x2_train,x2_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "ca19e5ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "m_train,m_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "be16d388",
   "metadata": {},
   "outputs": [],
   "source": [
    "# name of the model for storage\n",
    "filename = 'storage/x2_LO_RandomForest.sav'\n",
    "\n",
    "# train \n",
    "Training_machine_learning = training(X_train,y_train,X_test,y_test,filename,RandomForestRegressor())\n",
    "\n",
    "# predict\n",
    "R2    = Training_machine_learning[0] \n",
    "y_fit = Training_machine_learning[1]\n",
    "y_est = Training_machine_learning[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "3b225d13",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_est,y_train;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "id": "1cf2c418",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_fit,y_test;"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "49492be3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9995653683139043"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "R2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "id": "93efe92e",
   "metadata": {},
   "outputs": [],
   "source": [
    "coefs;"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56253913",
   "metadata": {},
   "source": [
    "# Let's plot and see what we have"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "c97b86ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAELCAYAAAAybErdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABPD0lEQVR4nO2deXxU1fn/38+dmayQDRIIQgWtGwoCIrXFrVpBxSJuoN/qV+1PW2ut2PaLgqKCS0WxKlq1xQ3FhU0aQWxBxaK4goSlqLgBkrATQiCTkFnO74+ZCZNkZjL7nZmc9+uFZu6ce+5zZ86czz3nOed5RCmFRqPRaDT+GGYboNFoNJrUQ4uDRqPRaNqgxUGj0Wg0bdDioNFoNJo2aHHQaDQaTRusZhsQL7p27ap69+5tthmaDOXzzz/frZQqNePaum1rEkmwtp0x4tC7d29WrlxpthmaDEVENpt1bd22NYkkWNvW00oajUajaYMWB41Go9G0QYuDRqPRaNqQMT6HQDgcDqqqqmhsbDTblIwhJyeHnj17YrPZzDZFo9EkkIwWh6qqKjp37kzv3r0REbPNSXuUUuzZs4eqqir69OljtjkajSaBZLQ4NDY2amGIIyJCly5d2LVrl9mmxIWJFet47dMtuJTCIsIVP+nFfaP6mW1W2KS7/ZrUJqPFAdDCEGcy5fOcWLGOuRsfJ/eYTwEFCHM3/gQqbk6LDjbd7dekPtohremQzNv4OLbiTxBRiICIwlb8CfM2Pm62aWGR7vZrUp+MHzmkEpMmTaJTp0783//9X8D3KyoqOProo+nbt2+SLcs8KiqrmbxwPXvtDgCKcm1MGnk8owYeBoC1+FNaD4JEPMfTgXS3X5P66JFDClFRUcEXX3xhthlpT0VlNePmrWkWBoDaBge3zF7NxIp13iPBklylfvIrzz2kr/2a9ECPHPyoqKxm6uINbK1toEdRLuOGH9P8pBkt999/Py+99BK9evWitLSUk046iWeeeYbp06fT1NTEj3/8Y2bOnMnq1atZsGABy5Yt47777uP1119n6dKlbcrl5eXF6W4zk4rKav48Zw0j5AMGl7zOM12t1BqeZ6DOLsXXXw6i4vApGGKgcLc535DUf1565dMf6HRM4PfSwX5NeqBbkpeKymomzF9HdW0DCqiubWDC/HVUVFZHXefnn3/OrFmzqKysZP78+axYsQKAiy++mBUrVrBmzRqOO+44nnvuOX72s58xcuRIpk6dyurVqznyyCMDltMEx/cdjpAPOLtoJo+VZVFrseCdlGe/1eCb7qt4/Z07GH3MZQHrCHY8lTi621MEHCEoxeguA5NujyYz0eLgZeriDTQ4XC2ONThcTF28Ieo6P/jgAy666CLy8vIoKChg5MiRAPz3v//ltNNOo1+/frzyyiusX78+4PnhltN48H2Hk2wv8WRJZxwBVlY5DYOtxSs4IftarAeGopSAAsFgzDFjmHjKRBMsj4ztRZtp43AABPjT+k+Sb5AmIzFFHETkXBHZICLfisj4AO8XishCEVkjIutF5NpE27S1tiGi4+ESaOnnNddcw9/+9jfWrVvH3XffHXQHd7jlNB5831UxB9hutQQtt8sqTJi/jr1bfsmBrx5g/1dTcHz7ICdkx9bMktWu206GeVBAjn17TKNdjcZH0sVBRCzAk8B5QF/gChFpvTzn98AXSqkTgTOBv4pIViLt6lGUG9HxcDj99NP55z//SUNDA/v372fhwoUA7N+/n/LychwOB6+88kpz+c6dO7N///7m18HKaQLToygXa0Elw3v1COmWLXWquI8Sk9mug/1oDWCr6hLTfWg0PswYOQwBvlVKfa+UagJmARe2KqOAzuJ57O4E1ADORBo1bvgx5NpaPm3m2iyMGx7E8xcGgwYNYsyYMQwYMIBLLrmE0047DYB7772Xn/zkJ5xzzjkce+yxzeUvv/xypk6dysCBA/nuu++CltMEZtiQanLK57PNZg047QJgdbvpsmtQwPdiHCUmrV0PanCAaiV/SjG4oYGHnKNjHu1qNGDOaqXDgC1+r6uAn7Qq8zdgAbAV6AyMUUq1GU2LyG+A3wD86Ec/isko36qkeK9WuuOOO7jjjjvaHP/d737X5tjQoUNbLGX93e9+F7CcJjAf1sxEDEfbN7wdaYFLMaZgOLPlAqBtB1qUF1Mwwbi1awjdtqsLS8Gxr/UJrM3qxC73qRTHdh8aDWDOyCHQI13rWYDhwGqgBzAA+JuIFLQ5SanpSqnBSqnBpaWxZ3AcNfAwPhx/FhunjODD8WfFLAya5LKtfnvgN0QwlJUfd76JH/34z9QfDPywvtfu8NsHETFxa9cQum1vc9QFNKDB4sZaUMm+Bof2O2hixgxxqAJ6+b3uiedJyp9rgfnKw7fARkDPq2haUFFZzdApS+kzfhFDpywFZ1HQsm7Dxcp9r3LL7NXUNjgYaSxnedbNfJ/9PyzPupmRxnIAXvnkh2g71uS16yD3KQJFZQtwK5i8UK9s08SGGeKwAjhKRPp4nXGX4xlq+/MDcDaAiHQDjgG+T6qVmpRmYsU6/jh7dYt9KQ07hmG4g69SElstACON5UyxPUtPYzeGQE9jN1NszzLSWI6CaB26SWnXFZXVNOwYFnQj9EGrnZHG8ha7wzWaaEi6OCilnMBNwGLgS2COUmq9iNwgIjd4i90L/ExE1gHvArcppXYn21ZNalJRWc0rn/zQpn88/0A9d+/ag9HaWetFgIJjb+O9oxfy0z7duK+kqPm9PGniVuscIDrHdLLa9aQF6zn/QD0FLlfQMoOLXo/Yfo2mNaaEz1BKvQW81erY3/3+3goMS7ZdmvRg6uIN/NJYzuCi13m5xMJ2q4UsZx6Da2q52F5H9i4n40u7tF2xJKC8rgE3MLugMwATa2oB6CF7PP+PcvlyMtp1bYODoSWzWEWux9EeIPre37raKGrQTmlNbOgd0pq0Y3Dd25xZ9DJPlNrYZrOiRDhoa+CJUhuL8vMYUW8PryIR5noFAjx7BGwWiWn5cqIZUjiLh0vz2Ge1BF2u22AIF5xYnmTLNJmGFoc04j//+Q8XXHABAAsWLGDKlClBy9bW1vLUU081v966dSuXXnppwm1MBhOy5vL3kk40Gi2bb6NhMK24CIAid7B9xC3xlbKrLB5yjk75oKZ7Sle1ue9AvP55tV6xpIkJLQ4pgCvE/HEwRo4cyfjxbSI0NNNaHHr06MG8efOisi/V6MbuoOExtlstLMrP40CYGesMPLMzuTQxyfYS5/FBSu8w3mVt/76E2Hd8azRaHPxZOwcePQEmFXn+v3ZOzFVu2rSJY489lquvvpr+/ftz6aWXYrfb6d27N/fccw+nnnoqc+fOZcmSJfz0pz9l0KBBXHbZZRw4cACAf//73xx77LGceuqpzJ8/v7neGTNmcNNNNwGwY8cOLrroIk488UROPPFEPvroI8aPH893333HgAEDGDduHJs2beKEE04APLm1r732Wvr168fAgQN57733muu8+OKLOffccznqqKO49dZbY77/eOJbulrt7kJ3Z2BB7Z5VxCPFJTgDPV0H2FV8Wd1+X9BWSuQAD9umM7ju7QRYHx+6hzEgynErJluf1zulNTGhxcHH2jmw8GbYtwVQnv8vvDkuArFhwwZ+85vfsHbtWgoKCpqf6HNycli+fDm/+MUvuO+++3jnnXdYtWoVgwcP5pFHHqGxsZHrr7+ehQsX8sEHH7B9e+BNXjfffDNnnHEGa9asYdWqVRx//PFMmTKFI488ktWrVzN16tQW5Z988kkA1q1bx2uvvcbVV1/dHNRv9erVzJ49m3Xr1jF79my2bNnS5npmUFFZze1LXqS2y92cd0QedkOwtpo6yhEbY0+ZwA5r8GZtKAVKYSjFmLr9DDzYxLCePejfuxfDevbg7U5ZTMiam+jbiZqxR1xEjjv03FeDIRQXfBxTXDCNRouDj3fvAUerJy1Hg+d4jPTq1YuhQ4cCcOWVV7J8uWfD1ZgxYwD45JNP+OKLLxg6dCgDBgzgxRdfZPPmzXz11Vf06dOHo446ChHhyiuvDFj/0qVLm8NsWCwWCgsLQ9qzfPlyrrrqKgCOPfZYDj/8cL7++msAzj77bAoLC8nJyaFv375s3rw55vuPB/cvewWjbB5GVi0I7LNYAKHQ6UKUotxWyKRT72XEESMwXMVBahFcCOIq4f5dNQw82MSkriXNTu1tNiuTupawMj9Mh7YJjDjzXsr292k7CvJHhHtLixk2RPscNNGjM8H52FcV2fEIaB222/c6Pz8fAKUU55xzDq+99lqLcqtXrw4Y8jtWVIiOJTs7u/lvi8WC05nQeIdhY89fiNEqbpLTEPY6u5BVfSdL7jq0QnRg5yv4vP7viNFqDkY88/HKupdJXUvIcbsDOrUf71LCBYm6kTiwKbcWo5120WgYvL19BndzVZKs0mQaeuTgo7BnZMcj4IcffuDjjz8G4LXXXuPUU09t8f4pp5zChx9+yLfffguA3W7n66+/5thjj2Xjxo189913zecG4uyzz+bpp58GPM7turq6NuG//Tn99NObQ4B//fXX/PDDDxxzTOou3wQwvLubWyO2WvbaD8USqqispvS/VRSq0E7+g4awzxK4+W+3xF+Q44kE+Sxas69pZ2IN0WQ0Whx8nH0X2FrN0dpyPcdj5LjjjuPFF1+kf//+1NTUtIm0WlpayowZM7jiiivo378/p5xyCl999RU5OTlMnz6dESNGcOqpp3L44YcHrH/atGm899579OvXj5NOOon169fTpUsXhg4dygknnMC4ceNalL/xxhtxuVz069ePMWPGMGPGjBYjhlSkMKss4PEcp+c7863MWb1oOvfIdPaH1bIDi0D3/NTeIyBBp81a4nYUJdYQTUYjoaYY0onBgwerlStXtjj25Zdfctxxx4Vfydo5Hh/DvirPiOHsu6D/6Jjs2rRpExdccAH//e9/Y6onlYj4c40Di75fxJ3v34FDDo0Ictxu7tpVQ03dz5jk/DUbp4yg6q4j6WnsZljPHp68DiFwO/MQw9EyzLfbxpQzPL4Lf0Tkc6XU4LjeVJi0btuPz/0TMw8sDrnfQSk4uHUMU8+7VkcX1oQkWNvWIwd/+o+GP/4XJtV6/h+jMGjix4gjRjBx30HKHU6PA9rhZNLuGgyBV3p/Qadjx9P/udOp7OxZVDB2by05ITbCKbeN43ceza27DjTXme3IRfZc1kYYUo2bq5YwaXcN5Q6nRwUCLNEtri/BUTdQ73XQRI12SCeY3r17Z9SowUxG7d3KxXsPvV6Un8ekriXNT9DKupfJXUswUM0hNKYVF7HdaqGTS7FfOqEMOziLOOxAAXtLV/KwNYvuThcP7NrDOQe2MS5IroSUYl8VI7xbuf3vH2gWitzsnYwpeozZtbeYYKAmE9AjB03KMnnpTPo/dzonzOhH/+dO5828/BbvTysuajO1ctAQHvOG0BhRb2fs3lq6OV3stxiIyuayH93KwZ3D2VO4me2tlrC+3SmLyVkzk3V70VPYk0X5edxe2qXt1JJ3R982m5Wl3bYypHCWOTZq0h49ctCkJBe8+kc2Nb2DWA8tP723tBjL7kOjguAhNKxQ2Is3nTVM6lrCQcPjeFbWvczd/CjZ3aX5mA9fXKbz61vn50k9Hu85jBcOLMYdxnLWPaWrkmSVJtPQIwdNyjF56UyPMLTq+/wD6wFBQ2iIqxj++F9uL/lxGxHwOKCbAp4XTGxSjWf2fxg4PEgAdoYRi0mjCYQWB03K8frGZ4JFo2abXwd+ut3exhmb7VZc0ud6ANyWvQQkSN3dnS72qk4pH81UGeHv4DYg5e9Hk5pocUgRZsyYwdath6Y0rrvuOr744ouY6920aROvvvpqxOddc801pkVxDdqpAyDc2bUHb+bn8UbnTi1zGihF132Hc2LxWQAhwmgEQCnsItyQc1ZGrfBxE3XaU00HR4tDitBaHJ599ln69u0bc73RioMZVFRW0//hB0IXEvhnJxu3lxwV0BlbVbSFcf96gYkV67ikz/Wo1jmlg+3rEWGf1cIX3dez0/1R9DeRDFRWRMVT/n40KYkWBz8Wfb+IYfOG0f/F/gybN4xF3y+Kuc6XX36ZIUOGMGDAAH7729/icrm45pprOOGEE+jXrx+PPvoo8+bNY+XKlfzqV79iwIABNDQ0cOaZZ+Lb+NSpUyduu+02TjrpJH7xi1/w2WefceaZZ3LEEUewYIEnh/2mTZs47bTTGDRoEIMGDeKjjzwdwvjx4/nggw8YMGAAjz76KC6Xi3HjxnHyySfTv39//vGPfwCeeEs33XQTffv2ZcSIEezcmdzQCxWV1UyYvw5X4VtBp5QOoYKOLkQU+eWz+ObLh/h+9wFaZ+8RRZtori3eNxzkdlsSmfHJprXghUIk9e9Hk5Lo1UpeFn2/iEkfTaLR5Qldva1+G5M+mgQQ9aaoL7/8ktmzZ/Phhx9is9m48cYbue+++6iurm7e+1BbW0tRURF/+9vfePjhhxk8uO0m3Pr6es4880wefPBBLrroIiZOnMjbb7/NF198wdVXX83IkSMpKyvj7bffJicnh2+++YYrrriClStXMmXKFB5++GHefPNNAKZPn05hYSErVqzg4MGDDB06lGHDhlFZWcmGDRtYt24dO3bsoG/fvvz617+O6r6jYeriDTQ4XHQKK26QTz0CjwJchvBFeSWW/esRa0shUIaQ73KT53B6/BcBlEhZw7HBRCyR5WlQIafpNJrAaHHwMm3VtGZh8NHoamTaqmlRi8O7777L559/zsknnwxAQ0MD5557Lt9//z1/+MMfGDFiBMOGtZ9vPisri3PPPReAfv36kZ2djc1mo1+/fmzatAkAh8PBTTfdxOrVq7FYLM0huFuzZMkS1q5d2+xP2LdvH9988w3vv/8+V1xxBRaLhR49enDWWWdFdc/RUFFZTXVtAyON5ax3utlpCx0WonfW2Wxqeid0pSK4LE0E8j7vMwzG797DlC7FnlzMrSjP7x7pLSQV5ShCsmrDLu92FiXMFk3mosXBy/b6wIl0gh0PB6UUV199NQ880HIe/f7772fx4sU8+eSTzJkzh+effz5kPTabrTl0t2EYzUHyDMNoDqn96KOP0q1bN9asWYPb7SYnJyeoTU888QTDhw9vcfytt95KSHjw9vAl8en64wr+Y7VT6PaGgwhiiwBbncu9f7UTFyzY/YhwV1kXAi6EdQtjB40N/wZM4MS9R7Cu7PPg9+ePUhx+sLH9chpNK7TPwUv3IE+LwY6Hw9lnn828efOa5+9ramrYvHkzbrebSy65hHvvvZdVqzyblEKF2A6Hffv2UV5ejmEYzJw5szkvdet6hw8fztNPP43D4Qk29/XXX1NfX8/pp5/OrFmzcLlcbNu2rTl1aKLxJfE5aGtAiVBr8T7JB3Ucg0M1IhJewMhg1ThEAm4iK1DulI+tdL58TNheBxGq8huYWLEukSZpMhA9cvAydtDYFj4HgBxLTkxPkX379uW+++5j2LBhuN1ubDYbjzzyCBdddBFur1PUN6q45ppruOGGG8jNzW3O/RAJN954I5dccglz587l5z//eXMiof79+2O1WjnxxBO55pprGDt2LJs2bWLQoEEopSgtLaWiooKLLrqIpUuX0q9fP44++mjOOOOMqO87EgIl8Wl+Ig4xgoiICOoJL9S3ubxUbMEVweeigDlfvMF9o/olzihNxqFDdvux6PtFTFs1je312+me352xg8am/FOkGcQjZHdFZTVTF29gX/excen/4yUk5S7Fkl+3DZSYSiG7+884ARXhvWY7cll53WfxNk2TAQRr23rk4MeII0ZoMUgCPj+DdPlXsM3Kh4jX6CEclGLsERcl51oxUEAn9lEf0TlN1tTNi61JTdJgEK3JNHx+BiOrtt1+XyBwzoI2BWMXkEKXmxFn3htzPYmmvn5Au7741hS4gu/t0GgCkfHikCnTZqlCPD5Pe/7CltnXmitvczHP9Invn1ckCp0uJM7fa47bzYTG9Pg5NGWtDxofKhhK0uPeNKlDRreYnJwc9uzZowUiTiil2LNnT9BlsuFiBNvo1rrDaz0aEKHc6WL5luqgD84RfdVKHcoqt/cAI06LPV94Mgj6+YWgzkj+MmVNepPRPoeePXtSVVXFrl27zDYlY8jJyaFnz54x1VGYVcY+R3ThOXxhtQ08QeVaE8nsUrnTxZKqrZBbAudNTZu0sNF8firSoYamw5PR4mCz2ejTp4/ZZmhaMeGUP3HHsttwRfE068vhEOsMus2tuLLGBRc/kzai4GPCKX9i/Pu3Rehn0aNnTWRk9LSSJrWoqKxm6JSl3DQdOqvIu/cct5uxe2sBz1N/LCgU692Hp50wgGdVXaSyatP+aE2EaHHQJAVf1NXq2gYUUBtmJjMAFBS4FHft2stPDxi4FYzdW0tO6+iqETgcnIZBZdeq8G1IISoqg/tcguEy9MhBExlaHDRJwRd1FcBaUBm0nHhXJBne/2c7cmnYOobqrx/kDzXPMOjgdABG1NuZtLuGPLf7kChEuJx1m9WSllnSpi7e4IlBFQEKnRFOExlaHDQJwzeN1Hv8IqprD4WZzi5dHLgjV4rjtg3kwFcP0mn749zpvpaKH/bw9cGpLM+6mZHGcgC2qq7Np9h9y1yj5NZ/vUCf8YsYOmVp2nSeW2sbOKCyIz7vrndfSoA1mkwlox3SGvPwTSP5Rgv+SNClmMIV505h9sDDYO0cnG88hNXwxLrqKbuZYnsWHPCn3J+xt3SlZ+VSuMIQaKe1CFk95pDVYza1jiJuX3IecDWjBh4W9n2aQV6WBafFEZnfQQRX8T+pqPzflL8/TWqgRw6auOIbLdwye3UbYRhpLGd51s308IYZb43bUdTccdn/dRdWVyOL8vMY1rMH/Xv3YlSvruR1/ydfdF/Pdps1bGFQSgi2a0xEIQJGVi1G2TzuX/ZK+DdrEvVNLnKcuRGfZ1gauGPJjPgbpMlI9MhBEzdajxasBZVkd1uIYbEDilUuN2tq7JxudzK7oHOLzl0pyGo6vvl1TsN2FuXnMalrSXOu6G02K4sKFCIBdlcHQwFuGxhN7RYVw4E9fyEVlb9K2afrispqRhrLqXfs5TNrdmRTagJG2SzgjoTZp8kcTBk5iMi5IrJBRL4VkfFBypwpIqtFZL2ILEu2jZrIae10ziufg2G1ex7aRdhntTCxawmLO+W36dREoDR7GfOnHceQ54YwoHdPbi/t0iwMLQpGgoBYmsIONyG2WibMXxeV/yEZ7Xrq4g0UdJ/HZ7kRCkOzASptfCsac0m6OIiIBXgSOA/oC1whIn1blSkCngJGKqWOBy5Ltp2ayNnq53QuKluACrB80mkYQZexbrNaeKDAoMHqSfwTKBlP4hEcuSuZunhDZGclqV1vrW1gYUGUwuAl0nvTdEzMGDkMAb5VSn2vlGoCZgEXtirzP8B8pdQPAEqp6GItaJJKj6JD8+AhQ0SH6NjajBQCkMhQWSKKnPL57HR/FOmpSWnXPYpyY94dviPye9N0QMwQh8OALX6vq7zH/DkaKBaR/4jI5yLyv0mzThM144Yfw0XWD7mn5I8Ji+ST7VaevQ0BiJdoiOEgp9uSSE9LSrseN/yY2H60ImSXLtZTS5p2MUMcAvUbrX/WVuAkYAQwHLhTRI5uU5HIb0RkpYis1MH1zGeU5UNOL5zJE6W26KaEgpyjlHhaiFLkuN2MPHCgze5o5bbRxX0GqDg1acveSM+IW7uG4G17lOVDTm5oiEkJxVarp5Y07WKGOFQBvfxe9wS2Bijzb6VUvVJqN/A+cGLripRS05VSg5VSg0tLSxNmsCZM3r2Hp4s7hTU1FDZKIagWTu03Onfiwv0HKHc4EaVwNxXRuO1idm68gEhD8gXrY92uvEgtjVu79tgVpG2/ew8/2LJiTm4UxbSZpoNhhjisAI4SkT4ikgVcDixoVeYN4DQRsYpIHvAT4Msk26mJELWvim3ekNpt32zZC9vcfkl7Qj0Fi7R5Jm80DN7Py2NJ1VbWbNzCuqq1/KfxBc5xLYu4Uw/Wx0YRMDY57XpfVXPY8mgRgeyyxTHVocl8ki4OSikncBOwGM8PY45Sar2I3CAiN3jLfAn8G1gLfAY8q5Rqm/Vdk1LsoGvwBiVCoa0MpcDdVMQtu5pYvqWatZu2RBVh1ddBing68p7Gbs4sehnDaGjnzDCxRFZP0tp1Yc/msOUxYa2NvQ5NRiOZkiVt8ODBauXKlWab0eGYvHQm8zY+g7LsJceZy0GrPUjcJK/bwJWHDQduSxPdna7mENz+m93Codzh9CTq8WNYzx5ss8VnX2d5fjlLLj3klBaRz5VSg+NSeYS0aNtr57DonXGML+kc09SSUsJ/r1kbJws16Uywtq3DZ2iiZvLSmczd/DBY9yICB20hnra98fEMqx2X1YESYZvNyvjSLqzKzuLuXTWUO5zNeaJDohTbrBaG9ezBovxD00ixTrccqh/GDhobn7riTf/RfNfrkpirEZ38R9MOOnyGJmrmbnwCsbZyAIsEDnIXDBHmFHTme1vToc491Ll+dW+zWZnUtQTwhPAucLnZFweByCWbEUeMiLmeRDG9bjlijc0hbWhx0LSDHjlooifEvLxvJVFYSy5FWJmbhQon/Har9xsNg2nFRSzKz8MezSqpVvbluN1M2LmDFQv+EXldySJCf0gg3JDa96gxHS0OmoSwpGprZM7mGObPt1stPFJcgiOKJUaFLnezkJU7nEzaXcNF9jp6rZoatT3pQLnTlfH3qIkNLQ6aiJm8dCb9nzs9rLIB03nGmYKsbuy0BmnKoUYuSrHPYrDNaqHQm596RL0n7EeZ2p0AS1ME732vyAsR4kTT4dHioIkIjxP6UZTXCR2MYT17sCAvn/MO2PnDLocn7WcCsLkVPz94DN2CjFAEKHS6PJvpfNNcCs8/3zSWCLUWC3eWdml2cO+UrgHrSwUsRJ4FrgUi2A2Du0tLmLx0ZnyM0mQcWhw0YeFL4jPnu+mI0U4+Be9KpNtLSzk6exx31TyKO0HRlhwCFfI++y2CNcAIRYlgtxhYlTrk0wiS+8chwrTiIhpUFlsGjUuIvfHA7Y7PqiyHIbz5/RNxqUuTeWhx0LRLRWU1ty95kdoud4dI8dkWMdxkd/NsEnY7ixJjnLfDtxsGSsQzOmiFQwRnmM7qbVYL/z3pPk4e+dt4Wxo3lBG/6aDGUNFzNR0aLQ6adrl/2SsYZfMwsmojz7VjaeCwolxGH/EbbNJyOsTqdgfszKPFJbGv3lcYKS0MAEQe90mjiRgtDpp2secvbH8qKQiCJ8z0Pz/oRl3VKMoc7uaVQfftron/avsYA9Klw+YwlQY2atIfvQlO0y5GBFNJrXG78hg3dw0Ot4KGgRx/oJ4ptmfJk6YWu5vDJpINdlGcV5hVFnndScaIwz4HjaY9tDhoAlJRWc3UxRvY4f6InB5hp2BugdWtqN/xS48weFngPhUcMLjodZ7oaosiJ3SUI4MwzlMKJpzyp+jqTyI2oxMOdSBu9U1eOpO7z7oqbvVpMgMtDpo2VFRWM2H+OhocLvKPXBy4X/X3FQQMtKfotq83X9UNxFpQSXbpYsRWi3Ll8i7CUkt28P66vaf8aEcP7SCQ0mEzfDQ5XEi8frkivL7xGe5Gi4OmJdrnoGnD1MUbaHB49g2EWp00ZdcextTtD7zRTISaknpKu68np3x+szPbsDZgWO0hhSHXHXpOvcjtTsi+CbezKD3SZ8Z5WskdedY7TQdAi4OmDVtrGxhpLGd51s1Ygjk/RRhf2oXZBZ2D1tPg3k122eKIndkNIcJgGG4Lf645wF927YnrzmulwLn/WCYvXB+3OhNHvEdNicr4rUlntDho2nB1p8+YYnuWnsbu0Ek3/XYYB8LtKGKfY2dkFw9Rn1Jw5546Rh3Yx4h6O5N211DkcsWUT9n/sraiz9lv/SzlRw/xX1GlUv6eNclHi4OmDWPltebVRNE2kBy3m/41R+BuKmq/cJidu6GEHHfLKRXfFJThDY1hhBsJNgBiOMguXcykBak9eihzxTtWlTBhvk78o2mJFgdNGwodO1mUn8ekriW4o1w2Oml3Dc/Z3+LamoaQ0z/iDr9+ZSgeLykCaLZvm80KIrhFyFGKv+zaE1Xa0WZ7bLXUNjhS+kn6lpq9cRkt+RAUDQ53St+zJvlocdAAh2In9R6/iFqVz7TioojSdvpT7nQxot5OnjTxZ/s3Lad/Wv1T4o5o5ZEvIVAg+3y5HcburQ0YZ6kZRdCd2YJgLahk6uINYduUbIYekHad9pEgKIYUzkrpe9YkH72UVdNi6aq1oJLRZYXsCBYCuz2U4nS7nVN7HcY+S6s64rD8tLt3VBAsJeh2q4UR9XYqOuXxSW5u4GsKFDjdHDSkrQCKIr98Hju3AZwVs72JQAQao8hdEQwlwvfdK9m37RhS9Z41yUePHDo4FZXV/HnOmmZhyCmfzw6bJeqO3KYUcws6e9J1+jus4yAMOd6cC3BIJFrT3eliUX4IYfBSZzGYtLsm4JJYt+Eit9uSmO1NFIWqnoI4+x0OGkJOCt+zJvlocejA+EYMLqU8wtBjTtQxlABQCod3/j+eKOX5T6N3+Wy/3r3YZzHaTB35xGNacVG7YqTwTE0F62KVtTYOlsefispqtqouNMVx5OBD6f0OGj+0OHRgfJvdfCMGkSjnsX0+hDiNEFojQptRiN0wcItQ6HQhStHN4eLPu+ycd6Ah6JRT60q32YLPqpbnd4/fDcSRqYs38Kfcn9GQgM/Z5rLFvU5N+qLFoQOztdazLDS7NPKNav4YkBBRaA+3CCKwdtMW3qmqZmT9AW5x/I5SZwQiJ9Jm5Y/VLQwtSc1wEltrG1jfdVNCPu88DuoVS5pmtDh0YApzPU+KkSTwaU2O2x16o1yCqfVzKOdJE9NsT/HHmpqId08XuVzNocTv3LUX9dG38TY1LvQoyo3p+wpFnUX49I2/J6RuTfqhxaGDUlFZTX2Tk5HGcro5o+jevR3ppN01Me0rOFQfUa/d9w/97Zt5yolkM5wItYbBTxoaWFK1lYvtdVzX9HJUtiSaccOPIdeZm7D6j8ubnbC6NemFFocOytTFGxjY6TW+PKKCnda2UystaPVejtvNlF17WFK1lRH1dsburcUW9i5n1caRbHErlIpyhZQ377MP3+a4WkuE9YnwSW4u93k32fUw9kRuSxIYZfmQ2/dui+smuGZE+Fup9jtoPGhx6KDsdH/E990r2e7dYRxo7t2fcoezedpl0u4aRtQfyj08ot6ONcxNWYZSXLL/QIv6bG4LYkQ/+tjm54Bub/OeYA1+nyLM9QYSbMxNTYc0795DFs7EiAMkxNGtSU/0JrgOhi+JT1bpYg62Xg4ZomNYUrUV8PRJ93cp4vbSLrjxPF0MaWgIGUnVH6dhMLegMwrPnoRhe/J5qVsjsUYGHdazRwuRaINSGIAbJwJBQ9e5gSbJJu+8e2KyJ2Hsq2Jaz3KIcvd6OFw952leHP27hNWvSQ/0yKED4dvXUF3bEJFT07+R3NmljNkFnT17Gbx7GtrbcNYatwjKu5R0VlkjhXEIvb3NfwQU4rqIZ0dwKBbyc+g/OmabEkJhz/CW6kaLCGv2P5O4+jVpgxaHDsTUxRtw5K4k/8gpEZ3n67rtKosFBTltO+BgnW0YUx8HDUEp2q4uimTapD1hiiBznAWoz60M/9rJ5uy7oltAEAEuSxOTl85M6DU0qY8Whw7EDvdHLbKyhUu504VTGYx3XIeKJJdAmBfxhbLw90OMqHOS3dqPEU047gjLu0R4uSSBT+ax0n80xoE+CfM5AM2pQzUdG+1z6CBUVFaT3W1BxJvdctxuTrPbObdXOTusbwYvGENe584uNyPq7c1Obp8mnNqYx+MlRWy3WujudDF2by33dC3BHul1Iiyf0GmbOLCt8/6EbzrUqUM1EYmDiPQBngX6ABXA7UqpRu97nymlhsTdQk1M+BzQO9wfkdMjwtzDSnHh/gO80bmT3wogaSsESnFKQwObbVkep3CEHVe9ZFHl7sphshsF+HzbF9jtXGA/tCpqUX5ewoUBINuZ134hE0lG3CflLEr4NTSpTaTTSk8B84HLgBLgXRHxJRHWC6RTDH8HdHbp4uD9ZNDcBvB+Xl6AsNbSPMUjXmH4Kjs79GqhELgMF0s7ec5tvehpUX4ew3r2oH/vXowv7RKTfyMcDLeFvTtHxqWuRFFoK01o/UrBwZ3DE3oNTeoT6bRSN6XUk96/rxGRCXgE4hyCrw7UmMTUxRs4x7WMW7PmcL4tFxVouahSFLndnk1jAQja4fs6abebFbm5uGKZ5hCYWpbFy84enG63835eHtutFgpcbuwWA0c4dUuAEY2Pdqa8fLqiHEU07BpON+NnUd5Icji4czgUvZTQqaXs/M0Jq1uTHkQ6csj2f6GUegCYA7wLdA54hsY0Bte9zRTbs/Q0dgfNf1DkdjN+z96AO5zbW/IJoAwjNmHw4V3aOrugM9tsVpQI+6yW8ITBr46AI4ggdSgF2Y5cbt15kLUbf2Dxlq2Mamxg3PBjoryJ5PCznXspisPy32CIgBR+mrD6NelBpOLwtXeU0IxS6mHgVeDIuFmliQsTsuaSJ00AjN1b22a5aI5XGEbU28kNljwm2Ttmk3g9AT6o2sj/2ndgCPQ0djPF9iyjLB8mzYZomJA1l/F79kYcXDASRE8EdHjaFQcRGeT38nLg/dZllFKPAL3iaJcmBioqqxkweQkr8uo5tddh9PPO1xvQnP/APwyGUxnUBZlWymQMFLk0tThmdTXCuym6O9pLN3Yzot7OgMbGljm544oWh45OOCOH90Tk5wBKqYNKqYOBCimlwg4ELyLnisgGEflWRMaHKHeyiLhE5NJw6+7oVFRWM27uGhoK5nJ7WZcW6TrthoHdYjC6bj92v6xqJ/+oD3HMV28uYY48lIJL6w4EfnNfVZSXTk67bsjtzn0lRYd2picoydLEinVxr1OTPoQjDq8Cb4nIJa3fEJFTRWR5JBcUEQvwJHAe0Be4QkT6Bin3ILA4kvo7OlMXb2Bg59fIKv44YIfhEGF2qxzPTqsj/n1LvJ9k4/V0rEApwbH3FH69J/BoyR5F0L1ktuuHHGOYXdA54VNwL3/ygxaIDky74qCU+h3wADBLRG4AEJF+IrIQzxRTcYTXHAJ8q5T6XinVBMwCLgxQ7g/A68DOCOvv0JxU9zbVZZ+H7jgCvBf3fsZvuWue253YHb3h4J1KG7fzIAe+eoCDO0bxoGM0dpXVophdZfGQY0w0V0hau95rb2q/UIz4OobXPt2S8GtpUpOwHNJKqXuAG4DHRWQZUAmcAPwa6BfhNQ8D/FtclfdYMyJyGHAREDItlYj8RkRWisjKXbt2RWhG5lBRWc3QKUvpPX4Rg4tep86SIlFRRCh3urhrd03scVqCTZ2EITr++SeurD/UJy9wn8p4x3VUubviVkKVuyvjHdcx40BUeznj1q69ZYO27cFFr0djX0T4XN0us0VdYxph/WZFpAQ4GnABpwGfAEcppWYopSJdMhHoGbV1C3wMuE0pFTLIv1JqulJqsFJqcGlpYjcGpSr+G90AT1ygFIrJv81qYXxpF09E1HCIojPKDTUyUYpGEaZ0Kea+kiLOOLwHnY+9jc7H3kbRUXeyvbPPv3DofIFocinHrV17zA7etmcm6TsuO+ZWrAWVOq90ByWc1Up3A98Dvwf+ime0MBh4JMprVtFyZVNPYGurMoPxTGNtAi4FnhKRUVFeL6OZungDDQ5PXzPSWB59XKBEPSFG4yyNMCLrwVDX8L5Xa7Ewu6DzoQxxIrisDr7pvoo1ne0tlrL+0ljO1MUbIrM5ie06KbGfRGgwDPLLZ3HXuy8l/nqalCOcHdJ34ImnNFkptQNARH4A/iki3YArlVKRRHNbARzljdNUjWd57P/4F1BK9fH9LSIzgDeVUhURXKPDUF3bgLWgkuxuC3nPUh95BUqRqxQHIfyn+0QShQ1hD10D1O00DKYVFzUH/cuTJm61zuG02lMjNSNp7brM6WaHLTlLj92G4C58C5iQlOtpUodwppWOU0rd6BMGAKXUUuDnwBnAvyO5oFLKCdyEZ7XGl8AcpdR6EbnB5/DWhE9WQSU55fMwrPbQT+mtn8aVosjlYsquPXy2uSq+whDOyqI4rs2P1Z+xzWphWM8eLMr3BNzrIbvpUZQbUR3JbNen2+uT6uAXW62eWuqAtDtyUEp9F+T4KhE5lSiW5Cml3gLeanUsoJNOKXVNpPV3FCoqq7GVLg4r/7IF6OR0UWcxmsNf+56W7yspip9RStHZpbCTjcsaYkDpE6MYQn37zrc4snHZmqKvxhu6Y1LXEgDOO2Dnsb7fAGdFaEpy2vWyvE6hHwLiPAIU4LZ/v8CogRPjWq8mtYnpoUsp9S2Q2lHKMhSfIzrcdJ8uEfKUYu2mLSyp2tosDIvy8+K7Zl6E/VYDt+HEGk54h1ivK4LDdjAu5jd6p5gMgZO/eyL2ChPETmuIn22w+FKxIJBXNj++dWpSnphXGPpPN2mSh88RrRxFYZ8TyJE5rbgoIStflKHIwhOuI+rOKtzz4mh/cxTaKHdJJwVXO1uLEvB9Oi1NjPnHqLjXq0ldUmRBvCZSfI7oLCP8+edAkVkTubrJl5hnTN1+yh3O8Dt7Xzn/qadYiPD0Rfl5UNgztmsmkMYdwxB38gMifpH9rc4t3YHQ4pCmeBzR83FaHeE9KSpFgyHNTlcfwUJ5t0uYORb2WS283rkTteFszFMKI9CcecxTT5GUFR4rLoaz74rtmgmkzPgZ5ft6JX/Xuc4t3aHQ4pCGHHJER7CC2LvWf1LXkhYCESiUd7xxGgYNhhFWJ59YS8Jju9UC/UebbUZQHuv7De5O35uy2VHnlu44aHFIMyoqq5m1eAKGLciPtJ0loj6nq6/YiHo7k3bXUO5wIt7lrabFQYqhszPiGba6vTl9kzn5yynsSMZGuAAoR5Fe1tpB0OKQZsx9+3a+6xYisJ4IFkI7grdZLQzv1YMT+/RiWM8eACyp2sraTVsYv6f9J8O4dsStEYnYR5DjdnP/zj1xubxyG8je8+JSV8JoqKEgWHKmRKIUzgPHRrN7XJOGaHFIIyoqq9nU9XMajdBfm2/ZankIf4IvFadvfb9vqink6iWlKHS6sEBCpzQU4WuPoRSTdtdwgd0ekWshOEJDU5R+mCRiymZ2EXKKVrDT/ZEJF9ckGy0OacT9y16hLsxvbJvVQq1hhJVTudEwmFDahf69ex1ayhkAUQoRIsvrHAVhh2NSCjcwvrQL13fryui6/QF3ggc5NfBHY7jI7bYkYpuTSm6J57s1AbfhIifVPx9NXNDikEbY8xdG9MjYYAnPCQygRFDt9MrKMOLfKUUzPaWU5zS/LGif5Oay2WZlTN3+5mkvQylOaWgIeA2R4IuYlLU2cpuSyXkPmvrDVZa92u/QAdDikEYYYe6GTkQIhYQRpZ1tTvMKxMSaWtZs2sK6TVtYs2kLz+zYHaKSwIeVozC1O7/+o3HHaRItGgSYMH9dan9GmpjR4pDizHn+r1TffSTuuwspc6bCQk9C5k6wBJjWyXXFORNcCEHp17sXp/3osGYfyht5nYmkmee43fTd1Tvlna6FWWUmXl1xjmtZyn9GmtjQ4pDCzHn+r1h3P8a1vbIY0KcX+y2E1cnG5UsNdp1gu5a9UzjS5rjBeQcakvOc65e7YXxpF/r17sXEsmKQ8CLEljucTNpdw4zGfzO47u1kWBw1Pz94THixq9ojStEu7j6bk1L8M9LEhhaHFKZx9z94oLSgeWVROBvJrG43l9Xtj21jm1LYQi1X9c31+7/vndZxtvZJGIr5BXkef0aY144Lzf6I8MrmKNUcqTZPmpiQNTc+diSIo3a9E58w69HUIcL8grykpCvVmIcWhxSkorKagfcs4eUSS7vLVlvTSSkm1tQ2b2yLtrN1hLOjOdwwF5F0QInMGhcC3+ZAH90I4aswmYrKal4usZibnEmEl0ss2u+QwYSTCU6TRCoqq7l9yYtI+b9CLisNRq1h0L93Lwpc7pjyG3RE/IMQNuR2Jy9EWTOZtGA9rsPN2SHtzzarhdvnr2XUwMPMNkWTAPTIIcW4f9krGGWzMbJqox7yK2/Au+Z8yWaSjFAccbqGLwihXWXxkGNMXOpMBEdnpUZkVAOwO1JkkYQm7mhxSDHsnechRmJ/cAkNf9GaRIuT/94M332FurcQK61urqmlRnVivOM6XjwwJP62xomqslXmiz6eIIkjjeVmm6FJEFocUoiKymrE0pC4C3hX5Pxl1x7+snMPhtv8qYm44rcpLiC+kOABKHK7ucBupwBPhrxIc0gnk/0W84UBPL7+u60vab9DhqLFIQWoqKxm6JSl3DJ7dXgnRPnUb+AJsHfeATs1dT/DWTfk0Cgi5oQ6SRyNRIsIFpE2S0Bz3O7mgINWcTPF9qw3h7QmFAr4uJObSQvWm22KJgFocTCZispqxs1bQ3WtZ8Rgc9kSdi03UOXuyi2OG7k3byBSsNKz4iXsYEZeAsUvirQOk3CI0Mk7ghK/vQ2+nNoAedLE8V8+aqKVobG6ssw2wYMIU7oUU9vg0KOHDESLg8lMXrgeh8vT2Y40lnPnnl3tP4FH2QmXORU9ZDe3WudQVLYgsmRBcGh0EM4S1khGEkkedewzjOYQ5UuqtrYQBh85DduTZk+kHL3zeGzu1Bil7fNm+NO7pTMPvZTVRCoqq9lrdzCkcBZVZat4zyK8R2FiLqYUO63CiX16IYDCTmT5M4l8v4JSiFKe9Ayhzk3yiKPQ7WZYzx5st1ro7nQ1b37zZ6u7C6maRfqvDR8xY7+T2QWdU2K0NqRwFp/VXm62GZo4o0cOJlFRWc24uWsYUjiLb7qvYr/VaN+hGiHND+T+0z5hRF+NG6GuZdaDr1Ic8OaxCJTPwluETy2DTTKwfSo72Xmjc6eUEAZE2Nh9FUMKZ+mppQxDi4NJTFqwHtVpFRvKK9uGnIgHzdM0qeoLiC5Udzxo/Xm33h0tAuflrInLtRLBEyVFEe+cTySNhkFN6ef8ac5qLRAZROq0sA7GAdtn5JfPiz4EQnurjES8A4XUmJtuQ5Qb/GIhVKC6bVYL/Xt70qYuys8jN4V9DtHsnE80O6wGuT+ezO1LXtQCkSFocTCJorIFuI0Y0lH6T0Gl+hJSM1CKXLebQqcL8aY3lVDTad4pMN8006v53ZJrbwSk5I9WBMPagFH2Gvcve8VsazRxICXbWSbj29PQZG27QiZqUkkgUmW/gwhFLjfLt1TzwK497LcYYac3bTQMHi1O0MKAOJDKASvE8Ozy16Q/WhySiC+oXm2Xu+Pvj00hv0KbnA4msc1qYVF+HpO6lkQ8fXfQmsCd6jFS7oxhxJkEDEuDnlrKALQ4JImJFev4v3+9gFE2L/qgeumACCqQs9QkwZhQ2iU6562rOP7GxInBdlJjdBYUxYT5a802QhMjWhySwMSKdXz95UPk95gV+cazTMEMMfQtpY0UBY07hsXfnjixJC819jeEol/eq2aboIkRLQ5J4JuvprKx+ypzk7NowkMpLq6r59Kmg2ZbEpRUnvICQITqbqv41TMfm22JJga0OCSB3V0/T6l16UknpadA/PDmwZ5cs4c/kLpPvoZpOwjDp84QVvNn7XtIYzpwj5U8dlk7+IghlVZThcKbB3tRfh7lKnXThKbyaqVmRDBs+7njs/812xJNlGhxSAIFrrT4OScWkfY3RafCMlgRphUX4ZLU/Wmk+mqlZgSM7J1mW6GJktT9BWQQ2tXgJYzPYcquPaYLxHarBUsKP5+PLRpg+mcUPoqJFevMNkITBVocEoRvs9uP/3IftcnyN6RNhxEas5+MuztdSGEvU20IxYhLXzPbhIj4+suHzDZBEwVaHBJARWU1y15/kt8aN1Bc/lrChw5KeTeepfsQRYTxpV08sYPMEjqlGFtnh7PvMuf6YVBRWU2OK/XiKwVEhE3dV2nHdBpiijiIyLkiskFEvhWR8QHe/5WIrPX++0hETjTDzmj59I2/c1rBTP5alpWcVUrKgoo0N0OqEuew5dEw4hdTof/oiM9LVrv+9I2/I4YzmlNNoUGECR/93mwzNBGSdHEQEQvwJHAe0Be4QkT6tiq2EThDKdUfuBeYnlwrY+O4vNk8UFqQtH0NYrgwL0FCZlHudEUrDElr18flzaYhnUaJIljzv+P85x4z2xJNBJgxchgCfKuU+l4p1QTMAi70L6CU+kgptdf78hNI2aRcLbh6ztMc/+xpTE3WiMGfdFku6iPeK5O89Rlud/T1KsXYg1FP1yStXU/vYk2/KUSBbfKcnl5KI8wQh8OALX6vq7zHgvH/gH8FekNEfiMiK0Vk5a5du+JoYuRcPedpVtf/A8NWa94PN50EIp5TR0pR5HYzpm6/p0HHUO93ZVGHzYhbu4bgbXvy0pnNeZvTDaeh9L6HNMKMVhbolxuwRxORn+P5Ed0W6H2l1HSl1GCl1ODS0tI4mhg56+teiC0/Q7xItyfKeCBCrcXC7ILOsWXVE+GZ/R9GfXaAY1G1awjetl/f+Ez6fsciSPZOLnj1j2ZbogkDM8ShCvBfJ9gT2Nq6kIj0B54FLlRK7UmSbVFRUVnNwXjmZ4iVdBk9xJs4dJrKsDN56cxoTk1Ku3Zb9rZfKIURgU1N70T7GWuSiBnisAI4SkT6iEgWcDmwwL+AiPwImA9cpZT62gQbI2Lq4g1mm9CSdJpeSjFEYO7mR6PpvJLSro0UDiUeLiIw74eHtECkOEkXB6WUE7gJWAx8CcxRSq0XkRtE5AZvsbuALsBTIrJaRFYm285wqais5qS6txN3gWg7+XSdekgBxHAwb+MzEZ2TrHZ9SZ/rM0P4BV7f9LDZVmhCICoTGhowePBgtXJlcjVkYsU6Xv7kBy7v8WcWFaThChJNcBSsu+ZQ2AcR+VwpNdgMU1q37aHPHU+dNT2d0i1QikF5v+fF0b8z25IOTbC2nQEtzBwqKqt5+ZMfsBZUamHIQMqcqRtbafyeGoxMeKgTYc3+yEZomuShxSFKfH6G7NLFHUcYMqFDCoMct5tb9qau43fggTw6Z0ikX5eliavnPG22GZoAaHGIkuraBoYUzsKwpW4nEnc6gAiKUkzaXcPZ7gKzTQnKQ87R1KXpXoc2iLC6/im9OS4FyZAWllwqKqs5pvtTfFle2SE6zA6DUjywaw/DG93knXeP2dYE5VLLsozKEeIWxbxlo7VApBhaHKLg/mWvsLVos3nC0EGmd8xgctcSJve8JKr4SsniNMt6HEYGPZSIsKZoH3/96H+0QKQQWhwiZPLSmTQUvWzuiEGPVhKDCA2GwT/5KKXX4Atgz7Q2IEJt/h6eXvYbsy3ReNHiEAFXz3mauZsfRUQ/uWcyYrg8YSo0yUWErUWbmfP8X822RIMWh7CZWLGOlfteRQyH2aakN2kyJZbKYSp2dDnFbBMSyl/keW558nqzzejwaHEIg4rKamZ98YYn4qqmQ5DKYSourg8ary/9EcFlGHyY9xF3vnCj2dZ0aLQ4hMGEZZPI7TErcNxNTWSkw1y5Up4wFSnKSXVvk5smI7BoaTQMPnb9x2wzOjRaHNrhjOdvwlr0cXp0apq4UOR2c/dZV5ltRlCGFs1Kr0xwUbLDanD8s6el9OKATEaLQwiunvM0NcYyLQwdCaUoSPH0zE90ye0YbVIEw1arI7iahBaHIFRUVrNy/ww9ldTREOGHLEtKJ6RJ10xwUSMwb/NDTKxY135ZTdzoYK0sfO5f9gpiSaEEPprkIbCp6V2zrdD4I4rPd16uBSKJWM02IBWpqKzGnr+QhG5CVapjTA2kLanr8BVS2boEIUJVFtTvvhxYb7Y1HQI9cmhFRWU1/3n9ycQH1NPCkOKk5vdTUVmNSlHbEo4Ie61Cvxn9UnraL1PQ4tCK19+5gxV9Ksw2Q2MmStE762yzrQjI6kXT6e5McY95IhEBgc1Nb3PK9MzeDGg2Whz8mLx0Jl92XUmd1aKf7DswuUpx3XH/Z7YZAbmu6WXOsNvTZqd5whChPusAN04boIP1JQgtDn68vvEZDmZStEtN5CjFBfvr+fSNv5ttSUB6GHt4Py9PP7wAiPBBoZN5y0ZrR3UC0OLgRyrH09EkCREqCjpxXN5ssy0JSGNud7ZbLWabkTp4w31v2nSDHkHEGS0OXm558nqk460B0QTAIcLLJanZAeeddw/dnC6zzUgtvAJx55pz6fuPs7VIxAktDniE4b08HSJDc4iUfTrvP5pfFp5Htls/yLTA66i2ZO/gzjXDufbx08y2KO3p8OJQUVnNityPcWtfg8aPMmfqpuG8+bJHOD7/93R2urVjujUiIMLKgr1c+dhQ7YuIgQ4tDhWV1dz27xeo69CfgqYNSjF2b63ZVgSlorKaFRv3Um8RPdoNhneq6fOdl3POI/8x25q0pEN3i3csmUFW99n6B6ZpgQCn1qdum7h/2SsYZfNw63YbGhGqsoTtxb9n9ANXMWDyEu2PiIAOKw6/euZjLGWzO/AnoAmIUoyu25/SszX2/IU6I2G4iIBh8GV5Ja7D/8S8ZaP1SCJMOmRspTOev4ka2zI8EWr005emLUVSb7YJQdEZCaPAO8paU7QPuIl+M6DsYBnv/napqWalMh3uufmM52/y5mhATydp2iLC7ILOvJpfZrYlQSnMSl3bUh6vwxoRdmbvpN+MfvR9cpSebgpAhxKHisrqQ8Kg0QRDhMeKi8y2IijndL9Gr1KKB77lr/nfcueaczlBB/RrQYcShzven0QHDHasiYKD1gazTQjKm2u3mW1CZuEVCfEG9Ov3wvE8MO18s60ynQ7jc6iorMYo/ERPJWnCIpX3OXhyjeh2nBC8U06vFv7AqzNO8BxTilGcwb3XPmWubUmmw4jDhI9+jzVfO6A1YaAUvR2NZlsRFO2QTgL+4itChXqfCq9YlBy08cchbzJq4GEmGZccOoQ4XPDqH7Hmf6dHDZrwEGFlbq7ZVoTAAFJ3ZJOR+PUdNdkO7lwznDvXeF7nHuzE7UNezzix6BDisKnpHa0LmohI5a5X4dbjXzNp1Zk0ZB9oIRYgWB1HU3n960k3LZ5kvDhc8Oof9Q9Jk1EYrmKUVYeXTxkCPHk6bRvo5/NZeLG5s7iw9x+5+6yrkmVZTGS0ODww7Xw2F/6gp5M0UZC6beaSPtezcPODOjFVKhOgz3FYHMz74UHmzXgw4Cmj1Okp5fTOWHH4+PFreFULgyZqUnfJ891nXUXx3Epm1/2bOouh23g6EeK7quCQ0zsgSV41lbHi8Db/ATqZbYZGkxBuvuwR/nfSHE7rXWS2KZp40Z7It1o1FQmFbsXPJTJhydhNcHMLOuknKk1GU6D2m22CJtn4hf+I5N8+i0GFvE+/F44P+1KmiIOInCsiG0TkWxEZH+B9EZHHve+vFZFBZtip0URCstv1Timl0JXK66o0KYVXKPqHKRBJFwcRsQBPAucBfYErRKRvq2LnAUd5//0GeDqpRmo0EWJGu94yaBx/2rMfq7uVQOi4S5pgiKDCnFExY+QwBPhWKfW9UqoJmAVc2KrMhcBLysMnQJGIlCfbUI0mApLerk8e+Vt6HTuRP+92UO5wIkpR4LByQZ2TcofTIxK+f/5o8dCEgRkO6cOALX6vq4CfhFHmMKBFxDER+Q2eJzB+9KMfxd1QTQdFKXBH/NwUt3YN4bftk0f+lpP5LVeGMGzy0pm8vvEZ3Ja95DpzOdtex/J8g30Wv3tUggqVdVQp7cPrYJghDoFaWOtHmXDKoJSaDkwHGDx4sH4c6uj4PxFH25EpBUpY9+u1kZ4Zt3btMSN+bfvus67ibg5tvKqorOaDxRs4UNtAj6Jcxg0/BoC73n0JV3EFYrG3NNpVjLOxBEv+9wiqrcn+n3WgUYkWlbTEDHGoAnr5ve4JbI2iTGh8jTRVG6Ye2seVIreb23bvZUS9nUX5eTzYtZhaw/NkLMrALZ7P29MaPH9blMIlxqGuzm3jsuh3sCanXceBUQMPCxgHaNTACcCEgOdUVFYzdfEGtvoJyqiBh7UYlRiuYi7pc33z57diwT/YuGEKU7rm4YjH77A9EWpdpj064mhIKc6oywqrqKgkd1IiYgW+Bs4GqoEVwP8opdb7lRkB3AScj2do/rhSakioegcPHqxWrlzZ4li/F45P2S//Jw0NPLN9Nx+4j2esbRJ3//L4jAvclUmIyOdKqcEh3k9Iu4bAbbujEUqEApXxPAYc6tv8HwoA8pSiX2Mjn+XmthgHtTwr8zijLou/3byqxbFgbTvp4uA15nzgMcACPK+Uul9EbgBQSv1dRAT4G3AuYAeuVUqF/HXoH5AmkbQnDt4ycW/XoNu2JrEEa9um7JBWSr0FvNXq2N/9/lbA75Ntl0YTC7pdazKJjN0hrdFoNJro0eKg0Wg0mjZocdBoNBpNG7Q4aDQajaYNpqxWSgQisgvY7HeoK7DbJHNiRdtuDqFsP1wpVZpMY3wEaNuxks7fUThk8v0l4t4Ctu2MEYfWiMjK9pYepiradnNIZ9sjIdPvM5PvL5n3pqeVNBqNRtMGLQ4ajUajaUMmi8N0sw2IAW27OaSz7ZGQ6feZyfeXtHvLWJ+DRqPRaKInk0cOGo1Go4kSLQ4ajUajaUNGikN7id7NRkR6ich7IvKliKwXkbHe4yUi8raIfOP9f7HfORO897NBRIabZ70nX7KIVIrIm97X6WJ3kYjME5GvvJ/9T9PF9ngjIlO9n8NaEfmniBSZbVOspPrvPhaC9RkJRSmVUf/whEv+DjgCyALWAH3NtquVjeXAIO/fnfHkAegLPASM9x4fDzzo/buv9z6ygT7e+7OYaP+fgFeBN72v08XuF4HrvH9nAUXpYnsCPothgNX794O++07Xf+nwu4/x/gL2GYm8ZiaOHMJJ9G4qSqltSqlV3r/3A1/iySV8IZ4ODO//R3n/vhCYpZQ6qJTaCHyL5z6Tjoj0BEYAz/odTge7C4DTgecAlFJNSqla0sD2RKCUWqKUcnpffoInK106k/K/+1gI0WckjEwUh2BJ3FMSEekNDAQ+BboppbaBpzEAZd5iqXRPjwG3Am6/Y+lg9xHALuAF75TYsyKST3rYnmh+DfzLbCNipMN8X636jISRieIQdhJ3sxGRTsDrwC1KqbpQRQMcS/o9icgFwE6l1OfhnhLgmFnfhRUYBDytlBoI1OOZRgpGKtkeFSLyjoj8N8C/C/3K3AE4gVfMszQupP33FQ4R9BkxY0omuASTEknc20NEbHi+5FeUUvO9h3eISLlSapuIlAM7vcdT5Z6GAiO96TBzgAIReZnUt9tnS5VSyve0NQ+POKSD7VGhlPpFqPdF5GrgAuBs5Z3MTmPS/vtqjyB9RsLIxJHDCuAoEekjIlnA5cACk21qgTeX8HPAl0qpR/zeWgBc7f37auANv+OXi0i2iPQBjgI+S5a9PpRSE5RSPZVSvfF8rkuVUleS4nYDKKW2A1tE5BjvobOBL0gD2xOBiJwL3AaMVErZzbYnDqT87z4WQvQZicNsL3yCPPvn4/HmfwfcYbY9Aew7Fc+Qdy2w2vvvfKAL8C7wjff/JX7n3OG9nw3AeSlwD2dyaLVSWtgNDABWej/3CqA4XWxPwGfxLZ45el/7+7vZNsXhnlL6dx/jvQXsMxJ5TR0+Q6PRaDRtyMRpJY1Go9HEiBYHjUaj0bRBi4NGo9Fo2qDFQaPRaDRt0OKg0Wg0mjZocdBoNGmNiMwQkU1hlLtGRJQ3/ITv2CYRmeH3+kwRmSQiHb5v7PAfgEajSXvuBS6K8tyLvOf7OBO4G903ZmT4DI1Gk6KISLZS6mA861RKfRfDuZXxtCWT6PDqmOl4h8hKRI4VkcUiUi8iP4jItd73r/ImfTngTSZypNk2azIDv7Z3grftHQDmiMgwEXlLRLaJiN0bDPDPImJpdf4mEXlZRK73JvBpFJFVIvLzVuXaTCuJyBEisshb/y4RmYYnN0drG5unlURkEp5RA4DDa7vyhlDZJSKPBjjfN1V1bAwfVUqiRw4dh7nAM8DDwI3A8yJyFJ5h9HjABkzDk8TnJybZqMlM3sATF+hBPKHej8UTquQJoBEYDEwCSmkbKfcM4CQ8oUwO4okH9S8ROVEptSHQxbyxld4GcoHf4wmm+Fvg4nbsfBZPwL7/hydchQtAKXVQRF4ArhORCUqpRr9zfgssU0p91U7daYcWh47DVKXUSwAishL4JZ6G3Ud5Q/96o5JOE5HDlVKbzTNVk2E8rpSa5vf6P74/vAHlPsCTve3/ROR2pVSLXCHAUKXUD97y7wKbgYnAVUGudzWe/B0/VUp94j3vX8C6UEYqpapEpMr78lN1KBkSwNPAn4HLgJneOvsDpwBXhKo3XdHTSh2H5mQuSqm9eJ6mPlEtY8L7nn78Qx9rNLHyT/8XIlIuIv8Qkc1AE+AA7sOTtrWs1bmf+IQBmrOgLQJ+GuJ6PwW2+ITBe54bmBPtDShPNsDFeB6ofPwWTwKphIfPNgMtDh2Hva1eNwU5Bp5cDRpNvNjm+8O7RHQBnjwS9wFnAScD93uLtG57OwLUt4PQWd7KQ5wXC08BQ70+lHzgSuAF5UlLmnHoaSWNRpNo/EM/H4nHx3CVUupl30ER+WWQc7sFOVYd4nrbgOPDrCsS3gI24RkxrAE6A9NjrDNl0SMHjUaTTPK8/3f4DngznP0qSPlTRKSXX9nOwAjg4xDX+BjoJSKn+J1nAKPDsM+3zDa39Rveqal/4PF13AS8E8sy2lRHi4NGo0kmX+JxKN8vIpd681m/HaL8DmCJiIwRkVHAEiCflhvXWvMi8D0w37vU9Hw8yZ0KwrDvC+///ywiPxGRwa3efw7P1NeJwN/DqC9t0eKg0WiShnd+fhSwHXgJeBJ4H5gS5JRlwF+BvwCz8XTM5ymlvm7nGufgyZb2FB6x2IjHx9Eeb3rPuRHPCGRFq7p3eW3aRgalIQ2EzgSn0WhSEu/GtuXKk6c8JRCRYuAH4DGl1J1m25NItENao9Fo2kFESoFjgLF4ZlyeMteixKOnlTQajaZ9RuDZrDcEuFopta2d8mmPnlbSaDQaTRv0yEGj0Wg0bdDioNFoNJo2aHHQaDQaTRu0OGg0Go2mDVocNBqNRtOG/w9hCsmfsusI9wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1, ax2) = plt.subplots(1, 2)\n",
    "\n",
    "ax1.scatter(m, x2, label='data')\n",
    "ax1.scatter(m_test, y_fit,label='prediction')\n",
    "ax1.scatter(m_train, y_est,label='estimated')\n",
    "ax1.legend()\n",
    "\n",
    "ax1.set_xlabel(xlabel='m',fontsize=16)\n",
    "ax1.set_ylabel(ylabel=r'$x_2$',fontsize=16)\n",
    "\n",
    "ax2.scatter(rap, x2, label='data')\n",
    "ax2.scatter(rap_test, y_fit,label='prediction')\n",
    "ax2.scatter(rap_train, y_est,label='estimated')\n",
    "\n",
    "ax2.set_xlabel(xlabel='rapidity',fontsize=16)\n",
    "\n",
    "plt.savefig('Plots/x2_LO_RandomForest_1.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "3a651a0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, (ax1) = plt.subplots(1, 1)\n",
    "\n",
    "ax1.scatter(m_test, (y_test-y_fit)/y_test*100,label='relative % diff test')\n",
    "ax1.scatter(m_train, (y_train-y_est)/y_train*100,label='relative % diff train')\n",
    "ax1.legend()\n",
    "\n",
    "ax1.set_xlabel(xlabel='m',fontsize=16)\n",
    "ax1.set_ylabel(ylabel=r'$\\% diff$',fontsize=16)\n",
    "\n",
    "plt.savefig('Plots/x2_LO_RandomForest_2.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f9556065",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
