{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d563033c",
   "metadata": {},
   "source": [
    "# Import tools/models be used"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "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.tree import DecisionTreeRegressor     \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": 4,
   "id": "bdc08ed0",
   "metadata": {},
   "outputs": [
    {
     "ename": "OSError",
     "evalue": "../datacheckNLO.txt not found.",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mOSError\u001b[0m                                   Traceback (most recent call last)",
      "\u001b[0;32m/var/folders/mf/qhhyj8vx75n7rk9kxsr65d8r0000gn/T/ipykernel_63784/3080620297.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mfilein\u001b[0m    \u001b[0;34m=\u001b[0m \u001b[0;34m'checkNLO.txt'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      3\u001b[0m \u001b[0mfile\u001b[0m      \u001b[0;34m=\u001b[0m \u001b[0mdirectory\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mfilein\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgenfromtxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m      5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      6\u001b[0m \u001b[0mm\u001b[0m        \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mgenfromtxt\u001b[0;34m(fname, dtype, comments, delimiter, skip_header, skip_footer, converters, missing_values, filling_values, usecols, names, excludelist, deletechars, replace_space, autostrip, case_sensitive, defaultfmt, unpack, usemask, loose, invalid_raise, max_rows, encoding, like)\u001b[0m\n\u001b[1;32m   1789\u001b[0m             \u001b[0mfname\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos_fspath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1790\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1791\u001b[0;31m             \u001b[0mfid\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_datasource\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'rt'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   1792\u001b[0m             \u001b[0mfid_ctx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcontextlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclosing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfid\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1793\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/numpy/lib/_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(path, mode, destpath, encoding, newline)\u001b[0m\n\u001b[1;32m    192\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    193\u001b[0m     \u001b[0mds\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mDataSource\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdestpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 194\u001b[0;31m     \u001b[0;32mreturn\u001b[0m \u001b[0mds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoding\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnewline\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnewline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    195\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    196\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/numpy/lib/_datasource.py\u001b[0m in \u001b[0;36mopen\u001b[0;34m(self, path, mode, encoding, newline)\u001b[0m\n\u001b[1;32m    529\u001b[0m                                       encoding=encoding, newline=newline)\n\u001b[1;32m    530\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 531\u001b[0;31m             \u001b[0;32mraise\u001b[0m \u001b[0mIOError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"%s not found.\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    532\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    533\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mOSError\u001b[0m: ../datacheckNLO.txt not found."
     ]
    }
   ],
   "source": [
    "directory = '../data/'\n",
    "filein    = 'checkNLO.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": 5,
   "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": 7,
   "id": "be16d388",
   "metadata": {},
   "outputs": [],
   "source": [
    "# name of the model for storage\n",
    "filename = 'storage/x2_NLO_DecisionTree_not_thinking.sav'\n",
    "\n",
    "# train \n",
    "Training_machine_learning = training(X_train,y_train,X_test,y_test,filename,DecisionTreeRegressor())\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": 8,
   "id": "49492be3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9968759177234536"
      ]
     },
     "execution_count": 8,
     "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": 9,
   "id": "c97b86ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAELCAYAAADOeWEXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA/wUlEQVR4nO3deXxU1f34/9d7JoGELeyKooKtlaJhE7cP7ii4oOCurX7Fz8etFrXaUu2vbrjUBStqRRQUsCgqIESqVlRitRYXliC4gGULhkUiENZAkpn374+ZxBAzycxkZu69M+/n46FkZu7ynplz73vOOfeeI6qKMcYYEy2f0wEYY4zxFkscxhhjYmKJwxhjTEwscRhjjImJJQ5jjDExyXI6gGTr2LGjduvWzekwTJpauHDhD6rayYl9W9k2ydRQ2U77xNGtWzcWLFjgdBgmTYlIsVP7trJtkqmhsm1NVcYYY2JiicMYY0xMLHEYY4yJiSN9HCJyJvAk4AeeV9WH67z+a+D28MOdwG9U9Yvwa2uAHUAAqFLV/rHuv7KykpKSEvbs2RP/mzA/kZOTQ9euXcnOznY6FEc4Xa6NSZWUJw4R8QNjgTOAEmC+iMxW1a9rLbYaOFlVt4rIWcB44Nhar5+qqj/EG0NJSQmtW7emW7duiEi8mzG1qCqbN2+mpKSE7t27Ox1OyrmhXBuTKk7UOI4BVqjqKgAReRUYCtQcYKo6r9bynwJdExnAnj17LGkkmIjQoUMHSktLnQ4lYe4sWMorn31HQBW/CJcfexAPDMuPtLjj5TpVCorWce/srygrrwSgXYts7jn3CIb1PdDhyEyqOJE4DgS+q/W4hH1/ddX1f8A/az1W4F0RUeA5VR1fdwURuQ64DuDggw+ud6OWNBIvnT7TOwuWUrnsNn72sxI2ZvnZvypA5bKu3FnweKTkkfRyDdGV7WQqKFrHh6+PZa7vRdo33wnAtJz2PLCwE3d+UY5WtaV/m1/x4iW/SXlsJnWcSBz1nV3qHdtdRE4ldICdUOvpAaq6XkQ6A++JyDJV/WifjYUOuvEA/fv3t3HjTczWrLmBL/bfBhI6RDZkZ7F1v/UMXHYb8F59qyS9XIPzZXvxW+M5uc2LXN6+DRuz2tEmEGS330ellCOAZJexeNdzXDUNSx5pzImrqkqAg2o97gqsr7uQiPQCngeGqurm6udVdX34303ALEJNBJ5377338thjj0V8vaCggK+//jri6yZxRhVO4Yu226BODWqPz8eijiWRVsuIcn1os1d4sFNbNmRnoSJsy/JTWedzCvoCLNo9jlGFUxyK0iSbE4ljPnCYiHQXkWbAZcDs2guIyMHATOBKVf221vMtRaR19d/AIODLlEXuIEscqVOwesxPkka1DVn+SKtlRLl+qb2fPb4oThuiTC8eY8kjTaU8cahqFTACmAN8A0xT1a9E5AYRuSG82N1AB+AZEVksItXjKuwHfCwiXwCfA2+p6jvJjrmgaB0DHi6k+x1vMeDhQgqK1iVkuw8++CCHH344p59+OsuXLwdgwoQJHH300fTu3ZsLL7yQ3bt3M2/ePGbPns3IkSPp06cPK1eurHc503S/G3stVf6KiK9HOmC8WK5jddW0cQ0lzp8QXyXT14625JGGJN2nju3fv7/WHc/nm2++4Ze//GVU6xcUreNPM5dSXhmoeS43289DF+Q36SqShQsXMnz4cD777DOqqqro168fN9xwA1dffTUdOnQA4M4772S//fbjpptuYvjw4QwZMoSLLroIgM2bN9e7nNNi+Wzd6OiJR7DH38DvKVWWDv+xMiAiC52656K+sp0sQ6beSnHF+/X35DRCg9lcfMit3HPalYkPzCRNQ2Xb7hxvxOg5y/dJGgDllQFGz1nepO3++9//5vzzz6dFixa0adOG8847D4Avv/ySE088kfz8fF5++WW++uqretePdjkTmz2+xs6MmXXIFBSto9djD7EmzqQBoZrH66snJDYw46jMOgrisL6sPKbnY1Hf5avDhw/n6aefZunSpdxzzz0R726PdjkTvbsm3djoMlr/hVJpqbq2HWhXEKnLZ18NtF4E/VsTF5hxnCWORhzQNjem56N10kknMWvWLMrLy9mxYwf/+Mc/ANixYwddunShsrKSl19+uWb51q1bs2PHjprHkZYz8Xlq+m38Qz6K2CleTavapiYgF5j570to9rM/4PPvanxhVY4rL8cXIXn4Au0SHJ1xkiWORowcfDi52ft2COZm+xk5+PAmbbdfv35ceuml9OnThwsvvJATTzwRgPvvv59jjz2WM844gx49etQsf9lllzF69Gj69u3LypUrIy5n4jNx57sEGvtZrUrXnW1SE5DDRow/laI22wiKNJpMARDh09xculdU/LTmocovq9on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\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_NLO_DecisionTree_1.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "3a651a0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEPCAYAAACHuClZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABCoUlEQVR4nO29e5gcZZnw/btn0iEzAZmAEWFCDvpi0JBkhowQzYsIIkGCOiIQEJBvVaLv6iqs5DNR5ODGN1mjwrLv6oIufu6KmHAaOblBIXjgBTRhEkKACJEAmbAQDpOVZCCTyf390V2Tmp6q6qru6q6qnvt3XXPNTHV31fNUP/Xcx+d+RFUxDMMwjEpoSLoBhmEYRvYxYWIYhmFUjAkTwzAMo2JMmBiGYRgVY8LEMAzDqBgTJoZhGEbFpFKYiMj1IvKSiDzmOnaQiPxaRJ4q/B7nem2xiDwtIptEZG4yrTYMwxi5pFKYAP8fcErRsUXAvap6BHBv4X9E5D3A2cC0wmd+ICKNtWuqYRiGkUphoqq/A14tOvxx4KeFv38KdLqO/0JV31TVZ4CngWNq0U7DMAwjz6ikGxCBQ1T1BQBVfUFE3lY43go85Hrf1sKxYYjIAmABwNixY2cdeeSRVWyuYRhG/bF27dqXVXV88fEsCRM/xOOYZ40YVb0OuA6go6ND16xZU812GYZh1B0i8qzX8VS6uXx4UUQOBSj8fqlwfCtwuOt9E4BtNW6bYRjGiCZLwuR24ILC3xcAv3QdP1tE9hORKcARwB8TaJ9RJl3dPcxZdh9TFt3FnGX30dXdk3STDMOISCrdXCJyI/BB4K0ishW4HFgGrBSRzwLPAWcCqOpGEVkJPA7sAb6oqgOJNNyITFd3D4tv3UBff/4r6+ntY/GtGwDobPcMfRmGkUJkpJagt5hJOpiz7D56evsAeMt+DfzdseOY1JIj19DA2w8ck3DrjKQYM2YMEyZMIJfLJd0UowgRWauqHcXHU2mZGCOHbQVBAvB3x47j6HcexqjmAxAR3j2hJbmGGYmhqrzyyits3bqVKVOmJN0cIyQmTIya0NXdw/JVm9jW28dhLU0snDuVzvZWDmtpGrRMJrXkBgXJ6MYshfOMOBERDj74YLZv3550U4wI2BNrVB0nLtLT24eyLy7S1d3DwrlTacrlCxYIgojQIMIh5uIa0Yh4ZfwbacaEiVF1lq/aNBhgd+jrH2D5qk10trey9PTptLY0IcDoxgZaxzUxrnl0Mo01DKMsTJgYVccdF/E63tneygOLTqR1XBNHHvqWTAiS/fffP/D13t5efvCDHwz+v23bNs4444yKr7tp0yZmzZrFzJkzefDBBwHYs2cPJ510Ert27Sr5+S1btnDUUUcBsGbNGr785S8D8Oabb3LSSSfR1tbGihUr+P3vf8+0adNoa2ujr2/f91fcr6hcffXVodppZA8TJkbVOaylKdLxNKCq7N27t+zPF0+6hx12GDfffHPF7br22mtZtmwZN998M9/97ncB+OEPf8j5559Pc3NzpHN1dHRwzTXXANDd3U1/fz/r1q1j/vz53HDDDVxyySWsW7eOpqZ935MJk+RJ67osEyZG1XHHRRyaco0snDu1ovPG/VBt2bKFd7/73fzt3/4tRx99NM8//zzLly/nve99LzNmzODyyy8f9pnXX3+dD33oQxx99NFMnz6dX/4yv5Z20aJFbN68mba2NhYuXDjEIjj22GPZuHHj4Dk++MEPsnbtWnbu3MlnPvMZ3vve99Le3j54Lje5XI6+vj527dpFLpejt7eXO+64g09/+tO+/Vq7di0zZ87kfe97H//yL/8yePz+++/ntNNO46WXXuK8885j3bp1tLW1ce2117Jy5Uq+9a1vce655w45V3G/AM97tHPnTubNm8fMmTM56qijWLFiBddccw3btm3jhBNO4IQTTgj7tRguguKPiaOqI/Jn1qxZatSO2x7Zqu9feq9O/tqd+v6l9+ptj2wd9p7HH3880vmOvPRXOulrdw7+HHnprzzPG5ZnnnlGRUQffPBBVVVdtWqVXnjhhbp3714dGBjQefPm6W9/+1tVVR07dqyqqvb39+uOHTtUVXX79u36zne+U/fu3avPPPOMTps2bci5nf+///3v62WXXaaqqtu2bdMjjjhCVVUXL16s//Ef/6Gqqq+99poeccQR+vrrrw9p47PPPqvHH3+8zp49W9evX68XX3yx3n///YH9mj59+uB7LrnkksF2rF69WufNmzfsb1XVCy64QG+66SbPe+Tul989uvnmm/Vzn/vc4Pt6e3tVVXXSpEm6ffv2wPY6RBkPI4X3L713yJh3ft6/9N6atQFYox5zqqUGGzWhs7011hXtpYL65TJp0iRmz54NwD333MM999xDe3s7kLdC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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",
    "plt.ylim(-100,100)\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_NLO_DecisionTree_2.pdf')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dea3b4ee",
   "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
}
