{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e470f105-2efc-45f0-bb3d-2ae29148e090",
   "metadata": {
    "id": "e470f105-2efc-45f0-bb3d-2ae29148e090"
   },
   "source": [
    "# <center> Introduction to Machine learning \n",
    "## <center> BIO_322\n",
    "## <center> Created by Mohammed Al-hussini and Nayan Adani"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71ad2302",
   "metadata": {},
   "source": [
    "### Welcome machine learners !\n",
    "##### Doing a machine learning project for the first time seems very difficult, because machine learning is a vast topic. There are so many things to explore, try, modify, add... To help you in this wonderful journey, we show you this notebook from a previous project. The project got grade 6 and ranked 2nd in the competition."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2aaa39d6",
   "metadata": {},
   "source": [
    "### Project Description :\n",
    "Liquid chromatography is a method to detect drugs in human tissues and biofluids, for example, the cocaine concentration in urine. In a liquid chromatography experiment, each drug can be identified by its so-called retention time (RT). The retention time depends critically on the chemical properties of the drug and the exact configuration of the chromatography within a particular laboratory. For a new drug, the retention time can be measured experimentally by obtaining a clean sample of the new drug and directly measuring its retention time on the chromatography setup in a given laboratory. Alternatively, since the RT depends on the chemical structure, one could measure the retention time on one machine, determine the molecular structure of the new drug and predict the retention time on other machines based on the chemical features of the new drug. This is what we will do in this project. You are given the molecular structure of many drugs in the SMILES format together with the retention times measured in different laboratories, on different chromatography platforms. You can either use the SMILES notation directly or domain-specific features, like circular fingerprints or CDDD embeddings, to fit machine learning models that predict the retention times.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "16b1a213-a281-48cb-9470-5fab395cdf68",
   "metadata": {
    "id": "16b1a213-a281-48cb-9470-5fab395cdf68"
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.utils\n",
    "from torch.utils.data import DataLoader\n",
    "import numpy as np\n",
    "import itertools\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "import seaborn as sns\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.feature_selection import SelectFromModel\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.model_selection import train_test_split\n",
    "import copy\n",
    "from rdkit import Chem\n",
    "from rdkit.Chem import Descriptors, Crippen, rdchem\n",
    "from rdkit.Chem import rdMolDescriptors\n",
    "from rdkit.Chem import AllChem\n",
    "from sklearn.feature_selection import VarianceThreshold\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.linear_model import *\n",
    "import optuna\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.pipeline import Pipeline\n",
    "import skorch\n",
    "from skorch.helper import DataFrameTransformer\n",
    "import warnings\n",
    "from bayes_opt import BayesianOptimization\n",
    "from sklearn.exceptions import ConvergenceWarning\n",
    "from sklearn.model_selection import *\n",
    "from sklearn.linear_model import *\n",
    "\n",
    "# For reproductibility\n",
    "my_seed = 42\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7be6f0f1-dd15-43cf-84de-73837f2602ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_comparison(data, names):\n",
    "    sns.boxplot(data = pd.DataFrame({'neg_mean_squared_error': np.concatenate(data),\n",
    "                                     'method': list(itertools.chain.from_iterable([[x]*len(y) for x, y in zip(names, data)]))}),\n",
    "                x = 'method', y = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d0966575-19d0-4b84-af3f-41f096d8cb76",
   "metadata": {
    "id": "d0966575-19d0-4b84-af3f-41f096d8cb76"
   },
   "source": [
    "# <center> I/ Loading, exploration and visualisation of the data,"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1677dfcb-36b5-4006-9ead-31240a5d4a2b",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "1677dfcb-36b5-4006-9ead-31240a5d4a2b",
    "outputId": "cf5c9417-75e2-4206-86a4-2df696f4e6cf"
   },
   "outputs": [],
   "source": [
    "df_train = pd.read_csv('train.csv')\n",
    "df_test = pd.read_csv('test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "19ebc62b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(3500, 1029)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fca6380f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1375, 1028)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8b8db7a5",
   "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>Compound</th>\n",
       "      <th>SMILES</th>\n",
       "      <th>Lab</th>\n",
       "      <th>RT</th>\n",
       "      <th>mol</th>\n",
       "      <th>ECFP_1</th>\n",
       "      <th>ECFP_2</th>\n",
       "      <th>ECFP_3</th>\n",
       "      <th>ECFP_4</th>\n",
       "      <th>ECFP_5</th>\n",
       "      <th>...</th>\n",
       "      <th>ECFP_1015</th>\n",
       "      <th>ECFP_1016</th>\n",
       "      <th>ECFP_1017</th>\n",
       "      <th>ECFP_1018</th>\n",
       "      <th>ECFP_1019</th>\n",
       "      <th>ECFP_1020</th>\n",
       "      <th>ECFP_1021</th>\n",
       "      <th>ECFP_1022</th>\n",
       "      <th>ECFP_1023</th>\n",
       "      <th>ECFP_1024</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Hydroxytriazolam</td>\n",
       "      <td>OCc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2</td>\n",
       "      <td>CFSRE</td>\n",
       "      <td>7.02</td>\n",
       "      <td>&lt;rdkit.Chem.rdchem.Mol object at 0x2aab375ee880&gt;</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5-MeO-DIPT</td>\n",
       "      <td>COc1ccc2[nH]cc(CCN(C(C)C)C(C)C)c2c1</td>\n",
       "      <td>Aarhus</td>\n",
       "      <td>4.45</td>\n",
       "      <td>&lt;rdkit.Chem.rdchem.Mol object at 0x2aab37643680&gt;</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>MDMA</td>\n",
       "      <td>CNC(C)Cc1ccc2c(c1)OCO2</td>\n",
       "      <td>Ghent University</td>\n",
       "      <td>3.14</td>\n",
       "      <td>&lt;rdkit.Chem.rdchem.Mol object at 0x2aab378ea730&gt;</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Despropionyl N-Benzyl para-Fluoro Norfentanyl</td>\n",
       "      <td>Fc1ccc(NC2CCN(Cc3ccccc3)CC2)cc1</td>\n",
       "      <td>San Francisco OCME</td>\n",
       "      <td>5.95</td>\n",
       "      <td>&lt;rdkit.Chem.rdchem.Mol object at 0x2aab3790f3e0&gt;</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>N-Ethylpentylone</td>\n",
       "      <td>CCCC(NCC)C(=O)c1ccc2c(c1)OCO2</td>\n",
       "      <td>Ghent University</td>\n",
       "      <td>4.21</td>\n",
       "      <td>&lt;rdkit.Chem.rdchem.Mol object at 0x2aab378eadc0&gt;</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1029 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                        Compound  \\\n",
       "0                               Hydroxytriazolam   \n",
       "1                                     5-MeO-DIPT   \n",
       "2                                           MDMA   \n",
       "3  Despropionyl N-Benzyl para-Fluoro Norfentanyl   \n",
       "4                               N-Ethylpentylone   \n",
       "\n",
       "                                     SMILES                 Lab    RT  \\\n",
       "0  OCc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1Cl)=NC2               CFSRE  7.02   \n",
       "1       COc1ccc2[nH]cc(CCN(C(C)C)C(C)C)c2c1              Aarhus  4.45   \n",
       "2                    CNC(C)Cc1ccc2c(c1)OCO2    Ghent University  3.14   \n",
       "3           Fc1ccc(NC2CCN(Cc3ccccc3)CC2)cc1  San Francisco OCME  5.95   \n",
       "4             CCCC(NCC)C(=O)c1ccc2c(c1)OCO2    Ghent University  4.21   \n",
       "\n",
       "                                                mol  ECFP_1  ECFP_2  ECFP_3  \\\n",
       "0  <rdkit.Chem.rdchem.Mol object at 0x2aab375ee880>       0       1       0   \n",
       "1  <rdkit.Chem.rdchem.Mol object at 0x2aab37643680>       0       1       0   \n",
       "2  <rdkit.Chem.rdchem.Mol object at 0x2aab378ea730>       0       1       0   \n",
       "3  <rdkit.Chem.rdchem.Mol object at 0x2aab3790f3e0>       0       0       0   \n",
       "4  <rdkit.Chem.rdchem.Mol object at 0x2aab378eadc0>       0       1       0   \n",
       "\n",
       "   ECFP_4  ECFP_5  ...  ECFP_1015  ECFP_1016  ECFP_1017  ECFP_1018  ECFP_1019  \\\n",
       "0       0       0  ...          0          0          0          0          0   \n",
       "1       0       0  ...          0          0          0          0          0   \n",
       "2       0       0  ...          0          0          0          0          0   \n",
       "3       0       0  ...          0          0          0          0          0   \n",
       "4       0       0  ...          0          0          0          0          0   \n",
       "\n",
       "   ECFP_1020  ECFP_1021  ECFP_1022  ECFP_1023  ECFP_1024  \n",
       "0          0          0          0          0          0  \n",
       "1          0          0          0          0          0  \n",
       "2          0          0          0          0          0  \n",
       "3          1          0          0          0          0  \n",
       "4          0          0          0          0          0  \n",
       "\n",
       "[5 rows x 1029 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "63bc7371",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Column names :\n",
      "Index(['Compound', 'SMILES', 'Lab', 'mol', 'ECFP_1', 'ECFP_2', 'ECFP_3',\n",
      "       'ECFP_4', 'ECFP_5', 'ECFP_6',\n",
      "       ...\n",
      "       'ECFP_1015', 'ECFP_1016', 'ECFP_1017', 'ECFP_1018', 'ECFP_1019',\n",
      "       'ECFP_1020', 'ECFP_1021', 'ECFP_1022', 'ECFP_1023', 'ECFP_1024'],\n",
      "      dtype='object', length=1028)\n",
      "Number of ECFP columns : 1024\n"
     ]
    }
   ],
   "source": [
    "# Display the column names\n",
    "print(\"Column names :\")\n",
    "print(df_test.columns)\n",
    "\n",
    "# Count the number of columns starting with \"ECFP\"\n",
    "ecfp_columns = [col for col in df_test.columns if col.startswith('ECFP')]\n",
    "ecfp_count = len(ecfp_columns)\n",
    "\n",
    "print(f\"Number of ECFP columns : {ecfp_count}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "36e449f2",
   "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 tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>Compound</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>unique</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SMILES</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>CCC1CN2CCc3c([nH]c4cccc(OC)c34)C2CC1C(=COC)C(=O)OC</th>\n",
       "      <td>[Mitragynine, Speciogynine (Mitragyna alkaloid)]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CCCC(C(=O)c1ccc2c(c1)OCO2)N1CCCC1</th>\n",
       "      <td>[MDPV, 3,4-Methylenedioxypyrovalerone, 3,4-MDP...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CCCC(NC)C(=O)c1ccccc1</th>\n",
       "      <td>[Pentedrone]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CNC(C)C(=O)c1ccc(C)cc1</th>\n",
       "      <td>[Mephedrone, 4-MMC, mephedrone]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CNC(C)C(=O)c1ccc2c(c1)OCO2</th>\n",
       "      <td>[Methylone, Methylone (MDMC), bk-MDMA]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CNC(C)Cc1ccc(OC)cc1</th>\n",
       "      <td>[PMMA, PMMA (para-Methoxy-N-methylamphetamine)...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>COC(=O)C(NC(=O)c1nn(CCCCCF)c2ccccc12)C(C)(C)C</th>\n",
       "      <td>[5F-MDMB-PINACA, 5F-ADB, 5F-ADB (5F-MDMB-PINAC...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2</th>\n",
       "      <td>[Flualprazolam]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>O=C(NC12CC3CC(CC(C3)C1)C2)c1nn(CCCCCF)c2ccccc12</th>\n",
       "      <td>[5F-AKB48, 5F-AKB-48, 5F-APINACA, AKB48-5F (5F...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                                                             Compound\n",
       "                                                                                               unique\n",
       "SMILES                                                                                               \n",
       "CCC1CN2CCc3c([nH]c4cccc(OC)c34)C2CC1C(=COC)C(=O)OC   [Mitragynine, Speciogynine (Mitragyna alkaloid)]\n",
       "CCCC(C(=O)c1ccc2c(c1)OCO2)N1CCCC1                   [MDPV, 3,4-Methylenedioxypyrovalerone, 3,4-MDP...\n",
       "CCCC(NC)C(=O)c1ccccc1                                                                    [Pentedrone]\n",
       "CNC(C)C(=O)c1ccc(C)cc1                                                [Mephedrone, 4-MMC, mephedrone]\n",
       "CNC(C)C(=O)c1ccc2c(c1)OCO2                                     [Methylone, Methylone (MDMC), bk-MDMA]\n",
       "CNC(C)Cc1ccc(OC)cc1                                 [PMMA, PMMA (para-Methoxy-N-methylamphetamine)...\n",
       "COC(=O)C(NC(=O)c1nn(CCCCCF)c2ccccc12)C(C)(C)C       [5F-MDMB-PINACA, 5F-ADB, 5F-ADB (5F-MDMB-PINAC...\n",
       "Cc1nnc2n1-c1ccc(Cl)cc1C(c1ccccc1F)=NC2                                                [Flualprazolam]\n",
       "O=C(NC12CC3CC(CC(C3)C1)C2)c1nn(CCCCCF)c2ccccc12     [5F-AKB48, 5F-AKB-48, 5F-APINACA, AKB48-5F (5F..."
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Find SMILES repeated more than 10 times\n",
    "smiles_counts = df_train['SMILES'].value_counts()\n",
    "smiles_repeated = smiles_counts[smiles_counts > 10].index\n",
    "\n",
    "# Calculate the number of unique compounds for each repeated SMILES\n",
    "unique_compounds_per_smiles = df_train[df_train['SMILES'].isin(smiles_repeated)].groupby('SMILES')['Compound'].nunique()\n",
    "\n",
    "df_train[df_train['SMILES'].isin(smiles_repeated)].groupby('SMILES')[['Compound']].agg(['unique'])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b32fd0df-d0ca-480d-9355-e7aea1de56c5",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "It looks like the description in the 'Compound' column is not used consistently: the same substance has different names. Sometimes differences are tiny, such as uppercase and lowercase (e.g. fourth row above), sometimes acronyms are used. Overall, we conclude that the 'Compound' column is not useful."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "02cb0bc1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7383af456f60>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculate mean and standard deviation\n",
    "mean_rt = df_train['RT'].mean()\n",
    "std_rt = df_train['RT'].std()\n",
    "#median_rt = df_train['RT'].median()\n",
    "\n",
    "# Create histogram\n",
    "sns.kdeplot(data = df_train, x = 'RT', fill = True)\n",
    "plt.title('Retention Time Distribution')\n",
    "plt.xlabel('Retention Time')\n",
    "plt.ylabel('Frequency')\n",
    "\n",
    "# Add a vertical line for the mean\n",
    "plt.axvline(mean_rt, color='red', linestyle='dashed', linewidth=2, label=f'Mean: {mean_rt:.2f}')\n",
    "\n",
    "# Add vertical lines for one standard deviation above and below the mean\n",
    "plt.axvline(mean_rt + std_rt, color='green', linestyle='dashed', linewidth=2, label=f'+1 STD: {mean_rt + std_rt:.2f}')\n",
    "plt.axvline(mean_rt - std_rt, color='blue', linestyle='dashed', linewidth=2, label=f'-1 STD: {mean_rt - std_rt:.2f}')\n",
    "\n",
    "# plt.axvline(median_rt, color='purple', linestyle='dashed', linewidth=2, label=f'Median: {median_rt:.2f}')\n",
    "\n",
    "\n",
    "# Add a legend\n",
    "plt.legend()\n",
    "# Show plot"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d951786",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "\n",
    "The retention time distribution is not symmetric, but it is positively skewed. This is not surprising, given that the retention time is a positive number. Maybe a log-transformation of the retention time would make sense, but we would have to carefully test this for each model, for example with cross-validation. Nevertheless, we check if the log of the retention time is closer to normally distributed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0ad7738e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create a new DataFrame with the same data as df_train\n",
    "df_log_train = df_train.copy()\n",
    "\n",
    "# Modify the 'retention_time' column by applying the logarithmic transformation\n",
    "df_log_train['RT'] = np.log(df_log_train['RT'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "79047199",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7383b08cb920>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACDQ0lEQVR4nO3dd1xT5/4H8E8SSEIgYQXCHooyxImtA2dVXK22dqhtXdVeLV3Kr8PRVu2yVUu1A8d1UNtqta2ztVVatVXRKghOxIECQtgjzIQk5/cHl9TIhsDJ+L5fN9fm5IzPIUC+PM9znsNhGIYBIYQQQoiZ4LIdgBBCCCHEkKi4IYQQQohZoeKGEEIIIWaFihtCCCGEmBUqbgghhBBiVqi4IYQQQohZoeKGEEIIIWaFihtCCCGEmBUqbgghhBBiVqi4IeQ+sbGx4HA4uoeVlRXc3d0xbdo03Lx5s037vHbtGlasWIG7d+8aNmwjPv74Y+zfv7/e8hMnToDD4eDEiROdkuP+Y7bkAQB+fn6YPXt2p+VrzoPfD0KhEG5ubhg5ciRWrVqFvLy8etusWLFCdz4tVVlZiRUrVrT6vWnoWH5+fnj00UdbtZ/m7Ny5E+vWrWvwNQ6HgxUrVhj0eIS0lxXbAQgxRtu3b0dQUBCqq6tx+vRpfPTRRzh+/DiuX78OR0fHVu3r2rVrWLlyJUaMGAE/P7+OCXyfjz/+GE899RQef/xxveX9+vXDmTNnEBIS0uEZHjzm/Z544gl07doVa9eurbf+vn37IJFIOitei9V9P9TU1CAvLw+nTp3Cp59+irVr12L37t0YPXq0bt158+Zh3Lhxrdp/ZWUlVq5cCQAYMWJEi7dry7HaYufOnbhy5QoWLlxY77UzZ87Ay8urwzMQ0hpU3BDSgNDQUPTv3x9A7YeNRqPB8uXLsX//fsyZM4fldG0jkUgwcOBA1o8pEAjg4ODQYJa+fft2VrRWuf/7AQCefPJJLFq0CEOGDMGUKVNw8+ZNyGQyAICXl1eHf9hXVlZCJBJ1yrGa09nfU4S0BHVLEdICdR9subm5essTEhIwadIkODk5QSgUom/fvtizZ4/u9djYWDz99NMAgJEjR+q6N2JjY3Xr/PHHHxg1ahQkEglEIhHCw8Px559/6h2nrvvh6tWrmD59Ouzt7SGTyfDCCy+gtLRUtx6Hw0FFRQW++eYb3bHqWgIa65Y6ePAgBg0aBJFIBLFYjDFjxtRrbWnp8dvrwW6pusw7d+7E22+/DXd3d9jZ2eGxxx5Dbm4uysrK8J///AdSqRRSqRRz5sxBeXm53j4ZhkFMTAz69OkDGxsbODo64qmnnkJaWlq7svr4+OCzzz5DWVkZNm3apFveUFfRsWPHMGLECDg7O8PGxgY+Pj548sknUVlZibt378LFxQUAsHLlSt37Vvd1qNvfhQsX8NRTT8HR0RFdu3Zt9Fh19u3bh169ekEoFKJLly744osv9F6v63J7sLv0we+TESNG4Ndff0V6enq9bkSg4W6pK1euYPLkyXB0dIRQKESfPn3wzTffNHicXbt2YdmyZfDw8IBEIsHo0aORmpra+BeekBag4oaQFrhz5w4AoHv37rplx48fR3h4OEpKSrBx40YcOHAAffr0wdSpU3XFy8SJE/Hxxx8DAL7++mucOXMGZ86cwcSJEwEA3333HSIiIiCRSPDNN99gz549cHJywtixY+sVOEBti0H37t3x888/Y/Hixdi5cycWLVqke/3MmTOwsbHBhAkTdMeKiYlp9Lx27tyJyZMnQyKRYNeuXdi6dSuKi4sxYsQInDp1qtXH7yhLly5FXl4eYmNj8dlnn+HEiROYPn06nnzySdjb22PXrl1466238O2332Lp0qV6286fPx8LFy7E6NGjsX//fsTExODq1asYPHhwvWK1tSZMmAAej4e///670XXu3r2LiRMngs/nY9u2bfj999/xySefwNbWFiqVCu7u7vj9998BAHPnztW9b++++67efqZMmYKAgAD8+OOP2LhxY5O5kpOTsXDhQixatAj79u3D4MGD8frrrzfYFdicmJgYhIeHw83NTZftweL3fqmpqRg8eDCuXr2KL774Anv37kVISAhmz56N1atX11t/6dKlSE9Px5YtW7B582bcvHkTjz32GDQaTauzEqLDEEJ0tm/fzgBgzp49y9TU1DBlZWXM77//zri5uTHDhg1jampqdOsGBQUxffv21VvGMAzz6KOPMu7u7oxGo2EYhmF+/PFHBgBz/PhxvfUqKioYJycn5rHHHtNbrtFomN69ezMPP/ywbtny5csZAMzq1av11o2MjGSEQiGj1Wp1y2xtbZlZs2bVO7fjx4/r5dBoNIyHhwfTs2dPXVaGYZiysjLG1dWVGTx4cJuO3xxf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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculate mean and standard deviation\n",
    "mean_rt = df_log_train['RT'].mean()\n",
    "std_rt = df_log_train['RT'].std()\n",
    "#median_rt = df_train['RT'].median()\n",
    "\n",
    "# Create histogram\n",
    "sns.kdeplot(data = df_log_train, x = 'RT', fill = True)\n",
    "plt.title('Retention Time Distribution')\n",
    "plt.xlabel('Retention Time')\n",
    "plt.ylabel('Frequency')\n",
    "\n",
    "# Add a vertical line for the mean\n",
    "plt.axvline(mean_rt, color='red', linestyle='dashed', linewidth=2, label=f'Mean: {mean_rt:.2f}')\n",
    "\n",
    "# Add vertical lines for one standard deviation above and below the mean\n",
    "plt.axvline(mean_rt + std_rt, color='green', linestyle='dashed', linewidth=2, label=f'+1 STD: {mean_rt + std_rt:.2f}')\n",
    "plt.axvline(mean_rt - std_rt, color='blue', linestyle='dashed', linewidth=2, label=f'-1 STD: {mean_rt - std_rt:.2f}')\n",
    "\n",
    "# plt.axvline(median_rt, color='purple', linestyle='dashed', linewidth=2, label=f'Median: {median_rt:.2f}')\n",
    "\n",
    "\n",
    "# Add a legend\n",
    "plt.legend()\n",
    "# Show plot"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5e78bcb",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "As expected, we obtain a more symmetric distribution. Nevertheless, it is still far from a Gaussian distribution. Note that we cannot conclude too much just from looking at the distribution of retention times (see e.g. [here](https://bio322.epfl.ch/notebooks/transformations.html#07734386-6858-46ab-9ce7-9e4092cb7280)). In the end, we won't use the log-transformation, and focus a lot on non-linear methods to obtain the best predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "0d524317",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5kAAAKrCAYAAAB7k0k0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVyN6f8/8NcpddpPChXaLJWlyNhipkKUfV8jiRr7GIytobJkbaxjMKMi2bfpg8HYDSFDGFukZYzIeiLtnd8fft1fR6cU5bS8no/Heei+7+u+rvd9n/scvbuu+7pFMplMBiIiIiIiIqISoKLsAIiIiIiIiKjiYJJJREREREREJYZJJhEREREREZUYJplERERERERUYphkEhERERERUYlhkklEREREREQlhkkmERERERERlRgmmURERERERFRimGQSERERERFRiWGSSUREZVZoaChEIpHw0tDQgLGxMdq1a4eFCxciOTk53z7+/v4QiUTFauft27fw9/fHqVOnirWforYsLCzQrVu3YtXzMVu3bsWKFSsUbhOJRPD39y/R9kra8ePH0bx5c2hra0MkEmH//v2l1tb58+fh7++PV69elVobeQq7bvKu3fj4+FKP40Nr165FaGhovvXx8fEQiUQKtymLs7MzGjduXOrtWFhYwNPT85P2FYlEGD9+fMkG9Jk+9TurqJR5/VLFwCSTiIjKvJCQEERGRuLPP//Ezz//jKZNm2Lx4sVo0KABjh07Jld21KhRiIyMLFb9b9++RUBAQLF/YfuUtj5FYUlmZGQkRo0aVeoxfCqZTIYBAwZATU0NERERiIyMhJOTU6m1d/78eQQEBHyxJLOg66Zr166IjIyEiYlJqcfxoYKSTBMTE0RGRqJr165fPCYqWZ/6nVVUyrx+qWKoouwAiIiIPqZx48Zo3ry5sNy3b198//33+Prrr9GnTx/cu3cPRkZGAIDatWujdu3apRrP27dvoaWl9UXa+pjWrVsrtf2PefToEV68eIHevXujQ4cOxd4/KysLIpEIVaqUr19ZqlevjurVqys7DDlisbjMXy+VVVm5ztPS0qChoVEmr18qX9iTSURE5ZKZmRmCgoLw+vVrrF+/XlivaAjriRMn4OzsDENDQ2hqasLMzAx9+/bF27dvER8fL/wyFRAQIAzNzRtal1fflStX0K9fP1StWhV169Yt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axlOTk4cOnSIv/76S1m4qE2bNty+fZu5c+dy5coVvvjiC3788ccc5507d45Lly5x584d0tLS6NOnDxUrVqRbt24cPnyYuLg4IiMjGTVqFH/++Weu9Q8fPpzr168zcuRILl68yHfffcfUqVMZPXp0sT0+xMXFhW7duuHv78+RI0c4e/Ysffv2pWrVqnTr1i3P81xdXenTpw/9+/dn+/btxMXFcfLkST799FN2795doLrj4uKYOHEix44dIz4+nn379uWb3IaEhBAaGsrixYu5fPkyp0+f5vPPPy9wWw8cOMCNGzfyvA83JCSE2bNns2jRImJiYjh//jxhYWEsWLAAgN69e6Onp8fgwYO5cOECu3fvZv78+fnWOXHiRE6ePMnw4cM5d+4cFy9eZNmyZTkWwiqoolxHQgghhBCidCjSJ/g6depw+fJlZs+eTb169fDy8mLOnDlcvnz5mYt9lJQffviB+Ph4du/ejZ2dXY6f7IVTKlSowMaNG9m9ezd16tThq6++IiQkpEh1Llu2jLfffpvhw4fj5uaGv7+/1gjpi5CRkcGIESNwd3enY8eO1KpVS1l8pWrVqkybNo2PPvoIGxubPB+DMX36dK5du0aNGjWUqYju7u4sXbqUL774grp163LixAnGjh2rdZ6/vz+1atWiUaNGVKpUiaioKExNTTl06BAODg50794dd3d3Bg0aRFJSUp73x1atWpXdu3dz4sQJ6taty9ChQxk8eDCTJk0qxp56PGW1YcOGdOnShebNm5OVlcXu3btzTNvM7bz+/fszZswYatWqxf/+9z+OHz9e4Pv9TE1NuXjxIj169MDV1ZWAgAACAwN5//33cz1+wIABLFy4kKVLl+Lp6UmXLl20HrXyLNmPScnLkCFDWL16NeHh4dSpU4fWrVsTHh6ujGSam5vz/fffc+HCBerXr09wcDCffvppvnW6urqyb98+zp49S5MmTWjevDnfffcd5coVaUZ+ka4jIYQQQghROqiyinAD1qFDh2jRokWOD5Dp6ekcPXqUVq1aFVuAQghRFImJiajVajQajSSmL4Hk5GQSEhJwcHAo1OrbpV1MTAwBAQE89PgfmWYVdR1OnvQe3sHsws5SH2dhZLdp5cqVr+w9mWX190oIoTsF/XxVpJHMtm3bcvfu3RzbNRoNbdu2LUqRQgghXmHGxsa4urrKB2EhipH8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a9cwd+7cGjELgoCQkBDcunULhw4dQnp6Oi5evIiwsDCN9S5evIiUlBSkpqYiNTUVhw4dwsqVK2s9Dg2tu9rSpUvxxhtv4PTp03Bzc8Prr7+OadOmYcGCBThx4gQA4O233xbX/+WXXzB+/HjMnDkTubm5SExMRFJSEuLi4uqsg4jaGIGIiIioBZo4caKgr68vmJiYCDKZTAAgABDWrFkjrmNnZyd8/fXXGtstXbpU8PPzEwRBEAoKCgQAwqlTpzTWaeh2W7duFZefO3dOACDk5eUJgiAI27ZtE5RKZY24HRwchI8++kgQBEHYu3evoK+vLxQWFtYo59ixY4IgCEJ0dLRgbGwslJSUiOu89957Qp8+feo8Ng2pWxAEAYCwaNEicTo7O1sAIHz22WfivG+++UaQyWTi9MCBA4Xly5drlJucnCzY2NjUGQ8RtS18JpOIiIharMGDB2PTpk24e/cutm7divz8fLzzzjsAgBs3buDq1auYPHkypk6dKm5TWVkJpVJZZ5mN2c7b21v828bGBgBQXFwMNze3BsWfl5cHOzs72NnZifM8PDxgbm6OvLw8+Pr6AnjYzdXMzEyjruLi4gbV8SSP7oOVlRUAwMvLS2NeeXk5SkpKoFAocPLkSRw/flyj5bKqqgrl5eW4e/cujI2NmyQuImq5mGQSERFRi2ViYoKuXbsCANatW4fBgwcjNjYWS5cuhVqtBvCw62ufPn00ttPX16+zzMZs92jXXIlEorF9QwiCIG5X3/xH66muqzH11Ke2fahvv9RqNWJjYxEaGlqjLJlM1iQxEVHLxiSTiIiIWo3o6GgMHz4cb731FmxtbdGpUydcunQJ48aNq3V9IyMjAA9b4qpZWVk9cbuGMDIy0ii3Nh4eHigsLMTVq1fF1szc3FyoVCq4u7s3a91Py8fHB+fPnxeTeyKixzHJJCIiolZj0KBB8PT0xPLly7FhwwbExMRg5syZUCgUGD58OCoqKnDixAncvn0bc+bMgaWlJeRyOfbs2YPOnTtDJpNBqVQ+cbuGcHR0xF9//YWMjAz06NEDxsbGNbqSBgYGwtvbG+PGjcPatWtRWVmJ6dOnIyAgAL17937q49CQup/WkiVL8NJLL8HOzg6vvfYa9PT0cObMGZw9exbLli1rkjqIqGXj6LJERETUqsyZMwdbtmzB1atXMWXKFGzduhVJSUnw8vJCQEAAkpKSxFeXGBgYYN26dUhMTIStrS1effVVAHjidg3Rr18/vPnmmwgLC0PHjh0RHx9fYx2JRIKUlBS0a9cO/v7+CAwMhLOzM3bs2PFMx6AhdT+t4OBgpKamIj09Hb6+vujbty/WrFkDBweHJquDiFo2iSAIgraDICIiIiIiotaBLZlERERERETUZJhkEhERERERUZNhkklERERERERNhkkmERERERERNRkmmURERERERNRkmGQSERERERFRk2GSSURERERERE2GSSYRERERERE1GSaZRERERERE1GSYZBIREREREVGTYZJJRERERERETeb/AFS7X77dk08XAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Define the size of the chart\n",
    "plt.figure(figsize=(10, 10)) \n",
    "\n",
    "# Create a boxplot with different colors for each 'lab'\n",
    "sns.boxplot(x='RT', y='Lab', data=df_train)\n",
    "\n",
    "# Adjust margins if necessary\n",
    "plt.subplots_adjust(left=0.2, bottom=0.2, right=0.8, top=0.8)\n",
    "\n",
    "plt.title('Distribution of retention time by laboratories')\n",
    "plt.xlabel('Retention time')\n",
    "plt.ylabel('Laboratories')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56da23f7-7f37-4694-9053-445f2f33cdc2",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "The distributions of retention times vary a lot from lab to lab. This means that it is probably a good idea to use the lab information in some way when trying to predict the retention time."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f670a2fc",
   "metadata": {},
   "source": [
    "Here, we can observe an outlier: Mainz. Indeed, the retention times measured in this lab seem to be higher than the ones measured in other labs. The question is the following: Is it a good idea to delete the row with lab == 'Mainz' ? To answer this question, let's do more plots."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5dcace9d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of unique Labs: 24\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEgAAAIuCAYAAACsBj2rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3zO1///8cclMmSSGAlCrMSeQdFKtDQEpXbNiD3bolTVXjXSoq1RJVG1G23Vp7XF3gQlVohQUTtqRcj1+8Mv769LhlAt5Xm/3d6323W9z3mf8zrv60pvvV7OOW+T2Ww2IyIiIiIiIiLyCsv0vAMQEREREREREXnelCARERERERERkVeeEiQiIiIiIiIi8spTgkREREREREREXnlKkIiIiIiIiIjIK08JEhERERERERF55SlBIiIiIiIiIiKvPCVIREREREREROSVpwSJiIiIiIiIiLzylCARERGRF0pYWBgmkwk7OztOnz6dotzf35+SJUs+h8ggIiICk8nEDz/88Fz6f1IxMTHUrVsXV1dXTCYTH3zwQZp1vby8MJlMxuHg4ED58uX56quvMJvN/17Q8kzdvXuXrl274uHhgZWVFWXLlk2zblBQkMV34NHjn+Ll5UW9evWe+nqTyUTPnj2fSSxBQUE4Ojo+k7ZE5L8n8/MOQERERCQ1CQkJfPrpp8ydO/d5h/Kf9eGHH7Jjxw5mz56Nu7s7Hh4e6davVq0aEydOBODcuXN8/vnn9OrVi+vXr/PJJ5/8GyHLMzZt2jRmzJjBl19+SYUKFR774z9LliysW7fuX4pOROTFogSJiIiIvJBq167N/Pnz6devH2XKlHne4fyrbt++jZ2d3d/+V/vff/+dSpUq0bBhwwzVz5o1K6+99prxvmbNmuTLl48ZM2a8kAmSxMRETCYTmTOn/F/aW7duYW9v/xyierH8/vvvZMmSJcMzLDJlymTxHRAReZVoiY2IiIi8kPr374+bmxsDBgxIt15MTAwmk4mwsLAUZSaTiWHDhhnvhw0bhslk4sCBAzRt2hQXFxdcXV3p06cP9+7d4+jRo9SuXRsnJye8vLwYP358qn3euXOHPn364O7uTpYsWfDz82Pfvn0p6u3evZt33nkHV1dX7OzsKFeuHIsXL7aok7ykaNWqVQQHB5MjRw7s7e1JSEhIc8yxsbG0bt2anDlzYmtrS7FixQgJCSEpKQn4v6VAJ06c4LfffjOWSMTExKR7Lx/l7OyMt7c3f/75p8X5u3fvMmrUKIoWLYqtrS05cuSgffv2XLx4MUUb8+fPp0qVKjg6OuLo6EjZsmWZNWuWUe7l5UVQUFCK6/z9/fH39zfeJ49p7ty59O3blzx58mBra8uJEyeMZREHDx7k7bffxsnJibfeeuuJYk1e5rFixQrKly9PlixZKFq0KLNnz04R2x9//EHnzp3x9PTExsaG3Llz06RJE4v7dP36dfr160eBAgWwsbEhT548fPDBB9y8edOirSVLllC5cmVcXFywt7enYMGCBAcHp/2h/H937txh4MCBFu336NGDa9euGXVMJhPffvstt2/fNr4Dqf2dPKk7d+7Qt29fypYta/wNValShZ9//jlF3aSkJL788kvKli1LlixZjCTcsmXLUtTNyL1/WosWLeLtt9/Gw8ODLFmyUKxYMT7++OMUn0eyQ4cO8dZbb+Hg4ECOHDno2bMnt27dembxiMiLSTNIRERE5IXk5OTEp59+yvvvv8+6det48803n1nbzZo1o3Xr1nTp0oXVq1czfvx4EhMTWbNmDd27d6dfv37Mnz+fAQMGULhwYRo1amRx/SeffEL58uX59ttviY+PZ9iwYfj7+7Nv3z4KFiwIwPr166lduzaVK1dm+vTpuLi4sHDhQpo3b86tW7dSJAWCg4OpW7cuc+fO5ebNm1hbW6ca+8WLF6latSp3795l5MiReHl5sXz5cvr160d0dDRTp06lfPnybNu2jXfffZdChQoZy2Yet8TmUffu3ePMmTN4e3sb55KSkmjQoAGbNm2if//+VK1aldOnTzN06FD8/f3ZvXs3WbJkAWDIkCGMHDmSRo0a0bdvX1xcXPj9999T3VsmowYOHEiVKlWYPn06mTJlImfOnMCDRMg777xDly5d+Pjjj7l3794TxQqwf/9++vbty8cff0yuXLn49ttv6dChA4ULF6Z69erAg+RIxYoVSUxM5JNPPqF06dJcvnyZlStXcvXqVXLlysWtW7fw8/Pj7NmzRp1Dhw4xZMgQDh48yJo1azCZTGzbto3mzZvTvHlzhg0bZuy787glLmazmYYNG7J27VoGDhzIG2+8wYEDBxg6dCjbtm1j27Zt2Nrasm3bNkaOHMn69euNNgsVKvTYe3zv3r0U5zJlykSmTA/+bTUhIYErV67Qr18/8uTJw927d1mzZg2NGjUiNDSUtm3bGtcFBQXx/fff06FDB0aMGIGNjQ179+5NkazLyL3/O44fP05gYCAffPABDg4OHDlyhHHjxrFz584U9zsxMZHAwEDju7R161ZGjRrF6dOn+eWXX/52LCLyAjOLiIiIvEBCQ0PNgHnXrl3mhIQEc8GCBc2+vr7mpKQks9lsNvv5+ZlLlChh1D916pQZMIeGhqZoCzAPHTrUeD906FAzYA4JCbGoV7ZsWTNgXrp0qXEuMTHRnCNHDnOjRo2Mc+vXrzcD5vLlyxvxmM1mc0xMjNna2trcsWNH41zRokXN5cqVMycmJlr0Va9ePbOHh4f5/v37FuNt27Zthu7Pxx9/bAbMO3bssDjfrVs3s8lkMh89etQ4lz9/fnPdunUz1G7+/PnNgYGB5sTERHNiYqL59OnT5k6dOpmtra3Ny5cvN+otWLDADJjDw8Mtrt+1a5cZME+dOtVsNpvNJ0+eNFtZWZlbtWr12H7btWuX4ryfn5/Zz8/PeJ9876tXr56ibrt27cyAefbs2RbnMxprchx2dnbm06dPG+du375tdnV1NXfp0sU4FxwcbLa2tjYfPnw4zTGNHTvWnClTJvOuXbsszv/www9mwPzrr7+azWazeeLEiWbAfO3atTTbSs2KFSvMgHn8+PEW5xctWmQGzN98841xrl27dmYHB4cMtZt8H1M73nrrrTSvu3fvnjkxMdHcoUMHc7ly5YzzGzduNAPmQYMGpdtvRu99WgBzjx49MjDCB5KSksyJiYnmDRs2mAHz/v37jbLkezB58mSLa0aPHm0GzJs3b85wPyLy36MlNiIiIvLCsrGxYdSoUezevTvF0pS/49EnZhQrVgyTyUSdOnWMc5kzZ6Zw4cKpznZo2bKlxf4g+fPnp2rVqqxfvx6AEydOcOTIEVq1agU8+Bf55CMwMJC4uDiOHj1q0Wbjxo0zFPu6desoXrw4lSpVsjgfFBSE2Wz+Wxts/vrrr1hbW2NtbU3+/PmZOXMmX375JXXr1jXqLF++nKxZs1K/fn2LcZUtWxZ3d3ciIiIAWL16Nffv36dHjx5PHU9q0rtPj5ZlNNZkZcuWJV++fMZ7Ozs7vL29Lb4Dv/32GzVq1KBYsWJpxrF8+XJKlixJ2bJlLfoNCAjAZDIZ/VasWBF4MKNp8eLF/PHHHxm6B8mf8aOzkJo2bYqDgwNr167NUDupyZIlC7t27UpxTJ061aLekiVLqFatGo6OjmTOnBlra2tmzZpFVFSUUee3334DyNB3ICP3/u84efIkLVu2xN3dHSsrK6ytrfHz8wOwiDlZ8t9uspYtWwIYf+Mi8nJSgkREREReaC1atKB8+fIMGjSIxMTEZ9Kmq6urxXsbGxvs7e2xs7NLcf7OnTsprnd3d0/13OXLlwGMvSj69etnJBySj+7duwNw6dIli+szuvzl8uXLqdbNnTu3Uf60Xn/9dXbt2sX27duZO3cuXl5e9OzZk82bNxt1/vzzT65du4aNjU2KsZ0/f94YV/IeH3nz5n3qeFKT1n2yt7fH2dnZ4lxGY03m5uaWol1bW1tu375tvL948eJjx/Tnn39y4MCBFH06OTlhNpuNfqtXr85PP/3EvXv3aNu2LXnz5qVkyZIsWLAg3fYvX75M5syZyZEjh8V5k8lk8T18GpkyZcLX1zfF8fAyq6VLl9KsWTPy5MnD999/z7Zt29i1axfBwcEWfy8XL17Eysoq1b+XR2Xk3j+tGzdu8MYbb7Bjxw5GjRpFREQEu3btYunSpQAp+sicOXOKeJLH8HfurYi8+LQHiYiIiLzQTCYT48aNo1atWnzzzTcpypOTGo9uavpP/pA5f/58queSf1Rlz54deLBfxqP7lyTz8fGxeJ/RJ9a4ubkRFxeX4vy5c+cs+n4aLi4u+Pr6AlC5cmUqV65MmTJl6N69O5GRkWTKlIns2bPj5ubGihUrUm3DyckJwPjxfvbsWTw9PdPs087OLtUNaS9dupTqWNK6T6mdz2isTyJHjhycPXs23TrZs2cnS5YsaW4y+vC4GjRoQIMGDUhISGD79u2MHTuWli1b4uXlRZUqVVK93s3NjXv37nHx4kWLJInZbOb8+fPGzJR/yvfff0+BAgVYtGiRxX1/9HPMkSMH9+/f5/z580+8/82ztG7dOs6dO0dERIQxawSw2ND2Yffu3ePy5csWSZLkv/nUEjki8vLQDBIRERF54dWsWZNatWoxYsQIbty4YVGWK1cu7OzsOHDggMX51J6o8awsWLAAs9lsvD99+jRbt241nrri4+NDkSJF2L9/f6r/Gu/r6/tUP84B3nrrLQ4fPszevXstzn/33XeYTCZq1Kjx1ON6VJEiRejfvz8HDx5k0aJFwIPlSZcvX+b+/fupjis58fP2229jZWXFtGnT0u3Dy8srxWd37NixFEuQnkZGY30SderUYf369enGV69ePaKjo3Fzc0u1Xy8vrxTX2Nra4ufnx7hx4wBSfSpSsuQn9Hz//fcW58PDw7l586ZR/k8xmUzY2NhYJEfOnz+f4m8uecna474D/7TkOG1tbS3Oz5gxI81r5s2bZ/F+/vz5ABZPVhKRl49mkIiIiMh/wrhx46hQoQIXLlygRIkSxnmTyUTr1q2ZPXs2hQoVokyZMuzcudP4QfNPuHDhAu+++y6dOnUiPj6eoUOHYmdnx8CBA406M2bMoE6dOgQEBBAUFESePHm4cuUKUVFR7N27lyVLljxV3x9++CHfffcddevWZcSIEeTPn5///e9/TJ06lW7dulkshXgW+vXrx/Tp0xk+fDjNmjWjRYsWzJs3j8DAQN5//30qVaqEtbU1Z8+eZf369TRo0IB3330XLy8vPvnkE0aOHMnt27d57733cHFx4fDhw1y6dInhw4cD0KZNG1q3bk337t1p3Lgxp0+fZvz48SmWjzyNjMb6JEaMGMFvv/1G9erV+eSTTyhVqhTXrl1jxYoV9OnTh6JFi/LBBx8QHh5O9erV+fDDDyldujRJSUnExsayatUq+vbtS+XKlRkyZAhnz57lrbfeIm/evFy7do3Jkydb7I+Rmlq1ahEQEMCAAQO4fv061apVM55iU65cOdq0afPU9ywpKYnt27enWlauXDlsbW2pV68eS5cupXv37jRp0oQzZ84wcuRIPDw8OH78uFH/jTfeoE2bNowaNYo///yTevXqYWtry759+7C3t6dXr15PHeejoqOj+eGHH1KcL168OFWrViVbtmx07dqVoUOHYm1tzbx589i/f3+qbdnY2BASEsKNGzeoWLGi8RSbOnXq8Prrrz+zmEXkBfR894gVERERsfTwU2we1bJlSzNg8RQbs9lsjo+PN3fs2NGcK1cus4ODg7l+/frmmJiYNJ9ic/HiRYvr03rSx6NPzEl+ksrcuXPNvXv3NufIkcNsa2trfuONN8y7d+9Ocf3+/fvNzZo1M+fMmdNsbW1tdnd3N7/55pvm6dOnZ2i8aTl9+rS5ZcuWZjc3N7O1tbXZx8fHPGHCBOPJOMme9Ck2adX9+uuvzYB5zpw5ZrP5wRN+Jk6caC5TpozZzs7O7OjoaC5atKi5S5cu5uPHj1tc+91335krVqxo1CtXrpzFE4eSkpLM48ePNxcsWNBsZ2dn9vX1Na9bty7Np9gsWbIkRXzpPaklo7GmNf5H4zCbzeYzZ86Yg4ODze7u7mZra2tz7ty5zc2aNTP/+eefRp0bN26YP/30U7OPj4/ZxsbG7OLiYi5VqpT5ww8/NJ8/f95sNpvNy5cvN9epU8ecJ08es42NjTlnzpzmwMBA86ZNm1Idy8Nu375tHjBggDl//vxma2trs4eHh7lbt27mq1evZvjePCq9p9gAFvfrs88+M3t5eZltbW3NxYoVM8+cOdP4+3rY/fv3zV988YW5ZMmSxn2oUqWK+ZdffjHqPMm9T016MSf//W/dutVcpUoVs729vTlHjhzmjh07mvfu3ZviCVjJ9+vAgQNmf39/c5YsWcyurq7mbt26mW/cuJGh+ygi/10ms/mh+aEiIiIiIiIiIq8g7UEiIiIiIiIiIq88JUhERERERERE5JWnBImIiIiIiIiIvPKUIBERERERERGRV54SJCIiIiIiIiLyylOCREREREREREReeZmfdwAiIv+EpKQkzp07h5OTEyaT6XmHIyIiIiIiz4nZbOavv/4id+7cZMqU9jwRJUhE5KV07tw5PD09n3cYIiIiIiLygjhz5gx58+ZNs1wJEhF5KTk5OQEP/iPo7Oz8nKMREREREZHn5fr163h6ehq/EdKiBImIvJSSl9XUG/8/rGyzPOdoREREREReHXsmtH3eIaTqcUvvtUmriIiIiIiIiLzylCARERERERERkVeeEiQiYjh//jy9evWiYMGC2Nra4unpSf369Vm7di0AXl5emEwmi+PhTY7Cw8OpXLkyLi4uODk5UaJECfr27WuUh4WFWVybK1cu6tevz6FDhyziCAoKStGPyWSidu3a/86NEBERERGRV472IBERAGJiYqhWrRpZs2Zl/PjxlC5dmsTERFauXEmPHj04cuQIACNGjKBTp07GdVZWVgCsWbOGFi1aMGbMGN555x1MJhOHDx82kivJnJ2dOXr0KGazmT/++IP+/ftTt25djh07ho2NjVGvdu3ahIaGWlxra2v7Tw1fRERERERecUqQiAgA3bt3x2QysXPnThwcHIzzJUqUIDg42Hjv5OSEu7t7iuuXL1/O66+/zkcffWSc8/b2pmHDhhb1TCaTcb2Hhwcffvgh77zzDkePHqVUqVJGPVtb21T7ERERERER+SdoiY2IcOXKFVasWEGPHj0skiPJsmbN+tg23N3dOXToEL///nuG+7127Rrz588HwNraOsPXiYiIiIiIPGtKkIgIJ06cwGw2U7Ro0cfWHTBgAI6OjsYxZcoUAHr16kXFihUpVaoUXl5etGjRgtmzZ5OQkGBxfXx8PI6Ojjg4OJAtWzYWLlzIO++8k6Lv5cuXW/Tj6OjIyJEj04wrISGB69evWxwiIiIiIiIZpSU2IoLZbAYe/1xwgI8++oigoCDjffbs2QFwcHDgf//7H9HR0axfv57t27fTt29fJk+ezLZt27C3twceLNHZu3cv9+7dY8OGDUyYMIHp06en6KdGjRpMmzbN4pyrq2uacY0dO5bhw4c/Nn4REREREZHUKEEiIhQpUgSTyURUVFSKPUMelT17dgoXLpxmeaFChShUqBAdO3Zk0KBBeHt7s2jRItq3bw9ApkyZjOuLFi3K+fPnad68ORs3brRox8HBId1+HjVw4ED69OljvL9+/Tqenp4Zvl5ERERERF5tWmIjIri6uhIQEMDXX3/NzZs3U5Rfu3btqdr18vLC3t4+1TaTffjhh+zfv58ff/zxqfpIZmtri7Ozs8UhIiIiIiKSUUqQiAgAU6dO5f79+1SqVInw8HCOHz9OVFQUU6ZMoUqVKo+9ftiwYfTv35+IiAhOnTrFvn37CA4OJjExkVq1aqV5nbOzMx07dmTo0KHGUh94sKfI+fPnLY5Lly49k7GKiIiIiIg8SgkSEQGgQIEC7N27lxo1atC3b19KlixJrVq1WLt2bYq9QFLj5+fHyZMnadu2LUWLFqVOnTqcP3+eVatW4ePjk+6177//PlFRUSxZssQ4t2LFCjw8PCyO119//W+PU0REREREJDUm88P/ZCsi8pK4fv06Li4ulOk1HSvbLM87HBERERGRV8aeCW2fdwgWkn8bxMfHp7sUXzNIREREREREROSVp6fYiMhLbeOo97Rhq4iIiIiIPJZmkIiIiIiIiIjIK08JEhERERERERF55SlBIiIiIiIiIiKvPO1BIiIvteqfLtBTbERERET+Y160p6DIq0EzSERERERERETklacEiYiIiIiIiIi88pQgEZF/XExMDCaTicjIyOcdioiIiIiISKqUIBGRVAUFBWEymejatWuKsu7du2MymQgKCspQW56ensTFxVGyZMlnHKWIiIiIiMizoQSJiKTJ09OThQsXcvv2bePcnTt3WLBgAfny5ctwO1ZWVri7u5M5s/aFFhERERGRF5MSJCKSpvLly5MvXz6WLl1qnFu6dCmenp6UK1fOOLdixQpef/11smbNipubG/Xq1SM6Otoof3SJTUREBCaTibVr1+Lr64u9vT1Vq1bl6NGjxjVeXl6YTKYUh4iIiIiIyD9BCRIRSVf79u0JDQ013s+ePZvg4GCLOjdv3qRPnz7s2rWLtWvXkilTJt59912SkpLSbXvQoEGEhISwe/duMmfObNHurl27iIuLIy4ujrNnz/Laa6/xxhtvpNlWQkIC169ftzhEREREREQySvPdRSRdbdq0YeDAgcYskC1btrBw4UIiIiKMOo0bN7a4ZtasWeTMmZPDhw+nu+/I6NGj8fPzA+Djjz+mbt263LlzBzs7O3LkyGHUe//994mLi2PXrl1ptjV27FiGDx/+lKMUEREREZFXnWaQiEi6smfPTt26dZkzZw6hoaHUrVuX7NmzW9SJjo6mZcuWFCxYEGdnZwoUKABAbGxsum2XLl3aeO3h4QHAhQsXLOp88803zJo1i59//tkiafKogQMHEh8fbxxnzpx5onGKiIiIiMirTTNIROSxgoOD6dmzJwBff/11ivL69evj6enJzJkzyZ07N0lJSZQsWZK7d++m2661tbXxOnl/kYeX5URERNCrVy8WLFhAmTJl0m3L1tYWW1vbDI9JRERERETkYUqQiMhj1a5d20h2BAQEWJRdvnyZqKgoZsyYYewRsnnz5r/d54kTJ2jcuDGffPIJjRo1+tvtiYiIiIiIpEcJEhF5LCsrK6KioozXD8uWLRtubm588803eHh4EBsby8cff/y3+rt9+zb169enbNmydO7cmfPnzxtl7u7uf6ttERERERGR1ChBIiIZ4uzsnOr5TJkysXDhQnr37k3JkiXx8fFhypQp+Pv7P3Vff/75J0eOHOHIkSPkzp3bosxsNj91uyIiIiIiImkxmfVrQ0ReQtevX8fFxYUyvaZjZZvleYcjIiIiIk9gz4S2zzsEeYkk/zaIj49P8x9+QU+xERERERERERHREhsRebltHPVeulliERERERER0AwSERERERERERElSERERERERERElCARERERERERkVee9iARkZda9U8X6Ck2IiIiIv8A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L27MDtm9ezf37t0jJCSE1157DW9vb86dO/dc4tq0aRNBQUG8++67lCpVCnd3d2JiYp6ojdKlSxMZGflET+kpV64cAwcOZOvWrZQsWZL58+cbbaX1SODixYtz7949Y/NXgMuXL3Ps2LE0l9C8/fbbuLq6pngCDTzYDPb48eO89957ADRp0gQbGxvGjx+falvXrl1Lcc7Kyoo2bdoQERGR7vIaERERERGRf5MSJPLcXb58mTfffJPvv/+eAwcOcOrUKZYsWcL48eNp0KABAIUKFeLevXt8+eWXnDx5krlz5zJ9+vTnEm/hwoVZunQpkZGR7N+/n5YtW6a6uWp63nvvPdzd3WnYsCFbtmzh5MmThIeHs23bthR1T506xcCBA9m2bRunT59m1apVFgmOoUOHsmDBAoYOHUpUVBQHDx40EhZFihShQYMGdOrUic2bN7N//35at25Nnjx5jHv7KAcHB2bMmMHPP/9M586dOXDgADExMcyaNYugoCCaNGlCs2bNgAczb7744gsmT55Mhw4d2LBhA6dPn2bLli106dKFkSNHptrHyJEjuXjxIgEBAenepwsXLnD+/HmLI63NZUVERERERP4OJUjkuXN0dKRy5cp88cUXVK9enZIlSzJ48GA6derEV199BUDZsmX5/PPPGTduHCVLlmTevHmMHTv2ucT7xRdfkC1bNqpWrUr9+vUJCAh44qew2NjYsGrVKnLmzElgYCClSpXis88+w8rKKkVde3t7jhw5QuPGjfH29qZz58707NmTLl26AODv78+SJUtYtmwZZcuW5c0337SYMRIaGkqFChWoV68eVapUwWw28+uvv6ZYAvSwJk2asH79es6cOUP16tXx8fHh888/Z9CgQSxcuNBieU737t1ZtWoVf/zxB++++y5FixalY8eOODs7p/kEIRsbG7Jnz/7Y/Ut8fHzw8PCwOPbs2ZPuNSIiIiIiIk/DZM7IBg0iIv8x169fx8XFhTK9pmNl+2R7voiIiIjI4+2Z0PZ5hyCSIcm/DeLj49Pdq1AzSERERERERETklZf5eQcgIvJP2jjqPT3RRkREREREHkszSERERERERETklacEiYiIiIiIiIi88pQgEREREREREZFXnvYgEZGXWvVPF+gpNiIi/xA9wUJERF4mmkEiIiIiIiIiIq88JUhEBICwsDCyZs36vMMQERERERF5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TGj7vEMQERF5rOTfBvHx8en+o6z2IBGRZ+rHH3/E0dGRIkWKcOLECd5//32qVav2ryZHREREREREnpQSJCLyTP3111/079+fM2fOkD17dmrWrElISMhzi2fjqPe0dEdERERERB5LS2xE5KWU0Wl0IiIiIiLycsvobwNt0ioiIiIiIiIirzwlSERERERERETklac9SETkpVb90wV6io2I/OP0NBcREZH/Ps0gEREREREREZFXnhIk8lLy9/fngw8+eK4xREREYDKZuHbt2r/et9lspnPnzri6umIymYiMjHym7QcFBdGwYcNn2qaIiIiIiMjzpASJvDDSSmr89NNPmEymJ2pr6dKljBw58hlF9nSqVq1KXFwcLi4uAISFhZE1a9Z/pe8VK1YQFhbG8uXLiYuLo2TJkunW9/HxwcbGhj/++MPifExMzD+SYBEREREREXnRKEEiLyVXV1ecnJz+0T4SExPTLbexscHd3f2JkzvPQnR0NB4eHlStWhV3d3cyZ057u6HNmzdz584dmjZtSlhY2L8XpIiIiIiIyAtECRL5zxk2bBhly5Zl7ty5eHl54eLiQosWLfjrr7+MOg/PRhk4cCCvvfZainZKly7N0KFDjfehoaEUK1YMOzs7ihYtytSpU42y5JkUixcvxt/fHzs7O77//ntOnz5N/fr1yZYtGw4ODpQoUYJff/0VsFxiExERQfv27YmPj8dkMmEymRg2bBgjRoygVKlSKWKrUKECQ4YMSfMebNiwgUqVKmFra4uHhwcff/wx9+7dAx4sf+nVqxexsbGYTCa8vLzSvZ+zZs2iZcuWtGnThtmzZ2M2m42yAgUKAFCuXDlMJhP+/v4W106cOBEPDw/c3Nzo0aOHRdLo7t279O/fnzx58uDg4EDlypWJiIgwypNn1KxcuZJixYrh6OhI7dq1iYuLM+pERERQqVIlHBwcyJo1K9WqVeP06dPpjkdERERERORpKEEi/0nR0dH89NNPLF++nOXLl7NhwwY+++yzVOu2atWKHTt2EB0dbZw7dOgQBw8epFWrVgDMnDmTQYMGMXr0aKKiohgzZgyDBw9mzpw5Fm0NGDCA3r17ExUVRUBAAD169CAhIYGNGzdy8OBBxo0bh6OjY4oYqlatyqRJk3B2diYuLo64uDj69etHcHAwhw8fZteuXUbdAwcOsG/fPoKCglIdzx9//EFgYCAVK1Zk//79TJs2jVmzZjFq1CgAJk+ezIgRI8ibNy9xcXEWbT/qr7/+YsmSJbRu3ZpatWpx8+ZNiyTGzp07AVizZg1xcXEsXbrUKFu/fj3R0dGsX7+eOXPmEBYWZjEDpX379mzZsoWFCxdy4MABmjZtSu3atTl+/LhR59atW0ycOJG5c+eyceNGYmNj6devHwD37t2jYcOG+Pn5ceDAAbZt20bnzp2fy4wcERERERF5+ekxv/KflJSURFhYmLGMpk2bNqxdu5bRo0enqFuyZElKly7N/PnzGTx4MADz5s2jYsWKeHt7AzBy5EhCQkJo1KgR8GDmxOHDh5kxYwbt2rUz2vrggw+MOgCxsbE0btzYmAVSsGDBVOO1sbHBxcUFk8mEu7u7cd7R0ZGAgABCQ0OpWLEi8GAmi5+fX5ptTZ06FU9PT7766itMJhNFixbl3LlzDBgwgCFDhuDi4oKTkxNWVlYWfaVm4cKFFClShBIlSgDQokULZs2aRY0aNQDIkSMHAG5ubinaypYtG1999RVWVlYULVqUunXrsnbtWjp16kR0dDQLFizg7Nmz5M6dG4B+/fqxYsUKQkNDGTNmDPBgmdL06dMpVKgQAD179mTEiBEAXL9+nfj4eOrVq2eUFytWLM2xJCQkkJCQYLy/fv16umMXERERERF5mGaQyH+Sl5eXxR4jHh4eXLhwIc36rVq1Yt68ecCDJ7wsWLDAmD1y8eJFzpw5Q4cOHXB0dDSOUaNGWcw6AfD19bV437t3b0aNGkW1atUYOnQoBw4ceOKxdOrUiQULFnDnzh0SExOZN28ewcHBadaPioqiSpUqFjMpqlWrxo0bNzh79uwT9T1r1ixat25tvG/dujVLly7N0JN3SpQogZWVlfH+4c9g7969mM1mvL29Le7phg0bLO6pvb29kfx4tA1XV1eCgoIICAigfv36TJ482WL5zaPGjh2Li4uLcXh6emb4PoiIiIiIiChBIi8MZ2dn4uPjU5y/du0azs7OFuesra0t3ptMJpKSktJsu2XLlhw7doy9e/eydetWzpw5Q4sWLQCM62bOnElkZKRx/P7772zfvt2iHQcHB4v3HTt25OTJk7Rp04aDBw/i6+vLl19+mfFBA/Xr18fW1pYff/yRX375hYSEBBo3bpxmfbPZnGKZSfK+IU+y/OTw4cPs2LGD/v37kzlzZjJnzsxrr73G7du3WbBgwWOvT+8zSEpKwsrKij179ljc06ioKCZPnpxuGw/vgRIaGsq2bduoWrUqixYtwtvbO8VnkmzgwIHEx8cbx5kzZzJ8L0RERERERLTERl4YRYsW5bfffktxfteuXfj4+PyttvPmzUv16tWZN28et2/fpmbNmuTKlQuAXLlykSdPHk6ePGnMKnkSnp6edO3ala5duzJw4EBmzpxJr169UtSzsbHh/v37Kc5nzpyZdu3aERoaiq2tLS1atMDe3j7N/ooXL054eLhFomTr1q04OTmRJ0+eDMc9a9Ysqlevztdff21xfu7cucyaNYtu3bphY2MDkGrc6SlXrhz379/nwoULvPHGG090bWptlStXjoEDB1KlShXmz5+f6qa7tra22Nra/q2+RERERETk1aUEibwwunfvzldffUWPHj3o3LkzWbJkYfXq1cyaNYu5c+f+7fZbtWrFsGHDuHv3Ll988YVF2bBhw+jduzfOzs7UqVOHhIQEdu/ezdWrV+nTp0+abX7wwQfUqVMHb29vrl69yrp169LcJ8PLy4sbN26wdu1aypQpg729vZEI6dixo3Hdli1b0h1H9+7dmTRpEr169aJnz54cPXqUoUOH0qdPHzJlytiksMTERObOncuIESMoWbKkRVnHjh0ZP348+/fvp0SJEmTJkoUVK1aQN29e7OzscHFxeWz73t7etGrVirZt2xISEkK5cuW4dOkS69ato1SpUgQGBj62jVOnTvHNN9/wzjvvkDt3bo4ePcqxY8do27ZthsYoIiIiIiLyJLTERl4YXl5ebNq0iejoaN5++20qVqxoPBmladOmf7v9pk2bcvnyZW7dukXDhg0tyjp27Mi3335LWFgYpUqVws/Pj7CwMOMxt2m5f/8+PXr0oFixYtSuXRsfHx+LxwM/rGrVqnTt2pXmzZuTI0cOxo8fb5QVKVKEqlWr4uPjQ+XKldPtM0+ePPz666/s3LmTMmXK0LVrVzp06MCnn36asRsBLFu2jMuXL/Puu++mKCtSpAilSpVi1qxZZM6cmSlTpjBjxgxy585NgwYNMtxHaGgobdu2pW/fvvj4+PDOO++wY8eODO8NYm9vz5EjR2jcuDHe3t507tyZnj170qVLlwzHICIiIiIiklEm88ML/kXkuTCbzRQtWpQuXbqkO2NFMu769eu4uLhQptd0rGyzPO9wROQlt2eCZreJiIi8qJJ/G8THx6fY3/JhWmIj8pxduHCBuXPn8scff9C+ffvnHY6IiIiIiMgrSQkSkecsV65cZM+enW+++YZs2bI973BeOhtHvZdullhERERERASUIBF57rTKTURERERE5PnTJq0iIiIiIiIi8spTgkREREREREREXnlaYiMiL7Xqny7QU2xEXnJ6goyIiIg8C5pBIiIiIiIiIiKvPCVIREREREREROSV959JkAwbNoyyZcs+l74jIiIwmUxcu3btufT/LP1Xx7JlyxZKlSqFtbU1DRs2fN7hPFMmk4mffvrpeYeRrqCgIIv77u/vzwcffJCha/+r3zkREREREXm1PPcESf369alZs2aqZdu2bcNkMrF371769evH2rVrM9zus/zRWbVqVeLi4nBxcXkm7aXlWSeBUvsR++hYwsLCyJo16xO3HRMTg8lkIjIy8u8HmgF9+vShbNmynDp1irCwsFTr+Pv7YzKZUhz37t37V2J8WnFxcdSpU+epr08e5/bt2y3OJyQk4ObmhslkIiIi4m9GaWnp0qWMHDkyQ3X/rb8fERERERGRv+O5J0g6dOjAunXrOH36dIqy2bNnU7ZsWcqXL4+joyNubm7/enyJiYnY2Njg7u6OyWT61/t/1v6rY4mOjubNN98kb9686SZ0OnXqRFxcnMWROfPT7UV89+7dp4z2ybi7u2Nra/u32vD09CQ0NNTi3I8//oijo+Pfajctrq6uODk5Zajuf/U7JyIiIiIir5bnniCpV68eOXPmTDEr4NatWyxatIgOHToAqc+umD17NiVKlMDW1hYPDw969uwJgJeXFwDvvvsuJpPJeA8wbdo0ChUqhI2NDT4+PsydO9eiTZPJxPTp02nQoAEODg6MGjUqxRKBy5cv895775E3b17s7e0pVaoUCxYssGjH39+f3r17079/f1xdXXF3d2fYsGFPdG+SlzVMnDgRDw8P3Nzc6NGjB4mJiUadqVOnUqRIEezs7MiVKxdNmjQxrt2wYQOTJ082ZhjExMRYjCUiIoL27dsTHx9v1EmOMbUZOFmzZjU+pwIFCgBQrlw5TCYT/v7+Rr3Q0FCKFSuGnZ0dRYsWZerUqemOMyEhgd69e5MzZ07s7Ox4/fXX2bVrF/B/M1UuX75McHAwJpMpzRkkAPb29ri7u1scycLDw43vi5eX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e1vEsWHDhnTjGDt2LC4uLsbh6emZzt0SERERERGxpBkkIi+JWbNmce/ePfLkyWOcM5vNWFtbc/Xq1cden5SUBDxYZlO5cmWLMisrq1SvWbx4MR9++CEhISFUqVIFJycnJkyYwI4dO1Ktn7zc53FxWFlZsWfPnhT9Ojo6pnndwIED6dOnj/H++vXrSpKIiIiIiEiGKUEi8hK4d+8e3333HSEhIbz99tsWZY0bN2bevHkUK1aM7du307ZtW6Ns+/btxutcuXKRJ08eTp48SatWrTLU76ZNm6hatSrdu3c3zqU3y6Nw4cJYW1uzfft28uXLB8DVq1c5duwYfn5+AJQrV4779+9z4cIF3njjjQzFAWBra4utrW2G64uIiIiIiDxMCRKRl8Dy5cu5evUqHTp0wMXFxaKsSZMmzJo1i48//ph27drh6+vL66+/zrx58zh06BAFCxY06g4bNozevXvj7OxMnTp1SEhIYPfu3Vy9etVidkaywoUL891337Fy5UoKFCjA3Llz2bVrFwUKFEg1TkdHRzp06MBHH32Em5sbuXLlYtCgQWTK9H+r/by9vWnVqhVt27YlJCSEcuXKcenSJdatW0epUqUIDAx8RndNRERERETk/2gPEpGXwKxZs6hZs2aK5Ag8mEESGRlJkSJFGDJkCAMGDKBChQqcPn2abt26WdTt2LEj3377LWFhYZQqVQo/Pz/CwsLSTHh07dqVRo0a0bx5cypXrszly5ctZpOkZsKECVSvXp133nmHmjVr8vrrr1OhQgWLOqGhobRt25a+ffvi4+PDO++8w44dO7RkRkRERERE/jEmc0Y2BRAR+Y+5fv06Li4ulOk1HSvbLM87HJGX3p4JbR9fSUREROQ5SP5tEB8fj7Ozc5r1NINERERERERERF552oNERF5qG0e9l26WWEREREREBDSDRERERERERERECRIRERERERERESVIREREREREROSVpz1IROSlVv3TBXqKjfwn6CkwIiIiIs+XZpCIiIiIiIiIyCtPCRIREREREREReeUpQSLyAjCZTPz000/POwwREREREZFXlhIkIv+C8+fP06tXLwoWLIitrS2enp7Ur1+ftWvXPu/QAAgPD8ff3x8XFxccHR0pXbo0I0aM4MqVK8+sj4iICEwmE9euXXtmbYqIiIiIiDwrSpCI/MNiYmKoUKEC69atY/z4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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "unique_Lab_count = df_train['Lab'].nunique()\n",
    "print(f\"Number of unique Labs: {unique_Lab_count}\")\n",
    "lab_counts = df_train['Lab'].value_counts()\n",
    "plt.figure(figsize=(10, 6))  # Adjust the size as needed\n",
    "sns.barplot(y=lab_counts.index, x=lab_counts.values)\n",
    "plt.ylabel('Labs')\n",
    "plt.xlabel('Number of Molecules tested by Lab')\n",
    "plt.title('Number of Recurrences of Each Lab')\n",
    "plt.xticks(rotation=90)  # Rotate the labels for better readability\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e84aaab0",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "We note that Mainz is the laboratory with the second largest number of molecules tested.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2ac7ed7d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAIhCAYAAABUopIpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcvElEQVR4nO3deXxN1/7/8feRSWYSZCAiNWuolhZpTTWroWhRaqZ6qdbUqvbWcK9rbNFB6WBue1VbFDXWEEVp5FZVqKkUldSlkRjSIFm/P/xyvo4knJBI7Pt6Ph7n8XDWXmfvz9452XlbZ+19bMYYIwAAAMACCuV3AQAAAEBuIdwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINyiwNm5c6fatWun0qVLy8PDQ0FBQapTp46GDRvm0K9Bgway2Wy67777lNUX7W3ZskU2m002m03z5s2zt8+bN082m027du2yt40ZM0Y2m01nzpzJtq7Nmzfb15fV4/ptXLlyRR988IEefvhhBQQEyMvLS+Hh4Wrbtq2WLl16y2Ngs9n0wgsvZLnsyy+/lM1m0+bNm2+5nhsdO3YsU60F0fjx47Vs2bJcX2+ZMmVks9nUoEGDLJcvWLDA/vO8neOb8R65ndcWZGfPntXIkSNVpUoVeXt7y9/fX5UqVVK3bt20Z88eez9nfo8KEpvNpjFjxuTJujOOxfXef//9LH/3Mt43X3755R1tc8eOHXr66acVEhIid3d3BQcH66mnntL333+fqe/27ds1ZswYnTt3LtOyMmXKqFWrVndUy53KzRrutfcl7hzhFgXKN998o6ioKCUnJ2vy5Mlat26d3n77bT366KP6/PPPM/X39fXV0aNHtXHjxkzL5syZIz8/v1yvcfz48fr+++8zPZ544gl7n27dumnQoEFq2LChPvnkE61YsUJ///vf5erqqrVr1+Z6Tc4KCQnJVGtBlFfhVrr2ntmyZYuOHDmSadmdvmceeughff/993rooYfupMQC5cKFC6pdu7bmzZunvn37avny5fr000/13HPP6ejRo9q9e3d+l1gg9e3bN1OozC7c5oZ3331Xjz76qE6ePKnJkyfr22+/1Ztvvqnff/9djz32mN577z2H/tu3b9fYsWOzDLfAvc41vwsArjd58mRFRERo7dq1cnX9v7dn586dNXny5Ez9S5cuLV9fX82ZM0eNGjWyt58/f15ffPGFunbtqo8++ihXayxfvrxq166d7fKjR4/q888/16hRozR27Fh7e6NGjdSvXz+lp6fnaj054eHhcdPa/xc89thj+vnnnzVnzhz961//srcfOXJEW7ZsUd++fW/7PePn52e54/vFF1/o8OHD2rhxoxo2bOiwbOjQofnyfr506ZK8vLzu+nZzolSpUipVqtRd2da2bds0ePBgtWzZUkuXLs107mzXrp1eeuklPfjgg3r00UfvSk23kpaWpqtXr8rDwyO/S4EFMXKLAuXs2bMqVqyYw8k5Q6FCWb9de/furSVLljiMQCxatEjStRP73Xb27FlJ10ZJs5LdftyJBg0aKDIyUjExMapbt668vLx03333aeLEiQ7hI7tpCd98842qV68uDw8PRURE6M0338z0serNpjRk9fHuoUOH1KVLF5UoUUIeHh6qXLmyZsyYcct9sdlsunjxoubPn2+fInD9NIK9e/eqbdu2Klq0qAoXLqzq1atr/vz5Th0n6drx7969u+bPn+9wbObMmaOwsDA1btw402t27dqlzp07q0yZMvL09FSZMmX0zDPP6LfffnPol9W0hJ49e8rHx0eHDx9Wy5Yt5ePjo7CwMA0bNkypqakO/bKb8nKzj84ffPBB1a1bN1N7WlqaSpYsqfbt29vbZs6cqQceeEA+Pj7y9fVVpUqV9Nprr930eN3O+/mPP/7QM888I39/fwUFBal3795KSkpy6DNjxgzVq1dPJUqUkLe3t6pWrarJkyfrypUrDv0y3ttbtmxRVFSUvLy81Lt3b0lScnKyhg8froiICLm7u6tkyZIaPHiwLl686LCO5ORk9evXT4GBgfLx8VHz5s118ODBm+63JBljFBQUpIEDB9rb0tLSVLRoURUqVEh//PGHvX3q1KlydXW1n4du/P0pU6aM4uLiFB0dbf+5lilTxmF7V65c0euvv67Q0FD5+fmpcePGOnDgwC3rnDBhgmw2m2bOnJnp3Onq6qr3339fNptNEydOtNf28ssvS5IiIiKynYqzZs0aPfTQQ/L09FSlSpU0Z86cTNtOSEhQ//79VapUKbm7uysiIkJjx47V1atX7X0yzh2TJ0/WuHHjFBERIQ8PD23atOmW+3Yz69evV9u2bVWqVCkVLlxY5cqVU//+/bOdfnDixAm1b99efn5+8vf317PPPqv//ve/Dn02btyoBg0aKDAwUJ6enipdurQ6dOigS5cu3VGtuLsItyhQ6tSpo507d+rFF1/Uzp07M/2hy0rnzp3l4uKif//73/a22bNn66mnnsqTaQnp6em6evVqpkeGypUrq0iRIho7dqw+/PBDHTt2LNdryEpCQoK6du2qZ599VsuXL1eLFi00cuRIffLJJzd93YYNG9S2bVv5+vpq0aJFmjJlihYvXqy5c+fedi379u3Tww8/rL179+qtt97SypUr9cQTT+jFF190GM3Oyvfffy9PT0+1bNnSPuXj/ffflyQdOHBAUVFRiouL0zvvvKMlS5aoSpUq6tmzZ5Yj+9np3bu3Tp06ZZ8ikpaWpvnz56tnz55ZhrVjx46pYsWKmj59utauXatJkyYpPj5eDz/8sFPz+K5cuaI2bdqoUaNG+vrrr9W7d29NmzZNkyZNsvd54403Mk11efbZZyVJVapUyXbdvXr10tatW3Xo0CGH9nXr1unUqVPq1auXpGv/4RswYIDq16+vpUuXatmyZRoyZEimIHijOnXqSJK6d++uZcuW2cPuzXTo0EEVKlTQV199pVdffVWfffaZhgwZ4tDnyJEj6tKlixYuXKiVK1eqT58+mjJlivr3759pffHx8Xr22WfVpUsXrVq1SgMGDNClS5dUv359zZ8/Xy+++KJWr16tESNGaN68eWrTpo19Hr4xRk8++aQWLlyoYcOGaenSpapdu7ZatGhxy/2w2Wx6/PHH9e2339rbdu3apXPnzqlw4cLasGGDvf3bb79VjRo1VKRIkSzXtXTpUt1333168MEH7T/fG+ffv/baa/rtt9/08ccf68MPP9ShQ4fUunVrpaWlZVtjWlqaNm3apJo1a2Y7UhwWFqYaNWpo48aNSktLU9++fTVo0CBJ0pIlS+z1XD+d5qefftKwYcM0ZMgQff3116pWrZr69OmjLVu22PskJCTokUce0dq1azVq1CitXr1affr00YQJE9SvX79MdbzzzjvauHGj3nzzTa1evVqVKlXKdr+cceTIEdWpU0czZ87UunXrNGrUKO3cuVOPPfZYln872rVrp3LlyunLL7/UmDFjtGzZMjVr1sze99ixY3riiSfk7u6uOXPmaM2aNZo4caK8vb11+fLlO6oVd5kBCpAzZ86Yxx57zEgykoybm5uJiooyEyZMMOfPn3foW79+fXP//fcbY4zp0aOHqVmzpjHGmLi4OCPJbN682cTExBhJZu7cufbXzZ0710gyMTEx9rbRo0cbSea///1vtrVt2rTJXldWjxMnTtj7fvPNN6ZYsWL2ZYGBgebpp582y5cvd+o4SDIDBw7MctkXX3xhJJlNmzY5HAtJZufOnQ59q1SpYpo1a2Z/fvTo0UzHo1atWiY0NNSkpKTY25KTk01AQIC5/hSR1Wuvr3f06NH2582aNTOlSpUySUlJDv1eeOEFU7hwYfPnn3/ebPeNt7e36dGjR6b2zp07Gw8PD3P8+HGH9hYtWhgvLy9z7ty5m643PDzcPPHEE8aYa8fsqaeeMsZc+3nZbDZz9OjRLI/vja5evWouXLhgvL29zdtvv21vz3iPXP/aHj16GElm8eLFDuto2bKlqVixYrbbWLx4sbHZbOa111676T6dOXPGuLu7Z+rXsWNHExQUZK5cuWKMuXbsixQpctN1Zecf//iHcXd3t7+fIyIizPPPP29++uknh34Zv0eTJ092aB8wYIApXLiwSU9Pz3L9aWlp5sqVK2bBggXGxcXF4f2R8d7esGGDw2smTJhgChUq5PB7bIwxX375pZFkVq1aZYwxZvXq1UaSw8/JGGP+9a9/ZXrfZuXjjz82kuzvuXHjxplKlSqZNm3amF69ehljjLl8+bLx9vZ2+BlkHIvr3X///aZ+/fqZtpHxvmnZsqVD++LFi40k8/3332dbX0JCgpFkOnfufNP96NSpk5Fk/vjjD2OMMVOmTDGSzNGjRzP1DQ8PN4ULFza//fabvS0lJcUEBASY/v3729v69+9vfHx8HPoZY8ybb75pJJm4uDhjzP+dO8qWLWsuX7580zqvryHjd9UZ6enp5sqVK+a3334zkszXX39tX5bxsxgyZIjDaz799FMjyXzyySfGmP977+zevdvp7aJgYuQWBUpgYKC+++47xcTEaOLEiWrbtq0OHjyokSNHqmrVqtmOkvXu3Vu7du3Szz//rNmzZ6ts2bKqV69entQ4adIkxcTEZHoEBQXZ+7Rs2VLHjx/X0qVLNXz4cN1///1atmyZ2rRpk+1dEO5UcHCwHnnkEYe2atWqZfro/HoXL15UTEyM2rdvr8KFC9vbfX191bp169uq46+//tKGDRvUrl07eXl5OYxut2zZUn/99Zd27NhxW+veuHGjGjVqpLCwMIf2nj176tKlS1leFZ6d3r17a/ny5Tp79qxmz56thg0bZvqYOMOFCxc0YsQIlStXTq6urnJ1dZWPj48uXryo/fv333JbNpst0/G82c8mOjpa3bp107PPPuswLzgrgYGBat26tcM0i8TERH399dfq3r27/WPqRx55ROfOndMzzzyjr7/+OkdXjr/xxhs6fvy45syZo/79+8vHx0ezZs1SjRo1HD4xydCmTZtM+/rXX3/p9OnT9rYff/xRbdq0UWBgoFxcXOTm5qbu3bsrLS0t05SBokWL6vHHH3doW7lypSIjI1W9enWH91izZs0cPmLP+Oi7a9euDq/v0qWLU/ueMU0lY/R2/fr1atKkiRo3bqz169dLuvZpw8WLF7Oc0pITWR03STf9HXaW+f8j2TfewSE71atXV+nSpe3PCxcurAoVKjjUsnLlSjVs2FChoaEOP4OMUfHo6GiHdbZp00Zubm53uit2p0+f1vPPP6+wsDC5urrKzc1N4eHhkpTl7+WN74GOHTvK1dXV/h6pXr263N3d9dxzz2n+/Pn69ddfc61W3F2EWxRINWvW1IgRI/TFF1/o1KlTGjJkiI4dO5btR8/16tVT+fLl9cEHH2jhwoXq3bu30yfxnLrvvvtUs2bNTI8bT9qenp568sknNWXKFEVHR+vw4cOqUqWKZsyYobi4uJtuw8XFJduPIjOmQNy4vcDAwEx9PTw8lJKSku12EhMTlZ6eruDg4EzLsmpzxtmzZ3X16lW9++67cnNzc3i0bNlSkm77ljxnz57Ncu5naGiofbmznnrqKRUuXFjTpk3TihUr1KdPn2z7dunSRe+995769u2rtWvX6ocfflBMTIyKFy9+0+ObwcvLy+E/D9K1n81ff/2VqW9cXJyefPJJ1a1bV7Nnz3ZqX3r37q3ff//dHrb+/e9/KzU1VT179rT36datm+bMmaPffvtNHTp0UIkSJVSrVi37a24lKChIvXr10qxZs7Rnzx5FR0fL3d1dL730Uqa+N74XMy4ayjhWx48fV926dfX777/r7bfftv+HNmNO9o3HNKuf+R9//KE9e/Zkeo/5+vrKGGN/j509e1aurq6ZanL2/R0eHq6yZcvq22+/tf8HKiPcnjx5UgcOHNC3334rT09PRUVFObXO7NzquGWlWLFi8vLy0tGjR2+67mPHjsnLy0sBAQG3VUtGPdfX8scff2jFihWZfgb333+/pMy/59nN274d6enpatq0qZYsWaJXXnlFGzZs0A8//GD/j3NWx+zGn3nG+yLjvJHxcy5RooQGDhyosmXLqmzZsnr77bdzrW7cHdwtAQWem5ubRo8erWnTpmnv3r3Z9uvVq5f+/ve/y2azqUePHnexQueULl1azz33nAYPHqy4uDj7H4CsBAUF6ffff89yWUb79SPFt6to0aKy2WxKSEjItOzGtoxwdv1FUFLmQFm0aFG5uLioW7duDhfiXC8iIuK26g0MDFR8fHym9lOnTkm69ofeWV5eXurcubMmTJggPz8/hwuvrpeUlKSVK1dq9OjRevXVV+3tqamp+vPPP3O4Bzd38uRJNW/eXKVLl9ZXX33l9ChXs2bNFBoaqrlz56pZs2aaO3euatWqlWmubq9evdSrVy9dvHhRW7Zs0ejRo9WqVSsdPHjQPuLlrHr16qlp06ZatmyZTp8+rRIlSjj92mXLlunixYtasmSJw3azu61YVv9RLVasmDw9PbO8yCljuXTtPXP16lWdPXvWIbBl9Z7PTsZc6ejoaKWnp6tBgwby9fVVaGio1q9fr2+//VZ169bNlyv/XVxc1LBhQ61Zs0YnT57Mct7tyZMnFRsbqxYtWsjFxSXXtl2sWDFVq1Yt208XMv7TmSE3Bxz27t2rn376SfPmzXM43x8+fDjb1yQkJKhkyZL251m9L+rWrau6desqLS1Nu3bt0rvvvqvBgwcrKCgoXy5Qxu1h5BYFSlbBRfq/j5huPFler0ePHmrdurVefvllhxPY3Xb+/HlduHAhy2XO7Id07aPQTZs2ZbqS1xijL774QmXKlFG5cuXuuFZvb2898sgjWrJkicMo4vnz57VixQqHvkFBQSpcuLDDTfsl6euvv3Z47uXlpYYNG+rHH39UtWrVshzlzmpU6HrZjTg3atRIGzdutIfZDAsWLJCXl1eOb8P1t7/9Ta1bt9aoUaMyjaxmsNlsMsZkCi4ff/zxTS/0yamkpCS1aNFCNptNq1atytHFkBn/mVi2bJm+++477dq1y35Hgax4e3urRYsWev3113X58uWbfpLwxx9/ZHm7r7S0NB06dEheXl7ZXkSVnYyQc/0xNcbk6BZsrVq10pEjRxQYGJjleyxjiknG7cs+/fRTh9d/9tlnTm+rcePG+uOPPzR9+nTVrl1bvr6+kq69H5cuXaqYmBinpiTc6pOU2zVy5EgZYzRgwIBM78m0tDT97W9/kzFGI0eOdKhFuvmo8K20atVKe/fuVdmyZbP8GdzqPHcnsnoPSdIHH3yQ7WtufA8sXrxYV69ezfJLXVxcXFSrVi37pwn/+c9/7rBi3E2M3KJAadasmUqVKqXWrVurUqVKSk9P1+7du/XWW2/Jx8cny49AM4SGht7xjf9XrFhh/8N1vaeeesr+70OHDmU5ZzTjvpYHDhxQs2bN1LlzZ9WvX18hISFKTEzUN998ow8//FANGjS45ceXo0aN0ooVK1SrVi29+uqrKl++vBISEvTRRx8pJiZGixcvvqP9vN4///lPNW/eXE2aNNGwYcOUlpamSZMmydvb22Fk0maz6dlnn9WcOXNUtmxZPfDAA/rhhx+yDAlvv/22HnvsMdWtW1d/+9vfVKZMGZ0/f16HDx/WihUrsvzSjetVrVpVmzdv1ooVKxQSEiJfX19VrFhRo0ePts/zGzVqlAICAvTpp5/qm2++0eTJk+Xv75+jfa9evfot3zN+fn6qV6+epkyZomLFiqlMmTKKjo7W7NmzcxzqbqZLly7at2+fPvzwQ504cUInTpywL3Pmnqm9e/fWpEmT1KVLF3l6eqpTp04Oy/v16ydPT089+uijCgkJUUJCgiZMmCB/f389/PDD2a534cKF+uCDD9SlSxc9/PDD8vf318mTJ/Xxxx8rLi5Oo0aNkru7e472tUmTJnJ3d9czzzyjV155RX/99ZdmzpypxMREp9cxePBgffXVV6pXr56GDBmiatWqKT09XcePH9e6des0bNgw1apVS02bNlW9evX0yiuv6OLFi6pZs6a2bdumhQsXOr2txx9/XDabTevWrXO420fjxo3to4bOhNuqVatq0aJF+vzzz3XfffepcOHCqlq1qtN1ZOfRRx/V9OnTNXjwYD322GN64YUXVLp0aR0/flwzZszQzp07NX36dIfzTsZ23377bfXo0UNubm6qWLFilue/7PzjH//Q+vXrFRUVpRdffFEVK1bUX3/9pWPHjmnVqlWaNWvWHd3rNyEhIctvbStTpoweeOABlS1bVq+++qqMMQoICNCKFStuOs1myZIlcnV1VZMmTRQXF6c33nhDDzzwgDp27ChJmjVrljZu3KgnnnhCpUuX1l9//WX/ZOBO51PjLsu/a9mAzD7//HPTpUsXU758eePj42Pc3NxM6dKlTbdu3cy+ffsc+l5/t4Ts5PRuCdk9jLn13RJef/11Y4wxiYmJZty4cebxxx83JUuWNO7u7sbb29tUr17djBs3zly6dMmpY3Ho0CHz7LPPmpCQEOPq6mqKFClimjZtmumq8Zsdix49epjw8HD78+zueLB8+XJTrVo14+7ubkqXLm0mTpyY5dXeSUlJpm/fviYoKMh4e3ub1q1bm2PHjmV51fnRo0dN7969TcmSJY2bm5spXry4iYqKMuPGjbvlvu/evds8+uijxsvLy0hyuML8559/Nq1btzb+/v7G3d3dPPDAA1newSErzlyBndXdEk6ePGk6dOhgihYtanx9fU3z5s3N3r17TXh4uMNdHbK7W4K3t3em7dx4fMPDw7N9b93qiv4MUVFRRpLp2rVrpmXz5883DRs2NEFBQcbd3d2Ehoaajh07mj179tx0nfv27TPDhg0zNWvWNMWLFzeurq6maNGipn79+mbhwoVZ7tONdx3J+J27/sr8FStWmAceeMAULlzYlCxZ0rz88sv2OxvceCeQ7H7PL1y4YP7+97+bihUrGnd3d+Pv72+qVq1qhgwZYhISEuz9zp07Z3r37m2KFClivLy8TJMmTcwvv/ySo2P74IMPGklm27Zt9rbff//dfjeUG+8EkdXvz7Fjx0zTpk2Nr6+vkWT/3cx433zxxRcO/W92h5KsfP/99+app54yQUFBxtXV1ZQoUcK0b9/ebN++Pcv+I0eONKGhoaZQoUIOxz2735P69etnutvDf//7X/Piiy+aiIgI4+bmZgICAkyNGjXM66+/bi5cuOCwH1OmTHFqPzJqyO73IeN3bt++faZJkybG19fXFC1a1Dz99NPm+PHjmX6uGT+L2NhY07p1a+Pj42N8fX3NM888Y797RMbxa9eunQkPDzceHh4mMDDQ1K9f3+m73KDgsBnz/y+hBIDrjBkzRmPHjhWnCADAvYQ5twAAALAMwi0AAAAsg2kJAAAAsAxGbgEAAGAZhFsAAABYBuEWAAAAlsGXOOjad1SfOnVKvr6+ufr1gAAAAMgdxhidP39eoaGhKlQo+/FZwq2ufS99WFhYfpcBAACAWzhx4sRNv/2OcCvZv27wxIkTOfo+dwAAANwdycnJCgsLu+XXRBNuJftUBD8/P8ItAABAAXarKaRcUAYAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCAADAMgi3AAAAsIx8DbczZ85UtWrV5OfnJz8/P9WpU0erV6+2L+/Zs6dsNpvDo3bt2g7rSE1N1aBBg1SsWDF5e3urTZs2Onny5N3eFQAAABQA+RpuS5UqpYkTJ2rXrl3atWuXHn/8cbVt21ZxcXH2Ps2bN1d8fLz9sWrVKod1DB48WEuXLtWiRYu0detWXbhwQa1atVJaWtrd3h0AAADkM5sxxuR3EdcLCAjQlClT1KdPH/Xs2VPnzp3TsmXLsuyblJSk4sWLa+HCherUqZMk6dSpUwoLC9OqVavUrFkzp7aZnJwsf39/JSUlyc/PL7d2BQAAALnE2bxWYObcpqWladGiRbp48aLq1Kljb9+8ebNKlCihChUqqF+/fjp9+rR9WWxsrK5cuaKmTZva20JDQxUZGant27dnu63U1FQlJyc7PAAAAHDvy/dw+/PPP8vHx0ceHh56/vnntXTpUlWpUkWS1KJFC3366afauHGj3nrrLcXExOjxxx9XamqqJCkhIUHu7u4qWrSowzqDgoKUkJCQ7TYnTJggf39/+yMsLCzvdhAAAAB3jWt+F1CxYkXt3r1b586d01dffaUePXooOjpaVapUsU81kKTIyEjVrFlT4eHh+uabb9S+ffts12mMkc1my3b5yJEjNXToUPvz5ORkAi4AAIAF5Hu4dXd3V7ly5SRJNWvWVExMjN5++2198MEHmfqGhIQoPDxchw4dkiQFBwfr8uXLSkxMdBi9PX36tKKiorLdpoeHhzw8PHJ5TwAAAJDf8n1awo2MMfZpBzc6e/asTpw4oZCQEElSjRo15ObmpvXr19v7xMfHa+/evTcNtwAAALCmfB25fe2119SiRQuFhYXp/PnzWrRokTZv3qw1a9bowoULGjNmjDp06KCQkBAdO3ZMr732mooVK6Z27dpJkvz9/dWnTx8NGzZMgYGBCggI0PDhw1W1alU1btw4P3cNAP6n1Xh5QX6XACCPxE7pnt8l3FS+hts//vhD3bp1U3x8vPz9/VWtWjWtWbNGTZo0UUpKin7++WctWLBA586dU0hIiBo2bKjPP/9cvr6+9nVMmzZNrq6u6tixo1JSUtSoUSPNmzdPLi4u+bhnAAAAyA8F7j63+YH73AJA7mLkFrCu/Bq5vefucwsAAADcKcItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAyCLcAAACwDMItAAAALINwCwAAAMsg3AIAAMAy8jXczpw5U9WqVZOfn5/8/PxUp04drV692r7cGKMxY8YoNDRUnp6eatCggeLi4hzWkZqaqkGDBqlYsWLy9vZWmzZtdPLkybu9KwAAACgA8jXclipVShMnTtSuXbu0a9cuPf7442rbtq09wE6ePFlTp07Ve++9p5iYGAUHB6tJkyY6f/68fR2DBw/W0qVLtWjRIm3dulUXLlxQq1atlJaWll+7BQAAgHxiM8aY/C7iegEBAZoyZYp69+6t0NBQDR48WCNGjJB0bZQ2KChIkyZNUv/+/ZWUlKTixYtr4cKF6tSpkyTp1KlTCgsL06pVq9SsWTOntpmcnCx/f38lJSXJz88vz/YNAP5X1Hh5QX6XACCPxE7pni/bdTavFZg5t2lpaVq0aJEuXryoOnXq6OjRo0pISFDTpk3tfTw8PFS/fn1t375dkhQbG6srV6449AkNDVVkZKS9T1ZSU1OVnJzs8AAAAMC9L9/D7c8//ywfHx95eHjo+eef19KlS1WlShUlJCRIkoKCghz6BwUF2ZclJCTI3d1dRYsWzbZPViZMmCB/f3/7IywsLJf3CgAAAPkh38NtxYoVtXv3bu3YsUN/+9vf1KNHD+3bt8++3GazOfQ3xmRqu9Gt+owcOVJJSUn2x4kTJ+5sJwAAAFAg5Hu4dXd3V7ly5VSzZk1NmDBBDzzwgN5++20FBwdLUqYR2NOnT9tHc4ODg3X58mUlJiZm2ycrHh4e9js0ZDwAAABw78v3cHsjY4xSU1MVERGh4OBgrV+/3r7s8uXLio6OVlRUlCSpRo0acnNzc+gTHx+vvXv32vsAAADgf4drfm78tddeU4sWLRQWFqbz589r0aJF2rx5s9asWSObzabBgwdr/PjxKl++vMqXL6/x48fLy8tLXbp0kST5+/urT58+GjZsmAIDAxUQEKDhw4eratWqaty4cX7uGgAAAPJBvobbP/74Q926dVN8fLz8/f1VrVo1rVmzRk2aNJEkvfLKK0pJSdGAAQOUmJioWrVqad26dfL19bWvY9q0aXJ1dVXHjh2VkpKiRo0aad68eXJxccmv3QIAAEA+KXD3uc0P3OcWAHIX97kFrIv73AIAAAB3CeEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYRr6G2wkTJujhhx+Wr6+vSpQooSeffFIHDhxw6NOzZ0/ZbDaHR+3atR36pKamatCgQSpWrJi8vb3Vpk0bnTx58m7uCgAAAAqAfA230dHRGjhwoHbs2KH169fr6tWratq0qS5evOjQr3nz5oqPj7c/Vq1a5bB88ODBWrp0qRYtWqStW7fqwoULatWqldLS0u7m7gAAACCfuebnxtesWePwfO7cuSpRooRiY2NVr149e7uHh4eCg4OzXEdSUpJmz56thQsXqnHjxpKkTz75RGFhYfr222/VrFmzvNsBAAAAFCgFas5tUlKSJCkgIMChffPmzSpRooQqVKigfv366fTp0/ZlsbGxunLlipo2bWpvCw0NVWRkpLZv357ldlJTU5WcnOzwAAAAwL2vwIRbY4yGDh2qxx57TJGRkfb2Fi1a6NNPP9XGjRv11ltvKSYmRo8//rhSU1MlSQkJCXJ3d1fRokUd1hcUFKSEhIQstzVhwgT5+/vbH2FhYXm3YwAAALhr8nVawvVeeOEF7dmzR1u3bnVo79Spk/3fkZGRqlmzpsLDw/XNN9+offv22a7PGCObzZblspEjR2ro0KH258nJyQRcAAAACygQI7eDBg3S8uXLtWnTJpUqVeqmfUNCQhQeHq5Dhw5JkoKDg3X58mUlJiY69Dt9+rSCgoKyXIeHh4f8/PwcHgAAALj35Wu4NcbohRde0JIlS7Rx40ZFRETc8jVnz57ViRMnFBISIkmqUaOG3NzctH79enuf+Ph47d27V1FRUXlWOwAAAAqefJ2WMHDgQH322Wf6+uuv5evra58j6+/vL09PT124cEFjxoxRhw4dFBISomPHjum1115TsWLF1K5dO3vfPn36aNiwYQoMDFRAQICGDx+uqlWr2u+eAAAAgP8N+RpuZ86cKUlq0KCBQ/vcuXPVs2dPubi46Oeff9aCBQt07tw5hYSEqGHDhvr888/l6+tr7z9t2jS5urqqY8eOSklJUaNGjTRv3jy5uLjczd0BAABAPrMZY0x+F5HfkpOT5e/vr6SkJObfAkAuqPHygvwuAUAeiZ3SPV+262xeKxAXlAEAAAC5gXALAAAAyyDcAgAAwDIItwAAALAMwi0AAAAsg3ALAAAAyyDcAgAAwDIItwAAALAMwi0AAAAsg3ALAAAAyyDcAgAAwDIItwAAALAMwi0AAAAsg3ALAAAAyyDcAgAAwDIItwAAALCMOw63v/32m/bt26f09PTcqAcAAAC4bU6H2/nz52v69OkObc8995zuu+8+Va1aVZGRkTpx4kRu1wcAAAA4zelwO2vWLPn7+9ufr1mzRnPnztWCBQsUExOjIkWKaOzYsXlSJAAAAOAMV2c7Hjx4UDVr1rQ///rrr9WmTRt17dpVkjR+/Hj16tUr9ysEAAAAnOT0yG1KSor8/Pzsz7dv36569erZn993331KSEjI3eoAAACAHHA63IaHhys2NlaSdObMGcXFxemxxx6zL09ISHCYtgAAAADcbU5PS+jevbsGDhyouLg4bdy4UZUqVVKNGjXsy7dv367IyMg8KRIAAABwhtPhdsSIEbp06ZKWLFmi4OBgffHFFw7Lt23bpmeeeSbXCwQAAACcZTPGmPwuIr8lJyfL399fSUlJDvOKAQC3p8bLC/K7BAB5JHZK93zZrrN5zek5tz/88IPS0tLsz2/MxKmpqVq8ePFtlAoAAADkDqfDbZ06dXT27Fn7c39/f/3666/25+fOnWNaAgAAAPKV0+H2xpHarGYzMMMBAAAA+cnpcOsMm82Wm6sDAAAAciRXwy0AAACQn5y+FZgk7du3z/4tZMYY/fLLL7pw4YKka1/sAAAAAOSnHIXbRo0aOcyrbdWqlaRr0xGMMUxLAAAAQL5yOtwePXo0L+sAAAAA7pjT4TY8PPymyxMTE7VixQp1754/N/YFAAAAcu2CsuPHj6tXr165tToAAAAgx7hbAgAAACyDcAsAAADLINwCAADAMpy+oOydd9656fLff//9josBAAAA7oTT4XbatGm37FO6dOk7KgYAAAC4E9znFgAAAJbBnFsAAABYRq7Nuc3w4osv3nYxAAAAwJ3I1Tm3NpuNcAsAAIB8w5xbAAAAWAZzbgEAAGAZTo/cLliwwKl+3bt3v+1iAAAAgDvhdLjt2bOnfHx85OrqKmNMln1sNhvhFgAAAPnG6XBbuXJl/fHHH3r22WfVu3dvVatWLS/rAgAAAHLM6Tm3cXFx+uabb5SSkqJ69eqpZs2amjlzppKTk/OyPgAAAMBpObqgrFatWvrggw8UHx+vF198UYsXL1ZISIi6du2q1NTUvKoRAAAAcMpt3S3B09NT3bt319ixY/XII49o0aJFunTpUm7XBgAAAORIjsPt77//rvHjx6t8+fLq3LmzHn74YcXFxalo0aI53viECRP08MMPy9fXVyVKlNCTTz6pAwcOOPQxxmjMmDEKDQ2Vp6enGjRooLi4OIc+qampGjRokIoVKyZvb2+1adNGJ0+ezHE9AAAAuLc5HW4XL16sFi1aqHz58oqJidFbb72lEydOaPLkyapUqdJtbTw6OloDBw7Ujh07tH79el29elVNmzbVxYsX7X0mT56sqVOn6r333lNMTIyCg4PVpEkTnT9/3t5n8ODBWrp0qRYtWqStW7fqwoULatWqldLS0m6rLgAAANybbCa7+3rdoFChQipdurS6du2qoKCgbPvdydfv/ve//1WJEiUUHR2tevXqyRij0NBQDR48WCNGjJB0bZQ2KChIkyZNUv/+/ZWUlKTixYtr4cKF6tSpkyTp1KlTCgsL06pVq9SsWbNbbjc5OVn+/v5KSkqSn5/fbdcPALimxsvO3RsdwL0ndkr+3PbV2bzm9K3ASpcuLZvNps8++yzbPjab7Y7CbVJSkiQpICBA0rWv/E1ISFDTpk3tfTw8PFS/fn1t375d/fv3V2xsrK5cueLQJzQ0VJGRkdq+fXuW4TY1NdXhAjju+AAAAGANTofbY8eO5WEZ1+bWDh06VI899pgiIyMlSQkJCZKUaaQ4KChIv/32m72Pu7t7pjm/QUFB9tffaMKECRo7dmxu7wIAAADy2W3dLSEvvPDCC9qzZ4/+/e9/Z1pms9kcnhtjMrXd6GZ9Ro4cqaSkJPvjxIkTt184AAAACgynw+3OnTu1evVqh7YFCxYoIiJCJUqU0HPPPXfb97odNGiQli9frk2bNqlUqVL29uDgYEnKNAJ7+vRp+2hucHCwLl++rMTExGz73MjDw0N+fn4ODwAAANz7nA63Y8aM0Z49e+zPf/75Z/Xp00eNGzfWq6++qhUrVmjChAk52rgxRi+88IKWLFmijRs3KiIiwmF5RESEgoODtX79envb5cuXFR0draioKElSjRo15Obm5tAnPj5ee/futfcBAADA/wan59zu3r1b//znP+3PFy1apFq1aumjjz6SJIWFhWn06NEaM2aM0xsfOHCgPvvsM3399dfy9fW1j9D6+/vL09NTNptNgwcPtt9Xt3z58ho/fry8vLzUpUsXe98+ffpo2LBhCgwMVEBAgIYPH66qVauqcePGTtcCAACAe5/T4TYxMdHhY/7o6Gg1b97c/vzhhx/O8dzVmTNnSpIaNGjg0D537lz17NlTkvTKK68oJSVFAwYMUGJiomrVqqV169bJ19fX3n/atGlydXVVx44dlZKSokaNGmnevHlycXHJUT0AAAC4tzl9n9vw8HAtXLhQ9erV0+XLl1WkSBGtWLFCjRo1knRtmkL9+vX1559/5mnBeYH73AJA7uI+t4B1FfT73Do957Z58+Z69dVX9d1332nkyJHy8vJS3bp17cv37NmjsmXL3lnVAAAAwB1welrCuHHj1L59e9WvX18+Pj6aP3++3N3d7cvnzJnj8EUKAAAAwN3mdLgtXry4vvvuOyUlJcnHxyfTfNYvvvhCPj4+uV4gAAAA4Cynw20Gf3//LNszvjIXAAAAyC8F5hvKAAAAgDtFuAUAAIBlEG4BAABgGU6F24ceekiJiYmSpH/84x+6dOlSnhYFAAAA3A6nwu3+/ft18eJFSdLYsWN14cKFPC0KAAAAuB1O3S2hevXq6tWrlx577DEZY/Tmm29me9uvUaNG5WqBAAAAgLOcCrfz5s3T6NGjtXLlStlsNq1evVqurplfarPZCLcAAADIN06F24oVK2rRokWSpEKFCmnDhg0qUaJEnhYGAAAA5FSOv8QhPT09L+oAAAAA7liOw60kHTlyRNOnT9f+/ftls9lUuXJlvfTSSypbtmxu1wcAAAA4Lcf3uV27dq2qVKmiH374QdWqVVNkZKR27typ+++/X+vXr8+LGgEAAACn5Hjk9tVXX9WQIUM0ceLETO0jRoxQkyZNcq04AAAAICdyPHK7f/9+9enTJ1N77969tW/fvlwpCgAAALgdOQ63xYsX1+7duzO17969mzsoAAAAIF/leFpCv3799Nxzz+nXX39VVFSUbDabtm7dqkmTJmnYsGF5USMAAADglByH2zfeeEO+vr566623NHLkSElSaGioxowZoxdffDHXCwQAAACcleNwa7PZNGTIEA0ZMkTnz5+XJPn6+uZ6YQAAAEBO3dZ9bjMQagEAAFCQ5PiCMgAAAKCgItwCAADAMgi3AAAAsIwchdsrV66oYcOGOnjwYF7VAwAAANy2HIVbNzc37d27VzabLa/qAQAAAG5bjqcldO/eXbNnz86LWgAAAIA7kuNbgV2+fFkff/yx1q9fr5o1a8rb29th+dSpU3OtOAAAACAnchxu9+7dq4ceekiSMs29ZboCAAAA8lOOw+2mTZvyog4AAADgjt32rcAOHz6stWvXKiUlRZJkjMm1ogAAAIDbkeNwe/bsWTVq1EgVKlRQy5YtFR8fL0nq27evhg0blusFAgAAAM7KcbgdMmSI3NzcdPz4cXl5ednbO3XqpDVr1uRqcQAAAEBO5HjO7bp167R27VqVKlXKob18+fL67bffcq0wAAAAIKdyPHJ78eJFhxHbDGfOnJGHh0euFAUAAADcjhyH23r16mnBggX25zabTenp6ZoyZYoaNmyYq8UBAAAAOZHjaQlTpkxRgwYNtGvXLl2+fFmvvPKK4uLi9Oeff2rbtm15USMAAADglByP3FapUkV79uzRI488oiZNmujixYtq3769fvzxR5UtWzYvagQAAACckuORW0kKDg7W2LFjc7sWAAAA4I7cVrhNTEzU7NmztX//ftlsNlWuXFm9evVSQEBAbtcHAAAAOC3H0xKio6MVERGhd955R4mJifrzzz/1zjvvKCIiQtHR0XlRIwAAAOCUHI/cDhw4UB07dtTMmTPl4uIiSUpLS9OAAQM0cOBA7d27N9eLBAAAAJyR45HbI0eOaNiwYfZgK0kuLi4aOnSojhw5kqvFAQAAADmR43D70EMPaf/+/Zna9+/fr+rVq+dGTQAAAMBtcWpawp49e+z/fvHFF/XSSy/p8OHDql27tiRpx44dmjFjhiZOnJg3VQIAAABOsBljzK06FSpUSDabTbfqarPZlJaWlmvF3S3Jycny9/dXUlKS/Pz88rscALjn1Xh5wa07AbgnxU7pni/bdTavOTVye/To0VwrDAAAAMgrToXb8PDwvK4DAAAAuGO39SUOv//+u7Zt26bTp08rPT3dYdmLL76YK4UBAAAAOZXjcDt37lw9//zzcnd3V2BgoGw2m32ZzWYj3AIAACDf5Djcjho1SqNGjdLIkSNVqFCO7yQGAAAA5Jkcp9NLly6pc+fOBFsAAAAUODlOqH369NEXX3yRKxvfsmWLWrdurdDQUNlsNi1btsxhec+ePWWz2RweGffWzZCamqpBgwapWLFi8vb2Vps2bXTy5MlcqQ8AAAD3lhxPS5gwYYJatWqlNWvWqGrVqnJzc3NYPnXqVKfXdfHiRT3wwAPq1auXOnTokGWf5s2ba+7cufbn7u7uDssHDx6sFStWaNGiRQoMDNSwYcPUqlUrxcbGOnxFMAAAAKwvx+F2/PjxWrt2rSpWrChJmS4oy4kWLVqoRYsWN+3j4eGh4ODgLJclJSVp9uzZWrhwoRo3bixJ+uSTTxQWFqZvv/1WzZo1y1E9AAAAuLflONxOnTpVc+bMUc+ePfOgnMw2b96sEiVKqEiRIqpfv77+9a9/qUSJEpKk2NhYXblyRU2bNrX3Dw0NVWRkpLZv355tuE1NTVVqaqr9eXJyct7uBAAAAO6KHM+59fDw0KOPPpoXtWTSokULffrpp9q4caPeeustxcTE6PHHH7cH04SEBLm7u6to0aIOrwsKClJCQkK2650wYYL8/f3tj7CwsDzdDwAAANwdOQ63L730kt599928qCWTTp066YknnlBkZKRat26t1atX6+DBg/rmm29u+jpjzE2nSIwcOVJJSUn2x4kTJ3K7dAAAAOSDHE9L+OGHH7Rx40atXLlS999/f6YLypYsWZJrxd0oJCRE4eHhOnTokCQpODhYly9fVmJiosPo7enTpxUVFZXtejw8POTh4ZFndQIAACB/5HjktkiRImrfvr3q16+vYsWKOXy87+/vnxc12p09e1YnTpxQSEiIJKlGjRpyc3PT+vXr7X3i4+O1d+/em4ZbAAAAWNNtff1ubrlw4YIOHz5sf3706FHt3r1bAQEBCggI0JgxY9ShQweFhITo2LFjeu2111SsWDG1a9dOkuTv768+ffpo2LBhCgwMVEBAgIYPH66qVava754AAACA/x05Dre5adeuXWrYsKH9+dChQyVJPXr00MyZM/Xzzz9rwYIFOnfunEJCQtSwYUN9/vnn8vX1tb9m2rRpcnV1VceOHZWSkqJGjRpp3rx53OMWAADgf5DNGGNy8oKIiIibXqz166+/3nFRd1tycrL8/f2VlJQkPz+//C4HAO55NV5ekN8lAMgjsVO658t2nc1rOR65HTx4sMPzK1eu6Mcff9SaNWv08ssv57hQAAAAILfkONy+9NJLWbbPmDFDu3btuuOCAAAAgNuV47slZKdFixb66quvcmt1AAAAQI7lWrj98ssvFRAQkFurAwAAAHIsx9MSHnzwQYcLyowxSkhI0H//+1+9//77uVocAAAAkBM5DrdPPvmkw/NChQqpePHiatCggSpVqpRbdQEAAAA5luNwO3r06LyoAwAAALhjuTbnFgAAAMhvTo/cFipU6KZf3iBJNptNV69eveOiAAAAgNvhdLhdunRptsu2b9+ud999Vzn8sjMAAAAgVzkdbtu2bZup7ZdfftHIkSO1YsUKde3aVf/85z9ztTgAAAAgJ25rzu2pU6fUr18/VatWTVevXtXu3bs1f/58lS5dOrfrAwAAAJyWo3CblJSkESNGqFy5coqLi9OGDRu0YsUKRUZG5lV9AAAAgNOcnpYwefJkTZo0ScHBwfr3v/+d5TQFAAAAID85HW5fffVVeXp6qly5cpo/f77mz5+fZb8lS5bkWnEAAABATjgdbrt3737LW4EBAAAA+cnpcDtv3rw8LAMAAAC4c3xD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MDBQ0dHR9nBbv359RUdHKyYmRikpKXrsscdyvN6cnG8lqUKFCvapEDf65ZdfJEnly5fP0XYzzo0Z201PT1f//v0djt9PP/2kQ4cOqWzZsvbX5fRC2xvl5Fya1fk7o23MmDGKi4vTE088oY0bN6pKlSo3nWaCnCPcokCqVKlSlhPsY2JiVLFixdteb+XKlXX16lWHdR84cEDnzp2zPy9evLika/NqM9x4S5yHHnpIcXFxKlOmjMqVK+fwyO4E6u7urrS0NIe2KlWq6OrVq9q5c6e97ezZszp48KAqV67s1D717t1b0dHRatu2rYoWLZpp+a5du3T16lW99dZbql27tipUqKBTp045te6b+eqrr/SPf/xDixcvdvgDAlhBlSpVbvrJxo2+++47RUVFacCAAXrwwQdVrlw5p0bkHnroIR06dEglSpTIdC7x9/eXv7+/QkJCHO4qcPXqVcXGxt50vRnzbr/++mvt3btXdevWVdWqVXXlyhXNmjVLDz30ULb/Ic0YWb7xfHU7OnfurG+//VY//fSTQ3t6erqmTZumKlWq2OfjZnWOdEbG+fjG41euXDmHUfI75ey5NLu/MRmf7knXQv+QIUO0bt06tW/fPtOdb3BnCLcokAYMGKAjR45o4MCB+umnn3Tw4EHNmDFDs2fP1ssvv3zb661YsaKaN2+ufv36aefOnYqNjVXfvn3l6elp7+Pp6anatWtr4sSJ2rdvn7Zs2aK///3vDusZOHCg/vzzTz3zzDP64Ycf9Ouvv2rdunXq3bt3tifnMmXK6MKFC9qwYYPOnDmjS5cuqXz58mrbtq369eunrVu36qefftKzzz6rkiVLqm3btk7tU+XKlXXmzJlsT45ly5bV1atX9e677+rXX3/VwoULNWvWLCePWNb27t2r7t27a8SIEbr//vuVkJCghISEPL91EpDbzp49q8cff1yffPKJ9uzZo6NHj+qLL77Q5MmTnf4dlKRy5cpp165dWrt2rQ4ePKg33nhDMTExt3xd165dVaxYMbVt21bfffedjh49qujoaL300ks6efKkJOmll17SxIkTtXTpUv3yyy8aMGCAw3/Is9OgQQN99tlnqlatmvz8/OyB99NPP73pnU1KlCghT09P+4WyWX2K5qwhQ4bokUceUevWrfXFF1/o+PHjiomJUYcOHbR//37Nnj3bPqJZpkwZ7dmzRwcOHNCZM2dueVFthhEjRuj777/XwIED7Z+gLV++XIMGDbqtmpOSkjKNpB8/ftzpc6mbm5sGDRqknTt36j//+Y969eql2rVr65FHHlFKSopeeOEFbd68Wb/99pu2bdummJgYpwcz4BzCLQqkMmXK6LvvvtORI0fUtGlTPfzww/arcp9++uk7WvfcuXMVFham+vXrq3379nruuecy3eN1zpw5unLlimrWrKmXXnpJ48aNc1geGhqqbdu2KS0tTc2aNVNkZKReeukl+fv7ZzvvNCoqSs8//7w6deqk4sWLa/LkyfZ6atSooVatWqlOnToyxmjVqlU5uno2MDDQIaBfr3r16po6daomTZqkyMhIffrpp5owYYLT687Krl27dOnSJY0bN04hISH2R/v27e9ovcDd5uPjo1q1amnatGmqV6+eIiMj9cYbb6hfv3567733nF7P888/r/bt26tTp06qVauWzp49qwEDBtzydV5eXtqyZYtKly6t9u3bq3Llyurdu7dSUlLsU7CGDRum7t27q2fPnqpTp458fX3Vrl27W667YcOGSktLcwiy9evXV1pa2k3n27q6uuqdd97RBx98oNDQ0ByF/BsVLlxYGzduVI8ePfTaa6+pXLlyat68uVxcXLRjxw7Vrl3b3rdfv36qWLGifd7ytm3bnNpGtWrVFB0drUOHDqlu3bp68MEH9cYbb9jn5ubU5s2b9eCDDzo8Ro0a5fS51MvLSyNGjFCXLl1Up04deXp62r9wx8XFRWfPnlX37t1VoUIFdezYUS1atNDYsWNvq1ZkzWaym/QH/A8pU6aMBg8ezNf0AgBwj2PkFgAAAJZBuAUAAIBlMC0BAAAAlsHILQAAACyDcAsAAADLINwCAADAMgi3AAAAsAzCLQAAACyDcAsAAADLINwCwF2QkJCgQYMG6b777pOHh4fCwsLUunVrbdiwwanXz5s3T0WKFMnbIgHAAlzzuwAAsLpjx47p0UcfVZEiRTR58mRVq1ZNV65c0dq1azVw4ED98ssv+V1ijl25ckVubm75XQYAZMLILQDksQEDBshms+mHH37QU089pQoVKuj+++/X0KFDtWPHDknS1KlTVbVqVXl7eyssLEwDBgzQhQsXJEmbN29Wr169lJSUJJvNJpvNpjFjxkiSLl++rFdeeUUlS5aUt7e3atWqpc2bNzts/6OPPlJYWJi8vLzUrl07TZ06NdMo8MyZM1W2bFm5u7urYsWKWrhwocNym82mWbNmqW3btvL29ta4ceNUrlw5vfnmmw799u7dq0KFCunIkSO5dwABICcMACDPnD171thsNjN+/Pib9ps2bZrZuHGj+fXXX82GDRtMxYoVzd/+9jdjjDGpqalm+vTpxs/Pz8THx5v4+Hhz/vx5Y4wxXbp0MVFRUWbLli3m8OHDZsqUKcbDw8McPHjQGGPM1q1bTaFChcyUKVPMgQMHzIwZM0xAQIDx9/e3b3vJkiXGzc3NzJgxwxw4cMC89dZbxsXFxWzcuNHeR5IpUaKEmT17tjly5Ig5duyY+de//mWqVKnisB9Dhgwx9erVy41DBwC3hXALAHlo586dRpJZsmRJjl63ePFiExgYaH8+d+5ch0BqjDGHDx82NpvN/P777w7tjRo1MiNHjjTGGNOpUyfzxBNPOCzv2rWrw7qioqJMv379HPo8/fTTpmXLlvbnkszgwYMd+pw6dcq4uLiYnTt3GmOMuXz5silevLiZN29ejvYVAHIT0xIAIA8ZYyRd+1j/ZjZt2qQmTZqoZMmS8vX1Vffu3XX27FldvHgx29f85z//kTFGFSpUkI+Pj/0RHR1tnxZw4MABPfLIIw6vu/H5/v379eijjzq0Pfroo9q/f79DW82aNR2eh4SE6IknntCcOXMkSStXrtRff/2lp59++qb7CgB5iXALAHmofPnystlsmYLi9X777Te1bNlSkZGR+uqrrxQbG6sZM2ZIunbhVnbS09Pl4uKi2NhY7d692/7Yv3+/3n77bUnXwvWNwTojcF8vqz43tnl7e2d6Xd++fbVo0SKlpKRo7ty56tSpk7y8vLKtGQDyGuEWAPJQQECAmjVrphkzZmQ5Cnvu3Dnt2rVLV69e1VtvvaXatWurQoUKOnXqlEM/d3d3paWlObQ9+OCDSktL0+nTp1WuXDmHR3BwsCSpUqVK+uGHHxxet2vXLofnlStX1tatWx3atm/frsqVK99y/1q2bClvb2/NnDlTq1evVu/evW/5GgDIS4RbAMhj77//vtLS0vTII4/oq6++0qFDh7R//3698847qlOnjsqWLaurV6/q3Xff1a+//qqFCxdq1qxZDusoU6aMLly4oA0bNujMmTO6dOmSKlSooK5du6p79+5asmSJjh49qpiYGE2aNEmrVq2SJA0aNEirVq3S1KlTdejQIX3wwQdavXq1w6jsyy+/rHnz5mnWrFk6dOiQpk6dqiVLlmj48OG33DcXFxf17NlTI0eOVLly5VSnTp3cPXgAkFP5OuMXAP5HnDp1ygwcONCEh4cbd3d3U7JkSdOmTRuzadMmY4wxU6dONSEhIcbT09M0a9bMLFiwwEgyiYmJ9nU8//zzJjAw0Egyo0ePNsZcu4hr1KhRpkyZMsbNzc0EBwebdu3amT179thf9+GHH5qSJUsaT09P8+STT5px48aZ4OBgh/ref/99c9999xk3NzdToUIFs2DBAoflkszSpUuz3LcjR44YSWby5Ml3fJwA4E7ZjMli8hUAwLL69eunX375Rd99912urG/btm1q0KCBTp48qaCgoFxZJwDcLr6hDAAs7s0331STJk3k7e2t1atXa/78+Xr//ffveL2pqak6ceKE3njjDXXs2JFgC6BAYM4tAFjcDz/8oCZNmqhq1aqaNWuW3nnnHfXt2/eO1/vvf/9bFStWVFJSkiZPnpwLlQLAnWNaAgAAACyDkVsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZhFsAAABYBuEWAAAAlkG4BQAAgGUQbgEAAGAZ/w8sdS4SWLixaAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Filter the DataFrame for Mainz lab and other labs\n",
    "mainz_lab_smiles = df_train[df_train['Lab'] == 'Mainz']['SMILES']\n",
    "other_labs_smiles = df_train[df_train['Lab'] != 'Mainz']['SMILES']\n",
    "\n",
    "# Identification of unique SMILES in Mainz and shared ones\n",
    "unique_to_mainz_smiles = mainz_lab_smiles[~mainz_lab_smiles.isin(other_labs_smiles)]\n",
    "shared_smiles = mainz_lab_smiles[mainz_lab_smiles.isin(other_labs_smiles)]\n",
    "\n",
    "# Counting unique and shared SMILES\n",
    "unique_to_mainz_count = unique_to_mainz_smiles.nunique()\n",
    "shared_smiles_count = shared_smiles.nunique()\n",
    "\n",
    "# Preparing data for the chart\n",
    "comparison_data = pd.DataFrame({\n",
    "    'Category': ['Unique to Mainz', 'Shared with Other Labs'],\n",
    "    'Count': [unique_to_mainz_count, shared_smiles_count]\n",
    "})\n",
    "\n",
    "# Create graph\n",
    "plt.figure(figsize=(8, 6))\n",
    "sns.barplot(x='Category', y='Count', data=comparison_data)\n",
    "plt.ylabel('Number of SMILES')\n",
    "plt.title('SMILES Unique to Mainz vs Shared with Other Labs')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7df2734d",
   "metadata": {},
   "source": [
    "#### Observation\n",
    "In the previous graph, we noted that Mainz was the lab with the second-highest number of molecules tested. In this graph, we see that almost 1 molecule out of 4.5 is unique to Mainz. Therefore, we conclude that removing the lines with Mainz is not a good idea, as we would lose too much information. In fact, removing data points (rows in the dataframe) is almost never a good idea, unless it is crystal clear that the removal would only remove noise and not any signal. It is probably better to use the lab information as a categorical predictor."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "13a24ad4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of unique SMILES: 1318\n",
      "Number of repeated SMILES: 770\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTw0lEQVR4nO3debhVdaE//veRGQQUUPAoKCkqgvM8JCCCOaZWzoKiXfs6ophpVqJXweGKlrNdFYccytKsnHDClGsh5qw4ZOAA4lECUQY5rN8fxvl5BBQB1wZ8vZ5nPw/rsz5r7ffaZ3eCt2uoKoqiCAAAAACUaIVKBwAAAADgm0cpBQAAAEDplFIAAAAAlE4pBQAAAEDplFIAAAAAlE4pBQAAAEDplFIAAAAAlE4pBQAAAEDplFIAAAAAlE4pBQDLqOHDh6eqqqru1bBhw6y22mo54IAD8uqrr1Y63lf2zjvvZPDgwXn66aeX+L7nflb/+te/vnTufffdl759+6a6ujpNmjRJdXV1evbsmXPPPbfevLXWWitVVVXp2bPnfPdzww031P1sHnnkkbrxwYMHp6qqKjU1NXVjhx12WFZcccWFOoYFvT77Hh999FHOO++8bLzxxmnVqlVatmyZtddeO/vtt19Gjhz5pZ9Bkrz//vs57bTTssEGG6R58+Zp1apVttlmm1x22WX55JNPFmofAABfpGGlAwAAi+e6667L+uuvnxkzZuTxxx/POeeck4cffjgvv/xyVl555UrHW2jvvPNOzjzzzKy11lrZZJNNKpLhyiuvzP/7f/8v3/ve93LppZemTZs2efPNNzNq1KjcfvvtOfXUU+vNb9myZR599NG8/vrrWXvtteutu/baa9OqVatMnTp1iWac+/P+vA022CBJUltbm759++a5557Lj3/842y11VZJkldffTV/+tOf8te//jU9evT4wvd4+eWX07dv30ybNi2DBg3Kdtttl+nTp+fPf/5zTjjhhPzud7/L3XffnebNmy/RYwMAvlmUUgCwjOvevXu22GKLJEnPnj1TW1ubM844I3feeWcOP/zwCqdbtgwdOjQ77rhjbr/99nrjhx56aObMmTPP/B122CHPPfdcrr322pxzzjl146+//noeffTRHHnkkfn1r3+9RDN+9uc9P48++mhGjRqVa6+9tt7Pf5dddsmxxx473+P4rNra2nzve9/L1KlT8/e//z3rrrtu3brddtstPXr0yAEHHJCTTjopV1555eIf0BI0ffr0NG3aNFVVVfOs+/jjj5VoALCUcfkeACxn5hYW7777br3xJ598MnvttVfatGmTpk2bZtNNN81vf/vbenPmXiI2YsSIHH744WnTpk1atGiRPffcM//85z/nea8HHnggvXv3TqtWrdK8efNsv/32efDBB+vNee2113L44YenS5cuad68eVZfffXsueeeee655+rmPPLII9lyyy2TJIcffnjdJWmDBw/+SvmT5Iknnsj222+fpk2bprq6OqeddtpCX272/vvvZ7XVVpvvuhVWmPevTSussEL69euX66+/vl7Zc+2116Zjx47ZeeedF+p9l6T3338/Sb7ScXzWHXfckRdffDGnnnpqvUJqrv333z99+/bNNddck4kTJ9aNz5w5M2eddVa6du2apk2bpm3btunVq1dGjRpVN2fOnDm55JJLsskmm6RZs2ZZaaWVss022+Suu+6qm/P5n/tca621Vg477LC65bnf1fvvvz8DBgzIKquskubNm2fmzJnp2bNnunfvnkcffTTbbbddmjdvngEDBiRJpk6dmpNPPjmdO3dO48aNs/rqq2fgwIH56KOP6r1fVVVVjj322Nx4443p2rVrmjdvno033jh//vOf58n28ssv58ADD0z79u3TpEmTdOrUKf369cvMmTPr5kycODFHHXVU1lhjjTRu3DidO3fOmWeemdmzZ9fb1xVXXJGNN944K664Ylq2bJn1118/P/3pTxfw0wKAZZtSCgCWM2+88UaS1CsUHn744Wy//fb597//nSuvvDJ//OMfs8kmm2T//ffP8OHD59nHEUcckRVWWCE333xzLr744vz9739Pz5498+9//7tuzk033ZS+ffumVatWuf766/Pb3/42bdq0yS677FKvmHrnnXfStm3bnHvuubn33ntz2WWXpWHDhtl6660zduzYJMlmm22W6667Lknys5/9LP/3f/+X//u//8uRRx75lfK/+OKL6d27d/79739n+PDhufLKK/OPf/wjZ5999kJ9dttuu21+//vfZ/DgwXnmmWdSW1v7pdsMGDAg77zzTu67774kn55pdP311+ewww770gJoUdTW1mb27Nn1Xp/NucUWW6RRo0Y54YQT8pvf/CYTJkz4SvsfMWJEkmTvvfde4Jy99947s2fPrruP1ezZs7Prrrvmv//7v7PHHnvkjjvuyPDhw7Pddttl/PjxddsddthhOeGEE7Llllvmtttuy6233pq99tproe71tSADBgxIo0aNcuONN+b2229Po0aNkiQTJkzIIYcckoMOOih33313jj766Hz88cfp0aNHrr/++hx//PG555578pOf/CTDhw/PXnvtlaIo6u37L3/5Sy699NKcddZZ+f3vf582bdpkn332qVfQPvPMM9lyyy3zxBNP5Kyzzso999yToUOHZubMmZk1a1aSTwuprbbaKvfdd19+8Ytf5J577skRRxyRoUOH5oc//GHdvm699dYcffTR6dGjR+64447ceeedOfHEE+cpzABguVEAAMuk6667rkhSPPHEE8Unn3xSfPjhh8W9995bdOjQodhxxx2LTz75pG7u+uuvX2y66ab1xoqiKPbYY49itdVWK2pra+vtc5999qk37/HHHy+SFGeffXZRFEXx0UcfFW3atCn23HPPevNqa2uLjTfeuNhqq60WmHv27NnFrFmzii5duhQnnnhi3fjo0aOLJMV11103zzYLm3///fcvmjVrVkycOLHe+62//vpFkuKNN95YYK6iKIrXXnut6N69e5GkSFI0a9as6N27d3HppZcWs2bNqjd3zTXXLHbfffeiKIqiR48exfe///2iKIriL3/5S1FVVVW88cYbxe9+97siSfHwww/XbXfGGWcUSYr33nuvbqx///5FixYtvjDb3J/N/F4NGjSoN/eaa64pVlxxxbr1q622WtGvX7/i0Ucf/cL3KIqi+M53vlMkKWbMmLHAOffcc0+RpDjvvPOKoiiKG264oUhS/PrXv17gNo8++miRpDj99NO/8P2TFGecccY842uuuWbRv3//uuW5n0e/fv3mmdujR48iSfHggw/WGx86dGixwgorFKNHj643fvvttxdJirvvvrtejvbt2xdTp06tG5s4cWKxwgorFEOHDq0b22mnnYqVVlqpmDRp0gKP6aijjipWXHHFYty4cfXG/+d//qdIUrzwwgtFURTFscceW6y00koL3A8ALG+cKQUAy7htttkmjRo1SsuWLfOd73wnK6+8cv74xz+mYcNPbx352muv5eWXX87BBx+cJPXOsNltt90yYcKEujOW5po7d67tttsua665Zh5++OEkyahRo/LBBx+kf//+9fY3Z86cfOc738no0aPrzu6YPXt2hgwZkg022CCNGzdOw4YN07hx47z66qt56aWXvvT4vkr+hx9+OL1790779u3rtm/QoEH233//hfos11577TzzzDMZOXJkzjzzzOy8884ZPXp0jj322Gy77baZMWPGfLcbMGBA7rrrrrz//vu55ppr0qtXr6y11loL9Z5f1Q033JDRo0fXe/3tb3+bJ89bb72Vm2++Occff3w6duyYm266KT169MgFF1yw2BmK/5xRNPfeTffcc0+aNm1ad4nc/Nxzzz1JkmOOOWax3/+zvve97813fOWVV85OO+1Ub+zPf/5zunfvnk022aTe92iXXXaZ5wmGSdKrV6+0bNmybrl9+/ZZddVVM27cuCSf3qdq5MiR2W+//bLKKqssMOOf//zn9OrVK9XV1fXed9ddd02SuicibrXVVvn3v/+dAw88MH/84x/rPaERAJZHbnQOAMu4G264IV27ds2HH36Y2267LVdddVUOPPDAuhJg7r2lTj755Jx88snz3cfn//HboUOHeeZ06NCh7n5Fc/f5/e9/f4G5Pvjgg7Ro0SInnXRSLrvssvzkJz9Jjx49svLKK2eFFVbIkUcemenTp3/p8X2V/O+///4Csy+sFVZYITvuuGN23HHHJMlHH32UI444IrfddluuvfbaHH300fNs8/3vfz/HHXdcLrroovzpT3+a7yWRS0rXrl2/8Ebnc7Vu3ToHHnhgDjzwwCTJCy+8kJ133jmnn356fvjDH2allVaa73adOnVK8ulloPN7yl+SusvtOnbsmCR57733Ul1d/YWXK7733ntp0KDBV/pZLIwF3TtrfuPvvvtuXnvttbpL/D7v8/87aNu27TxzmjRpUve9nTx5cmpra7PGGmt8YcZ33303f/rTn770fQ899NDMnj07v/71r/O9730vc+bMyZZbbpmzzz47ffr0+cL3AIBlkVIKAJZxny0pevXqldra2vzv//5vbr/99nz/+99Pu3btkiSnnXZa9t133/nuY7311qu3/NkbWH92bJ111kmSun1ecskl2Wabbea7z7lnK910003p169fhgwZUm99TU3NAouRz/oq+du2bbvA7IuqRYsWOe2003Lbbbfl+eefn++c5s2b54ADDsjQoUPTqlWrBeaspG7duuWAAw7IxRdfnFdeeSVbbbXVfOf16dMnV199de68886ceuqp851z5513pmHDhunZs2eSZJVVVsljjz2WOXPmLLCYWmWVVVJbW5uJEycusEhKPi19PnuD8LnmFqKfN78n7S1ovF27dmnWrFmuvfba+W4z97u2sNq0aZMGDRrkrbfe+sJ57dq1y0YbbVTvCY2fVV1dXffnww8/PIcffng++uijPProoznjjDOyxx575JVXXsmaa675lfIBwNJOKQUAy5nzzz8/v//97/OLX/wi++67b9Zbb7106dIlzzzzzDzF0IL85je/qXdZ1KhRozJu3Li6G49vv/32WWmllfLiiy/m2GOP/cJ9VVVVpUmTJvXG/vKXv+Ttt9+uK7mS1M35/NlTXyV/r169ctddd+Xdd9+tK8Vqa2tz2223fckRf2rChAnzLUzmXmb42fLg8/7f//t/effdd9OjR480bdp0od7v6/D++++nZcuWady48TzrXn755SRffBz77LNPNthgg5x77rnZd99953kC32233Zb7778/P/rRj+rOetp1111zyy23ZPjw4Qu8hG/XXXfN0KFDc8UVV+Sss85a4PuvtdZaefbZZ+uNPfTQQ5k2bdoCt1lYe+yxR4YMGZK2bdumc+fOi72/Zs2apUePHvnd736Xc845Z4Gl1h577JG77747a6+9dlZeeeWF2neLFi2y6667ZtasWdl7773zwgsvKKUAWO4opQBgObPyyivntNNOyymnnJKbb745hxxySK666qrsuuuu2WWXXXLYYYdl9dVXzwcffJCXXnopTz31VH73u9/V28eTTz6ZI488Mj/4wQ/y5ptv5vTTT8/qq69ed+naiiuumEsuuST9+/fPBx98kO9///tZddVV89577+WZZ57Je++9lyuuuCLJp/8gHz58eNZff/1stNFGGTNmTC644IJ5Lnlae+2106xZs/zmN79J165ds+KKK6a6ujrV1dULnf9nP/tZ7rrrruy00075xS9+kebNm+eyyy5b6KeXdevWLb17986uu+6atddeOzNmzMjf/va3XHjhhWnfvn2OOOKIBW67ySab5M4771zYH9M8amtrc/vtt88zPrecmOv555/P7Nmz55m39tprZ5VVVsnDDz+cE044IQcffHC22267tG3bNpMmTcott9ySe++9N/369fvCy80aNGiQ3//+9+nTp0+23XbbDBo0KNtuu21mzpyZP/3pT7n66qvTo0ePXHjhhXXbHHjggbnuuuvyox/9KGPHjk2vXr0yZ86c/O1vf0vXrl1zwAEH5Nvf/nYOPfTQnH322Xn33Xezxx57pEmTJvnHP/6R5s2b57jjjkvy6SVsP//5z/OLX/wiPXr0yIsvvphLL700rVu3XuTPdq6BAwfm97//fXbccceceOKJ2WijjTJnzpyMHz8+999/fwYNGpStt976K+1z2LBh2WGHHbL11lvn1FNPzTrrrJN33303d911V6666qq0bNkyZ511VkaMGJHtttsuxx9/fNZbb73MmDEj//rXv3L33XfnyiuvzBprrJEf/vCHadasWbbffvusttpqmThxYoYOHZrWrVtnyy23XOzjB4ClTqXvtA4ALJq5Tx/7/JPEiqIopk+fXnTq1Kno0qVLMXv27KIoiuKZZ54p9ttvv2LVVVctGjVqVHTo0KHYaaediiuvvHKefd5///3FoYceWqy00kpFs2bNit1226149dVX53mfkSNHFrvvvnvRpk2bolGjRsXqq69e7L777sXvfve7ujmTJ08ujjjiiGLVVVctmjdvXuywww7FX//616JHjx5Fjx496u3vlltuKdZff/2iUaNG8zyFbWHyF8WnTwrcZpttiiZNmhQdOnQofvzjHxdXX331Qj1976qrrir23Xff4lvf+lbRvHnzonHjxsXaa69d/OhHPyrefPPNenM/+/S9BfkqT9/LAp6st+aaaxZF8cVP38tnnnz35ptvFj/72c+K7bffvujQoUPRsGHDomXLlsXWW29dXHLJJXXfhy9TU1NTnHrqqcX6669fNG3atFhxxRWLrbbaar5PIiyKT79zv/jFL4ouXboUjRs3Ltq2bVvstNNOxahRo+rm1NbWFhdddFHRvXv3onHjxkXr1q2LbbfdtvjTn/5UN2fmzJnFKaecUnTs2LFo1qxZ0aNHj+Lpp59e4NP35vf979GjR9GtW7f5Hte0adOKn/3sZ8V6661Xl2HDDTcsTjzxxHpPbUxSHHPMMfNs//kcRVEUL774YvGDH/ygaNu2bdG4ceOiU6dOxWGHHVbvCYbvvfdecfzxxxedO3cuGjVqVLRp06bYfPPNi9NPP72YNm1aURRFcf311xe9evUq2rdvXzRu3Liorq4u9ttvv+LZZ5+d77EAwLKuqij+8/gUAOAbb/jw4Tn88MMzevTohbqZNgAALKoFPyIF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FquUevLJJ3P00UdntdVWy7Bhw3LyySfn9ddfz0MPPZS333473/3ud5dUTgAAAACWIw0XZaNhw4bluuuuy9ixY7PbbrvlhhtuyG677ZYVVvi04+rcuXOuuuqqrL/++ks0LAAAAADLh0Uqpa644ooMGDAghx9+eDp06DDfOZ06dco111yzWOEAAAAAWD4tUin16quvfumcxo0bp3///ouyewAAAACWc4t0T6nrrrsuv/vd7+YZ/93vfpfrr79+sUMBAAAAsHxbpFLq3HPPTbt27eYZX3XVVTNkyJDFDgUAAADA8m2RSqlx48alc+fO84yvueaaGT9+/GKHAgAAAGD5tkil1Kqrrppnn312nvFnnnkmbdu2XexQAAAAACzfFqmUOuCAA3L88cfn4YcfTm1tbWpra/PQQw/lhBNOyAEHHLCkMwIAAACwnFmkp++dffbZGTduXHr37p2GDT/dxZw5c9KvXz/3lAIAAADgSy1SKdW4cePcdttt+e///u8888wzadasWTbccMOsueaaSzofAAAAAMuhRSql5lp33XWz7rrrLqksAAAAAHxDLFIpVVtbm+HDh+fBBx/MpEmTMmfOnHrrH3rooSUSDgAAAIDl0yLd6PyEE07ICSeckNra2nTv3j0bb7xxvdfCuuKKK7LRRhulVatWadWqVbbddtvcc889deuLosjgwYNTXV2dZs2apWfPnnnhhRfq7WPmzJk57rjj0q5du7Ro0SJ77bVX3nrrrUU5LAAAAABKskhnSt1666357W9/m912222x3nyNNdbIueeem3XWWSdJcv311+e73/1u/vGPf6Rbt245//zzM2zYsAwfPjzrrrtuzj777PTp0ydjx45Ny5YtkyQDBw7Mn/70p9x6661p27ZtBg0alD322CNjxoxJgwYNFisfAAAAAF+PRTpTqnHjxnVF0uLYc889s9tuu9Xdm+qcc87JiiuumCeeeCJFUeTiiy/O6aefnn333Tfdu3fP9ddfn48//jg333xzkmTKlCm55pprcuGFF2bnnXfOpptumptuuinPPfdcHnjggcXOBwAAAMDXY5FKqUGDBuWXv/xliqJYYkFqa2tz66235qOPPsq2226bN954IxMnTkzfvn3r5jRp0iQ9evTIqFGjkiRjxozJJ598Um9OdXV1unfvXjcHAAAAgKXPIl2+99hjj+Xhhx/OPffck27duqVRo0b11v/hD39Y6H0999xz2XbbbTNjxoysuOKKueOOO7LBBhvUlUrt27evN799+/YZN25ckmTixIlp3LhxVl555XnmTJw4cYHvOXPmzMycObNueerUqQudFwAAAIDFt0il1EorrZR99tlniQRYb7318vTTT+ff//53fv/736d///4ZOXJk3fqqqqp684uimGfs875sztChQ3PmmWcuXnAAAAAAFtkilVLXXXfdEgvw2ftTbbHFFhk9enR++ctf5ic/+UmST8+GWm211ermT5o0qe7sqQ4dOmTWrFmZPHlyvbOlJk2alO22226B73naaaflpJNOqlueOnVqOnbsuMSOCQAAAIAvtkj3lEqS2bNn54EHHshVV12VDz/8MEnyzjvvZNq0aYsVqCiKzJw5M507d06HDh0yYsSIunWzZs3KyJEj6wqnzTffPI0aNao3Z8KECXn++ee/sJRq0qRJWrVqVe8FAAAAQHkW6UypcePG5Tvf+U7Gjx+fmTNnpk+fPmnZsmXOP//8zJgxI1deeeVC7eenP/1pdt1113Ts2DEffvhhbr311jzyyCO59957U1VVlYEDB2bIkCHp0qVLunTpkiFDhqR58+Y56KCDkiStW7fOEUcckUGDBqVt27Zp06ZNTj755Gy44YbZeeedF+XQAAAAACjBIpVSJ5xwQrbYYos888wzadu2bd34PvvskyOPPHKh9/Puu+/m0EMPzYQJE9K6detstNFGuffee9OnT58kySmnnJLp06fn6KOPzuTJk7P11lvn/vvvT8uWLev2cdFFF6Vhw4bZb7/9Mn369PTu3TvDhw9PgwYNFuXQAAAAAChBVVEUxVfdqF27dnn88cez3nrrpWXLlnnmmWfyrW99K//617+ywQYb5OOPP/46sn5tpk6dmtatW2fKlCnL/KV8Tz31VDbffPMkY5JsVqkUSTbPmDFjstlmlcoAAAAAVMLC9iyLdE+pOXPmpLa2dp7xt956q95ZTAAAAAAwP4tUSvXp0ycXX3xx3XJVVVWmTZuWM844I7vtttuSygYAAADAcmqR7il10UUXpVevXtlggw0yY8aMHHTQQXn11VfTrl273HLLLUs6IwAAAADLmUUqpaqrq/P000/nlltuyVNPPZU5c+bkiCOOyMEHH5xmzZot6YwAAAAALGcWqZRKkmbNmmXAgAEZMGDAkswDAAAAwDfAIpVSN9xwwxeu79ev3yKFAQAAAOCbYZFKqRNOOKHe8ieffJKPP/44jRs3TvPmzZVSAAAAAHyhRXr63uTJk+u9pk2blrFjx2aHHXZwo3MAAAAAvtQilVLz06VLl5x77rnznEUFAAAAAJ+3yDc6n58GDRrknXfeWZK7hMUyfvz41NTUVDpG2rVrl06dOlU6BgAAACw1FqmUuuuuu+otF0WRCRMm5NJLL83222+/RILB4ho/fnzWW69rZsz4uNJR0rRp84wd+5JiCgAAAP5jkUqpvffeu95yVVVVVlllley000658MILl0QuWGw1NTX/KaRuStK1gkleyowZh6SmpkYpBQAAAP+xSKXUnDlzlnQO+Bp1TbJZpUMAAAAAn7HEbnQOAAAAAAtrkc6UOumkkxZ67rBhwxblLQAAAABYji1SKfWPf/wjTz31VGbPnp311lsvSfLKK6+kQYMG2Wyz//8yqaqqqiWTEgAAAIDlyiKVUnvuuWdatmyZ66+/PiuvvHKSZPLkyTn88MPz7W9/O4MGDVqiIQEAAABYvizSPaUuvPDCDB06tK6QSpKVV145Z599tqfvAQAAAPClFqmUmjp1at599915xidNmpQPP/xwsUMBAAAAsHxbpFJqn332yeGHH57bb789b731Vt56663cfvvtOeKII7Lvvvsu6YwAAAAALGcW6Z5SV155ZU4++eQccsgh+eSTTz7dUcOGOeKII3LBBRcs0YAAAAAALH8WqZRq3rx5Lr/88lxwwQV5/fXXUxRF1llnnbRo0WJJ5wMAAABgObRIl+/NNWHChEyYMCHrrrtuWrRokaIollQuAAAAAJZji1RKvf/+++ndu3fWXXfd7LbbbpkwYUKS5Mgjj8ygQYOWaEAAAAAAlj+LVEqdeOKJadSoUcaPH5/mzZvXje+///659957l1g4AAAAAJZPi3RPqfvvvz/33Xdf1lhjjXrjXbp0ybhx45ZIMAAAAACWX4t0ptRHH31U7wypuWpqatKkSZPFDgUAAADA8m2RSqkdd9wxN9xwQ91yVVVV5syZkwsuuCC9evVaYuEAAAAAWD4t0uV7F1xwQXr27Jknn3wys2bNyimnnJIXXnghH3zwQR5//PElnREAAACA5cwinSm1wQYb5Nlnn81WW22VPn365KOPPsq+++6bf/zjH1l77bWXdEYAAAAAljNf+UypTz75JH379s1VV12VM8888+vIBAAAAMBy7iufKdWoUaM8//zzqaqq+jryAAAAAPANsEiX7/Xr1y/XXHPNks4CAAAAwDfEIt3ofNasWfnf//3fjBgxIltssUVatGhRb/2wYcOWSDgAAAAAlk9fqZT65z//mbXWWivPP/98NttssyTJK6+8Um+Oy/oAAAAA+DJfqZTq0qVLJkyYkIcffjhJsv/+++dXv/pV2rdv/7WEAwAAAGD59JXuKVUURb3le+65Jx999NESDQQAAADA8m+RbnQ+1+dLKgAAAABYGF+plKqqqprnnlHuIQUAAADAV/WV7ilVFEUOO+ywNGnSJEkyY8aM/OhHP5rn6Xt/+MMfllxCAAAAAJY7X6mU6t+/f73lQw45ZImGAQAAAOCb4SuVUtddd93XlQMAAACAb5DFutE5AAAAACwKpRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFC6ipZSQ4cOzZZbbpmWLVtm1VVXzd57752xY8fWm1MURQYPHpzq6uo0a9YsPXv2zAsvvFBvzsyZM3PcccelXbt2adGiRfbaa6+89dZbZR4KAAAAAF9BRUupkSNH5phjjskTTzyRESNGZPbs2enbt28++uijujnnn39+hg0blksvvTSjR49Ohw4d0qdPn3z44Yd1cwYOHJg77rgjt956ax577LFMmzYte+yxR2praytxWAAAAAB8iYaVfPN777233vJ1112XVVddNWPGjMmOO+6Yoihy8cUX5/TTT8++++6bJLn++uvTvn373HzzzTnqqKMyZcqUXHPNNbnxxhuz8847J0luuummdOzYMQ888EB22WWX0o8LAAAAgC+2VN1TasqUKUmSNm3aJEneeOONTJw4MX379q2b06RJk/To0SOjRo1KkowZMyaffPJJvTnV1dXp3r173RwAAAAAli4VPVPqs4qiyEknnZQddtgh3bt3T5JMnDgxSdK+fft6c9u3b59x48bVzWncuHFWXnnleebM3f7zZs6cmZkzZ9YtT506dYkdBwAAAABfbqk5U+rYY4/Ns88+m1tuuWWedVVVVfWWi6KYZ+zzvmjO0KFD07p167pXx44dFz04AAAAAF/ZUlFKHXfccbnrrrvy8MMPZ4011qgb79ChQ5LMc8bTpEmT6s6e6tChQ2bNmpXJkycvcM7nnXbaaZkyZUrd680331yShwMAAADAl6hoKVUURY499tj84Q9/yEMPPZTOnTvXW9+5c+d06NAhI0aMqBubNWtWRo4cme222y5Jsvnmm6dRo0b15kyYMCHPP/983ZzPa9KkSVq1alXvBQAAAEB5KnpPqWOOOSY333xz/vjHP6Zly5Z1Z0S1bt06zZo1S1VVVQYOHJghQ4akS5cu6dKlS4YMGZLmzZvnoIMOqpt7xBFHZNCgQWnbtm3atGmTk08+ORtuuGHd0/gAAAAAWLpUtJS64oorkiQ9e/asN37dddflsMMOS5KccsopmT59eo4++uhMnjw5W2+9de6///60bNmybv5FF12Uhg0bZr/99sv06dPTu3fvDB8+PA0aNCjrUAAAAAD4CipaShVF8aVzqqqqMnjw4AwePHiBc5o2bZpLLrkkl1xyyRJMBwAAAMDXZam40TkAAAAA3yxKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABKp5QCAAAAoHRKKQAAAABK17DSAYDyjB8/PjU1NRXN0K5du3Tq1KmiGQAAAKg8pRR8Q4wfPz7rrdc1M2Z8XNEcTZs2z9ixLymmAAAAvuGUUvANUVNT859C6qYkXSuU4qXMmHFIampqlFIAAADfcEop+MbpmmSzSocAAADgG86NzgEAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAoXUVLqUcffTR77rlnqqurU1VVlTvvvLPe+qIoMnjw4FRXV6dZs2bp2bNnXnjhhXpzZs6cmeOOOy7t2rVLixYtstdee+Wtt94q8SgAAAAA+KoqWkp99NFH2XjjjXPppZfOd/3555+fYcOG5dJLL83o0aPToUOH9OnTJx9++GHdnIEDB+aOO+7IrbfemsceeyzTpk3LHnvskdra2rIOAwAAAICvqGEl33zXXXfNrrvuOt91RVHk4osvzumnn5599903SXL99denffv2ufnmm3PUUUdlypQpueaaa3LjjTdm5513TpLcdNNN6dixYx544IHssssupR0LAAAAAAtvqb2n1BtvvJGJEyemb9++dWNNmjRJjx49MmrUqCTJmDFj8sknn9SbU11dne7du9fNAQAAAGDpU9Ezpb7IxIkTkyTt27evN96+ffuMGzeubk7jxo2z8sorzzNn7vbzM3PmzMycObNueerUqUsqNgAAAAALYaktpeaqqqqqt1wUxTxjn/dlc4YOHZozzzxzieQDlk3jx49PTU1NpWOkXbt26dSpU6VjAAAAlG6pLaU6dOiQ5NOzoVZbbbW68UmTJtWdPdWhQ4fMmjUrkydPrne21KRJk7LddtstcN+nnXZaTjrppLrlqVOnpmPHjkv6EICl1Pjx47Peel0zY8bHlY6Spk2bZ+zYlxRTAADAN85SW0p17tw5HTp0yIgRI7LpppsmSWbNmpWRI0fmvPPOS5JsvvnmadSoUUaMGJH99tsvSTJhwoQ8//zzOf/88xe47yZNmqRJkyZf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4vD9YXH5DrG4fIdYHL4/LC7foW+Ooijy4Ycfprq6+gvnLfOlVOPGjbP55ptnxIgR2WefferGR4wYke9+97vz3aZJkyZp0qRJvbGVVlrp64zJUqZVq1Z+CbJYfIdYHL4/LC7fIRaX7xCLw/eHxeU79M3QunXrL52zzJdSSXLSSSfl0EMPzRZbbJFtt902V199dcaPH58f/ehHlY4GAAAAwHwsF6XU/vvvn/fffz9nnXVWJkyYkO7du+fuu+/OmmuuWeloAAAAAMzHclFKJcnRRx+do48+utIxWMo1adIkZ5xxxjyXb8LC8h1icfj+sLh8h1hcvkMsDt8fFpfvEJ+3zD99DwAAAIBlzwqVDgAAAADAN49SCgAAAIDSKaUAAAAAKJ1SiuXe0KFDs+WWW6Zly5ZZddVVs/fee2fs2LGVjsUybOjQoamqqsrAgQMrHYVlyNtvv51DDjkkbdu2TfPmzbPJJptkzJgxlY7FMmL27Nn52c9+ls6dO6dZs2b51re+lbPOOitz5sypdDSWQo8++mj23HPPVFdXp6qqKnfeeWe99UVRZPDgwamurk6zZs3Ss2fPvPDCC5UJy1Lpi75Dn3zySX7yk59kww03TIsWLVJdXZ1+/frlnXfeqVxgljpf9nvos4466qhUVVXl4osvLi0fSw+lFMu9kSNH5phjjskTTzyRESNGZPbs2enbt28++uijSkdjGTR69OhcffXV2WijjSodhWXI5MmTs/3226dRo0a555578uKLL+bCCy/MSiutVOloLCPOO++8XHnllbn00kvz0ksv5fzzz88FF1yQSy65pNLRWAp99NFH2XjjjXPppZfOd/3555+fYcOG5dJLL83o0aPToUOH9OnTJx9++GHJSVlafdF36OOPP85TTz2Vn//853nqqafyhz/8Ia+88kr22muvCiRlafVlv4fmuvPOO/O3v/0t1dXVJSVjaePpe3zjvPfee1l11VUzcuTI7LjjjpWOwzJk2rRp2WyzzXL55Zfn7LPPziabbOK/6LBQTj311Dz++OP561//WukoLKP22GOPtG/fPtdcc03d2Pe+9700b948N954YwWTsbSrqqrKHXfckb333jvJp2dJVVdXZ+DAgfnJT36SJJk5c2bat2+f8847L0cddVQF07I0+vx3aH5Gjx6drbbaKuPGjUunTp3KC8cyYUHfobfffjtbb7117rvvvuy+++4ZOHCgKxG+gZwpxTfOlClTkiRt2rSpcBKWNcccc0x233337LzzzpWOwjLmrrvuyhZbbJEf/OAHWXXVVbPpppvm17/+daVjsQzZYYcd8uCDD+aVV15JkjzzzDN57LHHsttuu1U4GcuaN954IxMnTkzfvn3rxpo0aZIePXpk1KhRFUzGsmzKlCmpqqpyBjALbc6cOTn00EPz4x//ON26dat0HCqoYaUDQJmKoshJJ52UHXbYId27d690HJYht956a5566qmMHj260lFYBv3zn//MFVdckZNOOik//elP8/e//z3HH398mjRpkn79+lU6HsuAn/zkJ5kyZUrWX3/9NGjQILW1tTnnnHNy4IEHVjoay5iJEycmSdq3b19vvH379hk3blwlIrGMmzFjRk499dQcdNBBadWqVaXjsIw477zz0rBhwxx//PGVjkKFKaX4Rjn22GPz7LPP5rHHHqt0FJYhb775Zk444YTcf//9adq0aaXjsAyaM2dOtthiiwwZMiRJsummm+aFF17IFVdcoZRiodx222256aabcvPNN6dbt255+umnM3DgwFRXV6d///6VjscyqKqqqt5yURTzjMGX+eSTT3LAAQdkzpw5ufzyyysdh2XEmDFj8stf/jJPPfWU3zu4fI9vjuOOOy533XVXHn744ayxxhqVjsMyZMyYMZk0aVI233zzNGzYMA0bNszIkSPzq1/9Kg0bNkxtbW2lI7KUW2211bLBBhvUG+vatWvGjx9foUQsa3784x/n1FNPzQEHHJANN9wwhx56aE488cQMHTq00tFYxnTo0CHJ/3/G1FyTJk2a5+wp+CKffPJJ9ttvv7zxxhsZMWKEs6RYaH/9618zadKkdOrUqe7v1uPGjcugQYOy1lprVToeJXOmFMu9oihy3HHH5Y477sgjjzySzp07VzoSy5jevXvnueeeqzd2+OGHZ/31189PfvKTNGjQoELJWFZsv/32GTt2bL2xV155JWuuuWaFErGs+fjjj7PCCvX/W2KDBg0yZ86cCiViWdW5c+d06NAhI0aMyKabbpokmTVrVkaOHJnzzjuvwulYVswtpF599dU8/PDDadu2baUjsQw59NBD57lH6y677JJDDz00hx9+eIVSUSlKKZZ7xxxzTG6++eb88Y9/TMuWLev+y2Dr1q3TrFmzCqdjWdCyZct57kHWokWLtG3b1r3JWCgnnnhitttuuwwZMiT77bdf/v73v+fqq6/O1VdfXeloLCP23HPPnHPOOenUqVO6deuWf/zjHxk2bFgGDBhQ6WgshaZNm5bXXnutbvmNN97I008/nTZt2qRTp04ZOHBghgwZki5duqRLly4ZMmRImjdvnoMOOqiCqVmafNF3qLq6Ot///vfz1FNP5c9//nNqa2vr/n7dpk2bNG7cuFKxWYp82e+hzxeZjRo1SocOHbLeeuuVHZUKqyqKoqh0CPg6Leg65euuuy6HHXZYuWFYbvTs2TObbLJJLr744kpHYRnx5z//OaeddlpeffXVdO7cOSeddFJ++MMfVjoWy4gPP/wwP//5z3PHHXdk0qRJqa6uzoEHHphf/OIX/gHIPB555JH06tVrnvH+/ftn+PDhKYoiZ555Zq666qpMnjw5W2+9dS677DL/oYU6X/QdGjx48AKvPHj44YfTs2fPrzkdy4Iv+z30eWuttVYGDhyYgQMHfv3hWKoopQAAAAAonRudAwAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQAAAFA6pRQAAAAApVNKAQDfGP/6179SVVWVp59+utJR6rz88svZZptt0rRp02yyySaVjgMAUBqlFABQmsMOOyxVVVU599xz643feeedqaqqqlCqyjrjjDPSokWLjB07Ng8++OAC57355ps54ogjUl1dncaNG2fNNdfMCSeckPfff7/EtAAAS45SCgAoVdOmTXPeeedl8uTJlY6yxMyaNWuRt3399dezww47ZM0110zbtm3nO+ef//xntthii7zyyiu55ZZb8tprr+XKK6/Mgw8+mG233TYffPDBIr//4prfsdfW1mbOnDkVSAMALEuUUgBAqXbeeed06NAhQ4cOXeCcwYMHz3Mp28UXX5y11lqrbvmwww7L3nvvnSFDhqR9+/ZZaaWVcuaZZ2b27Nn58Y9/nDZt2mSNNdbItddeO8/+X3755Wy33XZp2rRpunXrlkceeaTe+hdffDG77bZbVlxxxbRv3z6HHnpoampq6tb37Nkzxx57bE466aS0a9cuffr0me9xzJkzJ2eddVbWWGONNGnSJJtssknuvffeuvVVVVUZM2ZMzjrrrFRVVWXw4MHz3c8xxxyTxo0b5/7770+PHj3SqVOn7LrrrnnggQfy9ttv5/TTT6+bO3PmzJxyyinp2LFjmjRpki5duuSaa66pW//CCy9k9913T6tWrdKyZct8+9vfzuuvv153XAMHDqz33nvvvXcOO+ywuuW11lorZ599dg477LC0bt06P/zhDzN8+PCstNJK+fOf/5wNNtggTZo0ybhx4zJr1qyccsopWX311dOiRYtsvfXW9T7rudvdd9996dq1a1ZcccV85zvfyYQJE+pluPbaa9OtW7c0adIkq622Wo499ti6dVOmTMl//dd/ZdVVV02rVq2y00475Zlnnqlb/8wzz6RXr15p2bJlWrVqlc033zxPPvnkfD9nAKBcSikAoFQNGjTIkCFDcskll+Stt95arH099NBDeeedd/Loo49m2LBhGTx4cPbYY4+svPLK+dvf/pYf/ehH+dGPfpQ333yz3nY//vGPM2jQoPzjH//Idtttl7322qvuMrgJEyakR48e2WSTTfLkk0/m3nvvzbvvvpv99tuv3j6uv/76NGzYMI8//niuuuqq+eb75S9/mQsvvDD/8z//k2effTa77LJL9tprr7z66qt179WtW7cMGjQoEyZMyMknnzzPPj744IPcd999Ofroo9OsWbN66zp06JCDDz44t912W4qiSJL069cvt956a371q1/lpZdeypVXXpkVV1wxSfL2229nxx13TNOmTfPQQw9lzJgxGTBgQGbPnv2VPvcLLrgg3bt3z5gxY/Lzn/88SfLxxx9n6NCh+d///d+88MILWXXVVXP44Yfn8ccfz6233ppnn302P/jBD/Kd73yn7vjnbvc///M/ufHGG/Poo49m/Pjx9T6HK664Isccc0z+67/+K88991zuuuuurLPOOkmSoiiy++67Z+LEibn77rszZsyYbLbZZundu3fd2WMHH3xw1lhjjYwePTpjxozJqaeemkaNGn2l4wUAviYFAEBJ+vfvX3z3u98tiqIottlmm2LAgAFFURTFHXfcUXz2ryVnnHFGsfHGG9fb9qKLLirWXHPNevtac801i9ra2rqx9dZbr/j2t79dtzx79uyiRYsWxS233FIURVG88cYbRZLi3HPPrZvzySefFGussUZx3nnnFUVRFD//+c+Lvn371nvvN998s0hSjB07tiiKoujRo0exySabfOnxVldXF+ecc069sS233LI4+uij65Y33njj4owzzljgPp544okiSXHHHXfMd/2wYcOKJMW7775bjB07tkhSjBgxYr5zTzvttKJz587FrFmz5ru+R48exQknnFBv7Lvf/W7Rv3//uuU111yz2HvvvevNue6664okxdNPP1039tprrxVVVVXF22+/XW9u7969i9NOO63edq+99lrd+ssuu6xo37593XJ1dXVx+umnzzfvgw8+WLRq1aqYMWNGvfG11167uOqqq4qiKIqWLVsWw4cPn+/2AEBlNaxcHQYAfJOdd9552WmnnTJo0KBF3ke3bt2ywgr//4nf7du3T/fu3euWGzRokLZt22bSpEn1ttt2223r/tywYcNsscUWeemll5IkY8aMycMPP1x3dtFnvf7661l33XWTJFtsscUXZps6dWreeeedbL/99vXGt99++3qXly2u4j9nSM19qmCDBg3So0eP+c59+umn8+1vf3uxzxSa37E3btw4G220Ud3yU089laIo6j6vuWbOnFnv3lnNmzfP2muvXbe82mqr1f28Jk2alHfeeSe9e/eeb44xY8Zk2rRp89yLa/r06XWXJJ500kk58sgjc+ONN2bnnXfOD37wg3rvBwBUjlIKAKiIHXfcMbvsskt++tOf1rtnUZKssMIKdWXLXJ988sk8+/h8uVJVVTXfsYW56fbcp//NmTMne+65Z84777x55qy22mp1f27RosWX7vOz+52rKIqv9KTBddZZJ1VVVXnxxRez9957z7P+5Zdfzsorr5x27drNc3nf533Z+oX93Od37M2aNat3XHPmzEmDBg0yZsyYNGjQoN7czxZ+8/t5zc3wZXnnzJmT1VZbbZ57giXJSiutlOTT+5MddNBB+ctf/pJ77rknZ5xxRm699dbss88+X7hvAODr555SAEDFnHvuufnTn/6UUaNG1RtfZZVVMnHixHoFydNPP73E3veJJ56o+/Ps2bMzZsyYrL/++kmSzTbbLC+88ELWWmutrLPOOvVeC1tEJUmrVq1SXV2dxx57rN74qFGj0rVr14XeT9u2bdOnT59cfvnlmT59er11EydOzG9+85vsv//+qaqqyoYbbpg5c+Zk5MiR893XRhttlL/+9a/zLZqSTz/3z95kvLa2Ns8///xCZ/2sTTfdNLW1tZk0adI8n2OHDh0Wah8tW7bMWmutlQcffHC+6zfbbLNMnDgxDRs2nOc92rVrVzdv3XXXzYknnpj7778/++67b6677rpFOiYAYMlSSgEAFbPhhhvm4IMPziWXXFJvvGfPnnnvvfdy/vnn5/XXX89ll12We+65Z4m972WXXZY77rgjL7/8co455phMnjw5AwYMSPLpk+4++OCDHHjggfn73/+ef/7zn7n//vszYMCA1NbWfqX3+fGPf5zzzjsvt912W8aOHZtTTz01Tz/9dE444YSvtJ9LL700M2fOzC677JJHH300b775Zu6999706dMnq6++es4555wknz4Zr3///hkwYEDuvPPOvPHGG3nkkUfy29/+Nkly7LHHZurUqTnggAPy5JNP5tVXX82NN96YsWPHJkl22mmn/OUvf8lf/vKXvPzyyzn66KPz73//+ytlnWvdddfNwQcfnH79+uUPf/hD3njjjYwePTrnnXde7r777oXez+DBg3PhhRfmV7/6VV599dU89dRTdd+XnXfeOdtuu2323nvv3HffffnXv/6VUaNG5Wc/+1mefPLJTJ8+Pccee2weeeSRjBs3Lo8//nhGjx79lUpBAODro5QCACrqv//7v+e5ZKxr1665/PLLc9lll2XjjTfO3//+9/k+mW5RnXvuuTnvvPOy8cYb569//Wv++Mc/1p1ZU11dnccffzy1tbXZZZdd0r1795xwwglp3bp1vftXLYzjjz8+gwYNyqBBg7Lhhhvm3nvvzV133ZUuXbp8pf106dIlTz75ZNZee+3sv//+WXvttfNf//Vf6dWrV/7v//4vbdq0qZt7xRVX5Pvf/36OPvrorL/++vnhD3+Yjz76KMmnZ1099NBDmTZtWnr06JHNN988v/71r+suoRswYED69++ffv36pUePHuncuXN69er1lbJ+1nXXXZd+/fpl0KBBWW+99bLXXnvlb3/7Wzp27LjQ++jfv38uvvjiXH755enWrVv22GOPuqf3VVVV5e67786OO+6YAQMGZN11180BBxyQf/3rX2nfvn0aNGiQ999/P/369cu6666b/fbbL7vuumvOPPPMRT4mAGDJqSo+/7dAAAAAAPiaOVMKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAonVIKAAAAgNIppQAAAAAo3f8HlSZa649kio8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Count the number of unique SMILES\n",
    "unique_smiles_count = df_train['SMILES'].nunique()\n",
    "print(f\"Number of unique SMILES: {unique_smiles_count}\")\n",
    "\n",
    "# Find the repeated SMILES\n",
    "smiles_counts = df_train['SMILES'].value_counts()\n",
    "repeated_smiles = smiles_counts[smiles_counts > 1]\n",
    "print(f\"Number of repeated SMILES: {len(repeated_smiles)}\")\n",
    "#print(\"Repeated SMILES strings and their counts:\")\n",
    "#print(repeated_smiles)\n",
    "\n",
    "# Count the occurrences of each SMILES string\n",
    "smiles_counts = df_train['SMILES'].value_counts()\n",
    "\n",
    "# Separate unique and repeated SMILES\n",
    "unique_smiles = smiles_counts[smiles_counts == 1]\n",
    "repeated_smiles = smiles_counts[smiles_counts >= 1]\n",
    "\n",
    "# Plotting histograms\n",
    "plt.figure(figsize=(12, 6))\n",
    "\n",
    "# Histogram for repeated SMILES\n",
    "plt.subplot(1, 1, 1)  # 1 row, 2 columns, second subplot\n",
    "plt.hist(repeated_smiles, bins=30, color='blue', edgecolor='black')\n",
    "plt.title('Repeated SMILES Occurrences')\n",
    "plt.xlabel('Number of Occurrences')\n",
    "plt.ylabel('Frequency')\n",
    "\n",
    "# Show plot\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "10a7d837-d8d1-4bfd-a3ec-08b213e13a71",
   "metadata": {},
   "source": [
    "We observe that most SMILES appear only once in the data set, but there are few SMILES that are measured multiple times (up to 15 times)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "269dec98",
   "metadata": {},
   "source": [
    "# <center> II/ preprocessing, cleaning and feature engineering,"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6c1eb2a3",
   "metadata": {},
   "source": [
    "##### After adding data (cddd or molecular property), performing one-hot encoding, handling nan, checking the correlation between features and if there are constant features, we remove the least important features using random forest. Indeed, we had a lot of molecule information (a lot of ECFP and cddd) and some was useless. Therefore, our model can devote all its energy to learning the relevant features. Of course, the number of features removed is a hyperparameter. We show in the section on Random forests that our feature engineering strategy is useful.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "91d812b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.read_csv('train.csv')\n",
    "df_test = pd.read_csv('test.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "d3bdebad-fee7-4e23-9cb8-70d746e7529c",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "d3bdebad-fee7-4e23-9cb8-70d746e7529c",
    "outputId": "853042c2-0fa4-4ed3-ea4d-53760c05e3fd"
   },
   "outputs": [],
   "source": [
    "def rand_forest(df_train, select, thresh):\n",
    "\n",
    "    # We select only the features that we want to study\n",
    "    if select == 'ECFP' :\n",
    "        X_train = df_train.iloc[:, 1:1024]\n",
    "        y_train = df_train[['RT']].squeeze()\n",
    "\n",
    "    elif select == 'cddd' :\n",
    "            X_train = df_train.iloc[:,1024 :1589]\n",
    "            y_train = df_train[['RT']].squeeze()\n",
    "\n",
    "    else : print('error select must be equal to ECFP or cddd')\n",
    "\n",
    "    # Create and train random forest model\n",
    "    rf_model = RandomForestRegressor(n_estimators=100, random_state=my_seed) \n",
    "    rf_model.fit(X_train, y_train)\n",
    "\n",
    "    # We select features depending on their importances\n",
    "    sfm = SelectFromModel(rf_model, threshold=thresh)\n",
    "\n",
    "    # we get the index of the unwanted features\n",
    "    feature_indices = ~sfm.get_support()\n",
    "\n",
    "    # we obtain the names of the unwanted features\n",
    "    dropped_feature_names = X_train.columns[feature_indices]\n",
    "   \n",
    "    return dropped_feature_names\n",
    "\n",
    "\n",
    "\n",
    "def merge_cddd(df1):\n",
    "    df2 = pd.read_csv('cddd.csv')\n",
    "    # left keep all df1 row and delete the non corresponding df2's ones\n",
    "    df_merged = pd.merge(df1, df2, on='SMILES', how='left')\n",
    "    \n",
    "    # We replace the nan by 0\n",
    "    df_merged = df_merged.fillna(0)\n",
    "\n",
    "    return df_merged\n",
    "\n",
    "\n",
    "\n",
    "def smiles_to_descriptors(smiles):\n",
    "\n",
    "    try:\n",
    "\n",
    "        mol = Chem.MolFromSmiles(smiles)\n",
    "\n",
    "        if mol:\n",
    "\n",
    "            logp = Descriptors.MolLogP(mol) # LogP (coefficient de partage octanol/eau).\n",
    "\n",
    "            molwt = Descriptors.MolWt(mol) # MOLWT Poids moléculaire\n",
    "\n",
    "            return logp, molwt\n",
    "\n",
    "        else:\n",
    "\n",
    "            return float('nan'), float('nan')\n",
    "\n",
    "    except:\n",
    "\n",
    "        return float('nan'), float('nan')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8e0dbf9c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def processing(df_train, df_test, threshold):\n",
    "    \n",
    "    \n",
    "    # add cddd to the dataframes\n",
    "    df_train = merge_cddd(df_train)\n",
    "    df_test = merge_cddd(df_test)\n",
    "    \n",
    "    # We use rdkit library to add the molecular weights and log P of all molecules thanks to the SMILES\n",
    "    df_train[['LogP', 'MolWt']] = df_train['SMILES'].apply(lambda x: pd.Series(smiles_to_descriptors(x)))\n",
    "    df_test[['LogP', 'MolWt']] = df_test['SMILES'].apply(lambda x: pd.Series(smiles_to_descriptors(x)))\n",
    "\n",
    "    # We drop the unwanted features\n",
    "    df_train = df_train.drop(['mol', 'SMILES', 'Compound'], axis=1)\n",
    "    df_test = df_test.drop(['mol', 'SMILES', 'Compound'], axis=1)\n",
    "\n",
    "    # We transform lab in one's hot encoding\n",
    "    df_train= pd.get_dummies(df_train, columns=['Lab'])\n",
    "    df_test= pd.get_dummies(df_test, columns=['Lab'])\n",
    "\n",
    "    # We use the rand_forest function in a way to remove useless ECFP and useless cddd\n",
    "    drop_ECFP_name = rand_forest(df_train, 'ECFP', threshold)\n",
    "    drop_cddd_name = rand_forest(df_train, 'cddd', threshold)\n",
    "\n",
    "    df_train = df_train.drop(columns=drop_ECFP_name)\n",
    "    df_train = df_train.drop(columns=drop_cddd_name)\n",
    "    df_test = df_test.drop(columns=drop_ECFP_name)\n",
    "    df_test = df_test.drop(columns=drop_cddd_name)\n",
    "     \n",
    "    # Now we want to remove correlated features\n",
    "    # Compute the correlation matrix\n",
    "    corr_matrix = df_train.corr().abs()\n",
    "\n",
    "    # Select upper triangle of correlation matrix\n",
    "    upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool_))\n",
    "\n",
    "    # Find index of feature columns with correlation greater than 0.8 or 0.9\n",
    "    to_drop = [column for column in upper.columns if any(upper[column]> 0.97)]\n",
    "\n",
    "    # Drop features \n",
    "    df_train = df_train.drop(columns=to_drop)\n",
    "    df_test = df_test.drop(columns=to_drop)\n",
    "\n",
    "    return df_train, df_test\n",
    "\n",
    "\n",
    "\n",
    "df_process_train, df_process_test = processing(df_train, df_test, 1.32476761374679e-5) \n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce68fa54-9ea8-4da5-8f17-7a761feba9ec",
   "metadata": {
    "id": "ce68fa54-9ea8-4da5-8f17-7a761feba9ec"
   },
   "source": [
    "# <center> III/ Training and tuning a linear method, e.g. with regularisation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "a00263a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train = df_process_train.drop('RT', axis=1)\n",
    "y_train = df_process_train['RT']\n",
    "X_test = df_process_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "d34a745b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "|   iter    |  target   |   alpha   |\n",
      "-------------------------------------\n",
      "| \u001b[39m1        \u001b[39m | \u001b[39m-5.169   \u001b[39m | \u001b[39m0.3745   \u001b[39m |\n",
      "| \u001b[39m2        \u001b[39m | \u001b[39m-9.643   \u001b[39m | \u001b[39m0.9507   \u001b[39m |\n",
      "| \u001b[39m3        \u001b[39m | \u001b[39m-9.14    \u001b[39m | \u001b[39m0.732    \u001b[39m |\n",
      "| \u001b[39m4        \u001b[39m | \u001b[39m-7.47    \u001b[39m | \u001b[39m0.5987   \u001b[39m |\n",
      "| \u001b[35m5        \u001b[39m | \u001b[35m-3.33    \u001b[39m | \u001b[35m0.156    \u001b[39m |\n",
      "| \u001b[35m6        \u001b[39m | \u001b[35m-3.33    \u001b[39m | \u001b[35m0.156    \u001b[39m |\n",
      "| \u001b[35m7        \u001b[39m | \u001b[35m-2.254   \u001b[39m | \u001b[35m0.05809  \u001b[39m |\n",
      "| \u001b[39m8        \u001b[39m | \u001b[39m-9.51    \u001b[39m | \u001b[39m0.8662   \u001b[39m |\n",
      "| \u001b[39m9        \u001b[39m | \u001b[39m-7.498   \u001b[39m | \u001b[39m0.6011   \u001b[39m |\n",
      "| \u001b[39m10       \u001b[39m | \u001b[39m-8.845   \u001b[39m | \u001b[39m0.7081   \u001b[39m |\n",
      "| \u001b[39m11       \u001b[39m | \u001b[39m-2.591   \u001b[39m | \u001b[39m2.163e-05\u001b[39m |\n",
      "| \u001b[35m12       \u001b[39m | \u001b[35m-2.059   \u001b[39m | \u001b[35m0.04228  \u001b[39m |\n",
      "| \u001b[39m13       \u001b[39m | \u001b[39m-4.165   \u001b[39m | \u001b[39m0.2556   \u001b[39m |\n",
      "| \u001b[35m14       \u001b[39m | \u001b[35m-1.887   \u001b[39m | \u001b[35m0.03022  \u001b[39m |\n",
      "| \u001b[39m15       \u001b[39m | \u001b[39m-6.026   \u001b[39m | \u001b[39m0.4655   \u001b[39m |\n",
      "| \u001b[39m16       \u001b[39m | \u001b[39m-2.772   \u001b[39m | \u001b[39m0.1062   \u001b[39m |\n",
      "| \u001b[35m17       \u001b[39m | \u001b[35m-1.739   \u001b[39m | \u001b[35m0.02244  \u001b[39m |\n",
      "| \u001b[39m18       \u001b[39m | \u001b[39m-4.631   \u001b[39m | \u001b[39m0.3117   \u001b[39m |\n",
      "| \u001b[39m19       \u001b[39m | \u001b[39m-3.761   \u001b[39m | \u001b[39m0.2038   \u001b[39m |\n",
      "| \u001b[35m20       \u001b[39m | \u001b[35m-1.626   \u001b[39m | \u001b[35m0.01693  \u001b[39m |\n",
      "=====================================\n",
      "Best parameters for Lasso:  {'alpha': np.float64(0.016933570836199577)}\n",
      "|   iter    |  target   |  alpha_1  |  alpha_2  | lambda_1  | lambda_2  |\n",
      "-------------------------------------------------------------------------\n",
      "| \u001b[39m1        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0003752\u001b[39m | \u001b[39m0.0009508\u001b[39m | \u001b[39m0.0007323\u001b[39m | \u001b[39m0.0005991\u001b[39m |\n",
      "| \u001b[39m2        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0001569\u001b[39m | \u001b[39m0.0001568\u001b[39m | \u001b[39m5.903e-05\u001b[39m | \u001b[39m0.0008663\u001b[39m |\n",
      "| \u001b[39m3        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0006015\u001b[39m | \u001b[39m0.0007084\u001b[39m | \u001b[39m2.156e-05\u001b[39m | \u001b[39m0.0009699\u001b[39m |\n",
      "| \u001b[35m4        \u001b[39m | \u001b[35m-1.456   \u001b[39m | \u001b[35m0.0008326\u001b[39m | \u001b[35m0.0002131\u001b[39m | \u001b[35m0.0001826\u001b[39m | \u001b[35m0.0001842\u001b[39m |\n",
      "| \u001b[39m5        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0003049\u001b[39m | \u001b[39m0.0005252\u001b[39m | \u001b[39m0.0004325\u001b[39m | \u001b[39m0.0002919\u001b[39m |\n",
      "| \u001b[39m6        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0006122\u001b[39m | \u001b[39m0.0001404\u001b[39m | \u001b[39m0.0002929\u001b[39m | \u001b[39m0.000367 \u001b[39m |\n",
      "| \u001b[39m7        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0004566\u001b[39m | \u001b[39m0.0007854\u001b[39m | \u001b[39m0.0002005\u001b[39m | \u001b[39m0.0005147\u001b[39m |\n",
      "| \u001b[35m8        \u001b[39m | \u001b[35m-1.456   \u001b[39m | \u001b[35m0.0005928\u001b[39m | \u001b[35m4.74e-05 \u001b[39m | \u001b[35m0.0006079\u001b[39m | \u001b[35m0.0001714\u001b[39m |\n",
      "| \u001b[39m9        \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m6.599e-05\u001b[39m | \u001b[39m0.0009489\u001b[39m | \u001b[39m0.0009657\u001b[39m | \u001b[39m0.0008086\u001b[39m |\n",
      "| \u001b[39m10       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0003053\u001b[39m | \u001b[39m9.857e-05\u001b[39m | \u001b[39m0.0006845\u001b[39m | \u001b[39m0.0004407\u001b[39m |\n",
      "| \u001b[35m11       \u001b[39m | \u001b[35m-1.456   \u001b[39m | \u001b[35m0.0009939\u001b[39m | \u001b[35m0.0006819\u001b[39m | \u001b[35m0.0008788\u001b[39m | \u001b[35m3.136e-05\u001b[39m |\n",
      "| \u001b[39m12       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0005709\u001b[39m | \u001b[39m7.225e-05\u001b[39m | \u001b[39m0.0006627\u001b[39m | \u001b[39m0.0001481\u001b[39m |\n",
      "| \u001b[35m13       \u001b[39m | \u001b[35m-1.456   \u001b[39m | \u001b[35m0.0004873\u001b[39m | \u001b[35m0.000837 \u001b[39m | \u001b[35m0.0009639\u001b[39m | \u001b[35m5.389e-06\u001b[39m |\n",
      "| \u001b[39m14       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0009514\u001b[39m | \u001b[39m0.0009912\u001b[39m | \u001b[39m0.0003857\u001b[39m | \u001b[39m1.467e-05\u001b[39m |\n",
      "| \u001b[35m15       \u001b[39m | \u001b[35m-1.456   \u001b[39m | \u001b[35m4.687e-05\u001b[39m | \u001b[35m0.0008919\u001b[39m | \u001b[35m0.0009977\u001b[39m | \u001b[35m7.973e-06\u001b[39m |\n",
      "| \u001b[39m16       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m1.618e-05\u001b[39m | \u001b[39m0.0009593\u001b[39m | \u001b[39m0.000122 \u001b[39m | \u001b[39m1.038e-05\u001b[39m |\n",
      "| \u001b[39m17       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m7.502e-05\u001b[39m | \u001b[39m2.99e-05 \u001b[39m | \u001b[39m0.0009005\u001b[39m | \u001b[39m8.25e-06 \u001b[39m |\n",
      "| \u001b[39m18       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m3.86e-05 \u001b[39m | \u001b[39m0.0004895\u001b[39m | \u001b[39m0.0009624\u001b[39m | \u001b[39m2.862e-06\u001b[39m |\n",
      "| \u001b[39m19       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m2.293e-05\u001b[39m | \u001b[39m0.0009788\u001b[39m | \u001b[39m0.0008533\u001b[39m | \u001b[39m7.714e-06\u001b[39m |\n",
      "| \u001b[39m20       \u001b[39m | \u001b[39m-1.456   \u001b[39m | \u001b[39m0.0008057\u001b[39m | \u001b[39m0.0009883\u001b[39m | \u001b[39m0.0009476\u001b[39m | \u001b[39m3.333e-06\u001b[39m |\n",
      "=========================================================================\n",
      "Best parameters for Bayesian Ridge:  {'alpha_1': np.float64(4.687320311687288e-05), 'alpha_2': np.float64(0.0008919202555759458), 'lambda_1': np.float64(0.0009976820342492425), 'lambda_2': np.float64(7.972619213876703e-06)}\n",
      "Best parameters for OrthogonalMatchingPursuit:  {'n_nonzero_coefs': 96}\n",
      "Best score (neg_mean_squared_error):  -1.4182191115322031\n"
     ]
    }
   ],
   "source": [
    "# Ignore non-convergence warnings\n",
    "warnings.filterwarnings('ignore', category=ConvergenceWarning)\n",
    "\n",
    "# Generic Bayesian optimization function\n",
    "def optimize_model(model_class, param_bounds, model_params, cv_params):\n",
    "    def cv_score(**params):\n",
    "        model = model_class(**{**model_params, **params})\n",
    "        cv_score = cross_val_score(model, **cv_params)\n",
    "        return np.mean(cv_score)\n",
    "\n",
    "    optimizer = BayesianOptimization(f=cv_score, pbounds=param_bounds, random_state=42)\n",
    "    optimizer.maximize(init_points=10, n_iter=10)\n",
    "    return optimizer.max['params']\n",
    "\n",
    "# Cross-validation parameters\n",
    "cv_params = {'X': X_train, 'y': y_train, 'cv': 5, 'scoring': 'neg_mean_squared_error'}\n",
    "\n",
    "## Optimization for Lasso\n",
    "params_lasso = {'alpha': (0.00001, 1)}\n",
    "best_params_lasso = optimize_model(Lasso, params_lasso, {'max_iter': 1000}, cv_params)\n",
    "print(\"Best parameters for Lasso: \", best_params_lasso)\n",
    "#\n",
    "## Optimization for Bayesian Ridge\n",
    "params_bayesian_ridge = {'alpha_1': (1e-6, 1e-3), 'alpha_2': (1e-6, 1e-3), 'lambda_1': (1e-6, 1e-3), 'lambda_2': (1e-6, 1e-3)}\n",
    "best_params_bayesian_ridge = optimize_model(BayesianRidge, params_bayesian_ridge, {}, cv_params)\n",
    "print(\"Best parameters for Bayesian Ridge: \", best_params_bayesian_ridge)\n",
    "\n",
    "# Define the grid parameters\n",
    "param_grid_omp = {'n_nonzero_coefs': range(1, 100, 5)}  # Par exemple, tester de 100 à 10000 par pas de 100\n",
    "# Initialize the model\n",
    "omp_model = OrthogonalMatchingPursuit()\n",
    "# Initialize GridSearchCV\n",
    "grid_search_omp = GridSearchCV(omp_model, param_grid_omp, cv=5, scoring='neg_mean_squared_error')\n",
    "# Start gridsearch\n",
    "grid_search_omp.fit(X_train, y_train)\n",
    "# Retrieve the best settings and the best score\n",
    "best_params_omp = grid_search_omp.best_params_\n",
    "best_score_omp = grid_search_omp.best_score_\n",
    "print(\"Best parameters for OrthogonalMatchingPursuit: \", best_params_omp)\n",
    "print(\"Best score (neg_mean_squared_error): \", best_score_omp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d3a7d569",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>BayesianRidge(alpha_1=np.float64(4.687320311687288e-05),\n",
       "              alpha_2=np.float64(0.0008919202555759458),\n",
       "              lambda_1=np.float64(0.0009976820342492425),\n",
       "              lambda_2=np.float64(7.972619213876703e-06))</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;BayesianRidge<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.linear_model.BayesianRidge.html\">?<span>Documentation for BayesianRidge</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>BayesianRidge(alpha_1=np.float64(4.687320311687288e-05),\n",
       "              alpha_2=np.float64(0.0008919202555759458),\n",
       "              lambda_1=np.float64(0.0009976820342492425),\n",
       "              lambda_2=np.float64(7.972619213876703e-06))</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "BayesianRidge(alpha_1=np.float64(4.687320311687288e-05),\n",
       "              alpha_2=np.float64(0.0008919202555759458),\n",
       "              lambda_1=np.float64(0.0009976820342492425),\n",
       "              lambda_2=np.float64(7.972619213876703e-06))"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Instantiate ElasticNet with best settings\n",
    "model_Lasso_net = Lasso(**best_params_lasso, max_iter=1000)\n",
    "\n",
    "\n",
    "# Instantiate OrthogonalMatchingPursuit with best parameters\n",
    "\n",
    "# Make sure 'n_nonzero_coefs' is an integer\n",
    "\n",
    "n_nonzero_coefs = int(best_params_omp['n_nonzero_coefs']) if 'n_nonzero_coefs' in best_params_omp else 100\n",
    "\n",
    "model_omp = OrthogonalMatchingPursuit(n_nonzero_coefs=n_nonzero_coefs)\n",
    "\n",
    "\n",
    "\n",
    "# Instantiate BayesianRidge with best parameters\n",
    "\n",
    "model_bayesian_ridge = BayesianRidge(**best_params_bayesian_ridge)\n",
    "\n",
    "\n",
    "\n",
    "model_Lasso_net.fit(X_train, y_train)\n",
    "\n",
    "model_omp.fit(X_train, y_train)\n",
    "\n",
    "model_bayesian_ridge.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b853fbc-c90e-447b-88c9-dc2d7fab23fe",
   "metadata": {},
   "source": [
    "To compare the models, we will use 5-fold cross-validation on the training data. Note that this will probably lead to a slightly biased estimate of the test error, because the hyperparameters were tuned with cross-validation on the same data. However, we do not care much about an accurate and unbiased estimate of the test error here, but we would like to select the overall best model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "01601424-e9ad-4012-a8ca-1f3e3908ec0f",
   "metadata": {},
   "outputs": [],
   "source": [
    "bayes_ridge_score = cross_val_score(model_bayesian_ridge, X_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "efacc5e4-3de6-4daa-857f-ce8718975efd",
   "metadata": {},
   "outputs": [],
   "source": [
    "lasso_score = cross_val_score(model_Lasso_net, X_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "955abcd2-82e9-485b-8d4d-e007a53374ba",
   "metadata": {},
   "outputs": [],
   "source": [
    "omp_score = cross_val_score(model_omp, X_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "ceaf61fb-9381-47de-a218-745dc45ec730",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAGwCAYAAACq12GxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0xUlEQVR4nO3deXhU9aH/8c8QkgzZJkAggCYBjaxV2VQWa0CjCFxAVJSltMimtBAEpJUiyJZG0bJUr8VYICjVYi9gW0GlUkARkDUqipHLkomCLCJhCwlkvr8/uMzPEYFwMpOZcN6v55kH5qyf8IyTj+d8zzkOY4wRAACATVUJdgAAAIBgogwBAABbowwBAABbowwBAABbowwBAABbowwBAABbowwBAABbqxrsAKHO4/Fo3759io2NlcPhCHYcAABQBsYYHT9+XPXq1VOVKpc+9kMZuox9+/YpKSkp2DEAAIAFBQUFuvbaay+5DGXoMmJjYyWd+8eMi4sLchoAAFAWx44dU1JSkvf3+KVQhi7j/KmxuLg4yhAAAJVMWYa4MIAaAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGmUIAADYGk+tt4nTp0/L7XYHO0bISE5OltPpDHYMAEAIoAzZhNvt1tChQ4MdI2RkZ2erYcOGwY4BAAgBlCGbSE5OVnZ2dlAz5OfnKzMzU+PHj1dKSkpQsyQnJwd1/wCA0EEZsgmn0xkyR0JSUlJCJgsAAAygBgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtlZpylBmZqbatWunqKgoxcfHl2mdSZMmqXHjxoqOjlb16tWVnp6ujz/+OLBBAQBApVJpylBJSYl69eqlYcOGlXmdhg0b6sUXX9Rnn32mtWvXqn79+rrnnnt06NChACYFAACVSdVgByiryZMnS5JycnLKvE7fvn193s+YMUNz587Vp59+qrvuusuf8QAAQCVVacpQeZWUlCg7O1sul0s333zzRZcrLi5WcXGx9/2xY8cqIh4AAAiSSnOazKq3335bMTExcjqdmjlzpv79738rISHhostnZWXJ5XJ5X0lJSRWYFgAAVLSglqFJkybJ4XBc8rV58+Zy7aNjx47Kzc3VunXrdO+99+qhhx7SwYMHL7r8uHHjVFhY6H0VFBSUa/8AACC0BfU02fDhw9W7d+9LLlO/fv1y7SM6OlqpqalKTU1VmzZtdMMNN2ju3LkaN27cTy4fGRmpyMjIcu0TAFD5nD59Wm63O9gxQkpycrKcTmewYwRcUMtQQkLCJU9ZBYIxxmdMEAAAkuR2uzV06NBgxwgp2dnZatiwYbBjBFylGUDtdrt15MgRud1ulZaWKjc3V5KUmpqqmJgYSVLjxo2VlZWlnj176uTJk8rMzFT37t1Vt25dfffdd3rppZf09ddfq1evXkH8SQAAoSg5OVnZ2dnBjqH8/HxlZmZq/PjxSklJCWqW5OTkoO6/olSaMjRx4kQtWLDA+75FixaSpFWrVqlDhw6SpLy8PBUWFkqSwsLC9OWXX2rBggU6fPiwatasqVtuuUUffvihmjVrVuH5AQChzel0htRRkJSUlJDKczWrNGUoJyfnsvcYMsZ4/+50OrVkyZIApwIAAJXdVX9pPQAAwKVQhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1RhgAAgK1VmqfWV3YHDhxQYWFhsGMEVX5+vs+fduZyuZSYmBjsGAAAUYYqxIEDB/SL/r/UmZLiYEcJCZmZmcGOEHThEZFa+NqrFCIACAGUoQpQWFioMyXFKrouTR6nK9hxEGRVThdKu9eosLCQMgQAIYAyVIE8Tpc80QnBjgEAAH6AAdQAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWKEMAAMDWeGo9ACAkHDhwQIWFhcGOEXT5+fk+f9qZy+VSYmJiwPdDGQIABN2BAwf0i/6/1JmS4mBHCRmZmZnBjhB04RGRWvjaqwEvRJQhAEDQFRYW6kxJsYquS5PH6Qp2HISAKqcLpd1rVFhYSBkCANiHx+mSJzoh2DFgMwygBgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtkYZAgAAtnbFZejs2bOaPHmyCgoKApEHAACgQl1xGapataqee+45lZaWBiIPAABAhbJ0miw9PV2rV6/2cxQAAICKV9XKSp07d9a4ceO0fft2tWrVStHR0T7zu3fv7pdwAAAAgWapDA0bNkySNGPGjAvmORwOTqEBAIBKw1IZ8ng8/s4BAAAQFFxaDwAAbM1yGVqzZo26deum1NRU3XDDDerevbs+/PBDf2YDAAAIOEtlaOHChUpPT1dUVJQyMjI0fPhwVatWTXfddZdef/11f2cEAAAIGEtjhjIzMzV9+nSNGjXKO23kyJGaMWOGpk6dqr59+/otIAAAQCBZOjK0e/dudevW7YLp3bt31549e8odCgAAoKJYKkNJSUlauXLlBdNXrlyppKSkcocCAACoKJZOk40ZM0YZGRnKzc1Vu3bt5HA4tHbtWuXk5Gj27Nn+zggAABAwlm+6WKdOHf3xj3/Um2++KUlq0qSJFi1apB49evg1IAAAQCBdcRk6e/asMjMzNXDgQK1duzYQmQAAACoMT60HAAC2xlPrAQCArfHUegAAYGs8tR4AANiapdNkHo/noq9AFaHMzEy1a9dOUVFRio+Pv+L1H330UTkcDs2aNcvv2QAAQOV1xWXo7Nmzqlq1qrZv3x6IPBdVUlKiXr16eY9KXYm33npLH3/8serVqxeAZAAAoDK74tNkVatWVUpKSoWfCps8ebIkKScn54rW++abbzR8+HC999576tq162WXLy4uVnFxsff9sWPHrmh/AACgcrF0muypp57SuHHjdOTIEX/n8SuPx6P+/ftr7NixatasWZnWycrKksvl8r54vAgAAFc3SwOo//SnP+l///d/Va9ePaWkpFxwNdnWrVv9Eq68nn32WVWtWlUZGRllXmfcuHEaPXq09/2xY8coRAAAXMUslaH77rvPLzufNGmS9/TXxWzatEmtW7e+4m1v2bJFs2fP1tatW+VwOMq8XmRkpCIjI694fwAAoHKyVIaefvppv+x8+PDh6t279yWXqV+/vqVtf/jhhzp48KCSk5O900pLSzVmzBjNmjVLe/futbRdAABwdbFUhiTp6NGj+p//+R/t2rVLY8eOVY0aNbR161YlJibqmmuuKdM2EhISlJCQYDXCJfXv31/p6ek+0zp16qT+/fvrkUceCcg+AQBA5WOpDH366adKT0+Xy+XS3r17NWTIENWoUUNLly5Vfn6+Xn31VX/nlNvt1pEjR+R2u1VaWqrc3FxJUmpqqmJiYiRJjRs3VlZWlnr27KmaNWuqZs2aPtsIDw9XnTp11KhRI7/nAwAAlZOlq8lGjx6tAQMGaOfOnXI6nd7pnTt31gcffOC3cD80ceJEtWjRQk8//bROnDihFi1aqEWLFtq8ebN3mby8PBUWFgZk/wAA4Opk6cjQpk2b9PLLL18w/ZprrtG3335b7lA/JScn57L3GDLGXHI+44QAAMCPWToy5HQ6f/JmhHl5eapVq1a5QwEAAFQUS2WoR48emjJlis6cOSPp3MNZ3W63nnzyST3wwAN+DQgAABBIlsrQ888/r0OHDql27doqKipSWlqaUlNTFRsbq8zMTH9nBAAACBhLY4bi4uK0du1a/ec//9HWrVvl8XjUsmXLCy5lBwAACHWW7zMkSXfeeafuvPPOi86/8cYbtXz5ch5nAQAAQpal02RltXfvXu+4IgAAgFAU0DIEAAAQ6ihDAADA1ihDAADA1ihDAADA1ihDAADA1gJahl5++WUlJiYGchcAAADlUub7DP3pT38q80YzMjIkSX379r3yRAAAABWozGVo5syZPu8PHTqkU6dOKT4+XpJ09OhRRUVFqXbt2t4yBAAAEOrKfJpsz5493ldmZqaaN2+uHTt26MiRIzpy5Ih27Nihli1baurUqYHMCwAA4FeWxgxNmDBBL7zwgho1auSd1qhRI82cOVNPPfWU38IBAAAEmqUytH///p98zEZpaakOHDhQ7lAAAAAVxVIZuuuuuzRkyBBt3rxZxhhJ0ubNm/Xoo4/y5HoAAFCpWCpD8+bN0zXXXKNbb71VTqdTkZGRuu2221S3bl395S9/8XdGAACAgCnz1WQ/VKtWLS1fvlxfffWVvvzySxlj1KRJEzVs2NDf+QAAAALKUhk6r379+jLG6Prrr1fVquXaFAAAQFBYOk126tQpDRo0SFFRUWrWrJncbrekczdbfOaZZ/waEAAAIJAslaFx48bpk08+0erVq+V0Or3T09PTtWjRIr+FAwAACDRL57beeustLVq0SG3atJHD4fBOb9q0qXbt2uW3cAAAAIFm6cjQoUOHVLt27Qumnzx50qccAQAAhDpLZeiWW27RsmXLvO/PF6BXXnlFbdu29U8yAACACmDpNFlWVpbuvfdeffHFFzp79qxmz56tzz//XOvXr9eaNWv8nREAACBgLB0ZateundatW6dTp07p+uuv14oVK5SYmKj169erVatW/s4IAAAQMFd8ZOjMmTMaOnSoJkyYoAULFgQiEwAAQIW54iND4eHhWrp0aSCyAAAAVDhLp8l69uypt956y89RAAAAKp6lAdSpqamaOnWq1q1bp1atWik6OtpnfkZGhl/CAQAABJqlMvSXv/xF8fHx2rJli7Zs2eIzz+FwUIYAAEClYakM7dmzx985AAAAgsLSmCEAAICrhaUjQ5L09ddf65///KfcbrdKSkp85s2YMaPcwQAAACqCpTK0cuVKde/eXQ0aNFBeXp5+9rOfae/evTLGqGXLlv7OCAAAEDCWTpONGzdOY8aM0fbt2+V0OrV48WIVFBQoLS1NvXr18ndGAACAgLFUhnbs2KFf/epXkqSqVauqqKhIMTExmjJlip599lm/BgQAAAgkS2UoOjpaxcXFkqR69epp165d3nmHDx/2TzIAAIAKYGnMUJs2bfTRRx+padOm6tq1q8aMGaPPPvtMS5YsUZs2bfydEQAAIGAslaEZM2boxIkTkqRJkybpxIkTWrRokVJTUzVz5ky/BgQAAAgkS2Xouuuu8/49KipKL730kt8CAQDsq0rR0WBHQIioyM+C5fsMAQDgb9X2fBDsCLAhS2WoSpUqcjgcF51fWlpqORAAwL6KGtwhT7X4YMdACKhSdLTCyrGlMrR06VKf92fOnNG2bdu0YMECTZ482S/BAAD246kWL090QrBjwGYslaEePXpcMO3BBx9Us2bNtGjRIg0aNKjcwQAAACqCXx/Uetttt+n999/35yYBAAACym9lqKioSC+88IKuvfZaf20SAAAg4CydJqtevbrPAGpjjI4fP66oqCgtXLjQb+EAAPZS5XRhsCMgRFTkZ8FSGZo5c6ZPGapSpYpq1aql2267TdWrV/dbOACAPbhcLoVHREq71wQ7CkJIeESkXC5XwPdjqQwNGDDAzzEAAHaWmJioha+9qsJCjgzl5+crMzNT48ePV0pKSrDjBJXL5VJiYmLA92OpDH366adlXvamm26ysgsAgM0kJiZWyC++yiIlJUUNGzYMdgxbsFSGmjdvfsmbLkrnxhE5HA5uwAgAAEKa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rUcffVRbt27VCy+8oD/+8Y+SpOTkZEVEROiFF17QY489pu3bt2vq1KkXbCMsLEwDBgzQuHHjlJqa6nM6Kj09XW3bttV9992nZ599Vo0aNdK+ffu0fPly3XfffWrWrJnGjh2rBx98UA0aNNDXX3+tTZs26YEHHijXz5WRkaF27dpp+vTpuu+++7RixQq9++67PsuMGDFCQ4YMUevWrdWuXTstWrRIn376qc8h50mTJikjI0NxcXHq3LmziouLtXnzZn3//fcaPXp0uTIieMry2Z44caJatWqlZs2aqbi4WG+//bb3l9LMmTNVt25dNW/eXFWqVNHf//531alTR/Hx8UpPT9dNN92kfv36adasWTp79qx+/etfKy0t7bKnd2Ff0dHRGjZsmMaOHasaNWooOTlZ06dP16lTpzRo0CCfK3Cv1KW+52FBMAcswf/S0tLMr3/9a/PYY4+ZuLg4U716dfPkk0/6DLR7/fXXTf369U1kZKRp27at+ec//2kkmW3btvlsa9euXUaSmT59+gX7OXbsmBkxYoSpV6+eCQ8PN0lJSaZfv37G7Xab4uJi07t3b5OUlGQiIiJMvXr1zPDhw01RUdFFc0syS5cu9Zn24wHUxpy7Wujaa6811apVM926dTPPP/+8zwBqY4yZMmWKSUhIMDExMWbgwIEmIyPDtGnTxmeZv/71r6Z58+YmIiLCVK9e3dxxxx1myZIll/7HRUj64QDqy322p06dapo0aWKqVatmatSoYXr06GF2795tjDl3lWHz5s1NdHS0iYuLM3fddZfZunWrdz/5+fmme/fuJjo62sTGxppevXqZb7/9tqJ/XFQyRUVFZsSIESYhIcFERkaa9u3bewfd/9R33Pz58y/4Tnv66ad9LgIpy/c8rozDGG5MgJ/20UcfqUOHDvr666+VmJgY7DiW3X333apTp45ee+21YEcBgHLr0KGDmjdvrlmzZgU7ylWD02S4QHFxsQoKCjRhwgQ99NBDlaoInTp1SnPmzFGnTp0UFhamN954Q++//77+/e9/BzsaACBEMYAaF3jjjTfUqFEjFRYWavr06cGOc0UcDoeWL1+un//852rVqpX+9a9/afHixUpPTw92NABAiOI0GQAAsDWODAEAAFujDAEAAFujDAEAAFujDAEAAFujDAEAAFujDAGwvdWrV8vhcOjo0aN+37bD4dBbb73l9+0C8B/KEABb6dChgx5//PFgxwAQQihDAADA1ihDAEJWhw4dNGLECD3++OOqXr26EhMTlZ2drZMnT+qRRx5RbGysrr/+er3zzjvedb744gt16dJFMTExSkxMVP/+/XX48GFJ0oABA7RmzRrNnj1bDodDDodDe/fu9a67ZcsWtW7dWlFRUWrXrp3y8vJ88vz5z3/W9ddfr4iICDVq1OiC593t3LlTd9xxh5xOp5o2bcpjYIBKgjIEIKQtWLBACQkJ2rhxo0aMGKFhw4apV69eateunbZu3apOnTqpf//+OnXqlPbv36+0tDQ1b95cmzdv1rvvvqsDBw7ooYcekiTNnj1bbdu21ZAhQ7R//37t379fSUlJ3n2NHz9ef/zjH7V582ZVrVpVAwcO9M5bunSpRo4cqTFjxmj79u169NFH9cgjj2jVqlWSJI/Ho/vvv19hYWHasGGD5syZo9/97ncV+48FwJryP/geAAIjLS3N3H777d73Z8+eNdHR0aZ///7eafv37zeSzPr1682ECRPMPffc47ONgoICI8nk5eV5tzly5EifZVatWmUkmffff987bdmyZUaSKSoqMsYY065dOzNkyBCf9Xr16mW6dOlijDHmvffeM2FhYaagoMA7/5133jGSzNKlS63/IwAIOI4MAQhpN910k/fvYWFhqlmzpm688UbvtMTEREnSwYMHtWXLFq1atUoxMTHeV+PGjSVJu3btuqJ91a1b17tdSdqxY4fat2/vs3z79u21Y8cO7/zk5GRde+213vlt27a9op8VQHBUDXYAALiU8PBwn/cOh8NnmsPhkHTuNJXH41G3bt307LPPXrCd8+WmrPv64XZ/PO08Y4x3mvmJZ17/eHkAoYkjQwCuGi1bttTnn3+u+vXrKzU11ecVHR0tSYqIiFBpaekVb7tJkyZau3atz7R169apSZMmkqSmTZvK7XZr37593vnr168vx08DoKJQhgBcNX7zm9/oyJEj6tOnjzZu3Kjdu3drxYoVGjhwoLcA1a9fXx9//LH27t2rw4cP+xz5uZSxY8cqJydHc+bM0c6dOzVjxgwtWbJETzzxhCQpPT1djRo10i9/+Ut98skn+vDDDzV+/PiA/awA/IcyBOCqUa9ePX300UcqLS1Vp06d9LOf/UwjR46Uy+VSlSrnvu6eeOIJhYWFqWnTpqpVq5bcbneZtn3fffdp9uzZeu6559SsWTO9/PLLmj9/vjp06CBJqlKlipYuXari4mLdeuutGjx4sDIzMwP1owLwI4f5qRPdAAAANsGRIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGuUIQAAYGv/D+XAKk4tOcb2AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_comparison((bayes_ridge_score, lasso_score, omp_score), (\"bayes ridge\", \"lasso\", \"omp\")) # see function at the top"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "192f8128-648e-44de-9b8f-b38442cc7f3b",
   "metadata": {},
   "source": [
    "It looks like the tuned lasso is clearly worse than the other two methods."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d795d952-6cd3-4422-a843-18bd234dc7e7",
   "metadata": {
    "id": "d795d952-6cd3-4422-a843-18bd234dc7e7"
   },
   "source": [
    "# <center> IV/ Training and tuning of non-linear methods"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "tb9xoqsybZKR",
   "metadata": {
    "id": "tb9xoqsybZKR"
   },
   "source": [
    "# Random forest"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4fa8d0aa",
   "metadata": {},
   "source": [
    "##### Here we try a first \"simple\" nonlinear method. Random forest usually gives quite good results and can be a good way to check if other more advanced methods work well, by comparing their results with those of random forest."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "Z8M8-NIob9SG",
   "metadata": {
    "id": "Z8M8-NIob9SG"
   },
   "outputs": [],
   "source": [
    "rf_model = RandomForestRegressor(n_estimators=100, random_state = 42)\n",
    "\n",
    "rf_score = cross_val_score(rf_model, X_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "5Csmjm75uF5J",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "5Csmjm75uF5J",
    "outputId": "47f9f4ad-cadb-472f-a3a3-b48014f48df6"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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xwAAeAGnytDzzz/vUIZq1KihunXrqk2bNqpVq5bLwsF1EhISlJOT49EMhYWFysrK0vjx45WYmOjRLAkJCR5dPwDAezhVhgYNGuTiGHC3kJAQr9kTkpiY6DVZAABwqgxt2rSpytPeeOONzqwCAACgWjhVhlq2bFnpTRels+cRWSwWbsAIAAC8mlOX1i9cuFCNGjXSSy+9pK+++kpfffWVXnrpJTVu3FgLFizQjh07tHPnTu3YscPVeQEAAFzKqT1DTz31lP72t7+pe/fu9nE33nij4uPjNWHCBG3YsMFlAQEAANzJqT1D33zzjRo1anTe+EaNGum777674lAAAADVxakylJKSoieffFKnTp2yjystLdWTTz6plJQUl4UDAABwN6cOk82ePVs9e/ZUfHy8fvWrX0mSvv76a1ksFn3wwQcuDQgAAOBOTpWhW265RTt37tS8efP0/fffyxije+65RwMGDFB4eLirMwIAALiN088mCwsL4/EOAADA5zl1ztDcuXP14Ycf2of//Oc/Kzo6WmlpaSosLHRZOAAAAHdzqgw99dRTCg0NlSStWbNGL774oqZPn66YmBiNHj3apQEBAADcyanDZEVFRUpKSpIkvfPOO7rrrrs0bNgwtW/fXh07dnRlPgAAALdyas9QRESEfvrpJ0nSkiVLlJ6eLunsw0BPnjzpunQ/k5WVpbS0NIWFhSk6OrpK80yaNElNmzZVeHi4atWqpfT0dH355ZduyQcAAHyTU2Woc+fOGjJkiIYMGaKtW7eqR48ekqRvv/1WDRs2dGU+u7KyMvXr108jRoyo8jzJycl68cUX9c0332jlypVq2LChbr/9dh04cMAtGQEAgO9xqgz9/e9/V7t27XTgwAEtWLBAderUkSRt2LBB9957r0sDnjN58mSNHj1aLVq0qPI8AwYMUHp6uq677jo1b95cM2bMUElJiTZt2uSWjAAAwPc4dc5QdHS0XnzxxfPGT5482WH44Ycf1pQpUxQTE+NcOhcqKytTTk6OrFar/UaRF1JaWqrS0lL7cElJSXXEAwAAHuLUnqGqmjdvnsfLxAcffKCIiAiFhITo+eef16efflppOcvOzpbVarW/4uPjqzEtAACobk7fdLEqjDGVvj9p0qTz9ib90vr169W6dWunM3Tq1En5+fk6ePCgXn75Zd1999368ssvVa9evQtOn5mZ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36+PPvpIKSkpioqK0r333qsTJ07Yl9mxY0eNHDmy0u8neJ9z/25jxoxRTEyMOnfuLEmaMWOGWrRoofDwcMXHx+vhhx/WsWPH7POdO+z+ySefKCUlRREREeratav27Nljn6a8vFxjxoyxbw9//vOfz9seKtsWJee3x59bvny5IiMjJUm33XabLBaLli9fLklasGCBmjdvruDgYDVs2FDPPfecw7wNGzbUk08+qUGDBslqtWro0KGSpNWrV+vWW29VaGio4uPjlZGRoePHj9vne+mll3T99dcrJCREsbGxuuuuuySdPUy4YsUKzZw5UxaLRRaLRbt27bqcfzLPM7iqdOjQwURERJhRo0aZ77//3sybN8+EhYWZnJwc+zSvvPKKWbx4sdm+fbtZs2aNadu2renWrZv9/aysLNOsWTOH5Y4ePdrceuutxhhjKioqTPv27U3Pnj3N+vXrzdatW83YsWNNnTp1zE8//WSMMaZ58+bm97//vdmyZYvZunWrefvtt01+fv5Fc0sy9erVM6+88orZvn272bVrl1m2bJmRZA4fPmyMMWbt2rXGYrGY7OxsU1BQYGbOnGmio6ON1Wq1L2fevHkmJCTEvPrqq6agoMBMnjzZREVFmV/96lf2aXJyckxcXJxZsGCB2bFjh1mwYIGpXbu2yc3NdfbLDi+QkZFhGjRoYBYvXmy+/fZb84c//MHUqlXL/PTTT/ZtqW3btmblypVm48aNJikpyXTo0MHcfvvtZuPGjea///2vqVOnjpk2bZp9mVX5foL3OffvNm7cOPP999+bLVu2GGOMef75583nn39uduzYYZYuXWqaNGliRowYYZ9vzpw5JjAw0KSnp5v169ebDRs2mJSUFDNgwAD7NE8//bSxWq3mP//5j/nuu+/Mgw8+aCIjI03v3r3t01S2LRpjnN4ef660tNQUFBQYSWbBggVmz549prS01OTl5ZkaNWqYKVOmmIKCAjNnzhwTGhpq5syZY583MTHRREVFmWeeecZs27bNbNu2zWzatMlERESY559/3mzdutWsWrXKpKammkGDBhljjFm/fr0JCAgwb775ptm1a5fZuHGjmTlzpjHGmCNHjph27dqZoUOHmj179pg9e/aYM2fOuOTfsrpQhq4yHTp0MCkpKaaiosI+7rHHHjMpKSkXnWfdunVGkjl69Kgxxpjdu3ebgIAA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_comparison((bayes_ridge_score, omp_score, rf_score), (\"bayes ridge\", \"omp\", \"random forest\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ebcec6c9-7d71-41bd-a8bc-b9098da3a5a6",
   "metadata": {},
   "source": [
    "Random forests are clearly much better than linear methods, even without any hyperparameter tuning. This is a clear indicator that a non-linear method is needed for an accurate fit.\n",
    "\n",
    "Because the Random Forests are fast to train, we used them also to justify our preprocessing and feature selection pipeline."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "a6dd6585-705e-4119-a4db-d748dd9dda4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp_df_train = df_train.drop(['mol', 'SMILES', 'Compound', 'RT'], axis=1)\n",
    "tmp_df_train = pd.get_dummies(tmp_df_train, columns=['Lab'])\n",
    "rf_score_no_preprocessing = cross_val_score(rf_model, tmp_df_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "8581153f-809b-4674-acbd-7da3a5b9a42b",
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp_df_train_cddd = merge_cddd(df_train)\n",
    "tmp_df_train_cddd = tmp_df_train_cddd.drop(['mol', 'SMILES', 'Compound', 'RT'], axis=1)\n",
    "tmp_df_train_cddd = pd.get_dummies(tmp_df_train_cddd, columns=['Lab'])\n",
    "rf_score_with_cddd = cross_val_score(rf_model, tmp_df_train_cddd, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "98e4344b-f587-4a91-946f-5321b51909d9",
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp_df_train_cddd_rdkit = merge_cddd(df_train)\n",
    "tmp_df_train_cddd_rdkit[['LogP', 'MolWt']] = tmp_df_train_cddd_rdkit['SMILES'].apply(lambda x: pd.Series(smiles_to_descriptors(x)))\n",
    "tmp_df_train_cddd_rdkit = tmp_df_train_cddd_rdkit.drop(['mol', 'SMILES', 'Compound', 'RT'], axis=1)\n",
    "tmp_df_train_cddd_rdkit = pd.get_dummies(tmp_df_train_cddd_rdkit, columns=['Lab'])\n",
    "rf_score_with_cddd_rdkit = cross_val_score(rf_model, tmp_df_train_cddd_rdkit, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "61e14b39-7db4-49e5-89a5-fb3135d69135",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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V69+xUUBAACUFqfCULdu3TRhwgSdO3dO0oWbs9psNj377LP65z//6dICAQAA3MmpMDRt2jQdOXJENWrU0JkzZ9S+fXtFR0crJCSkVK5YDAAA4CpOnU1WuXJlrVmzRitWrNC2bduUm5urFi1aKC4uztX1AQAAuJVTYSjP7bffrttvv73Q+U2aNNE333yjiIiIK1kNAACA2zh90cWS2L9/v31cEQAAQFnk1jAEAABQ1hGGAACAVyMMAQAAr0YYAgAAXo0wBAAAvJpbw9A777yj8PBwd64CAADgipT4OkOvvvpqiTsdNmyYJKl3796XXxEAAEApKnEYmjFjhsPzI0eO6PTp0woNDZUknThxQhUrVlSNGjXsYQgAAKCsK/Fhsn379tkfCQkJatasmXbv3q1jx47p2LFj2r17t1q0aKGJEye6s14AAACXcmrM0AsvvKDXXntNDRo0sE9r0KCBZsyYoeeff95lxQEAALibU2EoLS2twNts5OTk6NChQ1dcFAAAQGlxKgx17NhRAwcO1JYtW2SMkSRt2bJFjz76KHeuBwAA5YpTYei///2vrrnmGt1yyy0KDAxUQECAWrVqpVq1aum9995zdY2SpISEBLVp00YVK1a0D9ouzvz589WpUyeFhYXJYrEoOTnZLbUBAIDyq8Rnk12sevXq+uabb7Rnzx798ssvMsaoYcOGql+/vqvrszt79qx69Oih1q1b6/333y/RMn///bfatm2rHj16aODAgW6rDQAAlF9OhaE8devWlTFG1113nSpUuKKuijV+/HhJUlJSUomX6du3ryRp//79JV4mOztb2dnZ9ueZmZklXhYAAJQ/Th0mO336tB555BFVrFhRjRs3ls1mk3ThYosvv/yySwssbZMnT5bVarU/IiIiPF0SAABwI6fC0OjRo/Xjjz9q1apVCgwMtE+Pi4vTp59+6rLiPGH06NHKyMiwPw4cOODpkgAAgBs5FYYWLlyo119/XbfddpssFot9eqNGjfT777+XuJ9x48bJYrEU+diyZYszJTotICBAlStXdngAAICrl1MDfY4cOaIaNWrkm/733387hKPiDB06VL169SqyTd26dS+3PAAAgBJzKgzdfPPNWrRokeLj4yXJHoDeffddtW7dusT9hIWFKSwszJkSAAAAXMKpMDR58mTddddd+vnnn3X+/HnNmjVLu3bt0vr167V69WpX1yhJstlsOnbsmGw2m3JycuzXDIqOjlalSpUkSTExMZo8ebLuvfdeSbK3P3jwoCQpJSVFklSzZk3VrFnTLXUCwJXIysqyn5TiLqmpqQ7/ulNkZKTD2FKgLLKYvEtIX6adO3fqP//5j7Zu3arc3Fy1aNFCo0aNUpMmTVxdoySpf//+mjNnTr7pK1euVGxsrKQLe6hmz56t/v37S7pwGv5DDz2Ub5mxY8dq3LhxJVpvZmamrFarMjIyGD8EwO327NmjQYMGeboMl0lMTHTrNeiAwlzO7+/LDkPnzp3ToEGD9MILL+jaa6+9okLLA8IQgNJUGnuGShN7huApbg1DkhQaGqpt27YRhgAAQJl0Ob+/nTq1/t5779XChQudWRQAAKBMcWoAdXR0tCZOnKh169apZcuWCg4Odpg/bNgwlxQHAADgbk4dJqtXr17hHVos2rt37xUVVZZwmAwAgPLncn5/O7VnaN++fU4VBgAAUNY4NWYIAADgauHUniFJ+uOPP/Tll1/KZrPp7NmzDvOmT59+xYUBAACUBqfC0PLly9W1a1fVq1dPKSkpuuGGG7R//34ZY9SiRQtX1wgAAOA2Th0mGz16tEaMGKGdO3cqMDBQ8+bN04EDB9S+fXv16NHD1TUCAAC4jVNhaPfu3XrwwQclSRUqVNCZM2dUqVIlTZgwQVOmTHFpgQAAAO7kVBgKDg5Wdna2JKl27dr6/fff7fOOHj3qmsoAAABKgVNjhm699VatXbtWjRo10j333KMRI0bop59+0vz583Xrrbe6ukYAAAC3cSoMTZ8+XadOnZIkjRs3TqdOndKnn36q6OhozZgxw6UFAgAAuJNTV6D2JlyBGgCA8sftN2oFAAC4Wjh1mMzHx0cWi6XQ+Tk5OU4XBAAAUJqcCkMLFixweH7u3Dlt375dc+bM0fjx411SGAAAQGlw6Zihjz/+WJ9++qm++OILV3XpcYwZAgCg/PHYmKFWrVpp2bJlruwSAADArVwWhs6cOaPXXntNderUcVWXAAAAbufUmKEqVao4DKA2xujkyZOqWLGi5s6d67LiAAAA3M2pMDRjxgyHMOTj46Pq1aurVatWqlKlisuKAwAAcDenwlD//v1dXAYAAIBnOBWGduzYUeK2TZs2dWYVAAAApcKpMNSsWbMiL7ooXRhHZLFYuAAjAAAo05w6m2z+/PmqV6+e3nzzTW3fvl3bt2/Xm2++qeuuu07z5s3T3r17tW/fPu3du9fV9QIAALiUU3uGJk2apFdffVV33323fVrTpk0VERGhF154QVu3bnVZgQAAAO7k1J6hn376SfXq1cs3vV69evr555+vuCgAAIDS4lQYatiwoV566SVlZWXZp2VnZ+ull15Sw4YNXVYcAACAuzl1mOztt99Wly5dFBERoRtvvFGS9OOPP8pisejrr792aYEAAADu5PSNWk+fPq25c+fql19+kTFGjRo1Uu/evRUcHOzqGj2KG7UCAFD+XM7vb6f2DElSxYoVNWjQIGcXBwAAKBOcCkNz5sxRWFiY7rnnHknSM888o8TERDVq1EiffPKJoqKiXFokAABXo6ysLNlsNk+X4TKRkZEKDAz0dBmXzanDZA0aNNBbb72l22+/XevXr1fHjh01c+ZMff3116pQoYLmz5/vjlo9gsNkAAB32bNnz1V1lCUxMVH169f3dBmSSuEw2YEDBxQdHS1JWrhwof71r39p0KBBatu2rWJjY53pEgAArxMZGanExES3riM1NVUJCQkaM2aM24/cREZGurV/d3EqDFWqVEl//fWXIiMjtXTpUj355JOSpMDAQJ05c8alBQIAcLUKDAwstT0pUVFRZWavTVnjVBi64447NGDAADVv3lx79uyxjx3atWuX6tat68r6AAAA3Mqpiy6+8cYbat26tY4cOaJ58+apWrVqkqStW7fqgQcecGmBAAAA7uTUnqHQ0FC9/vrr+aaPHz/e4fnjjz+uCRMmKCwszLnqAAAA3MypPUMlNXfuXGVmZrpzFQAAAFfErWHIyYtbAwAAlBq3hiEAAICyjjAEAAC8GmEIAAB4NcIQAADwam4NQ//+97+5nxcAACjTnLrOkCSdOHFCmzZt0uHDh5Wbm+swr1+/fpKkt95668qqAwAAcDOnwtBXX32lPn366O+//1ZISIgsFot9nsVisYchAACAss6pw2QjRozQww8/rJMnT+rEiRM6fvy4/XHs2DFX1wgAAOA2ToWhP//8U8OGDVPFihVdXQ8AAECpcioMderUSVu2bHF1LQAAAKXOqTFD99xzj0aOHKmff/5ZTZo0kZ+fn8P8rl27uqQ4AAAAd3MqDA0cOFCSNGHChHzzLBaLcnJyrqwqAACAUuLUYbLc3NxCH+4KQgkJCWrTpo0qVqyo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tdPMmTOVnZ3tsteH8iktLU2dO3f22PoJQx507ty5MtnXpc6ePeu2vl3B399fNWvWdNvtUvbv36+WLVtqxYoVmjp1qn766SctWbJEHTp00JAhQxzaTpgwQWlpaUpJSdEHH3yg0NBQxcXFKSEhIV+/y5YtU1pamn788UdNmjRJu3fv1o033ugQsKQLV41NS0vTH3/8oXXr1mnQoEH64IMP1KxZMx08eNAtr9kV7rrrLqWlpWn//v1677339NVXX+nxxx/P1+5y3rM8R44cUYcOHXTq1CmtWbMm370D77//fqWlpdkfrVu31sCBAx2mtWnTxuWv2RWCgoJUo0YNt/S9ZcsWtWzZUnv27NE777yjn3/+WQsWLFBMTIxGjBjh0Hb27NlKS0vTrl279MYbb+jUqVNq1aqVPvjgg3z9pqSk6ODBg9q8ebNGjRqlZcuW6YYbbtBPP/3k0K5x48ZKS0uTzWbTypUr1aNHD02ePFlt2rSx3wfSWxljdP78ebf0nZOTo9zcXLf07So1a9b07Kn/BiWSlZVl4uPjTfXq1U1AQIBp27at2bRpk33+7NmzjdVqdVhmwYIF5uK3eOzYsebGG28077//vqlXr56xWCwmNzc337ry+lqwYIG5/vrrTUBAgImLizM2m63Yvk6cOGEGDhxoqlevbkJCQkyHDh1McnJyvuXefvttU6dOHRMUFGT+9a9/mePHj9vbPPjgg6Zbt25m0qRJplatWiYqKsoYY8yOHTtMhw4dTGBgoKlataoZOHCgOXnypEPt77//vmnUqJHx9/c3NWvWNEOGDLHPK6625ORkExsbaypVqmRCQkJMixYtzObNm40xxuzfv9/84x//MKGhoaZixYqmUaNGZtGiRcYYY1auXGkk2V9D3vu3ZMkSExMTY4KDg02nTp3MwYMH7es6d+6ciY+PN1ar1VStWtU888wzpl+/fqZbt275tkfnzp3NNddcY06dOpVv3sXvW1RUlJkxY0a+Ni+++KLx8fExv/zyizHGmH379hlJZvv27Q7tcnJyTGxsrImKijLnz593eC2XOnTokAkLCzN9+vTJNy/P0aNHTa9evcw111xjgoKCzA033GA+/vhjhzbt27c38fHxZuTIkaZKlSomPDzcjB071qHNnj17zP/5P//HBAQEmIYNG5qlS5caSWbBggWFrjvvM3Sxp556ylStWtVh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DAAAeDVOrQcAAF6NMAQAALwaYQgAAHg1whAAAPBqhCEAAODVCEMAvN6qVatksVjccqFTi8WihQsXurxfAK5DGALgVWJjY/XEE094ugwAZQhhCAAAeDXCEIAyKzY2VvHx8XriiSdUpUoVhYeHKzExUX///bceeughhYSE6LrrrtPixYvty/z888+6++67ValSJYWHh6tv3746evSoJKl///5avXq1Zs2aJYvFIovFov3799uX3bp1q2666SZVrFhRbdq0UUpKikM9b731lq677jr5+/urQYMG+vDDDx3m//rrr2rXrp0CAwPVqFEjfffdd+57cwC4DGEIQJk2Z84chYWFadOmTYqPj9fgwYPVo0cPtWnTRtu2bVOnTp3Ut29fnT59WmlpaWrfvr2aNWumLVu2aMmSJTp06JB69uwpSZo1a5Zat26tgQMHKi0tTWlpaYqIiLCva8yYMXrllVe0ZcsWVahQQQ8//LB93oIFCzR8+HCNGDFCO3fu1KOPPqqHHnpIK1eulHThZr/33XeffH19tWHDBr399tsaNWpU6b5ZAJzj1L3uAaAUtG/f3tx222325+fPnzfBwcGmb9++9mlpaWlGklm/fr154YUXzJ133unQx4EDB4wkk5KSYu9z+PDhDm1WrlxpJJlly5bZpy1atMhIMmfOnDHGGNOmTRszcOBAh+V69Ohh7r77bmOMMd9++63x9fU1Bw4csM9fvHixkWQWLFjg/JsAwO3YMwSgTGvatKn9/76+vqpWrZqaNGlinxYeHi5JOnz4sLZu3aqVK1eqUqVK9kdMTIwk6ffff7+sddWqVcveryTt3r1bbdu2dWjftm1b7d692z4/MjJSderUsc9v3br1Zb1WAJ7BXesBlGl+fn4Ozy0Wi8M0i8Ui6cJhqtzcXHXp0kVTpkzJ109euCnpui7u99JpeYwx9mmmgHteX9oeQNnEniEAV40WLVpo165dqlu3rqKjox0ewcHBkiR/f3/l5ORcdt8NGzbUmjVrHKatW7dODRs2lCQ1atRINptNBw8etM9fv379FbwaAKWFMATgqjFkyBAdO3ZMDzzwgDZt2qS9e/dq6dKlevjhh+0BqG7dutq4caP279+vo0ePOuz5KcrIkSOVlJSkt99+W7/++qumT5+u+fPn6+mnn5YkxcXFqUGDBurXr59+/PFH/fDDDxozZozbXisA1yEMAbhq1K5dW2vXrlVOTo46deqkG264QcOHD5fVapWPz4Wvu6efflq+vr5q1KiRqlevLpvNVqK+u3fvrlmzZuk///mPGjdurHfeeUezZ89WbGysJMnHx0cLFixQdna2brnlFg0YMEAJCQnueqkAXMhiCjrQDQAA4CXYMwQAALwaYQgAAHg1whAAAPBqhCEAAODVCEMAAMCrEYYAAIBXIwwBAACvRhgCAABejTAEAAC8GmEIAAB4NcIQAADwav8fGGH+Hb6t9bwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_comparison((rf_score, rf_score_with_cddd_rdkit, rf_score_with_cddd, rf_score_no_preprocessing),\n",
    "                (\"our preprocessing\", \"CDDD and RDKIT\", \"with CDDD\", \"no preprocessing\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "f6a6ad8a-3ce0-41c0-b9df-7d430e16cd74",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input shape of CDDD + RDKIT preprocessing: (3500, 1562)\n",
      "Input shape of our preprocessing: (3500, 1522)\n"
     ]
    }
   ],
   "source": [
    "print(\"Input shape of CDDD + RDKIT preprocessing:\", tmp_df_train_cddd_rdkit.shape)\n",
    "print(\"Input shape of our preprocessing:\", X_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65c5e31d-c4ba-4e39-9b0f-d11f1b9b9fb4",
   "metadata": {},
   "source": [
    "Adding CDDD and RDKit Features clearly helps. Reducing the dimensionality slightly (from 1562 features to 1522) with our feature selection method, may help speed up training a bit, without reducing performance significantly."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6wI9Ccvsbc77",
   "metadata": {
    "id": "6wI9Ccvsbc77"
   },
   "source": [
    "# Neural Networks"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f512a97",
   "metadata": {},
   "source": [
    "##### Now let’s move on to the most interesting part (in our point of view): the neural network !\n",
    "\n",
    "##### In the course, we learned that all functions can be fitted by a neural network, but that doesn’t mean it’s always the best model. For example, if there is too little data, the neural network can’t learn well and the random forest can be a better model. So we first tried the neural network with a random architecture and random hyperparameters. At first, the results were not excellent. Then by manually testing different architectures and hyperparameter configurations, we finally got encouraging results. We quickly realized that we had to put a lot of energy into this part, and we designed a more sophisticated tuning with a Bayesian search and some creative tricks like multiplying by a hyperparameter the one-hot coded lab feature, because we think it’s a very important feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "e2b66fe2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from torch.utils.data import Dataset, DataLoader\n",
    "import torch\n",
    "\n",
    "class CustomDataset(Dataset):\n",
    "    def __init__(self, X, y):\n",
    "        self.X = X\n",
    "        self.y = y\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.X)\n",
    "\n",
    "    def __getitem__(self, idx):\n",
    "        row_X = self.X.iloc[idx]\n",
    "        row_y = self.y.iloc[idx]\n",
    "        x = torch.tensor(row_X, dtype=torch.float)\n",
    "        y = torch.tensor(row_y, dtype=torch.float)\n",
    "        return x, y\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "eaab7fd7-ea75-4c91-abc0-5f4fe9807213",
   "metadata": {
    "id": "eaab7fd7-ea75-4c91-abc0-5f4fe9807213"
   },
   "outputs": [],
   "source": [
    "# hyperparameters\n",
    "num_epochs = 90\n",
    "batch_size = 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "d9105fbd-f0b5-4d8a-a8d7-6469702747d5",
   "metadata": {
    "id": "d9105fbd-f0b5-4d8a-a8d7-6469702747d5"
   },
   "outputs": [],
   "source": [
    "# Network\n",
    "\n",
    "class Network(nn.Module):\n",
    "    def __init__(self, N_init, N1, N2, N3, N4):\n",
    "        super(Network, self).__init__()\n",
    "        self.linear1 = nn.Linear(N_init, N1)\n",
    "        self.linear2 = nn.Linear(N1, N2)\n",
    "        self.linear3 = nn.Linear(N2, N3)\n",
    "        self.linear4 = nn.Linear(N3, N4)\n",
    "        self.linear5 = nn.Linear(N4, 1)  # output : 1 for Retention time\n",
    "\n",
    "    def forward(self,x):\n",
    "        z = F.selu(self.linear1(x))\n",
    "        z = F.selu(self.linear2(z))\n",
    "        z = F.selu(self.linear3(z))\n",
    "        z = F.selu(self.linear4(z))\n",
    "        z = self.linear5(z)\n",
    "        return z\n",
    "\n",
    "class EarlyStopTraining:\n",
    "    def __init__(self, patience=7, min_delta=0):\n",
    "        self.patience = patience\n",
    "        self.min_delta = min_delta\n",
    "        self.counter = 0\n",
    "        self.best_loss = None\n",
    "        self.early_stop = False\n",
    "        self.best_model = None\n",
    "\n",
    "    def __call__(self, loss, model):\n",
    "        if self.best_loss is None:\n",
    "            self.best_loss = loss\n",
    "            self.best_model = copy.deepcopy(model.state_dict())\n",
    "        elif loss > self.best_loss - self.min_delta:\n",
    "            self.counter += 1\n",
    "            if self.counter >= self.patience:\n",
    "                self.early_stop = True\n",
    "        else:\n",
    "            self.best_loss = loss\n",
    "            self.best_model = copy.deepcopy(model.state_dict())\n",
    "            self.counter = 0\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "fe95a0dd-03ce-4ccd-b142-0ce734cf0f45",
   "metadata": {
    "id": "fe95a0dd-03ce-4ccd-b142-0ce734cf0f45"
   },
   "outputs": [],
   "source": [
    "## loss\n",
    "def loss(y_pred, y_hat):\n",
    "    return torch.sqrt(torch.mean((y_pred - y_hat) ** 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "436c6357",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[I 2024-11-26 17:35:53,788] A new study created in memory with name: no-name-7470f951-6f0b-4f2b-bdaa-74fe34380fab\n",
      "[I 2024-11-26 17:40:35,327] Trial 0 finished with value: 0.5712506199878176 and parameters: {'N1': 114, 'N2': 117, 'N3': 64, 'N4': 14, 'learning_rate': 0.0002051338263087451, 'lab_factor': 6}. Best is trial 0 with value: 0.5712506199878176.\n",
      "[I 2024-11-26 19:32:18,627] Trial 1 finished with value: 0.5183685021675711 and parameters: {'N1': 85, 'N2': 111, 'N3': 56, 'N4': 16, 'learning_rate': 0.00010994335574766199, 'lab_factor': 15}. Best is trial 1 with value: 0.5183685021675711.\n",
      "[I 2024-11-26 19:36:43,354] Trial 2 finished with value: 0.5376751549549345 and parameters: {'N1': 155, 'N2': 65, 'N3': 31, 'N4': 7, 'learning_rate': 0.0004059611610484307, 'lab_factor': 10}. Best is trial 1 with value: 0.5183685021675711.\n",
      "[I 2024-11-26 19:41:15,553] Trial 3 finished with value: 0.5353730397109144 and parameters: {'N1': 119, 'N2': 70, 'N3': 57, 'N4': 7, 'learning_rate': 0.0003839629299804173, 'lab_factor': 9}. Best is trial 1 with value: 0.5183685021675711.\n",
      "[I 2024-11-26 19:45:50,784] Trial 4 finished with value: 0.512355488452099 and parameters: {'N1': 121, 'N2': 105, 'N3': 32, 'N4': 13, 'learning_rate': 0.0015304852121831463, 'lab_factor': 5}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 19:50:11,373] Trial 5 finished with value: 0.5546894783036261 and parameters: {'N1': 135, 'N2': 62, 'N3': 23, 'N4': 20, 'learning_rate': 0.00853618986286683, 'lab_factor': 13}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 19:54:40,690] Trial 6 finished with value: 0.5234330851553294 and parameters: {'N1': 107, 'N2': 56, 'N3': 61, 'N4': 12, 'learning_rate': 0.00017541893487450815, 'lab_factor': 10}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 19:58:59,972] Trial 7 finished with value: 0.5281554327241985 and parameters: {'N1': 83, 'N2': 114, 'N3': 35, 'N4': 15, 'learning_rate': 0.0004201672054372534, 'lab_factor': 10}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 20:03:26,992] Trial 8 finished with value: 0.5185419203621127 and parameters: {'N1': 129, 'N2': 63, 'N3': 79, 'N4': 17, 'learning_rate': 0.007568292060167618, 'lab_factor': 14}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 20:07:48,055] Trial 9 finished with value: 0.5541904046814974 and parameters: {'N1': 134, 'N2': 115, 'N3': 25, 'N4': 8, 'learning_rate': 0.00012315571723666037, 'lab_factor': 8}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 20:12:15,534] Trial 10 finished with value: 0.5290872312445641 and parameters: {'N1': 166, 'N2': 97, 'N3': 42, 'N4': 10, 'learning_rate': 0.002178426875100557, 'lab_factor': 5}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 20:16:40,358] Trial 11 finished with value: 0.5363062345799928 and parameters: {'N1': 81, 'N2': 98, 'N3': 48, 'N4': 17, 'learning_rate': 0.0015633321567838487, 'lab_factor': 15}. Best is trial 4 with value: 0.512355488452099.\n",
      "[I 2024-11-26 20:21:00,474] Trial 12 finished with value: 0.5118109782791612 and parameters: {'N1': 98, 'N2': 99, 'N3': 45, 'N4': 11, 'learning_rate': 0.002807091545412437, 'lab_factor': 12}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:25:20,575] Trial 13 finished with value: 0.522234598321643 and parameters: {'N1': 99, 'N2': 86, 'N3': 41, 'N4': 10, 'learning_rate': 0.00349404333081963, 'lab_factor': 12}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:29:54,271] Trial 14 finished with value: 0.5136254396366429 and parameters: {'N1': 144, 'N2': 97, 'N3': 32, 'N4': 12, 'learning_rate': 0.0008853649341650572, 'lab_factor': 7}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:34:13,800] Trial 15 finished with value: 0.5196949221399882 and parameters: {'N1': 98, 'N2': 85, 'N3': 46, 'N4': 10, 'learning_rate': 0.003944479816467623, 'lab_factor': 12}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:38:37,217] Trial 16 finished with value: 0.5379729614349659 and parameters: {'N1': 98, 'N2': 105, 'N3': 70, 'N4': 5, 'learning_rate': 0.0010317331813264918, 'lab_factor': 12}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:43:08,815] Trial 17 finished with value: 0.5438303812776875 and parameters: {'N1': 112, 'N2': 77, 'N3': 39, 'N4': 13, 'learning_rate': 0.0038736545599968725, 'lab_factor': 5}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:47:53,223] Trial 18 finished with value: 0.5280987764233471 and parameters: {'N1': 102, 'N2': 105, 'N3': 53, 'N4': 20, 'learning_rate': 0.0021932608435924436, 'lab_factor': 8}. Best is trial 12 with value: 0.5118109782791612.\n",
      "[I 2024-11-26 20:52:53,002] Trial 19 finished with value: 0.5337284798815203 and parameters: {'N1': 121, 'N2': 89, 'N3': 20, 'N4': 11, 'learning_rate': 0.0009029245888295044, 'lab_factor': 11}. Best is trial 12 with value: 0.5118109782791612.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best hyperparameters:  {'N1': 98, 'N2': 99, 'N3': 45, 'N4': 11, 'learning_rate': 0.002807091545412437, 'lab_factor': 12}\n"
     ]
    }
   ],
   "source": [
    "# Ignore FutureWarning\n",
    "warnings.simplefilter(action='ignore', category=FutureWarning)\n",
    "\n",
    "# Objective function for Bayesian optimization\n",
    "def objective(trial):\n",
    "    # Hyperparameter Suggestion\n",
    "    N1 = trial.suggest_int('N1', 80, 170)\n",
    "    N2 = trial.suggest_int('N2', 50, 120)\n",
    "    N3 = trial.suggest_int('N3', 20, 80)\n",
    "    N4 = trial.suggest_int('N4', 5, 20)\n",
    "    learning_rate = trial.suggest_float('learning_rate', 1e-4, 1e-2, log=True)\n",
    "    lab_factor = trial.suggest_int('lab_factor', 5, 15)\n",
    "    \n",
    "    \n",
    "    # Parameters for cross-validation\n",
    "    kf = KFold(n_splits=5, shuffle=True, random_state=my_seed)\n",
    "    for train_index, val_index in kf.split(df_process_train):\n",
    "        # Split data based on indices\n",
    "        df_fold_train = df_process_train.iloc[train_index]\n",
    "        df_process_val =  df_process_train.iloc[val_index]\n",
    "\n",
    "\n",
    "    y_train = df_fold_train['RT']\n",
    "    X_train = df_fold_train.drop(['RT'], axis=1)\n",
    "    X_train.iloc[:, -24:] = X_train.iloc[:, -24:] * lab_factor\n",
    "\n",
    "    dataset = CustomDataset(X_train, y_train)\n",
    "    # Creating the DataLoader\n",
    "    data_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True)\n",
    "    \n",
    "    torch.manual_seed(my_seed)\n",
    "    np.random.seed(my_seed)\n",
    "\n",
    "    # Modifying the model to use suggested hyperparameters\n",
    "    model = Network(X_train.shape[1] ,N1, N2, N3, N4)\n",
    "    \n",
    "\n",
    "    optimizer = torch.optim.Adam(params=model.parameters(), lr=learning_rate, weight_decay=1e-5)\n",
    "    # We stop gradient descent on the training loss just to avoid unnecessary computation\n",
    "    # Note that this is different from standard early stopping on a validation set as seen in class!\n",
    "    early_stopping = EarlyStopTraining(patience=10)\n",
    "\n",
    "    # training loop\n",
    "    for epoch in range(num_epochs):\n",
    "        train_loss_avg = 0\n",
    "        num_batches = 0\n",
    "\n",
    "        for batch in data_loader:\n",
    "            x, y_true = batch\n",
    "            x, y_true = x, y_true\n",
    "\n",
    "            # Forward propagation \n",
    "            y_pred = model(x)\n",
    "\n",
    "            # Loss computation\n",
    "            loss_value = loss(y_pred, y_true.unsqueeze(-1))\n",
    "\n",
    "            # Backpropagation and update weight\n",
    "            optimizer.zero_grad()\n",
    "            loss_value.backward()\n",
    "            optimizer.step()\n",
    "\n",
    "            # Sum average loss\n",
    "            train_loss_avg += loss_value.item()\n",
    "            num_batches += 1\n",
    "\n",
    "        train_loss_avg /= num_batches\n",
    "\n",
    "        early_stopping(loss_value, model)\n",
    "\n",
    "    if early_stopping.early_stop: model.load_state_dict(early_stopping.best_model)\n",
    "    \n",
    "    model.eval()\n",
    "    y_val = df_process_val['RT']\n",
    "    X_val = df_process_val.drop(['RT'], axis=1)\n",
    "    X_val.iloc[:, -24:] = X_val.iloc[:, -24:] * lab_factor\n",
    "\n",
    "    x = torch.zeros(X_val.shape[0] * X_val.shape[1]).reshape(X_val.shape[0], X_val.shape[1])\n",
    "    for idx in range(0,X_val.shape[0]):\n",
    "        row = X_val.iloc[idx]\n",
    "        x[idx] = ( torch.tensor((row), dtype=torch.float) )\n",
    "\n",
    "    y_pred = model(x)\n",
    "    # RMSE\n",
    "    val_loss = loss(y_pred, torch.tensor(y_val.values).unsqueeze(-1))\n",
    "    return val_loss\n",
    "\n",
    "\n",
    "# Creating a study object and running the optimization\n",
    "study = optuna.create_study(direction='minimize',sampler=optuna.samplers.TPESampler(seed=my_seed))\n",
    "study.optimize(objective, n_trials=20)\n",
    "\n",
    "# Displaying the best hyperparameters\n",
    "print(\"Best hyperparameters: \", study.best_params)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "db4891fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "N1 = study.best_params['N1']\n",
    "N2 = study.best_params['N2']\n",
    "N3 = study.best_params['N3']\n",
    "N4 = study.best_params['N4']\n",
    "learning_rate = study.best_params['learning_rate']\n",
    "lab_factor = study.best_params['lab_factor']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "1d9e897d-7a41-41cf-944a-0e3e3f6f5c5d",
   "metadata": {
    "colab": {
     "background_save": true,
     "base_uri": "https://localhost:8080/"
    },
    "id": "1d9e897d-7a41-41cf-944a-0e3e3f6f5c5d",
    "outputId": "d3a569ac-f363-4920-d572-65cb73ec9e7a",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m7.0627\u001b[0m  0.2518\n",
      "      2        \u001b[36m1.1648\u001b[0m  0.2107\n",
      "      3        \u001b[36m0.7248\u001b[0m  0.2100\n",
      "      4        \u001b[36m0.5345\u001b[0m  0.1996\n",
      "      5        \u001b[36m0.4247\u001b[0m  0.1999\n",
      "      6        \u001b[36m0.3809\u001b[0m  0.2264\n",
      "      7        0.4028  0.2191\n",
      "      8        0.4289  0.2212\n",
      "      9        \u001b[36m0.2788\u001b[0m  0.2161\n",
      "     10        \u001b[36m0.2342\u001b[0m  0.2083\n",
      "     11        0.2963  0.1974\n",
      "     12        0.2354  0.2006\n",
      "     13        0.2390  0.1987\n",
      "     14        0.2726  0.1989\n",
      "     15        0.3105  0.2014\n",
      "     16        0.4145  0.1990\n",
      "     17        0.4207  0.2042\n",
      "     18        0.3065  0.2047\n",
      "     19        0.2623  0.2150\n",
      "     20        0.2500  0.2066\n",
      "     21        \u001b[36m0.2168\u001b[0m  0.1984\n",
      "     22        \u001b[36m0.2075\u001b[0m  0.2026\n",
      "     23        0.2263  0.1992\n",
      "     24        0.2717  0.2012\n",
      "     25        0.3393  0.1979\n",
      "     26        0.3803  0.1989\n",
      "     27        0.2457  0.2065\n",
      "     28        \u001b[36m0.1202\u001b[0m  0.2071\n",
      "     29        \u001b[36m0.0748\u001b[0m  0.2108\n",
      "     30        \u001b[36m0.0578\u001b[0m  0.1984\n",
      "     31        \u001b[36m0.0499\u001b[0m  0.2058\n",
      "     32        \u001b[36m0.0439\u001b[0m  0.2052\n",
      "     33        \u001b[36m0.0403\u001b[0m  0.1981\n",
      "     34        \u001b[36m0.0368\u001b[0m  0.2015\n",
      "     35        \u001b[36m0.0342\u001b[0m  0.1995\n",
      "     36        \u001b[36m0.0318\u001b[0m  0.1996\n",
      "     37        \u001b[36m0.0291\u001b[0m  0.2133\n",
      "     38        \u001b[36m0.0275\u001b[0m  0.2026\n",
      "     39        \u001b[36m0.0263\u001b[0m  0.2059\n",
      "     40        \u001b[36m0.0262\u001b[0m  0.1991\n",
      "     41        0.0276  0.2021\n",
      "     42        0.0336  0.2062\n",
      "     43        0.0597  0.1995\n",
      "     44        0.1539  0.2001\n",
      "     45        0.3897  0.2002\n",
      "     46        0.2561  0.2127\n",
      "     47        0.0913  0.2052\n",
      "     48        0.0612  0.2011\n",
      "     49        0.0568  0.2037\n",
      "     50        0.0827  0.1993\n",
      "     51        0.1475  0.2028\n",
      "     52        0.2440  0.2094\n",
      "     53        0.2448  0.2010\n",
      "     54        0.1673  0.2025\n",
      "     55        0.1280  0.2207\n",
      "     56        0.0795  0.2245\n",
      "     57        0.0675  0.2042\n",
      "     58        0.0878  0.2071\n",
      "     59        0.1217  0.2024\n",
      "     60        0.1677  0.2008\n",
      "     61        0.2322  0.2101\n",
      "     62        0.3029  0.2082\n",
      "     63        0.2900  0.2045\n",
      "     64        0.1454  0.2113\n",
      "     65        0.1267  0.2064\n",
      "     66        0.1538  0.2038\n",
      "     67        0.2011  0.2029\n",
      "     68        0.2548  0.2096\n",
      "     69        0.3243  0.2030\n",
      "     70        0.4075  0.2001\n",
      "     71        0.3326  0.2051\n",
      "     72        0.2031  0.1996\n",
      "     73        0.1005  0.2117\n",
      "     74        0.0591  0.2062\n",
      "     75        0.0431  0.2055\n",
      "     76        0.0331  0.2066\n",
      "     77        0.0264  0.1997\n",
      "     78        \u001b[36m0.0225\u001b[0m  0.2050\n",
      "     79        \u001b[36m0.0197\u001b[0m  0.2024\n",
      "     80        \u001b[36m0.0176\u001b[0m  0.2046\n",
      "     81        \u001b[36m0.0159\u001b[0m  0.2030\n",
      "     82        \u001b[36m0.0147\u001b[0m  0.2180\n",
      "     83        \u001b[36m0.0134\u001b[0m  0.2087\n",
      "     84        \u001b[36m0.0126\u001b[0m  0.2011\n",
      "     85        \u001b[36m0.0118\u001b[0m  0.2123\n",
      "     86        \u001b[36m0.0114\u001b[0m  0.2005\n",
      "     87        \u001b[36m0.0113\u001b[0m  0.2063\n",
      "     88        0.0118  0.2015\n",
      "     89        0.0144  0.1998\n",
      "     90        0.0203  0.2085\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<class 'skorch.net.NeuralNet'>[initialized](\n",
       "  module_=Network(\n",
       "    (linear1): Linear(in_features=1522, out_features=98, bias=True)\n",
       "    (linear2): Linear(in_features=98, out_features=99, bias=True)\n",
       "    (linear3): Linear(in_features=99, out_features=45, bias=True)\n",
       "    (linear4): Linear(in_features=45, out_features=11, bias=True)\n",
       "    (linear5): Linear(in_features=11, out_features=1, bias=True)\n",
       "  ),\n",
       ")"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "## train\n",
    "\n",
    "y_train = df_process_train['RT']\n",
    "y_train = torch.from_numpy(y_train.values.astype(np.float32)).unsqueeze(-1)\n",
    "X_train = df_process_train.drop(['RT'], axis=1)\n",
    "X_train.iloc[:, -24:] = X_train.iloc[:, -24:] * lab_factor\n",
    "X_train = torch.from_numpy(X_train.values.astype(np.float32))\n",
    "\n",
    "torch.manual_seed(my_seed)\n",
    "np.random.seed(my_seed)\n",
    "torch.backends.cudnn.deterministic = True\n",
    "torch.backends.cudnn.benchmark = False\n",
    "\n",
    "sknn = skorch.NeuralNet(module = Network,\n",
    "                        module__N_init = X_train.shape[1],\n",
    "                        module__N1 = study.best_params['N1'],\n",
    "                        module__N2 = study.best_params['N2'],\n",
    "                        module__N3 = study.best_params['N3'],\n",
    "                        module__N4 = study.best_params['N4'],\n",
    "                        criterion = torch.nn.MSELoss,\n",
    "                        optimizer = torch.optim.Adam,\n",
    "                        optimizer__lr = learning_rate,\n",
    "                        optimizer__weight_decay = 1e-5,\n",
    "                        batch_size = batch_size,\n",
    "                        train_split = None,\n",
    "                        max_epochs = num_epochs)\n",
    "\n",
    "sknn.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "690bf63b-b889-4503-bcca-e5582b876232",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 449
    },
    "id": "690bf63b-b889-4503-bcca-e5582b876232",
    "outputId": "020cd20e-f548-4e94-f817-b3ce1cf4ac70"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGwCAYAAACHJU4LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABC+klEQVR4nO3dd3hUdf728XtaJoUUWkgCAUKXjjRpiotSRFfssohgWRdEhOWxoWtfDO7+VNx1jYIuFlQQ27I2BBUUEWkbQUCkBAglBgikkGSSzJznjzATYgpDSOYM8H5d17nInDkz+YSTydzzbcdiGIYhAACAIGQ1uwAAAICqEFQAAEDQIqgAAICgRVABAABBi6ACAACCFkEFAAAELYIKAAAIWnazCzgdHo9H+/fvV2RkpCwWi9nlAAAAPxiGodzcXCUkJMhqrb7N5IwOKvv371diYqLZZQAAgBpIT09Xs2bNqj3mjA4qkZGRkkp/0KioKJOrAQAA/sjJyVFiYqLvfbw6Z3RQ8Xb3REVFEVQAADjD+DNsg8G0AAAgaBFUAABA0CKoAACAoHVGj1EBAJjD7XaruLjY7DIQpBwOh2w2W608F0EFAOA3wzCUkZGho0ePml0KglxMTIzi4uJOe50zggoAwG/ekBIbG6vw8HAW20QFhmEoPz9fmZmZkqT4+PjTej6CCgDAL2632xdSGjZsaHY5CGJhYWGSpMzMTMXGxp5WNxCDaQEAfvGOSQkPDze5EpwJvL8npzuWiaACADgldPfAH7X1e0JQAQAAQYugAgAAghZBBQCAGhg8eLCmTp3q9/G7du2SxWJRampqndV0NiKoVKKgyK19RwuUmVNodikAgNNksViq3caPH1+j5/3ggw/05JNP+n18YmKiDhw4oM6dO9fo+/nrbAtEpgaVli1bVvpLM2nSJDPL0uJNGRow8yv9+d1UU+sAAJy+AwcO+LZZs2YpKiqq3L7nn3++3PH+zlJp0KCBIiMj/a7DZrMpLi5Odjsrg5wKU4PKmjVryv2yLFmyRJJ03XXXmVmW7LbSkcolbsPUOgAg2BmGofyiElM2w/Dvb3RcXJxvi46OlsVi8d0uLCxUTEyM3n33XQ0ePFihoaGaN2+eDh8+rNGjR6tZs2YKDw9Xly5d9M4775R73t92/bRs2VJPPfWUbr31VkVGRqp58+aaPXu27/7ftnQsW7ZMFotFX375pXr16qXw8HD1799fW7duLfd9/vrXvyo2NlaRkZG6/fbb9cADD6h79+41Ol+S5HK5dPfddys2NlahoaEaOHCg1qxZ47v/yJEjGjNmjBo3bqywsDC1bdtWc+fOlSQVFRXprrvuUnx8vEJDQ9WyZUslJyfXuBZ/mBrrGjduXO72zJkz1bp1a1100UUmVVTKbj0eVDwEFQCoTkGxWx0fWWzK9978xDCFh9TO29j999+vZ555RnPnzpXT6VRhYaF69uyp+++/X1FRUfrkk080duxYtWrVSn379q3yeZ555hk9+eSTevDBB/Xee+9p4sSJuvDCC9WhQ4cqH/PQQw/pmWeeUePGjTVhwgTdeuut+u677yRJb731lmbMmKEXX3xRAwYM0Pz58/XMM88oKSmpxj/rfffdp/fff1+vv/66WrRoob/97W8aNmyYtm/frgYNGujhhx/W5s2b9dlnn6lRo0bavn27CgoKJEn/+Mc/tGjRIr377rtq3ry50tPTlZ6eXuNa/BE07U9FRUWaN2+epk2bVuXca5fLJZfL5budk5NTJ7XYraUNTSVuT508PwAguEydOlVXX311uX333HOP7+vJkyfr888/18KFC6sNKpdddpnuvPNOSaXh57nnntOyZcuqDSozZszwfUB/4IEHNHLkSBUWFio0NFT//Oc/ddttt+mWW26RJD3yyCP64osvlJeXV6Of89ixY0pJSdFrr72mESNGSJLmzJmjJUuW6NVXX9W9996rPXv2qEePHurVq5ek0pYirz179qht27YaOHCgLBaLWrRoUaM6TkXQBJWPPvpIR48erXZQU3Jysh5//PE6r8Vmo0UFAPwR5rBp8xPDTPvetcX7puzldrs1c+ZMLViwQPv27fN9UI6IiKj2ebp27er72tvF5L3mjT+P8V4XJzMzU82bN9fWrVt9wcerT58++uqrr/z6uX5rx44dKi4u1oABA3z7HA6H+vTpoy1btkiSJk6cqGuuuUbr16/X0KFDNWrUKPXv31+SNH78eF166aVq3769hg8frssvv1xDhw6tUS3+CppZP6+++qpGjBihhISEKo+ZPn26srOzfVtdNTc5fC0qBBUAqI7FYlF4iN2UrTZXyP1tAHnmmWf03HPP6b777tNXX32l1NRUDRs2TEVFRdU+j8PhqPD/4/FU3zp/4mO8P9OJj/ntz+nv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9eql6667TrGxserRo4fmzJnju5/zEngDBw7Ul19+qV9++UWS9OOPP2rFihW67LLLJHFOauqMvihhbTt06JDcbreaNGlSbn+TJk2UkZFhUlXnLsMwNG3aNA0cOFCdO3eWJN95qOwc7d69O+A1nivmz5+v9evXa82aNRXu45yYY+fOnUpJSdG0adP04IMPavXq1br77rvldDp18803c15McP/99ys7O1sdOnSQzWaT2+3WjBkzNHr0aEm8VmqKoFIJi8VS7rZhGBX2oe7ddddd2rBhg1asWFHhPs5R4KSnp2vKlCn64osvFBoaWuVxnJPA8ng86tWrl5566ilJUo8ePbRp0yalpKTo5ptv9h3HeQmcBQsWaN68eXr77bfVqVMnpaamaurUqUpISNC4ceN8x3FOTg1dPydo1KiRbDZbhdaTzMzMCgkYdWvy5MlatGiRvv76azVr1sy3Py4uTpI4RwG0bt06ZWZmqmfPnrLb7bLb7Vq+fLn+8Y9/yG63+/7fOSeBFR8fr44dO5bbd95552nPnj2SeK2Y4d5779UDDzygG2+8UV26dNHYsWP15z//WcnJyZI4JzVFUDlBSEiIevbsqSVLlpTbv2TJEvXv39+kqs4thmHorrvu0gcffKCvvvpKSUlJ5e5PSkpSXFxcuXNUVFSk5cuXc47qyJAhQ7Rx40alpqb6tl69emnMmDFKTU1Vq1atOCcmGDBgQIWp+7/88otatGghideKGfLz82W1ln9btdlsvunJnJMaMnEgb1DyTk9+9dVXjc2bNxtTp041IiIijF27dpld2jlh4sSJRnR0tLFs2TLjwIEDvi0/P993zMyZM43o6Gjjgw8+MDZu3GiMHj2a6X0BduKsH8PgnJhh9erVht1uN2bMmGFs27bNeOutt4zw8HBj3rx5vmM4L4E1btw4o2nTpr7pyR988IHRqFEj47777vMdwzk5dQSVSvzrX/8yWrRoYYSEhBjnn3++b2os6p6kSre5c+f6jvF4PMajjz5qxMXFGU6n07jwwguNjRs3mlf0Oei3QYVzYo7//ve/RufOnQ2n02l06NDBmD17drn7OS+BlZOTY0yZMsVo3ry5ERoaarRq1cp46KGHDJfL5TuGc3LqLIZhGGa26AAAAFSFMSoAACBoEVQAAEDQIqgAAICgRVABAABBi6ACAACCFkEFAAAELYIKAAAIWgQVAAAQtAgqAM54FotFH330kdllAKgDBBUAp2X8+PGyWCwVtuHDh5tdGoCzgN3sAgCc+YYPH665c+eW2+d0Ok2qBsDZhBYVAKfN6XQqLi6u3Fa/fn1Jpd0yKSkpGjFihMLCwpSUlKSFCxeWe/zGjRv1u9/9TmFhYWrYsKHuuOMO5eXllTvm3//+tzp16iSn06n4+Hjddddd5e4/dOiQrrrqKoWHh6tt27ZatGiR774jR45ozJgxaty4scLCwtS2bdsKwQpAcCKoAKhzDz/8sK655hr9+OOPuummmzR69Ght2bJFkpSfn6/hw4erfv36WrNmjRYuXKilS5eWCyIpKSmaNGmS7rjjDm3cuFGLFi1SmzZtyn2Pxx9/XNdff702bNigyy67TGPGjFFWVpbv+2/evFmfffaZtmzZopSUFDVq1Chw/wEAas7syzcDOLONGzfOsNlsRkRERLntiSeeMAzDMCQZEyZMKPeYvn37GhMnTjQMwzBmz55t1K9f38jLy/Pd/8knnxhWq9XIyMgwDMMwEhISjIceeqjKGiQZf/nLX3y38/LyDIvFYnz22WeGYRjGFVdcYdxyyy218wMDCCjGqAA4bRdffLFSUlLK7WvQoIHv6379+pW7r1+/fkpNTZUkbdmyRd26dVNERITv/gEDBsjj8Wjr1q2yWCzav3+/hgwZUm0NXbt29X0dERGhyMhIZWZmSpImTpyoa665RuvXr9fQoUM1atQo9e/fv0Y/K4DAIqgAOG0REREVumJOxmKxSJIMw/B9XdkxYWFhfj2fw+Go8FiPxyNJGjFihHbv3q1PPvlES5cu1ZAhQzRp0iT93//93ynVDCDwGKMCoM6tWrWqwu0OHTpIkjp27KjU1FQdO3bMd/93330nq9Wqdu3aKTIyUi1bttSXX355WjU0btxY48eP17x58zRr1izNnj37tJ4PQGDQogLgtLlcLmVkZJTbZ7fbfQNWFy5cqF69emngwIF66623tHr1ar366quSpDFjxujRRx/VuHHj9Nhjj+ngwYOaPHmyxo4dqyZNmkiSHnvsMU2YMEGxsbEaMWKEcnNz9d1332ny5Ml+1ffII4+oZ8+e6tSpk1wulz7++GOdd955tfg/AKCuEFQAnLbPP/9c8fHx5fa1b99eP//8s6TSGTnz58/XnXfeqbi4OL311lvq2LGjJCk8PFyLFy/WlClT1Lt3b4WHh+uaa67Rs88+63uucePGqbCwUM8995zuueceNWrUSNdee63f9YWEhGj69OnatWuXwsLCNGjQIM2fP78WfnIAdc1iGIZhdhEAzl4Wi0UffvihRo0aZXYpAM5AjFEBAABBi6ACAACCFmNUANQpepcBnA5aVAAAQNAiqAAAgKBFUAEAAEGLoAIAAIIWQQUAAAQtggoAAAhaBBUAABC0CCoAACBo/X88Dx91apGQdQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.ion()\n",
    "\n",
    "fig = plt.figure()\n",
    "plt.plot(sknn.history[:, 'train_loss'], label = \"Training Loss\")\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "bad5a54a-7fd2-4ebe-a787-919635baa7a7",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m7.3511\u001b[0m  0.1405\n",
      "      2        \u001b[36m1.3859\u001b[0m  0.1460\n",
      "      3        \u001b[36m0.8691\u001b[0m  0.1362\n",
      "      4        \u001b[36m0.6563\u001b[0m  0.1367\n",
      "      5        \u001b[36m0.5169\u001b[0m  0.1334\n",
      "      6        \u001b[36m0.4166\u001b[0m  0.1716\n",
      "      7        \u001b[36m0.3403\u001b[0m  0.1848\n",
      "      8        \u001b[36m0.3170\u001b[0m  0.1443\n",
      "      9        0.3307  0.1268\n",
      "     10        0.4523  0.1269\n",
      "     11        0.5460  0.1373\n",
      "     12        0.6118  0.1284\n",
      "     13        0.5055  0.1420\n",
      "     14        0.3870  0.1691\n",
      "     15        0.3832  0.1263\n",
      "     16        0.3338  0.1233\n",
      "     17        \u001b[36m0.2761\u001b[0m  0.1217\n",
      "     18        0.3140  0.1230\n",
      "     19        0.4104  0.1418\n",
      "     20        0.4601  0.1805\n",
      "     21        0.3284  0.1616\n",
      "     22        \u001b[36m0.1551\u001b[0m  0.1286\n",
      "     23        \u001b[36m0.1068\u001b[0m  0.1235\n",
      "     24        \u001b[36m0.0819\u001b[0m  0.1228\n",
      "     25        \u001b[36m0.0693\u001b[0m  0.1234\n",
      "     26        \u001b[36m0.0637\u001b[0m  0.1257\n",
      "     27        \u001b[36m0.0587\u001b[0m  0.1264\n",
      "     28        \u001b[36m0.0554\u001b[0m  0.1247\n",
      "     29        \u001b[36m0.0513\u001b[0m  0.1241\n",
      "     30        \u001b[36m0.0483\u001b[0m  0.1265\n",
      "     31        \u001b[36m0.0449\u001b[0m  0.1302\n",
      "     32        \u001b[36m0.0426\u001b[0m  0.1222\n",
      "     33        \u001b[36m0.0393\u001b[0m  0.1235\n",
      "     34        \u001b[36m0.0380\u001b[0m  0.1255\n",
      "     35        0.0381  0.1266\n",
      "     36        0.0456  0.1389\n",
      "     37        0.0587  0.1364\n",
      "     38        0.0809  0.1580\n",
      "     39        0.1558  0.1559\n",
      "     40        0.4755  0.1530\n",
      "     41        0.3797  0.1577\n",
      "     42        0.2082  0.1598\n",
      "     43        0.1162  0.1592\n",
      "     44        0.1372  0.1772\n",
      "     45        0.2114  0.2089\n",
      "     46        0.3846  0.2054\n",
      "     47        0.5275  0.1985\n",
      "     48        0.3539  0.1981\n",
      "     49        0.1247  0.1560\n",
      "     50        0.1139  0.1441\n",
      "     51        0.1238  0.1409\n",
      "     52        0.1290  0.1441\n",
      "     53        0.1299  0.1446\n",
      "     54        0.1492  0.1420\n",
      "     55        0.2090  0.1468\n",
      "     56        0.2697  0.1560\n",
      "     57        0.2426  0.2139\n",
      "     58        0.1794  0.2010\n",
      "     59        0.1512  0.1440\n",
      "     60        0.0952  0.1459\n",
      "     61        0.0575  0.1524\n",
      "     62        0.0452  0.1406\n",
      "     63        0.0434  0.1451\n",
      "     64        0.0458  0.1432\n",
      "     65        0.0448  0.1393\n",
      "     66        0.0458  0.1402\n",
      "     67        0.0463  0.1398\n",
      "     68        0.0532  0.1479\n",
      "     69        0.0664  0.2027\n",
      "     70        0.0858  0.2142\n",
      "     71        0.1215  0.1610\n",
      "     72        0.1841  0.1430\n",
      "     73        0.3058  0.1397\n",
      "     74        0.4295  0.1446\n",
      "     75        0.5506  0.1427\n",
      "     76        0.3826  0.1424\n",
      "     77        0.2709  0.1395\n",
      "     78        0.2103  0.1384\n",
      "     79        0.1486  0.1414\n",
      "     80        0.1017  0.1414\n",
      "     81        0.0654  0.1505\n",
      "     82        0.0465  0.2078\n",
      "     83        \u001b[36m0.0362\u001b[0m  0.2048\n",
      "     84        \u001b[36m0.0314\u001b[0m  0.1494\n",
      "     85        \u001b[36m0.0276\u001b[0m  0.1417\n",
      "     86        \u001b[36m0.0267\u001b[0m  0.1396\n",
      "     87        \u001b[36m0.0254\u001b[0m  0.1449\n",
      "     88        0.0255  0.1557\n",
      "     89        \u001b[36m0.0254\u001b[0m  0.1420\n",
      "     90        0.0257  0.1407\n",
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m7.3804\u001b[0m  0.1398\n",
      "      2        \u001b[36m1.3020\u001b[0m  0.1422\n",
      "      3        \u001b[36m0.9446\u001b[0m  0.1662\n",
      "      4        \u001b[36m0.7059\u001b[0m  0.2085\n",
      "      5        \u001b[36m0.5171\u001b[0m  0.2058\n",
      "      6        \u001b[36m0.3983\u001b[0m  0.1447\n",
      "      7        \u001b[36m0.3327\u001b[0m  0.1388\n",
      "      8        \u001b[36m0.3118\u001b[0m  0.1407\n",
      "      9        0.3895  0.1447\n",
      "     10        0.5766  0.1444\n",
      "     11        0.6404  0.1409\n",
      "     12        0.7363  0.1404\n",
      "     13        0.3820  0.1419\n",
      "     14        \u001b[36m0.2507\u001b[0m  0.1387\n",
      "     15        \u001b[36m0.1707\u001b[0m  0.1396\n",
      "     16        \u001b[36m0.1282\u001b[0m  0.1661\n",
      "     17        \u001b[36m0.1090\u001b[0m  0.2052\n",
      "     18        \u001b[36m0.0982\u001b[0m  0.1879\n",
      "     19        \u001b[36m0.0926\u001b[0m  0.1390\n",
      "     20        \u001b[36m0.0900\u001b[0m  0.1418\n",
      "     21        0.0902  0.1445\n",
      "     22        0.0943  0.1390\n",
      "     23        0.0995  0.1507\n",
      "     24        0.1115  0.1480\n",
      "     25        0.1408  0.1439\n",
      "     26        0.1855  0.1394\n",
      "     27        0.2438  0.1398\n",
      "     28        0.3022  0.1398\n",
      "     29        0.4479  0.1969\n",
      "     30        0.6008  0.2080\n",
      "     31        0.5315  0.1605\n",
      "     32        0.3124  0.1410\n",
      "     33        0.2379  0.1539\n",
      "     34        0.1807  0.1393\n",
      "     35        0.1643  0.1491\n",
      "     36        0.1652  0.1487\n",
      "     37        0.1667  0.1558\n",
      "     38        0.1447  0.1421\n",
      "     39        0.1405  0.1407\n",
      "     40        0.1595  0.1381\n",
      "     41        0.1845  0.1735\n",
      "     42        0.1978  0.2189\n",
      "     43        0.2459  0.1867\n",
      "     44        0.2726  0.1576\n",
      "     45        0.3130  0.1486\n",
      "     46        0.3683  0.1524\n",
      "     47        0.4624  0.1474\n",
      "     48        0.4717  0.1472\n",
      "     49        0.3157  0.1520\n",
      "     50        0.1573  0.1498\n",
      "     51        \u001b[36m0.0790\u001b[0m  0.1467\n",
      "     52        \u001b[36m0.0516\u001b[0m  0.1478\n",
      "     53        \u001b[36m0.0397\u001b[0m  0.1816\n",
      "     54        \u001b[36m0.0362\u001b[0m  0.1905\n",
      "     55        \u001b[36m0.0339\u001b[0m  0.1515\n",
      "     56        \u001b[36m0.0326\u001b[0m  0.1423\n",
      "     57        \u001b[36m0.0320\u001b[0m  0.1390\n",
      "     58        \u001b[36m0.0313\u001b[0m  0.1409\n",
      "     59        0.0313  0.1385\n",
      "     60        0.0319  0.1412\n",
      "     61        0.0327  0.1401\n",
      "     62        0.0349  0.1497\n",
      "     63        0.0381  0.1442\n",
      "     64        0.0430  0.1437\n",
      "     65        0.0488  0.1742\n",
      "     66        0.0602  0.2101\n",
      "     67        0.0737  0.1729\n",
      "     68        0.1006  0.1396\n",
      "     69        0.1529  0.1510\n",
      "     70        0.1946  0.1405\n",
      "     71        0.2418  0.1395\n",
      "     72        0.3947  0.1401\n",
      "     73        0.7930  0.1401\n",
      "     74        0.8327  0.1418\n",
      "     75        0.4012  0.1435\n",
      "     76        0.1636  0.1451\n",
      "     77        0.1016  0.1408\n",
      "     78        0.0751  0.2127\n",
      "     79        0.0615  0.2053\n",
      "     80        0.0531  0.1434\n",
      "     81        0.0486  0.1461\n",
      "     82        0.0439  0.1479\n",
      "     83        0.0390  0.1413\n",
      "     84        0.0365  0.1402\n",
      "     85        0.0328  0.1499\n",
      "     86        0.0314  0.1402\n",
      "     87        0.0345  0.1432\n",
      "     88        0.0390  0.1446\n",
      "     89        0.0437  0.1419\n",
      "     90        0.0518  0.1852\n",
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m7.0871\u001b[0m  0.2067\n",
      "      2        \u001b[36m1.3382\u001b[0m  0.1556\n",
      "      3        \u001b[36m0.9065\u001b[0m  0.1405\n",
      "      4        \u001b[36m0.6711\u001b[0m  0.1392\n",
      "      5        \u001b[36m0.5124\u001b[0m  0.1420\n",
      "      6        \u001b[36m0.4222\u001b[0m  0.1392\n",
      "      7        \u001b[36m0.3539\u001b[0m  0.1426\n",
      "      8        0.3752  0.1384\n",
      "      9        0.5991  0.1384\n",
      "     10        0.5081  0.1389\n",
      "     11        0.3659  0.1458\n",
      "     12        \u001b[36m0.2528\u001b[0m  0.1645\n",
      "     13        0.2983  0.2057\n",
      "     14        0.3711  0.1974\n",
      "     15        0.3755  0.1433\n",
      "     16        0.2909  0.1404\n",
      "     17        \u001b[36m0.2179\u001b[0m  0.1439\n",
      "     18        \u001b[36m0.1611\u001b[0m  0.1457\n",
      "     19        \u001b[36m0.1578\u001b[0m  0.1406\n",
      "     20        0.1683  0.1469\n",
      "     21        0.2263  0.1444\n",
      "     22        0.3366  0.1397\n",
      "     23        0.4647  0.1405\n",
      "     24        0.6478  0.1437\n",
      "     25        0.2735  0.1924\n",
      "     26        0.1724  0.2069\n",
      "     27        0.1639  0.1600\n",
      "     28        0.1821  0.1393\n",
      "     29        0.1969  0.1407\n",
      "     30        0.2084  0.1398\n",
      "     31        0.2014  0.1457\n",
      "     32        0.2155  0.1434\n",
      "     33        0.2685  0.1389\n",
      "     34        0.3328  0.1451\n",
      "     35        0.3472  0.1406\n",
      "     36        0.3516  0.1438\n",
      "     37        0.4931  0.1505\n",
      "     38        0.5910  0.1487\n",
      "     39        0.3956  0.1470\n",
      "     40        0.2425  0.1457\n",
      "     41        0.1713  0.1392\n",
      "     42        \u001b[36m0.1194\u001b[0m  0.1547\n",
      "     43        \u001b[36m0.1059\u001b[0m  0.1415\n",
      "     44        \u001b[36m0.1042\u001b[0m  0.1542\n",
      "     45        0.1070  0.1619\n",
      "     46        0.1107  0.1471\n",
      "     47        0.1193  0.1400\n",
      "     48        0.1303  0.1473\n",
      "     49        0.1502  0.1462\n",
      "     50        0.1789  0.1497\n",
      "     51        0.1844  0.1868\n",
      "     52        0.2019  0.1451\n",
      "     53        0.2169  0.1398\n",
      "     54        0.2310  0.1416\n",
      "     55        0.2527  0.1408\n",
      "     56        0.2579  0.1415\n",
      "     57        0.3162  0.1402\n",
      "     58        0.3222  0.1458\n",
      "     59        0.4444  0.1435\n",
      "     60        0.5552  0.1444\n",
      "     61        0.6741  0.1397\n",
      "     62        0.5951  0.1452\n",
      "     63        0.3289  0.1508\n",
      "     64        0.1687  0.1564\n",
      "     65        \u001b[36m0.1026\u001b[0m  0.1442\n",
      "     66        \u001b[36m0.0804\u001b[0m  0.1421\n",
      "     67        \u001b[36m0.0698\u001b[0m  0.1441\n",
      "     68        \u001b[36m0.0628\u001b[0m  0.1444\n",
      "     69        \u001b[36m0.0574\u001b[0m  0.1463\n",
      "     70        \u001b[36m0.0539\u001b[0m  0.1455\n",
      "     71        \u001b[36m0.0516\u001b[0m  0.1434\n",
      "     72        \u001b[36m0.0506\u001b[0m  0.1448\n",
      "     73        \u001b[36m0.0501\u001b[0m  0.1475\n",
      "     74        \u001b[36m0.0478\u001b[0m  0.1455\n",
      "     75        \u001b[36m0.0458\u001b[0m  0.1554\n",
      "     76        \u001b[36m0.0449\u001b[0m  0.1521\n",
      "     77        \u001b[36m0.0423\u001b[0m  0.1456\n",
      "     78        0.0439  0.1511\n",
      "     79        0.0460  0.1566\n",
      "     80        0.0493  0.1415\n",
      "     81        0.0547  0.1407\n",
      "     82        0.0631  0.1424\n",
      "     83        0.0693  0.1440\n",
      "     84        0.0748  0.1390\n",
      "     85        0.0857  0.1436\n",
      "     86        0.0875  0.1474\n",
      "     87        0.0953  0.1590\n",
      "     88        0.1152  0.1480\n",
      "     89        0.1349  0.1605\n",
      "     90        0.1550  0.1411\n",
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m9.2620\u001b[0m  0.1441\n",
      "      2        \u001b[36m1.3636\u001b[0m  0.1450\n",
      "      3        \u001b[36m0.9601\u001b[0m  0.1405\n",
      "      4        \u001b[36m0.8275\u001b[0m  0.1390\n",
      "      5        \u001b[36m0.7133\u001b[0m  0.1413\n",
      "      6        \u001b[36m0.5558\u001b[0m  0.1398\n",
      "      7        \u001b[36m0.4106\u001b[0m  0.1393\n",
      "      8        \u001b[36m0.3270\u001b[0m  0.1392\n",
      "      9        \u001b[36m0.2745\u001b[0m  0.1547\n",
      "     10        \u001b[36m0.2577\u001b[0m  0.2075\n",
      "     11        0.2609  0.2008\n",
      "     12        0.2950  0.1413\n",
      "     13        0.5048  0.1408\n",
      "     14        0.7422  0.1448\n",
      "     15        0.3938  0.1468\n",
      "     16        0.2826  0.1493\n",
      "     17        0.2778  0.1533\n",
      "     18        0.2808  0.1393\n",
      "     19        0.2842  0.1504\n",
      "     20        0.3242  0.1399\n",
      "     21        0.4320  0.1397\n",
      "     22        0.6451  0.1477\n",
      "     23        0.6405  0.1859\n",
      "     24        0.2777  0.1546\n",
      "     25        \u001b[36m0.1354\u001b[0m  0.1401\n",
      "     26        \u001b[36m0.0973\u001b[0m  0.1403\n",
      "     27        \u001b[36m0.0798\u001b[0m  0.1400\n",
      "     28        \u001b[36m0.0686\u001b[0m  0.1437\n",
      "     29        \u001b[36m0.0607\u001b[0m  0.1439\n",
      "     30        \u001b[36m0.0546\u001b[0m  0.1400\n",
      "     31        \u001b[36m0.0499\u001b[0m  0.1395\n",
      "     32        \u001b[36m0.0463\u001b[0m  0.1448\n",
      "     33        \u001b[36m0.0426\u001b[0m  0.1410\n",
      "     34        \u001b[36m0.0395\u001b[0m  0.1410\n",
      "     35        \u001b[36m0.0367\u001b[0m  0.1448\n",
      "     36        \u001b[36m0.0342\u001b[0m  0.1502\n",
      "     37        \u001b[36m0.0325\u001b[0m  0.1416\n",
      "     38        \u001b[36m0.0311\u001b[0m  0.1507\n",
      "     39        0.0312  0.1390\n",
      "     40        \u001b[36m0.0305\u001b[0m  0.1394\n",
      "     41        0.0306  0.1426\n",
      "     42        0.0317  0.1431\n",
      "     43        0.0442  0.1436\n",
      "     44        0.0689  0.1392\n",
      "     45        0.1796  0.1401\n",
      "     46        0.3363  0.1382\n",
      "     47        0.1957  0.1432\n",
      "     48        0.1196  0.1461\n",
      "     49        0.1562  0.1454\n",
      "     50        0.1751  0.1418\n",
      "     51        0.1658  0.1416\n",
      "     52        0.2081  0.1405\n",
      "     53        0.3055  0.1386\n",
      "     54        0.5139  0.1449\n",
      "     55        0.7673  0.1408\n",
      "     56        0.5318  0.1499\n",
      "     57        0.3511  0.1499\n",
      "     58        0.2615  0.1541\n",
      "     59        0.1802  0.1860\n",
      "     60        0.1361  0.2241\n",
      "     61        0.1102  0.2460\n",
      "     62        0.0962  0.1920\n",
      "     63        0.0938  0.1620\n",
      "     64        0.0946  0.1690\n",
      "     65        0.0965  0.1676\n",
      "     66        0.1011  0.1607\n",
      "     67        0.1084  0.1702\n",
      "     68        0.1193  0.1510\n",
      "     69        0.1398  0.1395\n",
      "     70        0.1728  0.1469\n",
      "     71        0.2212  0.1474\n",
      "     72        0.2713  0.1466\n",
      "     73        0.3037  0.1456\n",
      "     74        0.4090  0.1427\n",
      "     75        0.4022  0.1456\n",
      "     76        0.4374  0.1591\n",
      "     77        0.4547  0.1425\n",
      "     78        0.2701  0.1428\n",
      "     79        0.1216  0.1424\n",
      "     80        0.0704  0.1500\n",
      "     81        0.0428  0.1502\n",
      "     82        0.0324  0.1405\n",
      "     83        \u001b[36m0.0272\u001b[0m  0.1473\n",
      "     84        \u001b[36m0.0238\u001b[0m  0.1460\n",
      "     85        \u001b[36m0.0215\u001b[0m  0.1424\n",
      "     86        \u001b[36m0.0195\u001b[0m  0.1394\n",
      "     87        \u001b[36m0.0180\u001b[0m  0.1390\n",
      "     88        \u001b[36m0.0165\u001b[0m  0.1436\n",
      "     89        \u001b[36m0.0157\u001b[0m  0.1409\n",
      "     90        \u001b[36m0.0144\u001b[0m  0.1403\n",
      "  epoch    train_loss     dur\n",
      "-------  ------------  ------\n",
      "      1        \u001b[36m8.0611\u001b[0m  0.1463\n",
      "      2        \u001b[36m1.3282\u001b[0m  0.1420\n",
      "      3        \u001b[36m0.8750\u001b[0m  0.1412\n",
      "      4        \u001b[36m0.7093\u001b[0m  0.1411\n",
      "      5        \u001b[36m0.5990\u001b[0m  0.1500\n",
      "      6        \u001b[36m0.5946\u001b[0m  0.1518\n",
      "      7        \u001b[36m0.5207\u001b[0m  0.1488\n",
      "      8        \u001b[36m0.4025\u001b[0m  0.1412\n",
      "      9        \u001b[36m0.3446\u001b[0m  0.1444\n",
      "     10        \u001b[36m0.3283\u001b[0m  0.1445\n",
      "     11        0.3774  0.1422\n",
      "     12        0.5409  0.1503\n",
      "     13        0.5498  0.1510\n",
      "     14        0.4056  0.1475\n",
      "     15        0.4164  0.1437\n",
      "     16        0.3485  0.1459\n",
      "     17        \u001b[36m0.2513\u001b[0m  0.1674\n",
      "     18        \u001b[36m0.2118\u001b[0m  0.2173\n",
      "     19        \u001b[36m0.1911\u001b[0m  0.1911\n",
      "     20        0.2029  0.1430\n",
      "     21        0.2436  0.1423\n",
      "     22        0.3308  0.1431\n",
      "     23        0.4991  0.1429\n",
      "     24        0.4974  0.1422\n",
      "     25        0.4299  0.2028\n",
      "     26        0.3013  0.1636\n",
      "     27        0.2015  0.1471\n",
      "     28        \u001b[36m0.1679\u001b[0m  0.1487\n",
      "     29        \u001b[36m0.1630\u001b[0m  0.1918\n",
      "     30        0.1681  0.2235\n",
      "     31        0.1863  0.1811\n",
      "     32        0.2145  0.1432\n",
      "     33        0.2546  0.1403\n",
      "     34        0.3354  0.1409\n",
      "     35        0.4393  0.1426\n",
      "     36        0.6078  0.1465\n",
      "     37        0.5784  0.1600\n",
      "     38        0.3649  0.1485\n",
      "     39        0.2183  0.1527\n",
      "     40        \u001b[36m0.1274\u001b[0m  0.1432\n",
      "     41        \u001b[36m0.0799\u001b[0m  0.1636\n",
      "     42        \u001b[36m0.0606\u001b[0m  0.2095\n",
      "     43        \u001b[36m0.0512\u001b[0m  0.1932\n",
      "     44        \u001b[36m0.0460\u001b[0m  0.1452\n",
      "     45        \u001b[36m0.0424\u001b[0m  0.1430\n",
      "     46        \u001b[36m0.0397\u001b[0m  0.1425\n",
      "     47        \u001b[36m0.0373\u001b[0m  0.1397\n",
      "     48        \u001b[36m0.0351\u001b[0m  0.1394\n",
      "     49        \u001b[36m0.0338\u001b[0m  0.1440\n",
      "     50        \u001b[36m0.0328\u001b[0m  0.1419\n",
      "     51        \u001b[36m0.0318\u001b[0m  0.1416\n",
      "     52        0.0319  0.1442\n",
      "     53        0.0319  0.1404\n",
      "     54        0.0319  0.1478\n",
      "     55        0.0335  0.1501\n",
      "     56        0.0361  0.1554\n",
      "     57        0.0416  0.1411\n",
      "     58        0.0567  0.1414\n",
      "     59        0.1019  0.1412\n",
      "     60        0.1366  0.1422\n",
      "     61        0.1849  0.1398\n",
      "     62        0.3247  0.1396\n",
      "     63        0.3782  0.1474\n",
      "     64        0.4147  0.1421\n",
      "     65        0.3360  0.1413\n",
      "     66        0.3551  0.1390\n",
      "     67        0.4021  0.1508\n",
      "     68        0.3083  0.1468\n",
      "     69        0.1961  0.1433\n",
      "     70        0.0976  0.1489\n",
      "     71        0.0776  0.1429\n",
      "     72        0.0763  0.1403\n",
      "     73        0.0777  0.1401\n",
      "     74        0.0793  0.1447\n",
      "     75        0.0860  0.1410\n",
      "     76        0.0960  0.1428\n",
      "     77        0.1062  0.1458\n",
      "     78        0.1431  0.1541\n",
      "     79        0.1757  0.1487\n",
      "     80        0.2113  0.1893\n",
      "     81        0.2303  0.2424\n",
      "     82        0.2625  0.2581\n",
      "     83        0.2465  0.2151\n",
      "     84        0.2327  0.1906\n",
      "     85        0.2587  0.1759\n",
      "     86        0.2871  0.1562\n",
      "     87        0.3143  0.1560\n",
      "     88        0.2815  0.1472\n",
      "     89        0.1812  0.1483\n",
      "     90        0.1007  0.1492\n"
     ]
    }
   ],
   "source": [
    "nn_score = cross_val_score(sknn, X_train, y_train, scoring = 'neg_mean_squared_error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "bcd2be59-935b-4119-9602-d0bae5753452",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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dOzYMTVt2lTfffedJ+oBAACoVy6dTRYfH9+oDoUBAAD/5dLZZA8//LAmTJigffv2ubseAACAeuXSmKEXXnhB//3vf9WmTRvFx8efcjbZhg0b3FIcAACAp7kUhm644QY3lwEAAOAdLp1a7084tR4AAN9zJr/fLo0ZkqQDBw7ojTfecBo7tGHDBu3cudPVVQIAANQ7lw6Tbdy4UampqbJardqxY4eGDx+uli1bav78+SoqKtLbb7/t7joBAAA8wqWeoQceeEDDhg3Tli1bFBIS4mi/+uqr9eWXX7qtOAAAAE9zKQytW7dOI0aMOKX9vPPOU2lp6VkXBQAAUF9cCkMhISEqKys7pb2wsFDnnnvuWRcFAABQX1wKQ4MGDdKjjz6qyspKScdvzlpcXKzx48frj3/8o1sLBAAA8CSXwtAzzzyjvXv3KioqSuXl5UpJSVFiYqLCwsKUlZXl7hoBAAA8xqWzycLDw7VixQp98cUX2rBhg+x2uy699FKlpqa6uz4AAACP8uhFFzt16qRPPvlEsbGxntqEx3HRRQAAfE+9XHSxLnbs2OEYVwQAANAQeTQMAQAANHSEIQAA4NcIQwAAwK8RhgAAgF8jDAEAAL/m0TD02muvKTo62pObAAAAOCt1vujiCy+8UOeVZmZmSpKGDh165hUBAADUozpfdPGCCy5werx3714dPnxYERERkqQDBw4oNDRUUVFR2rZtm9sL9RYuuggAgO/xyEUXt2/f7piysrLUpUsXFRQUaN++fdq3b58KCgp06aWX6rHHHjvrFwAAAFBfXBozNGnSJL344otq166do61du3Z67rnn9PDDD7utuJPt379faWlpslqtslqtSktL04EDB2pd5tChQ8rIyND555+vZs2aKSkpSa+++qpH6gMAAL7JpTC0a9euam+zUVVVpd27d591UdUZOnSo8vPztWjRIi1atEj5+flKS0urdZkxY8Zo0aJFmjNnjgoKCjRmzBiNHDlS//rXvzxSIwAA8D0uhaE//OEPGj58uPLy8nRiyFFeXp5GjBjhkTvXFxQUaNGiRXrjjTeUnJys5ORkvf766/roo49UWFhY43KrVq3SnXfeqT59+ighIUHp6em65JJLlJeXV+MyFRUVKisrc5oAAEDj5VIYeuutt3TeeeepW7duCgkJUXBwsLp3766YmBi98cYb7q5Rq1atktVqVffu3R1tPXr0kNVq1cqVK2tcrnfv3lq4cKF27twpY4yWLl2qzZs3q3///jUuk52d7TgUZ7VaFRsb69bXAgAAGpY6n1p/snPPPVeffPKJNm/erE2bNskYo6SkJLVt29bd9UmSSktLFRUVdUp7VFSUSktLa1zuhRde0PDhw3X++eeradOmCggI0BtvvKHevXvXuMyECRP0wAMPOB6XlZURiAAAaMRcCkMnJCQkyBijiy66SE2bnvmqpkyZoqlTp9Y6z7p16yRJFovllOeMMdW2n/DCCy9o9erVWrhwoeLj4/Xll1/q/vvvV0xMTI2H84KDgxUcHHwGrwIAAPgyl8LQ4cOHNXLkSM2ePVuStHnzZl144YXKzMxUmzZtNH78+DqtJyMjQ0OGDKl1noSEBG3cuLHagdl79+6t8QrX5eXl+tvf/qb58+fr2muvlSR17txZ+fn5euaZZzwytgkAAPgel8LQhAkT9O2332rZsmUaMGCAoz01NVWTJ0+ucxiKjIxUZGTkaedLTk6WzWbT2rVr1a1bN0nSmjVrZLPZ1LNnz2qXqaysVGVlpQICnIdFNWnSRHa7vU71AQCAxs+lAdQLFizQSy+9pN69ezsdpurQoYO2bt3qtuJOSEpK0oABAzR8+HCtXr1aq1ev1vDhw3Xdddc5Xeuoffv2mj9/viQpPDxcKSkpGjdunJYtW6bt27crNzdXb7/9tgYPHuz2GgEAgG9yqWdo79691Q5o/vXXX2sdw3M25s6dq8zMTPXr10+SNHDgQL300ktO8xQWFspmszke//3vf9eECRN02223ad++fYqPj1dWVpbuvfdej9QIAAB8j0th6IorrtDHH3+skSNHSvrf4ObXX39dycnJ7qvuJC1bttScOXNqnee3t1lr3bq1Zs2a5ZF6AABA4+BSGMrOztaAAQP0ww8/6NixY5oxY4a+//57rVq1SsuXL3d3jQAAAB7j0pihnj17auXKlTp8+LAuuugiLV68WNHR0Vq1apUuu+wyd9cIAADgMWfcM1RZWan09HRNmjTJcWo9AACArzrjnqHAwEDHGVsAAAC+zqXDZIMHD9aCBQvcXAoAAED9c2kAdWJioh577DGtXLlSl112mZo3b+70fGZmpluKAwAA8DSL+e356HVwwQUX1LxCi0Xbtm07q6IakrKyMlmtVtlsNoWHh3u7HAAAUAdn8vvtUs/Q9u3bXSoMAACgoXFpzBAAAEBj4VLPkCT9+OOPWrhwoYqLi3X06FGn56ZPn37WhQEAANQHl8LQkiVLNHDgQF1wwQUqLCzU7373O+3YsUPGGF166aXurhEAAMBjXDpMNmHCBI0dO1bfffedQkJCNG/ePJWUlCglJUU333yzu2sEAADwGJfCUEFBge68805JUtOmTVVeXq4WLVro0Ucf1ZNPPunWAgEAADzJpTDUvHlzVVRUSJLatGmjrVu3Op77+eef3VMZAABAPXBpzFCPHj309ddfq0OHDrr22ms1duxY/ec//9EHH3ygHj16uLtGAPAbR44cUXFxsbfLcJu4uDiFhIR4uwygVi6FoenTp+vQoUOSpClTpujQoUP6xz/+ocTERD333HNuLRAA/ElxcbHS09O9XYbb5OTkqG3btt4uA6iVS1eg9idcgRpAfaqPnqGioiJlZWVp4sSJio+P9+i26BmCt3j8CtQAAM8ICQmpt56U+Ph4em0AuRiGAgICZLFYany+qqrK5YIAAADqk0thaP78+U6PKysr9c0332j27NmaOnWqWwoDAACoDy6FoUGDBp3SdtNNN6ljx476xz/+obvvvvusCwMAAKgPbr1Ra/fu3fX555+7c5UAAAAe5bYwVF5erhdffFHnn3++u1YJAADgcS4dJjvnnHOcBlAbY3Tw4EGFhoZqzpw5bisOAADA01wKQ88995xTGAoICNC5556r7t2765xzznFbcQDQEO3evVs2m83bZbisqKjI6U9fZrVaFR0d7e0y4OO46OJpcNFFACfbvXu3bk+7Q5VHK7xdCiQFBgVrzjtvE4hwCo9fdHHjxo11nrdz586ubAIAGiSbzabKoxUqvzBF9hCrt8vxawFHbNK25bLZbIQhnBWXwlCXLl1qveiidHwckcVi4QKMABole4hV9uaR3i4DgBu4dDbZBx98oAsuuECvvPKKvvnmG33zzTd65ZVXdNFFF2nevHnatm2btm/frm3btrm7XgAAALdyqWfo8ccf1wsvvKBrrrnG0da5c2fFxsZq0qRJWr9+vdsKBAAA8CSXeob+85//6IILLjil/YILLtAPP/xw1kUBAADUF5fCUFJSkqZNm6YjR4442ioqKjRt2jQlJSW5rTgAAABPc+kw2cyZM3X99dcrNjZWl1xyiSTp22+/lcVi0UcffeTWAgEAADzJ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sSS/PX588nJ2u12S9Prrr6t79+5O8zVp0qRO6/c3J96/6t7Xk9sCAwMdf7dYLE6PT7SdeP9Rs9/+OygqKtI111yje++9V4899phatmypFStW6O6771ZlZaVjvure77r+m5Hqvp9/uy137evqtlNd/b99f+x2u0aMGKHMzMxT5o2Li1NQUJA2bNigZcuWafHixXrkkUc0ZcoUrVu3zmdPAa/t/a7L93NAQMAp7+3Jn6UTXP0snulrOLHfT34Nte1TX0EY8rLVq1ef8vjiiy9WkyZNtGnTJv3888964oknFBsbK0nVDmy+5ppr1Lx5c7366qv69NNP9eWXXzqeu/TSS1VaWqqmTZsqISGhxjratm2rtm3basyYMbr11ls1a9asWsPQ6XTo0KHa13aydu3aae3atUpLS3O0nfz6oqOjdd5552nbtm267bbbXK7FnyQmJiooKEgrVqzQ0KFDJR3/4szLyzvrU5Jr+6ziuLy8PB07dkzPPvusAgKOd7y///77Z7QOq9WqmJgYrV69WldeeaWk4ydarF+/Xpdeeqkkz+7nuujQoYNWrFjh1LZy5Uq1bdu21s/DpZdequ+//16JiYk1ztO0aVOlpqYqNTVVkydPVkREhL744gvdeOONCgoKalQ9kXX5fj733HP13XffObXl5+efErJ+yx2fxbqoyz71hf3GYTIvKykp0QMPPKDCwkK99957evHFFzVq1ChJ//uf0osvvqht27Zp4cKF1V7jo0mTJho2bJgmTJigxMREp+711NRUJScn64YbbtBnn32mHTt2aOXKlXr44YeVl5en8vJyZWRkaNmyZSoqKtLXX3+tdevWKSkp6axeV2ZmphYtWqSnnnpKmzdv1ksvvaRFixY5zTNy5Ei9+eabmj17trZs2aJp06Zp48aNTv/jnDJlirKzszVjxgxt3rxZ//nPfzRr1ixNnz79rOprrJo3b6777rtP48aN06JFi/TDDz9o+PDhOnz4sO6+++6zWndtn1Ucd9FFF+nYsWOOf7PvvPOOZs6cecbrGTVqlJ544gnNnz9fmzZt0v333+90pqYn93NdjB07VkuWLNFjjz2mzZs3a/bs2XrppZf017/+tdblHnroIa1atUp/+ctflJ+fry1btmjhwoUaOXKkpOOH+V944QXl5+erqKhIb7/9tux2u9q1ayfp+Blqa9as0Y4dO/Tzzz/7fO/l6b6fpeNn8eXl5entt9/Wli1bNHny5FPCUXXc9Vk8ndPtU+n4fvvyyy+1c+dO/fzzz26vwS28NVgJxwe93X///ebee+814eHh5pxzzjHjx493GqT67rvvmoSEBBMcHGySk5PNwoULjSTzzTffOK1r69atRpJj8OTJysrKzMiRI02bNm1MYGCgiY2NNbfddpspLi42FRUVZsiQISY2NtYEBQWZNm3amIyMDMfAt+pIMvPnz3dq++0AamOOnwl3/vnnm2bNmpnrr7/ePPPMM6cM1nv00UdNZGSkadGihbnrrrtMZmam6dGjh9M8c+fONV26dDFBQUHmnHPOMVdeeaX54IMPan9z/Vh5ebkZOXKkiYyMNMHBwaZXr15m7dq1xpjq91N1gygnT57sNJC9Lp9Vf1PTYN7p06ebmJgY06xZM9O/f3/z9ttvO73n1b3f8+fPNyd/HVdWVppRo0aZ8PBwExERYR544AFzxx13OA2krW0/G+P6vv6t6gZQG2PMP//5T9OhQwcTGBho4uLizNNPP+30fE2DZteuXWv69u1rWrRoYZo3b246d+5ssrKyjDHHB96mpKSYc845xzRr1sx07tzZ/OMf/3AsW1hYaHr06GGaNWtmJJnt27fXWHdDUN1nZNCgQebOO+90PK7t+/mERx55xERHRxur1WrGjBljMjIyThlA7a7P4slODKA++femus9DbfvUGGNWrVplOnfubIKDg01DjR0WY/z4QiGNyNdff60+ffroxx9/VHR0tLfLcVnfvn3VunVrvfPOO94uBSfp06ePunTp0uCvIgsArmDMkI+rqKhQSUmJJk2apD/96U8+FYQOHz6smTNnqn///mrSpInee+89ff755/r3v//t7dIAAH6EMUM+7r333lO7du1ks9n01FNPebucM2KxWPTJJ5/o//2//6fLLrtMH374oebNm6fU1FRvlwYA8CMcJgMAAH6NniEAAODXCEMAAMCvEYYAAIBfIwwBAAC/RhgCAAB+jTAEwO8tW7ZMFovF6ZYX7mKxWLRgwQK3rxeA+xCGAPiVPn361MvNTAH4DsIQAADwa4QhAA1Wnz59NHLkSI0ePVrnnHOOoqOjlZOTo19//VV//vOfFRYWposuukiffvqpY5kffvhB11xzjVq0aKHo6GilpaU57pQ9bNgwLV++XDNmzJDFYpHFYtGOHTscy65fv16XX365QkND1bNnTxUWFjrV8+qrr+qiiy5SUFCQ2rVrd8o99LZs2aIrr7xSISEh6tChA7eWAXwEYQhAgzZ79mxFRkZq7dq1GjlypO677z7dfPPN6tmzpzZs2KD+/fsrLS1Nhw8f1q5du5SSkqIuXbooLy9PixYt0u7du/WnP/1JkjRjxgwlJydr+PDh2rVrl3bt2qXY2FjHtiZOnKhnn31WeXl5atq0qe666y7Hc/Pnz9eoUaM0duxYfffddxoxYoT+/Oc/a+nSpZIku92uG2+8UU2aNNHq1as1c+ZMPfTQQ/X7ZgFwzdnf+B4APCMlJcX07t3b8fjYsWOmefPmJi0tzdG2a9cuI8msWrXKTJo0yfTr189pHSUlJUaSKSwsdKxz1KhRTvMsXbrUSDKff/65o+3jjz82kkx5ebkxxpiePXua4cOHOy138803m2uuucYYY8xnn31mmjRpYkpKShzPf/rpp0aSmT9/vutvAgCPo2cIQIPWuXNnx9+bNGmiVq1aqVOnTo626OhoSdKePXu0fv16LV26VC1atHBM7du3lyRt3br1jLYVExPjWK8kFRQUqFevXk7z9+rVSwUFBY7n4+LidP755zueT05OPqPXCsA7mnq7AACoTWBgoNNji8Xi1GaxWCQdP0xlt9t1/fXX68knnzxlPSfCTV23dfJ6f9t2gjHG0Waquef1b+cH0DDRMwSg0bj00kv1/fffKyEhQYmJiU5T8+bNJUlBQUGqqqo643UnJSVpxYoVTm0rV65UUlKSJKlDhw4qLi7WTz/95Hh+1apVZ/FqANQXwhCARuMvf/mL9u3bp1tvvVVr167Vtm3btHjxYt11112OAJSQkKA1a9Zox44d+vnnn516fmozbtw45ebmaubMmdqyZYumT5+uDz74QH/9618lSampqWrXrp3uuOMOffvtt/rqq680ceJEj71WAO5DGALQaLRp00Zff/21qqqq1L9/f/3ud7/TqFGjZLVaFRBw/Ovur3/9q5o0aaIOHTro3HPPVXFxcZ3WfcMNN2jGjBl6+umn1bFjR7322muaNWuW+vTpI0kKCAjQ/PnzVVFRoW7duumee+5RVlaWp14qADeymOoOdAMAAPgJeoYAAIBfIwwBAAC/RhgCAAB+jTAEAAD8GmEIAAD4NcIQAADwa4QhAADg1whDAADArxGGAACAXyMMAQAAv0YYAgAAfu3/A7aqIVWLs244AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_comparison((bayes_ridge_score, omp_score, rf_score, nn_score), (\"bayes ridge\", \"omp\", \"random forest\", \"neural net\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0c11de30-c92c-4397-8e6b-4187a3f85a9c",
   "metadata": {},
   "source": [
    "The best neural network with tuned hyperparameters gives much more accurate predictions than the random forst model."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "181d30f1-958b-4463-b2b1-34e1646933e5",
   "metadata": {
    "id": "181d30f1-958b-4463-b2b1-34e1646933e5"
   },
   "source": [
    "# <center> V/ Creation of the submission"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "0a1ce762",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = df_process_test.copy()\n",
    "X_test.iloc[:, -24:] = X_test.iloc[:, -24:] * lab_factor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "0e4042be",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = torch.zeros(X_test.shape[0] * X_test.shape[1]).reshape(X_test.shape[0], X_test.shape[1])\n",
    "\n",
    "\n",
    "for idx in range(0,X_test.shape[0]):\n",
    "    row = X_test.iloc[idx]\n",
    "    x[idx] = ( torch.tensor((row), dtype=torch.float) )\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "fb63bd29-ccf0-44c2-ab66-b223fd71b370",
   "metadata": {
    "id": "fb63bd29-ccf0-44c2-ab66-b223fd71b370"
   },
   "outputs": [],
   "source": [
    "y_pred = sknn.predict(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "f21c3055-13b2-4529-ab9d-6bf952864b4e",
   "metadata": {
    "id": "f21c3055-13b2-4529-ab9d-6bf952864b4e"
   },
   "outputs": [],
   "source": [
    "# Convert your list into a DataFrame\n",
    "df = pd.DataFrame(y_pred)\n",
    "df['ID']=[x for x in range(1,1376)]\n",
    "# Rename the column 'old_name' to 'new_name'\n",
    "df.rename(columns={0: 'RT'}, inplace=True)\n",
    "df = df[['ID','RT']]\n",
    "\n",
    "\n",
    "# Save the DataFrame as a CSV file\n",
    "df.to_csv('SUBMIT_EPOCH_5_final.csv', index=False)  # 'index=False' to not includes the row index"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c81a853b-ac02-4b05-8379-3f6d54f33d8d",
   "metadata": {},
   "source": [
    "# <center> VI/ Conclusions"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "14ce7f74",
   "metadata": {},
   "source": [
    "After tuning the hyperparameters of both non-linear and linear models, the following observation is clear: a non-linear model, namely a neural network, gives the most accurate predictions of the retention times.\n",
    "\n",
    "Critical was also the feature engineering step: we observed that adding CDDD features and RDKit features improved performance, and, surprisingly, scaling the one-hot coded lab features by a factor larger than 10 also helped the neural network to make better prediction. The reason might be, that this increases the influence of the lab feature early during training, when the weights are still small, but further analysis would be needed to confirm this.\n",
    "\n",
    "We did not try other methods that may have led to even better performance, such as dimensionality reduction of the input features with PCA, gradient boosting trees, or ensembling (bagging or boosting) of different models."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python (myenv)",
   "language": "python",
   "name": "myenv"
  },
  "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.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
