{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# load libraries \n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "import mne \n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "\n",
    "\n",
    "import glob\n",
    "from tqdm import tqdm\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import plot_roc_curve\n",
    "from sklearn.model_selection import cross_val_score\n",
    "import warnings\n",
    "import seaborn as sns\n",
    "\n",
    "from sklearn import svm\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.metrics import roc_auc_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#ignore warning \n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Read Data and Extract Features "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get Subj Number, and Output Variable from Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "subj_corr_sum = []\n",
    "TBI_path = \"Open_Neuro_TBI\"\n",
    "subj_path = next(os.walk(TBI_path))[1][2:]\n",
    "\n",
    "#collecting subject symptom rating \n",
    "meta_data = pd.read_excel(TBI_path + \"/code/BigAgg_4BIDS.xlsx\")\n",
    "sub_id_symp_rat = meta_data[[\"SubID\", \"HadHeadInjury\"]]\n",
    "\n",
    "#get subject id and corresponding subject name \n",
    "participant_df = pd.read_csv(TBI_path + \"/participants.tsv\", sep = \"\\t\")[['participant_id', 'Original_ID']]\n",
    "participant_df.rename(columns = {'Original_ID':'SubID'}, inplace = True)\n",
    "\n",
    "#joining on sub id and subject name\n",
    "subid_symp_rate = pd.merge(participant_df,sub_id_symp_rat,on='SubID')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(x = subid_symp_rate['HadHeadInjury'], bins=[-.5,.5,1.5], ec=\"k\")\n",
    "plt.xticks((0,1), labels=['Controls', 'Cases'])\n",
    "plt.title('Histogram for TBI Dataset Subject Mental Illness Status')\n",
    "plt.xlabel('Subject Mental Illness Status')\n",
    "plt.ylabel('Count')\n",
    "plt.savefig('TBI_Count.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Get ERP and ERP features from Data (Input Variables)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "########deleting this because subject 40 does not have target tone event \n",
    "subid_symp_rate = subid_symp_rate.drop([39], axis = 0) \n",
    "subid_symp_rate = subid_symp_rate.reset_index(drop=True)\n",
    "\n",
    "########deleting this because subject 60 does not have target tone event \n",
    "subid_symp_rate = subid_symp_rate.drop([58], axis = 0) \n",
    "subid_symp_rate = subid_symp_rate.reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "%%capture\n",
    "\n",
    "# Path for .set file for each subject (currently only using session 1)\n",
    "subj_path = subid_symp_rate['participant_id'].values\n",
    "\n",
    "#define N200 and P300 channels \n",
    "P300_chann = ['CP1', 'CP2', 'CP3', 'CP4', 'CP5', 'CP6']\n",
    "N200_chann = ['FC1', 'FC2', 'FC3', 'FC4', 'FC5', 'FC6']\n",
    "\n",
    "#define empty lists for collection \n",
    "p300_amp_coll = {}\n",
    "p300_lat_coll = {}\n",
    "p300_amp_avg = []\n",
    "p300_amp_var = []\n",
    "p300_lat_avg = []\n",
    "p300_lat_var = []\n",
    "\n",
    "n200_amp_coll = {}\n",
    "n200_lat_coll = {}\n",
    "n200_amp_avg = []\n",
    "n200_amp_var = []\n",
    "n200_lat_avg = []\n",
    "n200_lat_var = []\n",
    "\n",
    "erp_coll = {}\n",
    "epochs_coll = {}\n",
    "\n",
    "coherence_measure = []\n",
    "\n",
    "for i in range(len(subj_path)):\n",
    "    data_path = TBI_path+\"/\"+subj_path[i]+\"/\"+\"ses-01\"+\"/eeg\"\n",
    "    set_file_path = glob.glob(data_path+'/*.set')[0]\n",
    "    \n",
    "    # Load EEG data fro .set file using mne \n",
    "    raw = mne.io.read_raw_eeglab(input_fname = set_file_path , eog=(), preload=False, uint16_codec=None, verbose=None)\n",
    "    raw.load_data()   \n",
    "    raw.drop_channels(['EKG','VEOG'])\n",
    "\n",
    "    #calculate ERP\n",
    "    events = mne.events_from_annotations(raw, regexp = 'S200')\n",
    "    epochs = mne.Epochs(raw, events=events[0], tmin=-0.5, tmax=0.5)\n",
    "    epochs_coll[i] = epochs\n",
    "    erp = epochs.average()\n",
    "    erp_coll[i] = erp\n",
    "    #calculate GFP\n",
    "    coherence_measure.append(np.mean(erp.data.std(axis=0, ddof=0)))\n",
    "    \n",
    "    #calculate P300 and N200 features \n",
    "    p300_amp = [None] * 6\n",
    "    p300_lat = [None] * 6\n",
    "    n200_amp = [None] * 6\n",
    "    n200_lat = [None] * 6\n",
    "\n",
    "    for j in range(len(P300_chann)):     #Get P300 and P200 for respective channels \n",
    "        erp_P300_chann = erp.copy().pick([P300_chann[j]]) #select j-th P300 channel \n",
    "        ch_p300, p300_lat[j] , p300_amp[j] = erp_P300_chann.get_peak(ch_type='eeg', tmin=0.25, tmax=0.4, mode='pos', return_amplitude=True) #calculate P300 for channel \n",
    "        \n",
    "        erp_N200_chann = erp.copy().pick_channels([N200_chann[j]]) #select j-th N200 channel \n",
    "        ch_n200, n200_lat[j], n200_amp[j] = erp_N200_chann.get_peak(ch_type='eeg', tmin=0.2, tmax=0.35, mode='neg', return_amplitude=True) #calculate N200 for channel \n",
    "        \n",
    "        \n",
    "        \n",
    "    p300_amp_coll[i] = p300_amp\n",
    "    p300_amp_avg.append(np.mean(p300_amp))\n",
    "    p300_amp_var.append(np.var(p300_amp))\n",
    "    p300_lat_coll[i] = p300_lat\n",
    "    p300_lat_avg.append(np.mean(p300_lat))\n",
    "    p300_lat_var.append(np.var(p300_lat))\n",
    "    \n",
    "    n200_amp_coll[i] = n200_amp\n",
    "    n200_amp_avg.append(np.mean(n200_amp))\n",
    "    n200_amp_var.append(np.var(n200_amp))\n",
    "    n200_lat_coll[i] = n200_lat\n",
    "    n200_lat_avg.append(np.mean(n200_lat))\n",
    "    n200_lat_var.append(np.var(n200_lat))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### P300 and N200 Visualization "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def print_peak_measures(ch, tmin, tmax, lat, amp):\n",
    "    print(f'Channel: {ch}')\n",
    "    print(f'Time Window: {tmin * 1e3:.3f} - {tmax * 1e3:.3f} ms')\n",
    "    print(f'Peak Latency: {lat * 1e3:.3f} ms')\n",
    "    print(f'Peak Amplitude: {amp * 1e6:.3f} µV')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def graph_300_200(sub):\n",
    "    #define N200 and P300 channels \n",
    "    P300_chann = ['CP1', 'CP2', 'CP3', 'CP4', 'CP5', 'CP6']\n",
    "    N200_chann = ['FC1', 'FC2', 'FC3', 'FC4', 'FC5', 'FC6']\n",
    "    \n",
    "    erp_P300_chann = erp_coll[sub].copy().pick(P300_chann)\n",
    "\n",
    "    #calculate P300\n",
    "    ch, lat, amp = erp_P300_chann.get_peak(ch_type='eeg', tmin=0.25, tmax=0.4, mode='pos', return_amplitude=True)\n",
    "    # Print output\n",
    "    print('** PEAK MEASURES FOR P300**')\n",
    "    print_peak_measures(ch = ch , tmin = 0.25, tmax = 0.4,lat = lat, amp = amp)\n",
    "\n",
    "    #plot P300 Peak \n",
    "    fig, ax = plt.subplots(nrows=1, ncols=1)\n",
    "    times = np.array([0.25, 0.4])\n",
    "\n",
    "    title = \"Centro-Parietal (P300) ERP\"\n",
    "    erp_P300_chann.plot(axes=ax, time_unit='ms', show=False, titles=title)\n",
    "    ax.plot(lat * 1e3, amp * 1e6, marker='*', color='C6')\n",
    "    ax.axvspan(*(times * 1e3), facecolor='C1', alpha=0.3)\n",
    "    ax.set_xlim(-0, 500)  # Show zoomed in around peak\n",
    "    plt.savefig(\"ERP_1.png\")\n",
    "    \n",
    "    erp_N200_chann = erp_coll[sub].copy().pick_channels(N200_chann)\n",
    "\n",
    "    #calculate N200\n",
    "    ch, lat, amp = erp_N200_chann.get_peak(ch_type='eeg', tmin=0.2, tmax=0.35, mode='neg', return_amplitude=True)\n",
    "    # Print output\n",
    "    print('** PEAK MEASURES FOR N200**')\n",
    "    print_peak_measures(ch = ch , tmin = 0.2, tmax = 0.35,lat = lat, amp = amp)\n",
    "\n",
    "    #plot N200 Peak \n",
    "    fig, ax = plt.subplots(nrows=1, ncols=1)\n",
    "    times = np.array([0.2, 0.35])\n",
    "\n",
    "    title = \"Fronto-Central (N200) ERP\"\n",
    "    erp_N200_chann.plot(axes=ax, time_unit='ms', show=False, titles=title)\n",
    "    ax.plot(lat * 1e3, amp * 1e6, marker='*', color='C6')\n",
    "    ax.axvspan(*(times * 1e3), facecolor='C1', alpha=0.3)\n",
    "    ax.set_xlim(0, 500)  # Show zoomed in around peak\n",
    "    \n",
    "    plt.savefig(\"ERP_2.png\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Machine Learning "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Using ALL ERP Features "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Define Data\n",
    "data = pd.DataFrame(list(zip(p300_amp_avg, p300_amp_var, p300_lat_avg, p300_lat_var, n200_amp_avg, n200_amp_var, n200_lat_avg, n200_lat_var, coherence_measure, list(subid_symp_rate['HadHeadInjury'].values))),\n",
    "               columns =['p300_amp_avg', 'p300_amp_var', 'p300_lat_avg', 'p300_lat_var', 'n200_amp_avg', 'n200_amp_var', 'n200_lat_avg', 'n200_lat_var', 'coherence_measure', 'HadHeadInjury'])\n",
    "X = data[['p300_amp_avg', 'p300_amp_var', 'p300_lat_avg', 'p300_lat_var', 'n200_amp_avg', 'n200_amp_var', 'n200_lat_avg', 'n200_lat_var']]\n",
    "Y = data[['HadHeadInjury']]\n",
    "\n",
    "#train test split \n",
    "x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=40)\n",
    "\n",
    "data.to_csv('data1.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lenth of 69\n",
      "number of head injury  =  44.0\n",
      "number of controls =  25.0\n"
     ]
    }
   ],
   "source": [
    "print('lenth of', len(X))\n",
    "print('number of head injury  = ', sum(Y['HadHeadInjury']))\n",
    "print('number of controls = ', len(Y) - sum(Y['HadHeadInjury']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lenth of train set 46\n",
      "number of head injury in train set  =  33.0\n",
      "number of controls in train set =  13.0\n",
      "length of test set 23\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n"
     ]
    }
   ],
   "source": [
    "print('lenth of train set', len(x_train))\n",
    "print('number of head injury in train set  = ', sum(y_train['HadHeadInjury']))\n",
    "print('number of controls in train set = ', len(y_train) - sum(y_train['HadHeadInjury']))\n",
    "\n",
    "\n",
    "print('length of test set', len(x_test))\n",
    "print('number of head injury in test set  = ', sum(y_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y_test) - sum(y_test['HadHeadInjury']))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Log Reg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 0 12]\n",
      " [ 0 11]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.64285714 0.64285714 0.64285714 0.61538462]\n",
      "Test Accuracy Score 0.4782608695652174\n",
      "precision =  0.4782608695652174\n",
      "Sensitivity :  0.0\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6470588235294118\n"
     ]
    },
    {
     "data": {
      "image/png": "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8xg6dCi/+MUvGhxnRKz347qxRo8ezcknn9zg7QBcddVVfOc736ma/uyzz5gyZQrbbbcdM2fOzLSNiGDEiBEMHTqUl156iQULFvDLX/6Sf/7znw2K7eabb6Zbt24sXryYc889lwsvvLDWsvfee+8GJxVXX3015eXllJeXc9ZZZ/GNb3wDgO7du9OjRw/++te/Nii+SsWqhpZHxOWNsieznF32wPMsWPZ+o26z/7ZduOTr9e9Jpby8nNGjR7NmzRp23HFHbrnlFrp168bs2bM59dRT6dixI4MHD+bPf/4z8+fP59FHH+XKK69k2rRpPPbYY5xzzjlAUt87c+ZMxowZw8KFCxk4cCDf+ta32GOPParKr169mrPOOos5c+YgiUsuuYSjjz56vXgGDRpUlTgqKioYPXo0r72WdBU2btw49t9/fyoqKjj++ONZsWIFe+21F9OnT2fu3LmsXr2a4cOHc9BBBzFr1izuu+8+7r77bu6++24++ugjRowYwWWXXcYHH3zAsccey9KlS/n000/52c9+xsiRIxkzZgxTp06lbdu2HHLIIVx55ZVceumldOrUifPPP7/Wz2ro0KHss88+zJgxg/fee4+bb76ZIUOGbPBZ33PPPesluRkzZrDrrrsycuRIJk2axNChQ4t+XzNmzKBdu3aMHj26at7AgQPr+7Vv4P777+fSSy8F4JhjjuHMM88kIjaox1+9ejVXXXUVEyZM4Nhjj61xW5MmTeKyyy6rmj7qqKO488472X///RscZ7ErArfCmW2Ek08+mV//+tfMmzePAQMGVP0HPuWUUxg/fjyzZs2iTZs2Na575ZVXcv3111NeXs7jjz9Ohw4dGDt2LEOGDKG8vJxzzz13vfI///nP6dq1K8899xzz5s3j4IMP3mCb06dP56ijjgKSapNzzz2X2bNnc88993DaaacBcNlll3HwwQfz9NNPM2LEiKpEAbBo0SJOPvlknnnmGRYtWsQ//vEPnnrqKcrLy5k7dy4zZ85k+vTpbLvttjz77LPMnz+fYcOG8c477zBlyhSef/555s2bx0UXXZT5swJYt24dTz31FOPGjVtvfqVXXnmFbt26sdlmm1XNmzRpEqNGjWLEiBFMmzaNTz75pLavqcr8+fPZc889i5YDGDJkSFV1TeHrkUce2aDsG2+8wXbbbQdA27Zt6dq1KytWrNig3M9+9jN++MMfsvnmm9e4z1dffZVXXnllve+2rKyMxx9/PFPMxRS7IvhKo+zFrAQ25sw9DytXruS9997jwAMPBOBb3/oW3/zmN3nvvfdYtWoV++23HwDHH38806ZN22D9/fffn/POO48TTjiBb3zjG/Tq1avO/T3yyCNMnjy5arpbt25V7w866CD++c9/ss0221SdNT/yyCMsWLCgqsz777/PqlWreOKJJ5gyZQoAw4YNW28722+/Pfvuuy8ADz/8MA8//DB77LEHkJzN/uMf/2DIkCGcf/75XHjhhRx++OEMGTKEdevW0b59e0477TQOO+ywDerya/usKlVWhey555411q8vX76c7t27V01//PHHPPjgg1x99dV07tyZffbZh4cffpjDDjus1rtp6nuXTX1+fCOi6P7Ky8tZvHgxV199da1tCJMnT+aYY45Z7+Rhm222YdmyZZljqUudVwQR8U5DNi5pmKRFkhZLGlPDckm6Nl0+L+3MzqxFqulHoSZjxoxh4sSJfPjhh+y777688MILRbdb24/ZjBkzePXVV9lll124+OKLgaQOfdasWVV1z2+88QadO3euM76OHTuut78f//jHVesvXryYU089lZ133pm5c+cyYMAAfvzjH3P55ZfTtm1bnnrqKY4++mjuu+++ejdwVp7pt2nThnXr1m2wvEOHDuvdMz99+nRWrlzJgAED6NOnD0888QSTJk0CYKuttuLdd99db/1Vq1axxRZbsMsuuzB37txMMdXniqBXr168/vrrQHJ1s3LlSrbccsv1ysyaNYu5c+fSp08fBg8ezIsvvrhBddbkyZMZNWrUevPWrl1Lhw4dMsVczEZ1OpdF+kTy9cBwoD8wSlL/asWGA/3S1+nAjXnFY1YqXbt2pVu3blVnjr/73e848MAD6datG507d+bJJ58EWO8svtBLL73EgAEDuPDCCykrK+OFF16gc+fOrFq1qsbyhxxyCNddd13VdPUfuw4dOjBu3Dhuv/123nnnnQ3Kl5eXAzB48GDuvvtuIDnrr76dSl/72te45ZZbWL16NZBUf7z11lssW7aMzTffnBNPPJHzzz+fp59+mtWrV7Ny5UoOPfRQxo0bV7WvYp9VVjvvvPN6Z9GTJk1i4sSJLFmyhCVLlvDKK6/w8MMPs2bNGg444ACmTp1a9Tnee++97L777rRp04aDDz6Yjz76iJtuuqlqW7Nnz+axxx7bYJ+PP/54VRIsfH31q1/doOwRRxzBbbfdBsAf//hHDj744A2S9ve+9z2WLVvGkiVLeOKJJ9h555159NFHq5YvWrSId999l0GDBq233osvvrjeHUYNkfU5go2xN7A4Il4GkDQZOBJYUFDmSOD2SE5FnpS0haQeEbG8sYPJoyGxpVuw/H369+jS1GF87q1Zs2a96pvzzjuP2267raoBdIcdduC3v/0tkNxF8p3vfIeOHTsydOhQunbtusH2xo0bx4wZM2jTpg39+/dn+PDhbLLJJrRt25bdd9+db3/721XVMgAXXXQRZ5xxBrvuuitt2rThkksuqapSqdSjRw9GjRrF9ddfz7XXXssZZ5zBbrvtxrp16zjggAMYP348l1xyCaNGjeKuu+7iwAMPpEePHnTu3LnqB7/SIYccwsKFC6t+mDp16sQdd9zB4sWLueCCC9hkk01o164dN954I6tWreLII49k7dq1RARXX331Bsdb22eVRceOHdlxxx1ZvHgx2267LQ899BC/+c1v1ls+ePBgHnjgAUaOHMmZZ57J4MGDkcQ222zDxIkTgaS6ZsqUKfzgBz9g7NixtG/fnj59+jBu3LjMsdTk1FNP5aSTTmKnnXZiyy23XC/5Dxw4cIPEWJNJkyZx3HHHbZBAZsyYwWGHHdag+Cop6+VqvTcsHQMMi4jT0umTgH0i4syCMtOAsRHxRDr9F+DCiJhTbVunk1wx0Lt37z035n5oJ4KNc+TAnhy/T++mDqNWCxcu5Etf+lJTh5HZ6tWrq24RHDt2LMuXL+eaa65p4qgSH330EW3atKFt27bMmjWL733ve5l+qJralClTmDt3bqPcHtucHHDAAdx///3rteVUqun/haS5EVFW07byvCKoqdKyetbJUoaImABMACgrK9uozPV5aUi01u1Pf/oTv/rVr1i3bh3bb789t956a1OHVOW1117j2GOP5bPPPmPTTTddr5rk82zEiBE13onTklVUVHDeeefVmAQ2Rp6JYCmwXcF0L6B6E3eWMmYtxsiRIxk5cmRTh1Gjfv368cwzzzR1GBul8hbY1qJ79+5VtwM3htwai4HZQD9JfSVtChwHTK1WZipwcnr30L7AyjzaB6xly6t606w52pj/D7ldEUTEOklnAg+RdFVxS0Q8L2l0unw88CBwKLAYWAOcklc8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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Logistic Regression \n",
    "from sklearn.linear_model import LogisticRegression\n",
    "lr = LogisticRegression().fit(x_train, y_train)\n",
    "y_pred = lr.predict(x_test)\n",
    "\n",
    "\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(lr, x_test, y_test)\n",
    "plt.savefig('rocauc/lr_1.png')\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(lr, X, Y, cv=5))\n",
    "\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', lr.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import statsmodels.api as sm\n",
    "\n",
    "x_train_constant = sm.add_constant(x_train)\n",
    "x_test_constant = sm.add_constant(x_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.4782608695652174\n",
      "[[ 0 12]\n",
      " [ 0 11]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.64285714 0.64285714 0.64285714 0.61538462]\n",
      "Test Accuracy Score 0.4782608695652174\n",
      "precision =  0.4782608695652174\n",
      "Sensitivity :  0.0\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6470588235294118\n"
     ]
    },
    {
     "data": {
      "image/png": "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BlBdXU11dTUzZ84E4OGHH26cNnr0aKZPn964zgEHHMCrr77a5vig9BVBN2BrkiuAYtEuEZhZl/bggw9y11138eijj9KzZ09efvll3n77bSZNmsSECRO4+OKLG5etra3l2GOPBeCUU05hyJAhPPvss2y22WYsWbKERYs27uJs5syZjB49mt69ezdOmzZtGh/72Meora3loosuyhTn+eefz8qVK5k/fz49e/bkf//3f7n33nvbdOwLFy6ktraWBQsWsGLFCg444ACeeeYZunXrttGy55xzDl//+tc3mDZy5Ejmzp1L9+7dWblyJaNHj+aQQw6he/fuHH/88Vx11VWcd955bYoRSieClRHx/TbvxczeF7535wIWrlhTesFWqPpgby48pPneZlauXEnfvn3p2bMnAH379m2ct9122zFnzhz22msvAG655RZmzZrFP/7xD+bMmcONN97IZpslFRc777wzO++880bbv/HGGznttNMay2vXruWBBx5g9uzZHHrooZkSwZtvvsk111zD0qVLG+PccccdOfroo0t/AC2YMWMGEydOpGfPngwZMoRhw4bx8MMPM3bs2Ezrb7nllo3v161bt0H9/6GHHsq+++7bLomgVNWQW5jMrE0OPPBAli1bxi677MKZZ565wVn2pEmTqK2tBeChhx6iT58+DB8+nAULFlBdXd3kmXOxBx54gD333LOxfPvttzN+/Hh22WUXtt9+ex599NGS21i8eDGDBg3a4KqiOeecc05jdU3ha/LkyRstu3z5cnbaaafG8sCBA1m+fHmT273iiisYNWoUn/vc5zao8pkzZw4jRoxg99135+qrr6Z79+T8/QMf+ABvvfUWq1evLhlzKaWuCD7R5j2Y2ftGS2fuedl6662ZN28ef/vb35g9ezbHHHMMkydP5qSTTmLixInss88+/PznP6e2tpZJkyaV3mCRV155hW22+dczr9OmTeMrX/kKABMnTmTatGnssccezd5N09q7bC699NLMy0ZsXIPe1P6+8IUvcP755yOJ888/n6997Wtce+21AOy1114sWLCARYsWceKJJzJhwgR69eoFwA477MCKFSvo06dPq46hWIuJICJeacvGJY0HLiNpa5gaEZOL5iudfxBJN9cnpf0YmVkX0q1bN8aNG8e4cePYfffduf766znppJPYaaedGDx4MPfeey+33XYb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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# SVM \n",
    "from sklearn import svm\n",
    "clf = svm.SVC(C = 1, kernel = 'linear', degree = 1, gamma = 0.01) \n",
    "clf.fit(x_train, y_train)\n",
    "y_pred = clf.predict(x_test)\n",
    "\n",
    "#accuracy\n",
    "print('Test Accuracy Score', clf.score(x_test, y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(clf, x_test, y_test)\n",
    "plt.savefig('rocauc/svm_1.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(clf, X, Y, cv=5))\n",
    "\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', clf.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5652173913043478\n",
      "[[ 2 10]\n",
      " [ 0 11]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.71428571 0.57142857 0.57142857 0.61538462]\n",
      "Test Accuracy Score 0.5652173913043478\n",
      "precision =  0.5238095238095238\n",
      "Sensitivity :  0.16666666666666666\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6875000000000001\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqDElEQVR4nO3deXhV1b3/8fdHHEAZvApaLkhBpTJKxFTEqXCtdQSqrVKcir3+rFVqh6stVq9a2lpa57EUq4IWhVrbinPRaqmzIGFWLypDFGtEpTiVwe/vj72THmKSs0NyTprk83qe85yz5+86J9lrr7X2XksRgZmZtV5bNXUAZmbWtJwRmJm1cs4IzMxaOWcEZmatnDMCM7NWbuumDqC+OnfuHD179mzqMMzMmpW5c+e+HRFdalrW7DKCnj17MmfOnKYOw8ysWZG0orZlrhoyM2vlnBGYmbVyzgjMzFo5ZwRmZq2cMwIzs1auYBmBpFskvSVpUS3LJelaScskLZA0uFCxmJlZ7QpZIpgCHFHH8iOB3unrDOBXBYzFzMxqUbDnCCJitqSedawyCrgtkn6wn5G0o6SuEbG6UDGZWX53PLuSe8peb+owrAb9/rMjF4/o3+j7bco2gm7Aqpzp8nTep0g6Q9IcSXMqKiqKEpxZa3VP2essWf2Ppg7DiqgpnyxWDfNqHCUnIiYDkwFKS0s9ko5ZgfXr2pEZ3xza1GFYkTRliaAc2C1nujvwRhPFYmbWajVlRjATODW9e2h/YK3bB8zMiq9gVUOS7gSGAZ0llQMXA9sARMQk4AHgKGAZ8CFwWqFiMTOz2hXyrqExeZYHcHahjm9mZtn4yWIzs1bOGYGZWSuXt2pI0lDgZOBgoCvwEbAIuB/4bUSsLWiEZmZWUHWWCCQ9CJwOPEzSXURXoB9wIdAWuEfSyEIHaWZmhZOvRHBKRLxdbd77wAvp6wpJnQsSmZmZFUWdJYLcTEDSTpL+o651zMys+clXNdRD0nRJFcCzwPNp19LT83QoZ2ZmzUS+u4ZmAH8EPhMRvSNiT5J2gj8B0wscm5mZFUG+jKBzRMyIiE2VMyJiU0RMB3YubGhmZlYM+RqL50q6EZjKv7qM3g34OjCvkIGZmVlx5MsITgX+G/gxyVgBIskQ7gVuLmxoZmZWDHVmBBGxnmQISQ8jafZvoBijhy1Z/Q/6de1Y0GPYv5ct7mJC0jGNGYiZ5VeM0cP6de3IqJIaBwu0FqohvY9+HrivsQIxs2w8epg1ti0uEUTExY0ZiJmZNY2GVA0d1piBmJlZ02hIN9S+a8jMrAWos41A0szaFuEHyszMWoR8jcUHk4xF8H61+QL2K0hEZmZWVPkygmeADyPir9UXSHqpMCGZmVkx5Xug7Mg6lh3S+OGYmVmxecxiM7NWzhmBmVkr54zAzKyVc0ZgZtbKZc4IJF1S17SZmTVP9SkRzM0zbWZmzVDmjCAi7q1r2szMmqd8XUxcB0RtyyPinEaPyMzMiirfk8VzihKFmZk1mXxPFk/NnZa0Q0R8UNiQzMysmDK1EUgaKmkJsDSdHiTpxgzbHSHpJUnLJI2vYXknSfdKmi9psaTT6p0CMzNrkKyNxVcDhwNrACJiPlBnX0OS2gA3AEcC/YAxkvpVW+1sYElEDAKGAVdI2jZr8GZm1nD1uWtoVbVZm/Jssh+wLCJejYj1wHRgVPXdAh0kCWgPvANszBqTmZk1XNaMYJWkA4CQtK2kc0mrierQDcjNPMrTebmuB/oCbwALge9ExCfVdyTpDElzJM2pqKjIGLKZmWWRNSM4k6QapxvwOlCSTtdFNcyrfivq4UAZ8J/pPq+X1PFTG0VMjojSiCjt0qVLxpDNzCyLfLePAhARbwMn1XPf5cBuOdPdSa78c50GTIyIAJZJeg3oAzxXz2OZmdkWynrX0O7p3T0Vkt6SdI+k3fNs9jzQW1KvtAH4a0D1MZBXAoemx9gV2At4tX5JMDOzhshaNXQH8DugK0k1zl3AnXVtEBEbgXHAwyTtCb+LiMWSzpR0ZrraT4ADJC0EHgV+mJY+zMysSDJVDQGKiNtzpn8raVy+jSLiAeCBavMm5Xx+A/hSxhjMzKwA8vU1tFP68bH0gbDpJA2+o4H7CxybmZkVQb4SwVySE3/lHUDfzFkWJFU7ZmbWjOXra6hXsQIxM7OmkbWNAEkDSLqKaFs5LyJuK0RQZmZWPJkyAkkXk/QF1I+k8fdI4AnAGYGZWTOX9fbRr5Lc7/9mRJwGDAK2K1hUZmZWNFkzgo/SPoA2pl1AvAXke6DMzMyagaxtBHMk7QjcRHIn0fu4Gwizzdzx7EruKXu9oMdYsvof9Ov6qe64zBoka19DZ6UfJ0l6COgYEQsKF5ZZ83NP2esFP1H369qRUSXVO/E1a5h8D5QNrmtZRLzQ+CGZNV/9unZkxjeHNnUYZvWSr0RwRR3LAvivRozFzMyaQL4HyoYXKxAzM2samYeqNDOzlskZgZlZK+eMwMyslcs6QpkknSzponS6h6T9ChuamZkVQ9YSwY3AUGBMOr0OuKEgEZmZWVFlfbJ4SEQMljQPICLeTcchNjOzZi5riWCDpDYkzw4gqQvwScGiMjOzosmaEVwL/BHYRdLPSLqgvrRgUZmZWdFk7WtomqS5JF1RC/hyRCwtaGRmZlYUWQemuQaYERFuIDYza2GyVg29AFwoaZmkyySVFjIoMzMrnkwZQURMjYijgP2Al4FfSPq/gkZmZmZFUd8ni/cE+gA9gRcbPRozMyu6rG0EvwCOA14Bfgf8JCLeK2BczVYxRqmyf08ePcyaq6wPlL0GDI2ItwsZTEtQjFGq7N+TRw+z5irfCGV9IuJFkvGJe0jqkbvcI5TVzKNUmVlzkq9E8H3gDGoeqcwjlJmZtQD5Rig7I/14ZER8nLtMUtuCRWVmZkWT9a6hpzLO24ykIyS9lD5/ML6WdYZJKpO0WNJfM8ZjZmaNJF8bwWeAbkA7SfuQdC8B0BHYPs+2bUi6qj4MKAeelzQzIpbkrLMjSRfXR0TESkm7bGlCzMxsy+RrIzgcGAt0B67Mmb8O+FGebfcDlkXEqwCSpgOjgCU565wI/CEiVgJExFuZIzczs0aRr41gKjBV0lci4u567rsbsCpnuhwYUm2dzwHbSHoc6ABcExG3Vd+RpDNIGq3p0aNH9cVmZtYA+aqGTo6I3wI9JX2/+vKIuLKGzao2r2Fe1HD8fUl6NW0HPC3pmYh4udpxJgOTAUpLS6vvw8zMGiBf1dAO6Xv7Ldh3ObBbznR34I0a1nk7Ij4APpA0GxhE0p+RmZkVQb6qoV+n7z/egn0/D/SW1At4HfgaSZtArnuA6yVtDWxLUnV01RYcy8zMtlCm20cl/VJSR0nbSHpU0tuSTq5rm4jYCIwDHgaWAr+LiMWSzpR0ZrrOUuAhYAHJ08u/iYhFDUmQmZnVT9a+hr4UET+QdCxJdc7xwGPAb+vaKCIeAB6oNm9StenLgMsyR2xmZo0q6wNl26TvRwF3RsQ7BYrHzMyKLGuJ4F5JLwIfAWdJ6gJ8nGcbMzNrBrKOUDYeGAqURsQG4AOSh8PMzKyZyzowzTbAKcAhkgD+CkyqcyMzM2sWslYN/YqkneDGdPqUdN7phQjKzMyKJ2tG8PmIGJQz/RdJ8wsRkJmZFVfWu4Y2SdqjckLS7sCmwoRkZmbFlLVEcB7wmKRXSfoQ+ixwWsGiMjOzosmbEaS3iq4l6VZ6F5KM4MWI+GeBYzMzsyKos2pI0unAYuA6oAzoGRHznQmYmbUc+UoE3wX6R0RF2i4wDZhZ8KjMzKxo8jUWr4+ICoB0pLHtCh+SmZkVU74SQXdJ19Y2HRHnFCYsMzMrlnwZwXnVpucWKhAzM2saWcYsNjOzFizfXUOTJQ2oZdkOkr4h6aTChGZmZsWQr2roRuAiSQOBRUAF0BboDXQEbiG5k8jMzJqpfFVDZcAJktoDpUBXkjEJlkbES4UPz8zMCi1TFxMR8T7weGFDMTOzppC10zkzM2uhnBGYmbVy9coIJO1QqEDMzKxpZMoIJB0gaQmwNJ0eJOnGPJuZmVkzkLVEcBVwOLAGICLmA4cUKigzMyuezFVDEbGq2iyPUGZm1gJkHaFslaQDgJC0LXAOaTWRmZk1b1lLBGcCZwPdgHKgBDirQDGZmVkRZS0R7BURm/UpJOlA4MnGD8nMzIopa4nguozzzMysmamzRCBpKHAA0EXS93MWdQTaFDIwMzMrjnxVQ9sC7dP1OuTM/wfw1UIFZWZmxZOv99G/An+VNCUiVtR355KOAK4hKT38JiIm1rLe54FngNER8fv6HsfMzLZc1sbiDyVdBvQnGY8AgIj4r9o2kNQGuAE4jOROo+clzYyIJTWs9wvg4XrGbmZmjSBrY/E04EWgF/BjYDnwfJ5t9gOWRcSrEbEemA6MqmG9bwN3A29ljMXMzBpR1oxg54i4GdgQEX+NiG8A++fZphuQ+zRyeTqviqRuwLHApLp2JOkMSXMkzamoqMgYspmZZZE1I9iQvq+WdLSkfYDuebZRDfOi2vTVwA8jos7uKiJickSURkRply5dMgVsZmbZZG0j+KmkTsD/kDw/0BH4bp5tyoHdcqa7A29UW6cUmC4JoDNwlKSNEfGnjHGZmVkDZR2q8r7041pgOFQ9WVyX54HeknoBrwNfA06stt9elZ8lTQHucyZgZlZc+R4oawOcQFK3/1BELJJ0DPAjoB2wT23bRsRGSeNI7gZqA9wSEYslnZkur7NdwMzMiiNfieBmkuqd54BrJa0AhgLjs1y5R8QDwAPV5tWYAUTE2AzxmplZI8uXEZQCe0fEJ5LaAm8De0bEm4UPzczMiiHfXUPrI+ITgIj4GHjZmYCZWcuSr0TQR9KC9LOAPdJpARERexc0OjMzK7h8GUHfokRhZmZNJl+nc/XuaM7MzJqXzIPXm5lZy+SMwMyslcucEUhqJ2mvQgZjZmbFlykjkDQCKAMeSqdLJM0sYFxmZlYkWUsEl5CML/AeQESUAT0LEZCZmRVX1oxgY0SsLWgkZmbWJLJ2Q71I0olAG0m9gXOApwoXlpmZFUvWEsG3ScYr/idwB0l31N8tUExmZlZEWUsEe0XEBcAFhQzGzMyKL2uJ4EpJL0r6iaT+BY3IzMyKKlNGEBHDgWFABTBZ0kJJFxYyMDMzK47MD5RFxJsRcS1wJskzBRcVKigzMyuerA+U9ZV0iaRFwPUkdwx1L2hkZmZWFFkbi28F7gS+FBFvFDAeMzMrskwZQUTsX+hAzMysadSZEUj6XUScIGkhELmL8AhlZmYtQr4SwXfS92MKHYiZmTWNOhuLI2J1+vGsiFiR+wLOKnx4ZmZWaFlvHz2shnlHNmYgZmbWNPK1EXyL5Mp/d0kLchZ1AJ4sZGBmZlYc+doI7gAeBH4OjM+Zvy4i3ilYVGZmVjT5MoKIiOWSzq6+QNJOzgzMzJq/LCWCY4C5JLePKmdZALsXKC4zMyuSOjOCiDgmfe9VnHDMzKzYsvY1dKCkHdLPJ0u6UlKPwoZmZmbFkPX20V8BH0oaBPwAWAHcnm8jSUdIeknSMknja1h+kqQF6eupdP9mZlZE9Rm8PoBRwDURcQ3JLaS1ktQGuIHkeYN+wBhJ/aqt9hrwhbSrip8Ak+sTvJmZNVzWjGCdpPOBU4D705P8Nnm22Q9YFhGvRsR6YDpJRlIlIp6KiHfTyWdw19ZmZkWXNSMYTTJw/Tci4k2gG3BZnm26AatypsvTebX5b5JnFj5F0hmS5kiaU1FRkTFkMzPLIutQlW8C04BOko4BPo6I2/JsphrmRQ3zkDScJCP4YS3HnxwRpRFR2qVLlywhm5lZRlnvGjoBeA44HjgBeFbSV/NsVg7sljPdHfjUoDaS9gZ+A4yKiDVZ4jEzs8aTdYSyC4DPR8RbAJK6AI8Av69jm+eB3pJ6Aa8DXwNOzF0hvQX1D8ApEfFyPWM3M7NGkDUj2KoyE0itIX8X1hsljQMeBtoAt0TEYklnpssnARcBOwM3SoLk7qTSeqbBzMwaIGtG8JCkh0nGLYak8fiBfBtFxAPV10szgMrPpwOnZ4zBzMwKIOuYxedJOg44iKQReHJE/LGgkZmZWVHkG4+gN3A5sAewEDg3Il4vRmBmZlYc+e4augW4D/gKSQ+k1xU8IjMzK6p8VUMdIuKm9PNLkl4odEBmZlZc+TKCtpL24V8Ph7XLnY4IZwxmZs1cvoxgNXBlzvSbOdMB/FchgjIzs+LJNzDN8GIFYmZmTSNrp3NmZtZCOSMwM2vlnBGYmbVyWXsfVTpW8UXpdA9J+xU2NDMzK4asJYIbgaHAmHR6HckwlGZm1sxl7XRuSEQMljQPICLelbRtAeMyM7MiyVoi2JCOUxxQNR7BJwWLyszMiiZrRnAt8EdgF0k/A54ALi1YVGZmVjRZu6GeJmkucChJ9xJfjoilBY2skd3x7EruKSt8x6lLVv+Dfl07Fvw4ZmaNJetdQz2AD4F7gZnAB+m8ZuOestdZsvofBT9Ov64dGVXSreDHMTNrLFkbi+8naR8Q0BboBbwE9C9QXAXRr2tHZnxzaFOHYWb2byVr1dDA3GlJg4FvFiQiMzMrqi16sjjtfvrzjRyLmZk1gUwlAknfz5ncChgMVBQkIjMzK6qsbQQdcj5vJGkzuLvxw7GWZMOGDZSXl/Pxxx83dShmrUbbtm3p3r0722yzTeZt8mYE6YNk7SPivIYEZ61PeXk5HTp0oGfPnkjKv4GZNUhEsGbNGsrLy+nVq1fm7epsI5C0dURsIqkKMquXjz/+mJ133tmZgFmRSGLnnXeudyk8X4ngOZJMoEzSTOAu4IPKhRHxh/oGaq2LMwGz4tqS/7msbQQ7AWtIxiiufJ4gAGcEZmbNXL7bR3dJ7xhaBCxM3xen74sKHJtZg7Vp04aSkhIGDBjAiBEjeO+99xplv1OmTGHcuHGNsq+ePXsycOBASkpKKCkp4amnnmqU/VZXVlbGAw88sNm8Bx98kNLSUvr27UufPn0499xzAbjkkku4/PLLG+3YBxxwQNXn8847j/79+3PeeecxadIkbrvttgbte968eZx++umbzRs1ahRDh27+8OjYsWP5/e9/v9m89u3bV31++eWXOeqoo9hzzz3p27cvJ5xwAn//+98bFNs777zDYYcdRu/evTnssMN49913P7XOSy+9VPXbl5SU0LFjR66++urN1rn88suRxNtvvw3AwoULGTt2bINiy5WvRNAGaE9SAqguGi0KswJp164dZWVlAHz961/nhhtu4IILLmjaoGrw2GOP0blz53pts3HjRrbeOmuhPskI5syZw1FHHQXAokWLGDduHPfffz99+vRh48aNTJ48uV4xZJWbuf3617+moqKC7bbbrt77qSnNl156KRdeeGHV9HvvvccLL7xA+/btee211zI1mn788cccffTRXHnllYwYMQJIfpOKigp23XXXesdZaeLEiRx66KGMHz+eiRMnMnHiRH7xi19sts5ee+1V9Te6adMmunXrxrHHHlu1fNWqVcyaNYsePf7Vq8/AgQMpLy9n5cqVm83fUvn+ilZHxIQGH8VavR/fu5glbzRuX0/9/rMjF4/I3svJ0KFDWbBgAQDPPfcc3/3ud/noo49o164dt956K3vttRdTpkxh5syZfPjhh7zyyisce+yx/PKXvwTg1ltv5ec//zldu3blc5/7XNWJbMWKFXzjG9+goqKCLl26cOutt9KjRw/Gjh1Lu3btePHFF1mxYgW33norU6dO5emnn2bIkCFMmTKl1ljr2udOO+3EvHnzGDx4MGeddRZnn302FRUVbL/99tx000306dOHu+66ix//+Me0adOGTp068cgjj3DRRRfx0Ucf8cQTT3D++edz//33c8EFF9CnTx8Att56a84666xPxXLTTTcxefJk1q9fz5577sntt9/O9ttv/6ljzJ49m8WLF3Paaaexfv16PvnkE+6++2569+5N+/btef/99xk5ciQffPABQ4YM4fzzz2fp0qW0b9+ec889l1deeaXGtFRP8xVXXFEV27p161iwYAGDBg2qmnf33XczYsQIdt11V6ZPn87555+f92/jjjvuYOjQoVWZAMDw4cPzbpfPPffcw+OPPw4kFyLDhg37VEaQ69FHH2WPPfbgs5/9bNW8733ve/zyl79k1KhRm607YsQIpk+fzg9+8IMGx5mvasgtfdYibNq0iUcffZSRI0cC0KdPH2bPns28efOYMGECP/rRj6rWLSsrY8aMGSxcuJAZM2awatUqVq9ezcUXX8yTTz7JrFmzWLJkSdX648aN49RTT2XBggWcdNJJnHPOOVXL3n33Xf7yl79w1VVXMWLECL73ve+xePFiFi5cWHUVCMlJp6SkhCFDhuTd58svv8wjjzzCFVdcwRlnnMF1113H3Llzufzyy6tO5BMmTODhhx9m/vz5zJw5k2233ZYJEyYwevRoysrKGD16NIsWLWLffffN+90dd9xxPP/888yfP5++ffty880313gMgEmTJvGd73ynqvTRvXv3zfY1c+bMqlLa6NGjN1tWW1qqpznXnDlzGDBgwGbz7rzzTsaMGcOYMWO4884786YPyPxdrFu3brNqnNxX7t9Epb///e907doVgK5du/LWW2/Vuf/p06czZsyYqumZM2fSrVu3zTK6SqWlpfztb3/LG3MW+UoEhzbKUazVq8+Ve2P66KOPKCkpYfny5ey7774cdthhAKxdu5avf/3r/N///R+S2LBhQ9U2hx56KJ06dQKgX79+rFixgrfffpthw4bRpUsXAEaPHs3LL78MwNNPP80f/pDcN3HKKadsdoU2YsQIJDFw4EB23XVXBg5Muu3q378/y5cvp6SkBPh01VBd+zz++ONp06YN77//Pk899RTHH3981bJ//vOfABx44IGMHTuWE044geOOO65B3+GiRYu48MILee+993j//fc5/PDDaz3G0KFD+dnPfkZ5eTnHHXccvXv3znSMutKSm+bqVq9eXfWbQHLiXbZsGQcddBCS2HrrrVm0aBEDBgyo8W6a+t5h06FDh80y8Ma0fv16Zs6cyc9//nMAPvzwQ372s5/x5z//ucb1d9llF954441GOXadJYKIeKchO5d0hKSXJC2TNL6G5ZJ0bbp8QdqZnVmjqbz6XLFiBevXr+eGG5Khtv/3f/+X4cOHs2jRIu69997N7rvOrbtu06YNGzduBLKfNHLXq9zXVltttdl+t9pqq6r91nefO+ywAwCffPIJO+64I2VlZVWvpUuTYUImTZrET3/6U1atWkVJSQlr1qz51D779+/P3Llz8x577NixXH/99SxcuJCLL7646ruq6Rgnnnhi1VX/4Ycfzl/+8pdM6asrLblprq5du3ab/XYzZszg3XffpVevXvTs2ZPly5czffp0AHbeeefNGmvfeeedqsw363dR3xLBrrvuyurVq4Ek09pll11q3feDDz7I4MGDq9okXnnlFV577TUGDRpEz549KS8vZ/Dgwbz55ptA0q7Rrl27vDFnsUWdzmWRPpF8A3Ak0A8YI6lftdWOBHqnrzOAXxUqHmvdOnXqxLXXXsvll1/Ohg0bWLt2Ld26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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rfc = RandomForestClassifier(max_depth = 5)\n",
    "rfc.fit(x_train, y_train) \n",
    "y_pred = rfc.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', rfc.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(rfc, x_test, y_test)\n",
    "plt.savefig('rocauc/rf_1.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(rfc, X, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', rfc.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5652173913043478\n",
      "[[5 7]\n",
      " [3 8]]\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.57142857 0.71428571 0.64285714 0.38461538]\n",
      "Test Accuracy Score 0.5652173913043478\n",
      "precision =  0.5333333333333333\n",
      "Sensitivity :  0.4166666666666667\n",
      "Specificity :  0.7272727272727273\n",
      "f1 score =  0.6153846153846153\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAA64UlEQVR4nO3dd3hUZfbA8e8hofeqSAtNqiRAqDYQRcACKooozVURFVnXtbuLgq4/C6usDURFmoIFRUQsq4IoPaF3KSEEEUIvIZByfn/cm+wQkswEMplJ5nyeZ57M7edOkjn3vvfe94iqYowxJnQVC3QAxhhjAssSgTHGhDhLBMYYE+IsERhjTIizRGCMMSEuPNAB5FW1atU0IiIi0GEYY0yhEhsbu19Vq2c3rdAlgoiICGJiYgIdhjHGFCoisjOnadY0ZIwxIc4SgTHGhDhLBMYYE+IsERhjTIizRGCMMSHOb4lARCaKyD4RWZfDdBGRN0Rkq4isEZE2/orFGGNMzvx5RjAJ6JHL9J5AY/c1FBjnx1iMMcbkwG+JQFUXAAdzmaU3MEUdS4BKIlLTX/EYY0xhdTjpNBMWbGPp9gN+WX8gHyirBezyGE5wx+3JOqOIDMU5a6Bu3boFEpwxxgTaxj1HmbI4ji9X7iY5JZ37uzSkQ4Oq+b6dQCYCyWZctlVyVHUCMAEgOjraKukYY4qs1LR0ftiwl0mL4li24yClihfjpta1GNQpgmY1K/hlm4FMBAlAHY/h2sAfAYrFGGMC6sDxU0xfFs9HS+PZcySZ2pVL83SvptwWXYdKZUr4dduBTASzgeEiMgPoABxR1bOahYwxpihbk3CYSYvimLN6D6fT0rmsUTVG927JVU1rEFYsu4aT/Oe3RCAi04EuQDURSQCeBYoDqOp4YC7QC9gKJAF3+SsWY4wJJqdT0/l23R4mLYpjZfxhypYI4/b2dRjUqR6NapQv8Hj8lghUtb+X6Qo86K/tG2NMsNl3NJlpS+P5eGk8+4+fon61sjx7Q3P6tq1N+VLFAxZXoeuG2hhjChNVZUX8ISYt2sm3a/eQpkrXJjUY3DmCyxtVo1gBNf/kxhKBMcb4QXJKGrNX/8GUxXGs232U8qXCGdw5goEd6xFRrWygwzuD10QgIp2AAcDlQE3gJLAO+AaYpqpH/BqhMcYUIrsPn2Takp3MWBbPoaQULr6gHC/0aclNrWtRtmRwHnvnGpWIfItzS+dXwL+AfUAp4GKgK/CViLymqrP9HagxxgQrVWXJ9oNMXhTHDxv+BOCa5hcwuHMEnRpURSTwzT+58ZaeBqrq/izjjgMr3Ne/RaSaXyIzxpggl3Q6lS9X7mbKop1s3nuMSmWKM/SKhgzoWJfalcsEOjyf5ZoIPJOAiFRxRumhnOYxxphQEH8giSmL4/g0ZhdHk1NpcVEFXunbihsjL6JU8bBAh5dn3pqG6gKvAN2Aw84oqQD8DDypqnH+DtAYY4JBerry69b9TF4Ux7zN+wgToUfLCxnSOYK29SoHffNPbrw1DX0CjAXuVNU0ABEJA24FZgAd/RqdMcYE2LHkFGbGJjBl8U627z9BtXIleKhrI+7sWI8LKpQKdHj5wlsiqKaqn3iOcBPCDBF53n9hGWNMYG1LPM6URXF8HpvAidNpRNWpxNh+UfS85EJKhhe+5p/ceEsEsSLyDjCZ/3UZXQcYDKz0Z2DGGFPQ0tKVeZv2MXlxHL/+vp8SYcW4vlVNBneOILJOpUCH5zfeEsEg4G5gFE6tAMFJCF8DH/g3NGOMKRhHklL4NGYXU5bEsevgSS6sUIpHu1/M7e3rUq1cyUCH53fe7ho6jVNC0spIGmOKnE1/HmXyov8VfmkfUYUnezSje4sLKB7mz0q+weWcH3MTketVdU5+BmOMMf6WmpbOf93CL0t3HKRkeDH6RNVicOcIml/kn8Ivwe58nnduB1giMMYUCgdPnHYKvyzZyR9u4ZenejalXzv/F34JduecCFT12fwMxBhj/GFtwhEmLYrj6zV/cDrVKfzy3I0t6NbsggIr/BLszqdp6BpV/W9+BmOMMfkho/DL5EVxrIg/TJkSYfSLrsPgzoEp/BLszqdp6AOgbn4FYowx52vf0WQ+WhrPx8viSTx2ioiqZRh5fXP6RtemQgALvwQ7b11M5NSrqABV8z8cY4zJG6fwy2EmL4rj23V7SElTujSpzuDOEVzZuHpQFH4Jdt7OCC7HqUVwPMt4Adr7JSJjjPFBckoaX6/+gymLd7J29xHKlwxnYMcIBnUKvsIvwc5bIlgCJKnqL1kniMhm/4RkjDE5+yOj8MvyXRw8cZrGNcrxfJ+W3BzEhV+CnbcHynrmMu2K/A/HGGPOpqos3ZFR+GUvqsrVzS5gSOcIOjUM/sIvwc7SpzEmaCWdTmXWSqfu76Y/ncIv91xenwEd6lGnSuEp/BLsLBEYY4JO/IEkpi6J45PlTuGXZjUr8PItl9A7qlahLPwS7CwRGGOCgqry6+/7mbI4jp827aOYR+GX6EJe+CXYWSIwxgTU8VOpzIxNYPLiOLYnOoVfhndtxJ0d6nFhxaJR+CXY+ZwIROQ5VX0up2FjjMmLbYnHmbp4J5/HJnD8VCqRdSrxer9Iel1Ss8gVfgl2eTkjiPUybIwxuUpPV+Zt3sekRU7hl+JhwvWtLmJw5wiiinDhl2DncyJQ1a9zGzbGmJwcOZnCZzG7mLJ4J/EHk7igQkkeueZi+revS/XyRb/wS7Dz1sXEm4DmNF1VR+R7RMaYImPzn8eYvDiOL1fs5mRKGu0iKvN4jyZc2+LCkCr8Euy8nRHEFEgUxpgiIzUtnR83OoVflmz/X+GXgZ3q0bJWxUCHZ7Lh7cniyZ7DIlJWVU/4NyRjTGF08MRpZiyPZ9pip/BLrUqlebJnU/pF16Fy2dAu/BLsfLpGICKdcLqdLgfUFZFI4D5VfcDLcj2A/wBhwPuq+lKW6RWBaTjdWYcDY1T1wzzvhTEmYNbtdgq/zF7tFH7p3LAqz97Ygqut8Euh4evF4rHAtcBsAFVdLSK59jUkImHA28A1QAKwXERmq+oGj9keBDao6g0iUh3YLCIfqerpPO6HMaYAnU5N57v1fzJ5URyxOw9RpkQYt0XXZlCnCC6+wAq/FDZ5uWtoV5Yn+9K8LNIe2Kqq2wFEZAbQG/BMBAqUF2fF5YCDQKqvMRljCta+Y8l8vDSej5fGs+/YKepVLcM/r29O37a1qVjaCr8UVr4mgl0i0hlQESkBjAA2elmmFrDLYzgB6JBlnrdwzjL+AMoD/VQ1PeuKRGQoMBSgbl0rimZMQVJVVu5yCr/MXesUfrny4uq8fEsEV15shV+KAl8TwTCctv5awG7ge5xmndxk99eR9VbUa4FVwFVAQ+C/IvKrqh49YyHVCcAEgOjo6BxvZzXG5J/klDS+WbOHyYvjWJPgFH4Z0LEeAzvWo0H1coEOz+QjnxKBqu4H7szjuhOAOh7DtXGO/D3dBbykqgpsFZEdQFNgWR63ZYzJJ3uOuIVflu3iwInTNKpRjud7t+CmNrUpZ4VfiiRf7xpqgHNG0BHnqH4x8LeM9v8cLAcai0h9nLOI24E7sswTD3QDfhWRC4AmQG7rNMb4gaqybMdBJi+O4/v1e0l3C78M7hTBpY2s8EtR52t6/xjnDqCb3OHbgemc3eafSVVTRWQ4TjNSGDBRVdeLyDB3+njgeWCSiKzFaUp6wj37MMYUgJOn05i1ajeTFzmFXyqWLs49l9VnQEcr/BJKxGmV8TKTyFJV7ZBl3BJV7ei3yHIQHR2tMTH2wLMx52PXwSSmLtnJJ8t3ceRkCk0vLM+QzhH0jqpF6RLW82dRJCKxqhqd3TRvfQ1Vcd/OE5EngRk4TUP9gG/yNUpjjF+pKr9t3c/kRTv5adNep/BLiwsZ3DmCdhFW+CWUeWsaisX54s/4C7nPY5riNO0YY4LY8VOpfLEigcmL4tiWeIKqZUvwYJdG3NmxLjUrlg50eCYIeOtrqH5BBWKMyV/bE48zZfFOZsYmcOxUKpG1K/LabU7hF6v7azzlpUJZS6A5kFk7TlWn+CMoY8y5SU9X5m/Zx6RFO1mwJZHiYcJ1l9RkcOcIWtetHOjwTJDy9fbRZ4EuOIlgLtAT+A2wRGBMEMgo/DJ1yU52HkiiRvmS/O3qi+nfoQ41ylvdX5M7X88I+gKRwEpVvcu95/99/4VljPHFlr3HmLwoji/cwi/R9SrzaHen8EuJcCv8YnzjayI4qarpIpIqIhWAfUADP8ZljMmBU/hlH5MXxbF4+wFKhBejd6RT99cKv5hz4WsiiBGRSsB7OHcSHce6gTCmQKkqHy+L551529h9+CS1KpXmiR5N6deuDlWs8Is5D772NZRRgGa8iHwHVFDVNf4LyxjjKTkljae/XMsXK3bTLqIy/7y+OVc3q0G41f01+cDbA2VtcpumqivyPyRjjKc9R05y39RY1iQc4eGrGzPiqsbW9bPJV97OCP6dyzTF6T7aGOMnsTsPct/UFZw8ncq7A9tybYsLAx2SKYK8PVDWtaACMcacafqyeEZ+tY6LKpXm43s7WAlI4zfWubgxQSYlLZ3RX29g6pKdXN64Gm/2b02lMnYx2PiPJQJjgsj+46d44KMVLNtxkKFXNODxa5vYBWHjd5YIjAkS63Yf4b6psew/foqx/aLo07pWoEMyIcKnQw1xDBCRke5wXRFp79/QjAkdX63aTd/xi0hX5fNhnS0JmALl6xnBO0A6zl1Co4FjwEygnZ/iMiYkpKUrr3y/iXd/2U67iMq8c2dbqpcvGeiwTIjxNRF0UNU2IrISQFUPiYhdvTLmPBxJSmHEjJX8siWROzvU5dkbWlj/QCYgfE0EKSIShvPsACJSHecMwRhzDrbuO8a9U2LZdTCJf93Ukjs71At0SCaE+ZoI3gC+BGqIyL9weiP9h9+iMqYI+3HDXh7+ZBWlihdj+tCOtIuo4n0hY/zI176GPhKRWKAbTtnKPqq60a+RGVPEqCpv/byV137cQouLKjBhYDQXVbJSkSbwfC1M8x/gE1V928/xGFMknTiVyqOfrebbdX/SJ+oiXrqllZWLNEHD16ahFcA/RORinCaiT1Q1xn9hGVN0xB9IYujUGLbsPcbTvZpy7+UNELFO40zw8LVpaDIwWUSqALcAL4tIXVVt7NfojCnkFm7dz4MfryA9XfnwrvZceXH1QIdkzFny+mRxI6ApEAFsyPdojCkiVJWJC+N4ce5GGlQry3uDoomoVjbQYRmTLV+vEbwM3AxsAz4FnlfVw36My5hCKzkljWe+XMfMFQl0b34Br/WLolxJ683FBC9f/zp3AJ1Udb8/gzGmsPvzSDL3TYtl9a7D/LVbY/7azYrImODnrUJZU1XdhFOfuK6I1PWcbhXKjPmf2J0HGTZtBSdOpTJ+QFt6tLQiMqZw8HZG8AgwlOwrlVmFMmNcM5bF88+v1lGzYmmm3d2BJhdaERlTeHirUDbUfdtTVZM9p4lIKb9FZUwhkZKWzvNzNjBlsRWRMYWXrz1cLfJx3BlEpIeIbBaRrSLyZA7zdBGRVSKyXkR+8TEeYwLuwPFTDHh/KVMW7+Tey+vz4ZB2lgRMoeTtGsGFQC2gtIi0xuleAqACUMbLsmHA28A1QAKwXERmq+oGj3kq4XRx3UNV40WkxrnuiDEFaf0fRxg6JZbE46d4vV8kN7WuHeiQjDln3q4RXAsMAWoDr3mMPwY87WXZ9sBWVd0OICIzgN6c+fzBHcAXqhoPoKr7fI7cmAD5evUfPPb5aiqXKcHnwzrRqnalQIdkzHnxdo0g44niW1R1Zh7XXQvY5TGcAHTIMs/FQHERmQ+UB/6jqlOyrkhEhuJctKZu3bpZJxtTINLSlTE/bGbc/G1E16vMOwPaUKO8XSozhZ+3pqEBqjoNiBCRR7JOV9XXslksc/Fsxmk222+L06tpaWCxiCxR1S1ZtjMBmAAQHR2ddR3G+N2Rkyn8dcZK5m9OpH/7uoy60YrImKLDW9NQxjPx5c5h3QlAHY/h2sAf2cyzX1VPACdEZAEQCWzBmCDhWUTmhT4tGdDRisiYosVb09C77s9R57Du5UBjEakP7AZux7km4Okr4C0RCQdK4DQdvX4O2zLGLzKKyJQML8bH93akfX0rImOKHp/ObUXkFRGpICLFReQnEdkvIgNyW0ZVU4HhwPfARuBTVV0vIsNEZJg7z0bgO2ANztPL76vquvPZIWPyg1NE5nfunRpDRLUyzH7oMksCpsgSVe9N7iKySlWjROQmoA/wN2Ceqkb6Ob6zREdHa0yMlUIw/nPiVCqPfb6auWv/pHfURbx0cytKl7AiMqZwE5FYVY3Obpqvnc4Vd3/2Aqar6kErrGGKol0Hk7h3ihWRMaHF10TwtYhsAk4CD4hIdSDZyzLGFCqL3CIyaVZExoQYXyuUPenWJDiqqmkicgLn4TBjCj1V5cOFcfxr7kbqu0Vk6lsRGRNCfC1MUxwYCFzhnib/Aoz3Y1zGFAjPIjJXN7uA1/tFUr5Uce8LGlOE+No0NA7nOsE77vBAd9w9/gjKmIKw92gyQ6c6RWRGdGvMw1ZExoQoXxNBuyx3CP0sIqv9EZAxBSF25yGGTYt1i8i0oUfLmoEOyZiA8fUZ+TQRaZgxICINgDT/hGSMf326fBf9JyyhdPEwvnigsyUBE/J8PSN4DJgnIttx+hCqB9zlt6iM8YOUtHRemLOByYt3clmjarx1hxWRMQZ8SATuraJHcLqVroGTCDap6ik/x2ZMvjlw/BQPfryCJdsPcvdl9XmqZ1PCw6zTOGPAe++j9wAvAtuA+sBQVZ1dEIEZk188i8j8+9ZIbmlrRWSM8eTtjOBhoIWqJrrXBT4CLBGYQiOjiEyl0iX47L5ORNapFOiQjAk63hLBaVVNBFDV7SJSsgBiMua8paUr//5hM+/M30bbepUZZ0VkjMmRt0RQW0TeyGlYVUf4Jyxjzt3R5BT+On0l8zYn0r99HZ67sQUlw63TOGNy4i0RPJZlONZfgRiTH7buO87QKTHEH0zi+T4tGdChrnUaZ4wXvtQsNqZQ+GnjXh6esYoS4cX46J4OdGhQNdAhGVMo5Hr/nIhMEJGWOUwrKyJ/EZE7/ROaMb5RVd6et5V7psRQt6pTRMaSgDG+89Y09A4wUkQuAdYBiUApoDFQAZiIcyeRMQGRdDqVxz5bwzdr93Bj5EW8fIsVkTEmr7w1Da0CbhORckA0UBOnJsFGVd3s//CMyVlGEZnNe4/xVM+mDL3CisgYcy58rUdwHJjv31CM8d2ibft58KMVpKYrHw5pR5cmNQIdkjGFlq99DRkTFFSVyYvieP4bKyJjTH6xRGAKjeSUNP45ax2fxSZwdbMavN4vyorIGJMP8pQIRKSsqp7wVzDG5GTv0WTumxrLql2HGXFVIx6++mIrImNMPvGp+0UR6SwiG4CN7nCkiLzjZTFj8sWK+EPc8OZvbNl7jPED2vBI9yaWBIzJR772w/s6cC1wAEBVVwNX+CsoYzJ8GrOL299dQsnixayIjDF+4nPTkKruynJrnlUoM36TkpbOv77ZyKRFcVzaqCpv9W9D5bJWRMYYf/A1EewSkc6AikgJYARuM5Ex+e3gidM8+NEKFm8/YEVkjCkAviaCYcB/gFpAAvAD8IC/gjKha8MfRxk6NYZ9x6yIjDEFxddE0ERVz+hTSEQuBRbmf0gmVM1Z8wePfbaGCqXD+fS+TkRZERljCoSv59tv+jjOmDxLS1de+W4Twz9eSbOa5fl6+GWWBIwpQN5qFncCOgPVReQRj0kVAOvZy5y3o8kpPDxjFT9v2sft7eowqrcVkTGmoHlrGioBlHPnK+8x/ijQ119BmdCwLfE4906JIf5AEs/3bsGAjvWs0zhjAsBb76O/AL+IyCRV3ZnXlYtID5yLzGHA+6r6Ug7ztQOWAP1U9fO8bscUPvM27WPE9JUUDy/GtHs60NHqBxgTML5eLE4SkVeBFjj1CABQ1atyWkBEwoC3gWtw7jRaLiKzVXVDNvO9DHyfx9hNIaSqvDN/G2N+2EyzCyswYVBbalcuE+iwjAlpvl4s/gjYBNQHRgFxwHIvy7QHtqrqdlU9DcwAemcz30PATGCfj7GYQirpdCrDp6/k1e83c90lNZl5f2dLAsYEAV8TQVVV/QBIUdVfVPUvQEcvy9QCdnkMJ7jjMolILeAmYHxuKxKRoSISIyIxiYmJPoZsgsmug0ncMm4xc9fu4YkeTXmzf2urJGZMkPC1aSjF/blHRK4D/gC8PemT3VU/zTI8FnhCVdNyu0ioqhOACQDR0dFZ12GC3OJtB3jgo1hS05WJQ9rR1YrIGBNUfE0EL4hIReDvOM8PVAAe9rJMAlDHY7g2TgLxFA3McJNANaCXiKSq6iwf4zJBzLOITETVMrw3KJoG1csFOixjTBa+lqqc4749AnSFzCeLc7McaCwi9YHdwO3AHVnWWz/jvYhMAuZYEigaTqU6RWQ+jbEiMsYEO28PlIUBt+G07X+nqutE5HrgaaA00DqnZVU1VUSG49wNFAZMVNX1IjLMnZ7rdQFTeO07msx902JZGX+Yh65qxN+siIwxQc3bGcEHOM07y4A3RGQn0Al40pcjd1WdC8zNMi7bBKCqQ3yI1wS5lfGHuG9qLMeSU3nnzjb0usTqBxgT7Lwlgmiglaqmi0gpYD/QSFX/9H9oprD5NGYX//hyHRdULMnkv3SmWc0KgQ7JGOMDb4ngtKqmA6hqsohssSRgsvIsItO5YVXevsOKyBhTmHhLBE1FZI37XoCG7rAAqqqt/BqdCXqeRWT+cml9nu5lRWSMKWy8JYJmBRKFKZQ27jnKvVOcIjJjbo2krxWRMaZQ8tbpXJ47mjOh4Zs1e3j0s9VWRMaYIsDn4vXGAKSnK//+72benreN1nUr8e6AttSoUMr7gsaYoGWJwPjsaHIKf5uxip827aNfdB1G97EiMsYUBT4nAhEpDdRV1c1+jMcEKc8iMqN7t2CgFZExpsjw6fYOEbkBWAV85w5HichsP8Zlgsi8Tfvo89ZCDielMPXuDgzqFGFJwJgixNczgudw6gvMB1DVVSIS4Z+QTLBQVcb9so1Xv7ciMsYUZb4mglRVPWJHgaHj5Ok0Hvt8NXPW7OH6VjV5tW+k1Q8wpojyNRGsE5E7gDARaQyMABb5LywTSLsOJnHf1Fg2/nmUx3s04f4rG1pTkDFFmK+PgD6EU6/4FPAxTnfUD/spJhNAi7cdoPfbC9l1KImJg9vxQJdGlgSMKeJ8PSNooqrPAM/4MxgTOKrKlMU7GT1nAxFVyzBhUDQNrYiMMSHB10TwmojUBD4DZqjqej/GZArYqdQ0Rs5azycxu+jWtAav3x5FBSsiY0zI8LVCWVcRuRCnSM0EEakAfKKqL/g1OuN3+44mM2xaLCviDzO8ayMeucaKyBgTanzuJlJV/1TVN4BhOM8UjPRXUKZgrNp1mBve+o2Ne47x9h1tePTaJpYEjAlBPp0RiEgzoB/QFzgAzMApZG8Kqc9jE3j6y7XUKF+Smfd3pvlFVkTGmFDl6zWCD4HpQHdV/cOP8Rg/S01L519zN/Lhwjg6NajK23e2oYoVkTEmpPl6jaCjvwMx/nfoxGke/HgFi7Yd4K5LI3i6VzOKWxEZY0JerolARD5V1dtEZC2gnpOwCmWFysY9Rxk6NYa9R07xat9W3BpdJ9AhGWOChLczgr+6P6/3dyDGf+au3cPfP11N+VLhfHJfR1rXrRzokIwxQSTXdgFV3eO+fUBVd3q+gAf8H545H+npyr9/2MwDH62gac3yfP3QZZYEjDFn8bWB+JpsxvXMz0BM/jqWnMLQqTG8+fNWbouuzYyhHbnAKokZY7Lh7RrB/ThH/g1EZI3HpPLAQn8GZs7ddreITNyBJEbd2IJBnayIjDEmZ96uEXwMfAv8H/Ckx/hjqnrQb1GZczZv8z5GTF9JeDFh6t3t6dywWqBDMsYEOW+JQFU1TkQezDpBRKpYMggeqsr4X7bzyvebaHphBSYMbEudKlZExhjjnS9nBNcDsTi3j3q2LyjQwE9xmTw4eTqNx2eu4evVf3Bdq5q82rcVZUr4XI7aGBPicv22UNXr3Z/1CyYck1cJh5wiMhv2HOWxa5vwQBcrImOMyRtf+xq6FFilqidEZADQBhirqvF+jc7kasn2Azzw0QpSUtP5YHA0VzW9INAhGWMKIV9vHx0HJIlIJPA4sBOY6m0hEekhIptFZKuIPJnN9DtFZI37WuSu33jhFJGJY8D7S6lUpjizhl9qScAYc87yUrxeRaQ38B9V/UBEBue2gIiEAW/jPIOQACwXkdmqusFjth3Alap6SER6AhOADnnfjdDhWUTmqqY1GGtFZIwx58nXRHBMRJ4CBgKXu1/y3r592gNbVXU7gIjMAHoDmYlAVRd5zL8EqO1r4KHIs4jMg10b8sg1TQiz+gHGmPPkayLoB9wB/EVV/xSRusCrXpapBezyGE4g96P9u3GeWTiLiAwFhgLUrVvXx5CLllW7DnPf1BiOnkzl7TvacF2rmoEOyRhTRPh0jUBV/wQ+AiqKyPVAsqpO8bJYdoeqms04RKQrTiJ4IoftT1DVaFWNrl69ui8hFykzYxO47d3FhBcrxsz7O1sSMMbkK58SgYjcBiwDbsWpW7xURPp6WSwB8OzruDZwVlEbEWkFvA/0VtUDvsQTKlLT0hn99Qb+/tlq2tatzNcPXWaVxIwx+c7XpqFngHaqug9ARKoDPwKf57LMcqCxiNQHdgO34zQvZXKbmL4ABqrqljzGXqQdOnGa4dNXsHDrAYZ0juCZ66yIjDHGP3xNBMUykoDrAN67sE4VkeHA90AYMFFV14vIMHf6eGAkUBV4x30IKlVVo/O4D0XOpj+Pcu8Up4jMK31bcZsVkTHG+JGvieA7Efkep24xOBeP53pbSFXnZp3PTQAZ7+8B7vExhpDw7do9/P2z1ZQrGc6M+zrSxuoHGGP8zNeaxY+JyM3AZTgXgSeo6pd+jSzEpKcrY3/cwhs/byWqTiXeHdjW6gcYYwqEt3oEjYExQENgLfCoqu4uiMBCybHkFP72yWp+3LiXW9vW5vk+LSlVPCzQYRljQoS3M4KJwBRgAXAD8CZws7+DCiU79p/g3ikx7Nh/guduaM7gzhHWaZwxpkB5SwTlVfU99/1mEVnh74BCyXy3iExYMWHqX9rTuZEVkTHGFDxviaCUiLTmfw+HlfYcVlVLDOdAVXl3wXZe+W4TF19QnvcGRVsRGWNMwHhLBHuA1zyG//QYVuAqfwRVlJ08ncYTM9cwe/UfXHdJTV691YrIGGMCy1thmq4FFUgo2H34JEOnxFgRGWNMULFD0QKy1C0ic9qKyBhjgowlAj9TVaYtjWfU7PXUrVKGCYOiaVSjXKDDMsaYTJYI/Oh0ajrPzl7H9GW76NqkOmNvb03F0lZExhgTXHytWSzAnUADVR3tdhZ3oaou82t0hdi+Y8ncP20FsTsP8UCXhvy9uxWRMcYEJ1/PCN4B0nHuEhoNHANmAu38FFehtnrXYe6bGsvhk6d5s39rboi8KNAhGWNMjnxNBB1UtY2IrARwawyX8GNchdbM2ASe+nIt1cuVZOb9nWlxUcVAh2SMMbnyNRGkuHWKFTLrEaT7LapCKDUtnf/7dhMf/LaDjg2q8PYdbaharmSgwzLGGK98TQRvAF8CNUTkX0Bf4B9+i6qQOZx0muEfr+S3rfutiIwxptDxtRvqj0QkFuiG071EH1Xd6NfIConNfx7j3ikx/HkkmVduacVt7ayIjDGmcPH1rqG6QBLwtec4VY33V2CFwXfr9vDIp6spWzKc6UM70raeFZExxhQ+vjYNfYNzfUCAUkB9YDPQwk9xBTXPIjKRdSrx7oC2XFjRisgYYwonX5uGLvEcFpE2wH1+iSjIeRaR6du2Ni9YERljTCF3Tk8Wq+oKEQm5Zwg8i8g8e0NzhlgRGWNMEeDrNYJHPAaLAW2ARL9EFKR+2ZLIQx+voJgVkTHGFDG+nhGU93ifinPNYGb+hxN8VJUJC7bzshWR8YuUlBQSEhJITk4OdCjGFAmlSpWidu3aFC/ue79mXhOB+yBZOVV97HyCK4xOnk7jyS/W8NWqP+h1yYW82jeSsiWtn778lJCQQPny5YmIsGY2Y86XqnLgwAESEhKoX7++z8vl+q0mIuGqmupeHA4pnkVkHu1+MQ92bWRfVH6QnJxsScCYfCIiVK1alcTEvLXcezu8XYZzPWCViMwGPgNOZExU1S/yGmhhsGzHQe6fFsup1HTeGxjN1c2tiIw/WRIwJv+cy/+Tr+0cVYADOL2PZjxPoECRSwTTluzkOSsiY4wJId46xKnh3jG0Dljr/lzv/lzn59gK1OnUdJ76Yi3/mLWOyxpX48sHL7UkECLCwsKIioqiRYsWREZG8tprr5Gefm59Ko4cOZIff/wxx+njx49nypQpeV7v999/T1RUFFFRUZQrV44mTZoQFRXFoEGDzilOT2PGjKFp06a0bNmSyMjIzPi6dOlCTEzMea8fICYmhhEjRgBw6tQprr76aqKiovjkk0+455572LBhw3mtf+zYsWd8rqmpqVSrVo2nnnrqjPkiIiLYv39/5vD8+fO5/vrrM4e//fZboqOjadasGU2bNuXRRx89r7gAYmNjueSSS2jUqBEjRoxAVc+aJy4ujtKlS2f+jocNGwbAsWPHMsdFRUVRrVo1Hn74YQDeeustPvzww/OOD3AuLuT0AvYAI4Fns3mNzG1Zf73atm2r+W3f0WS95Z2FWu+JOfrStxs1NS0937dhsrdhw4ZAh6Bly5bNfL93717t1q2bjhw5MoAR5e7KK6/U5cuXnzU+NTU1z+saN26cdu/eXY8cOaKqqocPH9ZJkyblup3ztXjxYr3iiivOefms+5mSkqKXXHKJpqSkZI775ptvtHPnztqgQQNNT//f/3O9evU0MTExc3jevHl63XXXqarq2rVrtUGDBrpx48bM9b799tvnHGeGdu3a6aJFizQ9PV179Oihc+fOPWueHTt2aIsWLbyuq02bNvrLL7+oquqJEyc0Kioq2/my+78CYjSH71VvTUN7VHV0/qSc4LQmwSkicyjpNG/0b82NVkQmYEZ9vZ4NfxzN13U2v6gCz97ge08oNWrUYMKECbRr147nnnuO9PR0nnzySebPn8+pU6d48MEHue8+56H6V155halTp1KsWDF69uzJSy+9xJAhQ7j++uvp27cvTz75JLNnzyY8PJzu3bszZswYnnvuOcqVK8ejjz7KqlWrGDZsGElJSTRs2JCJEydSuXJlunTpQocOHZg3bx6HDx/mgw8+4PLLL8823oiICP7yl7/www8/MHz4cKpUqcKzzz7LqVOnaNiwIR9++CHlypUjNjaWRx55hOPHj1OtWjUmTZpEzZo1efHFF5k3bx4VKlQAoGLFigwePPis7dx///0sX76ckydP0rdvX0aNGgWQ7T5+9tlnjBo1irCwMCpWrMiCBQuYP38+Y8aMYeLEiQwYMIDExESioqKYOXMmd999N2PGjCE6Opoffvgh2/iz7uftt9+eGdvPP/9MmzZtCA//39fZ9OnT+etf/8q4ceNYsmQJnTp18vq7f+WVV3jmmWdo2rQpAOHh4TzwwAM+/uVkb8+ePRw9ejRz+4MGDWLWrFn07Nkzz+v6/fff2bdvX+bfQpkyZYiIiGDZsmW0b9/+vOL0lgiK9FW8L1cm8OTMtVQrV5LPh3WmZS0rImOgQYMGpKens2/fPr766isqVqzI8uXLOXXqFJdeeindu3dn06ZNzJo1i6VLl1KmTBkOHjx4xjoOHjzIl19+yaZNmxARDh8+fNZ2Bg0axJtvvsmVV17JyJEjGTVqFGPHjgWcpo1ly5Yxd+5cRo0alWtzU6lSpfjtt9/Yv38/N998Mz/++CNly5bl5Zdf5rXXXuOpp57ioYce4quvvqJ69ep88sknPPPMM/znP//h2LFjNGzY0Otn8q9//YsqVaqQlpZGt27dWLNmDbVr1852H0ePHs33339PrVq1ztrvGjVq8P777zNmzBjmzJlzxrT9+/fzwgsvnBX/yJEjz9jPrBYuXEjbtm0zh0+ePMlPP/3Eu+++y+HDh5k+fbpPiWDdunX8/e9/9zrfvHnz+Nvf/nbW+DJlyrBo0aIzxu3evZvatWtnDteuXZvdu3dnu94dO3bQunVrKlSowAsvvHBW8p8+fTr9+vU742JwdHQ0v/76q98TQbfzWnuQSk1L56VvN/H+bzvoUL8K79xpRWSCQV6O3P1N3XbcH374gTVr1vD5558DcOTIEX7//Xd+/PFH7rrrLsqUcR4urFKlyhnLV6hQgVKlSnHPPfdw3XXXndEOnbGew4cPc+WVVwIwePBgbr311szpN998MwBt27YlLi4u11j79esHwJIlS9iwYQOXXnopAKdPn6ZTp05s3ryZdevWcc011wCQlpZGzZo1UVWf7zD59NNPmTBhAqmpqezZs4cNGzbQvHnzbPfx0ksvZciQIdx2222Z++GLnOLPup9Z7dmzh2bNmmUOz5kzh65du1KmTBluueUWnn/+eV5//XXCwsKy3d+83mXTtWtXVq1a5dO8GX9H3rZXs2ZN4uPjqVq1KrGxsfTp04f169dnnqkBzJgxg6lTp56xXI0aNdi0aVOe4s9OrolAVQ/mNt0bEekB/AcIA95X1ZeyTBd3ei+cbq6HqOqK89mmN4eTTvPQ9JX8+vt+Bneqxz+ub25FZMwZtm/fTlhYGDVq1EBVefPNN7n22mvPmOe7777L9QskPDycZcuW8dNPPzFjxgzeeustfv75Z59jKFnSOTAJCwsjNTU113nLli0LOF8611xzDdOnTz9j+tq1a2nRogWLFy/Odtnt27fToEGDHNe/Y8cOxowZw/Lly6lcuTJDhgwhOTk5x30cP348S5cu5ZtvviEqKipPX5rZxZ91P7MqXbr0GU+mT58+nYULFxIREQHAgQMHmDdvHldffTVVq1bl0KFDVKvmdBFz8ODBzPctWrQgNjaWyMjIXOPMyxlB7dq1SUhIyBxOSEjgoovObn4uWbJk5u+8bdu2NGzYkC1bthAdHQ3A6tWrSU1NPePMB5zncEqXLp1rvL7w2zeg+0Ty20BPoDnQX0SaZ5mtJ9DYfQ0FxvkrHnCKyNz41kKWbD/Ay7dcwqjeLS0JmDMkJiYybNgwhg8fjohw7bXXMm7cOFJSUgDYsmULJ06coHv37kycOJGkpCSAs5qGjh8/zpEjR+jVqxdjx44968uwYsWKVK5cmV9//RWAqVOnZp4dnKuOHTuycOFCtm7dCkBSUhJbtmyhSZMmJCYmZiaClJQU1q9fD8BTTz3Fgw8+yNGjzrWZo0ePMmHChDPWe/ToUcqWLUvFihXZu3cv3377ba77uG3bNjp06MDo0aOpVq0au3btOq/4vWnWrFnmMkePHuW3334jPj6euLg44uLiePvttzOTS5cuXTKPqtPS0pg2bRpdu3YF4LHHHuPFF1/M3GZ6ejqvvfbaWdvLOCPI+sqaBMA50i9fvjxLlixBVZkyZQq9e/c+a77ExETS0tIA50Dk999/PyM5T58+nf79+5+13JYtW2jZsqXXz8gbf/aX0B7YqqrbAURkBtAb8LxPrDcwxb2ivUREKolITVXdk9/B/LIlkfunxVK2ZDgzhnayIjIm08mTJ4mKiiIlJYXw8HAGDhzII484/Szec889xMXF0aZNG1SV6tWrM2vWLHr06MGqVauIjo6mRIkS9OrVixdffDFznceOHaN3794kJyejqrz++utnbXfy5MmZF4sbNGhw3rcCVq9enUmTJtG/f39OnToFwAsvvMDFF1/M559/zogRIzhy5Aipqak8/PDDtGjRgvvvv5/jx4/Trl07ihcvTvHixc9qJ4+MjKR169a0aNGCBg0aZDbd5LSPjz32GL///juqSrdu3YiMjOSXX345r/hz07NnTwYOHAjAF198wVVXXZV5dA3Qu3dvHn/8cU6dOsU///lP7r//fiIjI1FVevTowYABAwBo1aoVY8eOpX///iQlJSEiXHfddb589LkaN24cQ4YM4eTJk/Ts2TPzQvHs2bOJiYlh9OjRLFiwgJEjRxIeHk5YWBjjx48/o7nx008/Ze7cuWete+HChTz77LPnHaPfbvPEqWv8vsfwQOCtLPPMAS7zGP4JiM5mXUOBGCCmbt26Xm+xys72xOM64P0luufwyXNa3vhHMNw+agq/Pn366JYtWwIdRoFasWKFDhgwINtpeb191J/tItk1oGa9cuLLPKjqBFWNVtXo6tWrn1Mw9auVZerdHaySmDFF0EsvvcSePfnekBDU9u/fz/PPP58v6/Jn01AC4FnJvTbwxznMY4wxuWrSpAlNmjQJdBgFKuMusPzgzzOC5UBjEakvIiWA24HZWeaZDQwSR0fgiPrh+oAJbprNLXbGmHNzLv9PfjsjUKf76uHA9zi3j05U1fUiMsydPh6Yi3Pr6Fac20fv8lc8JjiVKlWKAwcOULVqVeuF1JjzpG49glKl8tYELoXtaCw6OlrzqyMsE3hWocyY/JVThTIRiVXV6OyWsXJbJqCKFy+ep0pKxpj8Z09TGWNMiLNEYIwxIc4SgTHGhLhCd7FYRBKBnee4eDVgv9e5ihbb59Bg+xwazmef66lqtk/kFrpEcD5EJCanq+ZFle1zaLB9Dg3+2mdrGjLGmBBnicAYY0JcqCWCCd5nKXJsn0OD7XNo8Ms+h9Q1AmOMMWcLtTMCY4wxWVgiMMaYEFckE4GI9BCRzSKyVUSezGa6iMgb7vQ1ItImEHHmJx/2+U53X9eIyCIRyb1CdyHgbZ895msnImki0rcg4/MHX/ZZRLqIyCoRWS8i3mtEBjkf/rYrisjXIrLa3edC3YuxiEwUkX0isi6H6fn//ZVT6bLC+sLp8nob0AAoAawGmmeZpxfwLU6FtI7A0kDHXQD73Bmo7L7vGQr77DHfzzhdnvcNdNwF8HuuhFMXvK47XCPQcRfAPj8NvOy+rw4cBEoEOvbz2OcrgDbAuhym5/v3V1E8I2gPbFXV7ap6GpgB9M4yT29gijqWAJVEpGZBB5qPvO6zqi5S1UPu4BKcanCFmS+/Z4CHgJnAvoIMzk982ec7gC9UNR5AVQv7fvuyzwqUF6egRTmcRJBasGHmH1VdgLMPOcn376+imAhqAbs8hhPccXmdpzDJ6/7cjXNEUZh53WcRqQXcBIwvwLj8yZff88VAZRGZLyKxIjKowKLzD1/2+S2gGU6Z27XAX1U1vWDCC4h8//4qivUIsitzlfUeWV/mKUx83h8R6YqTCC7za0T+58s+jwWeUNW0IlL9zJd9DgfaAt2A0sBiEVmiqlv8HZyf+LLP1wKrgKuAhsB/ReRXVT3q59gCJd+/v4piIkgA6ngM18Y5UsjrPIWJT/sjIq2A94GeqnqggGLzF1/2ORqY4SaBakAvEUlV1VkFEmH+8/Vve7+qngBOiMgCIBIorInAl32+C3hJnQb0rSKyA2gKLCuYEAtcvn9/FcWmoeVAYxGpLyIlgNuB2VnmmQ0Mcq++dwSOqOqegg40H3ndZxGpC3wBDCzER4eevO6zqtZX1QhVjQA+Bx4oxEkAfPvb/gq4XETCRaQM0AHYWMBx5idf9jke5wwIEbkAaAJsL9AoC1a+f38VuTMCVU0VkeHA9zh3HExU1fUiMsydPh7nDpJewFYgCeeIotDycZ9HAlWBd9wj5FQtxD03+rjPRYov+6yqG0XkO2ANkA68r6rZ3oZYGPj4e34emCQia3GaTZ5Q1ULbPbWITAe6ANVEJAF4FigO/vv+si4mjDEmxBXFpiFjjDF5YInAGGNCnCUCY4wJcZYIjDEmxFkiMMaYEGeJoAhye9pc5fGKyGXe4/mwvUkissPd1goR6XQO63hfRJq775/OMm3R+cborifjc1nn9lZZycv8USLS6xy2U1NE5rjvu4jIERFZKSIbReTZc1jfjRm9bopIn4zPyR0eLSJX53Wd2WxjknjpndXttsLnW47dfZ/jw3y59rbpzpNtj5siUkJEFohIkbsVviBZIiiaTqpqlMcrrgC2+ZiqRgFPAu/mdWFVvUdVN7iDT2eZ1vn8wwP+97m0xOnU60Ev80fh3K+dV48A73kM/6qqrXGedB4gIm3zsjJVna2qL7mDfYDmHtNGquqP5xBjMJkE9PAyT0+gsfsaCowDcDui+wno58f4ijxLBCFARMqJyE/u0fpaETmrl073KHaBxxHz5e747iKy2F32MxEp52VzC4BG7rKPuOtaJyIPu+PKisg34vQdv05E+rnj54tItIi8BJR24/jInXbc/fmJ5xG6exR7i4iEicirIrLcPVq8z4ePZTFuR10i0l6cGg0r3Z9N3KdYRwP93Fj6ubFPdLezMrvP0XUL8F3WkW63D7FAQ/dsY4kb75ciUtmNZYSIbHDHz3DHDRGRt0SkM3Aj8KobU8OMI3kR6Skin3p8Nl1E5Gv3fZ5+hyIy0t3HdSIyQeSMjpoGuJ/ROhFp787v6+eSLR9624Tce9ycBdyZl22aLPzRn7a9AvsC0nA64VoFfInzBHkFd1o1nCcSMx4mPO7+/DvwjPs+DCjvzrsAKOuOfwIYmc32JuH29Q/cCizF6fhsLVAWp2vg9UBrnC/J9zyWrej+nA9Ee8bkMU9GjDcBk933JXB6YCyNc4T4D3d8SSAGqJ9NnMc99u8zoIc7XAEId99fDcx03w8B3vJY/kVggPu+Ek7/PWWzbKM+EOsx3AWY476vCsQBLXCe/L3SHT8aGOu+/wMombGNrHF4ftaew+7vON7jdzUOGHCOv8MqHuOnAjd4/I7ec99fgdtffk6fS5Z9j8Z5yjmnv9kIcuh/350+B7jMY/gnj7+XMCAx0P93hfll7WpF00l1mmkAEJHiwIsicgVOtwO1gAuAPz2WWQ5MdOedpaqrRORKnGaIhe5BYQmcI+nsvCoi/wAScXo37QZ8qc5RMCLyBXA5zpHyGBF5GedL4tc87Ne3wBsiUhKnKWGBqp4Uke5AK4827oo4TQg7sixfWkRW4XzpxAL/9Zh/sog0xunFsXgO2+8O3Cgij7rDpYC6nNmXT033M/B0uYisxPnsX8LpNKySqmZUD5uMk5jASRAficgsnCNdn6jTFcN3wA0i8jlwHfA4kJffYYauIvI4UAaogpPEv3anTXe3t0BEKohznSWnz8UzvhjgHl/3Jxs59ripTu+yp0WkvKoeO49thCxLBKHhTpzKTW1VNUVE4nD+WTO5/9hX4HyBTBWRV4FDwH9Vtb8P23hMVT/PGJAcLmCq6ha3jbwX8H8i8oOqjvZlJ1Q1WUTm43Q73A/3SwnnS+IhVf3eyypOqmqUiFTEOcJ8EHgDp6+aeap6kzgX1ufnsLwAt6jq5ty2QZbPFucawfWZK3G2n5PrcI62bwT+KSItcpk3q09w9ukgsFxVj7nNOr7+DhGRUsA7OEfbu0TkOc7cn6x90ig5fC7idACXX7z1uFkSSM7H7YUUu0YQGioC+9wk0BWol3UGEannzvMe8AFOqbwlwKUiktHmX0ZELvZxmwuAPu4yZXGadX4VkYuAJFWdBoxxt5NVintmkp0ZOJ1sXY7TERnuz/szlhGRi91tZktVjwAjgEfdZSoCu93JQzxmPYbTRJbhe+ChjDZzEWmdzeq34Jxx5Mjd/iFxr8MAA4FfRKQYUEdV5+EczVfCaVbzlDUmT/NxPs97cZIC5P13mPGlv9+9lpD1TqKMazqX4fR6eQTfPpfzlWOPmyJSFadpKMUP2w0JlghCw0dAtIjE4JwdbMpmni7AKrcJ4xbgP6qaiPPFOF1E1uB8qTT1ZYOqugKn3XkZzjWD91V1JXAJsMxtonkGeCGbxScAa8S9WJzFDzhHzD+qc8cIODUWNgArxLkF8V28nO26sazG6db4FZyzk4U47c0Z5gHN3Quz/XDOHIq7sa1zh7Ou9wSwLeOLNxeDcZrT1uDcnTTa3fY0cXrRXAm8rqqHsyw3A3jMvSjbMMu203DOdHq6P8nr79Dd3ns413dm4TQZejokzu2843GaAMGHz0WcGwHez26b4vS2uRhoIiIJInK3O36YuL2M4vS4uR3n+tZ7wAMeq+jqTjfnyHofNSafichNOM1w/wh0LKHAvf70lJcmO5MLu0ZgTD5T1S/d5grjZ+Lc5jvLksD5sTMCY4wJcXaNwBhjQpwlAmOMCXGWCIwxJsRZIjDGmBBnicAYY0Lc/wPTOTIPawqP1QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "dtc = DecisionTreeClassifier()\n",
    "dtc.fit(x_train, y_train) \n",
    "y_pred = dtc.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', dtc.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(dtc, x_test, y_test)\n",
    "plt.savefig('rocauc/dt_1.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(dtc, X, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', dtc.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5217391304347826\n",
      "[[ 1 11]\n",
      " [ 0 11]]\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n",
      "Cross-Validation Accuracy Scores [0.71428571 0.57142857 0.57142857 0.64285714 0.46153846]\n",
      "Mean Cross validation Accurary Score 0.5923076923076923\n",
      "Test Accuracy Score 0.5217391304347826\n",
      "precision =  0.5\n",
      "Sensitivity :  0.08333333333333333\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6666666666666666\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "knn = KNeighborsClassifier(n_neighbors=5)\n",
    "knn.fit(x_train, y_train) \n",
    "y_pred = knn.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', knn.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "C = confusion_matrix(y_test, y_pred)\n",
    "print(C)\n",
    "print('number of head injury in test set  = ', sum(y_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y_test) - sum(y_test['HadHeadInjury']))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(knn, x_test, y_test)\n",
    "plt.savefig('rocauc/knn_1.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(knn, X, Y, cv=5, scoring = 'accuracy'))\n",
    "print('Mean Cross validation Accurary Score', np.mean(cross_val_score(knn, X, Y, cv=5, scoring = 'accuracy')))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', knn.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Mean Amplitude Features \n",
    "https://mne.tools/dev/auto_tutorials/evoked/30_eeg_erp.html#mean-amplitude "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-001\\ses-01\\eeg\\sub-001_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 482524  =      0.000 ...   965.048 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-002\\ses-01\\eeg\\sub-002_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 761649  =      0.000 ...  1523.298 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-003\\ses-01\\eeg\\sub-003_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 481349  =      0.000 ...   962.698 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-004\\ses-01\\eeg\\sub-004_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 468424  =      0.000 ...   936.848 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-005\\ses-01\\eeg\\sub-005_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 469024  =      0.000 ...   938.048 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-006\\ses-01\\eeg\\sub-006_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 484999  =      0.000 ...   969.998 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-007\\ses-01\\eeg\\sub-007_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 640099  =      0.000 ...  1280.198 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-008\\ses-01\\eeg\\sub-008_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 451724  =      0.000 ...   903.448 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-009\\ses-01\\eeg\\sub-009_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 555449  =      0.000 ...  1110.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-010\\ses-01\\eeg\\sub-010_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 553799  =      0.000 ...  1107.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-011\\ses-01\\eeg\\sub-011_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 508449  =      0.000 ...  1016.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-012\\ses-01\\eeg\\sub-012_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 491549  =      0.000 ...   983.098 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-013\\ses-01\\eeg\\sub-013_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 482149  =      0.000 ...   964.298 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-014\\ses-01\\eeg\\sub-014_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 540949  =      0.000 ...  1081.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-015\\ses-01\\eeg\\sub-015_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 484974  =      0.000 ...   969.948 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-016\\ses-01\\eeg\\sub-016_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 450724  =      0.000 ...   901.448 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-017\\ses-01\\eeg\\sub-017_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 492524  =      0.000 ...   985.048 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-018\\ses-01\\eeg\\sub-018_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 501799  =      0.000 ...  1003.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-019\\ses-01\\eeg\\sub-019_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 551474  =      0.000 ...  1102.948 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-020\\ses-01\\eeg\\sub-020_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 460249  =      0.000 ...   920.498 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-021\\ses-01\\eeg\\sub-021_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 479274  =      0.000 ...   958.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-022\\ses-01\\eeg\\sub-022_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 612774  =      0.000 ...  1225.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-023\\ses-01\\eeg\\sub-023_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 610099  =      0.000 ...  1220.198 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-024\\ses-01\\eeg\\sub-024_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 492449  =      0.000 ...   984.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-025\\ses-01\\eeg\\sub-025_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 471749  =      0.000 ...   943.498 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-026\\ses-01\\eeg\\sub-026_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 497624  =      0.000 ...   995.248 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-027\\ses-01\\eeg\\sub-027_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 660424  =      0.000 ...  1320.848 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-028\\ses-01\\eeg\\sub-028_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 660424  =      0.000 ...  1320.848 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-029\\ses-01\\eeg\\sub-029_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 477099  =      0.000 ...   954.198 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-030\\ses-01\\eeg\\sub-030_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 483299  =      0.000 ...   966.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-031\\ses-01\\eeg\\sub-031_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 511774  =      0.000 ...  1023.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-032\\ses-01\\eeg\\sub-032_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 558574  =      0.000 ...  1117.148 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-033\\ses-01\\eeg\\sub-033_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 486149  =      0.000 ...   972.298 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-034\\ses-01\\eeg\\sub-034_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 457724  =      0.000 ...   915.448 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-035\\ses-01\\eeg\\sub-035_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 581099  =      0.000 ...  1162.198 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-036\\ses-01\\eeg\\sub-036_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 472124  =      0.000 ...   944.248 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-037\\ses-01\\eeg\\sub-037_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 465899  =      0.000 ...   931.798 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-038\\ses-01\\eeg\\sub-038_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 469549  =      0.000 ...   939.098 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-039\\ses-01\\eeg\\sub-039_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 534274  =      0.000 ...  1068.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-041\\ses-01\\eeg\\sub-041_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Reading 0 ... 476624  =      0.000 ...   953.248 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-042\\ses-01\\eeg\\sub-042_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 480174  =      0.000 ...   960.348 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-043\\ses-01\\eeg\\sub-043_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 558499  =      0.000 ...  1116.998 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-044\\ses-01\\eeg\\sub-044_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 745024  =      0.000 ...  1490.048 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-045\\ses-01\\eeg\\sub-045_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 652424  =      0.000 ...  1304.848 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-046\\ses-01\\eeg\\sub-046_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 564699  =      0.000 ...  1129.398 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-047\\ses-01\\eeg\\sub-047_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 510949  =      0.000 ...  1021.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-048\\ses-01\\eeg\\sub-048_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 834124  =      0.000 ...  1668.248 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-049\\ses-01\\eeg\\sub-049_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 551749  =      0.000 ...  1103.498 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-050\\ses-01\\eeg\\sub-050_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 739974  =      0.000 ...  1479.948 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-051\\ses-01\\eeg\\sub-051_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 467274  =      0.000 ...   934.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-052\\ses-01\\eeg\\sub-052_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 526274  =      0.000 ...  1052.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-053\\ses-01\\eeg\\sub-053_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 545674  =      0.000 ...  1091.348 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-054\\ses-01\\eeg\\sub-054_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 468799  =      0.000 ...   937.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-055\\ses-01\\eeg\\sub-055_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 584499  =      0.000 ...  1168.998 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-056\\ses-01\\eeg\\sub-056_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 538824  =      0.000 ...  1077.648 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-057\\ses-01\\eeg\\sub-057_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 547799  =      0.000 ...  1095.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-058\\ses-01\\eeg\\sub-058_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 517149  =      0.000 ...  1034.298 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-059\\ses-01\\eeg\\sub-059_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 504474  =      0.000 ...  1008.948 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-061\\ses-01\\eeg\\sub-061_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 483049  =      0.000 ...   966.098 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-062\\ses-01\\eeg\\sub-062_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 504449  =      0.000 ...  1008.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-063\\ses-01\\eeg\\sub-063_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 613449  =      0.000 ...  1226.898 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-064\\ses-01\\eeg\\sub-064_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 552799  =      0.000 ...  1105.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-065\\ses-01\\eeg\\sub-065_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 539799  =      0.000 ...  1079.598 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-066\\ses-01\\eeg\\sub-066_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 645524  =      0.000 ...  1291.048 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-067\\ses-01\\eeg\\sub-067_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 682849  =      0.000 ...  1365.698 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-068\\ses-01\\eeg\\sub-068_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 576774  =      0.000 ...  1153.548 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-069\\ses-01\\eeg\\sub-069_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 853049  =      0.000 ...  1706.098 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-070\\ses-01\\eeg\\sub-070_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 770924  =      0.000 ...  1541.848 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n",
      "Reading C:\\Users\\aksha\\Thesis\\TBI_DATA_AND_SCRIPTS\\Open_Neuro_TBI\\sub-071\\ses-01\\eeg\\sub-071_ses-01_task-ThreeStimAuditoryOddball_eeg.fdt\n",
      "Reading 0 ... 477199  =      0.000 ...   954.398 secs...\n",
      "Used Annotations descriptions: ['S200']\n",
      "Not setting metadata\n",
      "Not setting metadata\n",
      "38 matching events found\n",
      "Setting baseline interval to [-0.5, 0.0] sec\n",
      "Applying baseline correction (mode: mean)\n",
      "0 projection items activated\n"
     ]
    }
   ],
   "source": [
    "# Path for .set file for each subject (currently only using session 1)\n",
    "subj_path = subid_symp_rate['participant_id'].values\n",
    "\n",
    "#define N200 and P300 channels \n",
    "P300_chann = ['CP1', 'CP2', 'CP3', 'CP4', 'CP5', 'CP6']\n",
    "N200_chann = ['FC1', 'FC2', 'FC3', 'FC4', 'FC5', 'FC6']\n",
    "\n",
    "#define empty lists for collection \n",
    "p300_amp_coll = {}\n",
    "p300_amp_avg = []\n",
    "p300_amp_var = []\n",
    "\n",
    "n200_amp_coll = {}\n",
    "n200_amp_avg = []\n",
    "n200_amp_var = []\n",
    "\n",
    "\n",
    "for i in range(len(subj_path)):\n",
    "    data_path = TBI_path+\"/\"+subj_path[i]+\"/\"+\"ses-01\"+\"/eeg\"\n",
    "    set_file_path = glob.glob(data_path+'/*.set')[0]\n",
    "    \n",
    "    # Load EEG data fro .set file using mne \n",
    "    raw = mne.io.read_raw_eeglab(input_fname = set_file_path , eog=(), preload=False, uint16_codec=None, verbose=None)\n",
    "    raw.load_data()   \n",
    "    raw.drop_channels(['EKG','VEOG'])\n",
    "\n",
    "    #calculate ERP\n",
    "    events = mne.events_from_annotations(raw, regexp = 'S200')\n",
    "    epochs = mne.Epochs(raw, events=events[0], tmin=-0.5, tmax=0.5)\n",
    "    erp = epochs.average()\n",
    "    \n",
    "    #calculate P300 and N200 features \n",
    "    p300_amp = [None] * 6\n",
    "    n200_amp = [None] * 6\n",
    "\n",
    "    for j in range(len(P300_chann)):     #Get P300 and P200 for respective channels \n",
    "        erp_P300_chann = erp.copy().pick([P300_chann[j]]).crop(tmin=0.25, tmax=0.4) #select j-th P300 channel \n",
    "        p300_amp[j] = erp_P300_chann.data.mean(axis=1)[0] * 1e6 #calculate P300 for channel \n",
    "        \n",
    "        erp_N200_chann = erp.copy().pick([N200_chann[j]]).crop(tmin = 0.2, tmax = 0.35) #select j-th N200 channel \n",
    "        n200_amp[j] = erp_N200_chann.data.mean(axis=1)[0] * 1e6#calculate N200 for channel \n",
    "        \n",
    "    p300_amp_coll[i] = p300_amp\n",
    "    p300_amp_avg.append(np.mean(p300_amp))\n",
    "    p300_amp_var.append(np.var(p300_amp))\n",
    "\n",
    "    \n",
    "    n200_amp_coll[i] = n200_amp\n",
    "    n200_amp_avg.append(np.mean(n200_amp))\n",
    "    n200_amp_var.append(np.var(n200_amp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Define Data\n",
    "data = pd.DataFrame(list(zip(p300_amp_avg, p300_amp_var, n200_amp_avg, n200_amp_var, list(subid_symp_rate['HadHeadInjury'].values))),\n",
    "               columns =['p300_amp_avg', 'p300_amp_var', 'n200_amp_avg', 'n200_amp_var', 'HadHeadInjury'])\n",
    "X = data[['p300_amp_avg', 'p300_amp_var', 'n200_amp_avg', 'n200_amp_var']]\n",
    "Y = data[['HadHeadInjury']]\n",
    "\n",
    "data.to_csv('data2.csv')\n",
    "\n",
    "#train test split \n",
    "x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lenth of train set 46\n",
      "number of head injury in test set  =  33.0\n",
      "number of controls in test set =  13.0\n",
      "length of test set 23\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n"
     ]
    }
   ],
   "source": [
    "print('lenth of train set', len(x_train))\n",
    "print('number of head injury in test set  = ', sum(y_train['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y_train) - sum(y_train['HadHeadInjury']))\n",
    "\n",
    "\n",
    "print('length of test set', len(x_test))\n",
    "print('number of head injury in test set  = ', sum(y_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y_test) - sum(y_test['HadHeadInjury']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.43478260869565216\n",
      "[[ 2 10]\n",
      " [ 3  8]]\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.57142857 0.5        0.64285714 0.53846154]\n",
      "Mean Cross validation Accurary Score 0.5648351648351648\n",
      "Test Accuracy Score 0.43478260869565216\n",
      "precision =  0.4444444444444444\n",
      "Sensitivity :  0.16666666666666666\n",
      "Specificity :  0.7272727272727273\n",
      "f1 score =  0.5517241379310345\n"
     ]
    },
    {
     "data": {
      "image/png": "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dd59991zjg/8FwRhQE33p5bP57wfYyq8+fPnc8899zBnzhxiYmIAiIyM5G9/+1ux9jN79mzq1q0bgAiLpqrk5hY+WPDEiROZO3cuy5cvZ+3atSxevLjQC9W5SkhI4LXXXgNg1apVZGVlsXr1aoYPH87bb79Nu3btPO8rJyfnlOns7GwmT57MiBEj8ud99dVXtGnThg8//NDz+axdu5a7776b999/n+TkZNauXUuLFi08x3Umd911F5MmTWLTpk1s2rSJOXPmFLpeXFwcq1evZvXq1UycODH/3O677z4WLFjAmjVr6NChA6+//joAd9xxR/53eq78VQ3tUdVnSuRIxpylpz9fR9LuIyW6z3bn1WbsFf5HSPnmm2/4zW9+w+zZs4mLi8uff8cddzBlyhQeeeQR6tevf8o277//Pq+99honT56ke/fujB8/nrCwMGJjY0lMTCQyMpJnn32WqVOn0rRpUyIjI+natWv+3eeMGTMYM2YMhw4d4p133qFXr14A7Ny5k0GDBrFt2zZGjBjB2LFjAXjppZeYPHkyACNHjuT+++9n+/btDB48mH79+vHdd98xc+ZMxo4dS2JiIiLCHXfcwe9//3uef/55FixYQO3atQGoU6cOt95662nfw1133cWKFSs4fvw41157LU8//TQAjz76KJ999hnh4eFcdtlljBs3jhkzZvD0008TFhZGnTp1WLx4MQsXLmTcuHFMnjyZm266ibS0NDp16sTHH3/MnXfeybhx40hISOCrr75i7NixnDhxgri4ON59911q1qxJbGwsd9xxB1999RV33303119/fX5sX3/9NV26dCE8/H+Xs2nTpnHfffcxYcIEli1bRo8ePfz+rf/yl7/w+OOP07ZtWwDCw8MZM2aM3+2KsmfPHo4cOZJ//FtuuYWZM2cyePBgT9urKqpKRkYGDRo04MiRI7Rs2RKA6tWrExsby/Lly7nwwnNLGOmvILDWOhOyTpw4wbBhw1i4cGH+xSFPzZo1ueOOO3j11VfzL4oAycnJfPDBByxdupSIiAjGjBnD1KlTueWWW/LXSUxM5OOPP2bVqlVkZ2fTpUsXunbtmr88Ozub5cuXM3v2bJ5++mnmzZsHkH/XXr16dbp168bQoUMREd59913++9//oqp0796dPn36UK9ePTZs2MC7777L+PHjWblyJbt27WLtWqdG99ChQ6Snp5Oenn5KAXcmf/rTn6hfvz45OTn079+fNWvW0KRJEz799FPWr1+PiORXez3zzDN8+eWXNG7c+LSqsKioKN5++23GjRvHrFmzTlm2b98+nnvuOebNm0eNGjV48cUXeemll3jyyScBp3/8kiVLTott6dKlp3x/x48fZ/78+bz55pscOnSIadOmeSoI1q5dyx/+8Ae/6y1YsIDf//73p82vXr0633777Snzdu3aRZMmTfKnmzRpwq5duwrd77Zt2+jcuTO1a9fmueeeo1evXkRERDBhwgQuuOACatSoQatWrXjjjf8lh0xISOCbb74JeEHQ/5z2bkwJ8HLnHggRERH07NmTd955h1dfffW05ffeey+dOnU65eIxf/58Vq5cSbduzggsx48fJyoq6pTtlixZwrBhw6hWrRoAV1xxxSnLf/WrXwHQtWtXtm/fnj9/4MCBNGjQIH+dJUuWICJcffXV1KhRI3/+N998w5VXXkmzZs246KKLAGjRogVbt27lnnvuYejQoVx22WUcPXrUcw+TDz/8kEmTJpGdnc2ePXtISkqiXbt2VK1alZEjRzJ06ND8uvaLL76Y2267jeuuuy7/XLxYtmwZSUlJXHzxxQCcPHnylAv48OHDC91uz549xMfH50/PmjWLfv36Ub16da655hqeffZZXn75ZcLCwgo93+L2sunXrx+rV6/2tG5h1VKFHa9Ro0bs2LGDBg0asHLlSq666irWrVtHtWrVmDBhAqtWraJFixbcc889/PnPf+aJJ54AnIJ1/fr1xYq/MEW2EajqgXPZuYgMEpENIrJZRB4tZLmIyGvu8jXuYHbGlAmVKlXiww8/ZMWKFTz//Ol5mOrWrcuIESMYP358/jxV5dZbb82v692wYQNPPfXUKdv5q7OuUqUKAGFhYWRnZ+fPL3gBEZEi95VXOADUq1ePH374gb59+/LGG28wcuRIateuTY0aNdi6dWuR8Wzbto1x48Yxf/581qxZw9ChQ8nMzCQ8PJzly5dzzTXXMHPmTAYNGgQ47Q7PPfccO3fupFOnTuzfv7/I/edRVQYOHJj/3SUlJfHOO+8Uej6+qlWrdkq/+WnTpjFv3jxiY2Pp2rUr+/fvZ8GCBQA0aNCAgwcP5q974MABIiMjAWjfvj0rV670G+eCBQvyG3V9f3r27Hnauk2aNCElJSV/OiUlhfPOO++09apUqZJfyHft2pW4uDg2btyYX+DExcUhIlx33XWnPHVkZmbm31Cci7MadM4L943kN4DBQDvgBhEp2CI0GGjl/owCJgQqHmPORvXq1Zk1axZTp0495aKU54EHHuDNN9/Mv2D379+fjz76KL9H0YEDB/jpp59O2eaSSy7h888/JzMzk6NHj/Kf//zHUyxz587lwIEDHD9+nJkzZ3LxxRfTu3dvZs6cybFjx8jIyODTTz/Nb1PwtW/fPnJzc/PvkL///nsAHnvsMX73u99x5IjTBnPkyBEmTZp0yrZHjhyhRo0a1KlTh7179/LFF18AcPToUQ4fPsyQIUN45ZVX8i9aW7ZsoXv37jzzzDNERkayc+dOT+d30UUXsXTpUjZv3gzAsWPH2Lhxo9/t4uPj87c5cuQIS5YsYceOHWzfvp3t27fzxhtvMG3aNMDpCfXPf/4TcBqd33//ffr16wfAQw89xPPPP59/zNzcXF566aXTjpf3RFDwp2C1EDh3+rVq1WLZsmWoKu+99x7Dhg07bb20tLT8RvCtW7eyadMmWrRoQePGjUlKSiItzRnabe7cuac8/WzcuJHzzz/f73fkj9f3CM7GhcBmVd0KICLTgWGAbz+xYcB76tzWLBORuiLSSFX3BDAuY4qlfv36zJkzh969e+ffPeaJjIzk6quv5uWXXwagXbt2PPfcc1x22WXk5uYSERHBG2+8QbNmzfK36datG1deeSUdO3akWbNmJCQkUKdOHb9xXHLJJdx8881s3ryZESNGkJCQAMBtt92WX0c8cuRIOnfufEqVEjh11bfffnt+76E///nPgNMIfPToUbp160ZERAQRERGn1ZN37NiRzp070759e1q0aJFfdZOens6wYcPIzMxEVfO/g4ceeohNmzahqvTv35+OHTuyaNEiv+fXsGFDpkyZwg033MCJEycAeO6552jdunWR2w0ePJibb74ZgE8++YRLL700/6kKYNiwYTz88MOcOHGC//u//+Ouu+6iY8eOqCqDBg3ipptuAqBDhw688sor3HDDDRw7dgwRYejQoX7j9mfChAncdtttHD9+nMGDB+c3FH/22WckJibyzDPPsHjxYp588knCw8MJCwtj4sSJ+Z0Qxo4dS+/evYmIiKBZs2ZMmTIlf99Lly7N7zRwTvJapUv6B7gWeNtn+mbg9QLrzAIu8ZmeDyQUsq9R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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "knn = KNeighborsClassifier(n_neighbors=5)\n",
    "knn.fit(x_train, y_train) \n",
    "y_pred = knn.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', knn.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "C = confusion_matrix(y_test, y_pred)\n",
    "print(C)\n",
    "print('number of head injury in test set  = ', sum(y_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y_test) - sum(y_test['HadHeadInjury']))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(knn, x_test, y_test)\n",
    "plt.savefig('rocauc/knn_2.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(knn, X, Y, cv=5, scoring = 'accuracy'))\n",
    "print('Mean Cross validation Accurary Score', np.mean(cross_val_score(knn, X, Y, cv=5, scoring = 'accuracy')))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', knn.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1 11]\n",
      " [ 0 11]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.64285714 0.64285714 0.71428571 0.61538462]\n",
      "Test Accuracy Score 0.5217391304347826\n",
      "precision =  0.5\n",
      "Sensitivity :  0.08333333333333333\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6666666666666666\n"
     ]
    },
    {
     "data": {
      "image/png": "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yFbFlitfImgGtElfbXPel7/MrA6UlJRw3XXXVbu8ciLIV77crFmzWLhwIQMHDuRnP/vZVscZEZv8uG6pUaNGMXLkyK3eDsCvf/1rvvvd71ZMf/bZZ0ydOpVddtmF2bNnZ9pGRDB8+HAGDhzIyy+/zOLFi/nFL37Bv/71r62K7dZbb6VDhw4sXbqU888/n4svvrjKclOmTOHZZ59l0aJFlJWV8Yc//AGACy+8kJEjR7Jw4UIuu+wyLrnkEgA6duxI586d+dvf/rZV8ZXLVzW0IiKuqpM9mRXYlQ8+z+K36rafp147t+Pyr9e+J5XS0lJGjRrF2rVr2X333bntttvo0KEDc+fO5cwzz6R169Ycdthh/PnPf2bRokU89thjjBs3jhkzZvD4449z3nnnAUl97+zZsxkzZgxLliyhb9++fOtb32K//farKL9mzRp++MMfMm/ePCRx+eWXc/zxx28ST79+/SoSR1lZGaNGjeKNN94AYPz48Rx66KGUlZVxyimnsHLlSg444ABmzpzJ/PnzWbNmDUOHDmXQoEHMmTOHBx54gClTpjBlyhTWr1/P8OHDufLKK/noo4848cQTWbZsGRs3buS///u/GTFiBGPGjGH69Ok0b96cI444gnHjxnHFFVfQpk0bLrzwwmo/q4EDB3LQQQcxa9YsPvjgA2699Vb69++/2Wd93333bZLkZs2axT777MOIESOYNGkSAwcOzPt9zZo1ixYtWjBq1KiKeX379q3t176ZadOmccUVVwBwwgknMHr0aCJis3r8du2Szgo3bNjAJ598UrF88eLFXHPNNQAMGjSI4447rmKd4447jrvvvptDDz10q+PMd0XgVjizLTBy5Eh+9atfsXDhQnr37s2VV14JwBlnnMGECROYM2cOzZo1q3LdcePGccMNN1BaWsoTTzxBq1atGDt2LP3796e0tJTzzz9/k/I//elPad++Pc899xwLFy5k8ODBm21z5syZFT8i5513Hueffz5z587lvvvu46yzzgLgyiuvZPDgwTzzzDMMHz68IlEAvPjii4wcOZIFCxbw4osv8s9//pOnn36a0tJS5s+fz+zZs5k5cyY777xzxZntkCFDeO+995g6dSrPP/88Cxcu5NJLL838WUHyw/j0008zfvz4TeaXe/XVV+nQoQPbbbddxbxJkyZx8sknM3z4cGbMmMGnn35a3ddUYdGiRey///55ywH079+fvn37bvZ69NFHNyu7fPlydtllFwCaN29O+/btWblyZZXbPfLII+nUqRNt27blhBNOAKBPnz7cd1/yyNbUqVNZvXp1xfolJSU88cQTmWLOJ98VwVfqZC9mRbAlZ+6FsGrVKj744AMOP/xwAL71rW/xzW9+kw8++IDVq1dzyCGHAHDKKacwY8aMzdY/9NBDueCCCzj11FP5xje+QdeuXWvc36OPPsrkyZMrpjt06FDxftCgQfzrX/+iU6dOFWfNjz76KIsXL64o8+GHH7J69WqefPJJpk6dCiR11rnb2XXXXTn44IMBeOSRR3jkkUfYb7/9AFizZg3//Oc/6d+/PxdeeCEXX3wxxxxzDP3792fDhg20bNmSs846i6OPPnqzuvzqPqty3/jGNwDYf//9q6xfX7FiBR07dqyY/uSTT3jooYe45ppraNu2LQcddBCPPPIIRx99dLV309T2Lpva/PhGROb9Pfzww6xbt45TTz2Vv/71r3zta19j3LhxjB49mttvv50BAwbQpUsXmjdPfrY7derEW2+9VavYq1PjFUFEvLc1G5c0RNKLkpZKGlPFckm6Ll2+MO3MzqxRqupHoSpjxoxh4sSJfPzxxxx88MG88MILebdb3Y/LrFmzeP3119l777257LLLgKQOfc6cOZSWllJaWsry5ctp27ZtjfG1bt16k/1dcsklFesvXbqUM888kz333JP58+fTu3dvLrnkEq666iqaN2/O008/zfHHH88DDzxQ6wbO8jP9Zs2asWHDhs2Wt2rVapN75mfOnMmqVavo3bs33bt358knn2TSpEkA7Ljjjrz//vubrL969Wq233579t57b+bPn58pptpcEXTt2pU333wTSK5uVq1axQ477FDttlu2bMmxxx7LtGnTANh55525//77WbBgAT//+c8BaN++PZA8Q9OqVatMMeezRZ3OZZE+kXwDMBToBZwsqVelYkOBnunrbOCmQsVjVizt27enQ4cOFWeOv//97zn88MPp0KEDbdu25amnngLY5Cw+18svv0zv3r25+OKLKSkp4YUXXqBt27asXr26yvJHHHEE119/fcV05R+7Vq1aMX78eO68807ee++9zcqXlpYCcNhhhzFlyhQgOeuvvJ1yRx55JLfddhtr1qwBkuqPd955h7feeosvfOELnHbaaVx4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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Logistic Regression \n",
    "from sklearn.linear_model import LogisticRegression\n",
    "lr = LogisticRegression().fit(x_train, y_train)\n",
    "y_pred = lr.predict(x_test)\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(lr, x_test, y_test)\n",
    "plt.savefig('rocauc/lr_2.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(lr, X, Y, cv=5))\n",
    "\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', lr.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### SVM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "param_grid = {\n",
    "    'C':[0.01,0.1,1,10],\n",
    "    'kernel' : [\"linear\",\"poly\",\"rbf\",\"sigmoid\"],\n",
    "    'degree' : [1,3,5,7],\n",
    "    'gamma' : [0.01,1]\n",
    "}\n",
    "\n",
    "\n",
    "svc = svm.SVC(random_state=40)\n",
    "grid_cv = GridSearchCV(svc, param_grid, scoring=\"roc_auc\", n_jobs=-1, cv=3).fit(x_train, y_train)\n",
    "\n",
    "print(\"Param for GS\", grid_cv.best_params_)\n",
    "print(\"CV score for GS\", grid_cv.best_score_)\n",
    "print(\"Train AUC ROC Score for GS: \", roc_auc_score(y_train, grid_cv.predict(x_train)))\n",
    "print(\"Test AUC ROC Score for GS: \", roc_auc_score(y_test, grid_cv.predict(x_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5217391304347826\n",
      "[[ 1 11]\n",
      " [ 0 11]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.64285714 0.64285714 0.71428571 0.61538462]\n",
      "Test Accuracy Score 0.5217391304347826\n",
      "precision =  0.5\n",
      "Sensitivity :  0.08333333333333333\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6666666666666666\n"
     ]
    },
    {
     "data": {
      "image/png": "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m44dO/L6668TGxtLnz59crz+PXv2UK7c/555HT9+PAMHDgSgd+/ejB8/nlatWmV5gJfTA78333zT87yqp7egZ7a9++67j6effhoR4emnn+aRRx5h7NixDB8+nEGDBlG2bOaVDatVq0ZSUhKVK1f2vgOZyDYRqOqe3KxcRLoCb+FcaxijqiMyTBd3+lU43Vz3VVX/6TsX0tKVD2av5c2fnMIxsf3a065O7t5EY0z2ihYtSufOnencuTPNmjXjk08+oW/fvtSuXZvIyEjmzJnDlClT+P333wFo0qQJS5cuJT09/WTTUFaKFSt2cr7du3fzyy+/EB8fj4iQlpaGiPDKK69QuXLl0y6u7tmzhypVqlCvXj02bdrEwYMHT0kqmRk0aBCzZs06bXzv3r0ZNmzYKeNq1arF5s2bTw4nJiZy7rnnnrZs9erVT77u16/fyYvaCxYsYPLkyTz22GPs27ePIkWKUKpUKR588EHAeUakdOnS2cbriaoG5Afny38dUAcoASwFGmeY5yrgO5wmqPbAAn/rbd26tZ6pTbsPa48P5ul5Q7/Rf36xWPcdOX7G6zImVKxYsSKo21+1apWuWbPm5PCTTz6pDzzwwMnh9957T1u0aKEXX3zxKcv17NlTn3rqKU1PT1dV1TVr1ui0adNOW3+7du30r7/+UlXVUaNGaf/+/U+Z3qlTJ507d64mJydrZGTkyfdj48aNGhERofv27VNV1SFDhmjfvn312LFjqqqalJSkn332Wa72PT4+Xps3b67Jycm6fv16jYqK0tTU1NPmS0pKOvn6jTfe0F69ep02z/Dhw/XVV189OZyenq7nnnuupqSknDZvZp85sFCz+F4NZFtIW2Ctqq5X1eNALNA9wzzdgU/dOOcDFUWkRiCCmbV6B1e99Surth5kZK9o3u7T0qqHGZMPDh06xJ133knjxo1p3rw5K1asOOUCbs+ePUlISKB3796nLDdmzBi2bdtGvXr1aNasGf369cv0aPrqq69m9uzZgNMsdMMNN5wy/aabbuKLL76gZMmSfP7559x1111ER0fTo0cPxowZQ4UKFQB44YUXqFq1Ko0bN6Zp06Zcf/31VK1aNVf73qRJE26++WYaN25M165dee+9905e97jnnntYuHAhAI899hjNmjWjefPmzJo1y1Pz06JFi2jfvj3FiuVBp5dZZYjc/uDUNR7j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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# SVM \n",
    "from sklearn import svm\n",
    "clf = svm.SVC(C = 2, kernel = 'poly', degree = 10) \n",
    "clf.fit(x_train, y_train)\n",
    "y_pred = clf.predict(x_test)\n",
    "\n",
    "#accuracy\n",
    "print('Test Accuracy Score', clf.score(x_test, y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(clf, x_test, y_test)\n",
    "plt.savefig('rocauc/svm_2.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(clf, X, Y, cv=5))\n",
    "\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', clf.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5217391304347826\n",
      "[[3 9]\n",
      " [2 9]]\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.64285714 0.5        0.64285714 0.61538462]\n",
      "Test Accuracy Score 0.5217391304347826\n",
      "precision =  0.5\n",
      "Sensitivity :  0.25\n",
      "Specificity :  0.8181818181818182\n",
      "f1 score =  0.6206896551724137\n"
     ]
    },
    {
     "data": {
      "image/png": "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7t9AeXl59fzRo0fTo0cP9t9/f0488cTqv9/Zs2czYsSILYotV76MoBXQNn21y/lc9TL7VGvTpg0VFRVUVlay00478ctffjqH0XjqqaeoqKigoqJio5NmfTZs2NCgY9TMCCorKxk1ahR333038+bNo7Kykr322qtB+8wqN3P79a9/zSuvvMI111zDyJEjOeusszLvp7Y0X3nllXzjG9+onv7ggw945ZVX+OCDD3jzzTcz7Xft2rUcf/zxnHfeeSxYsIB58+Zx3nnnsXz5lt0lf9VVV3HkkUfy97//nSOPPJKrrrqqznWr/gamTZtWPW/w4MFUVlYya9Ys9tlnH376058CsN9++7F06VIWL168RfFVyVc1tCwixjTKkayk/fDBOcx9u3H7euq1e3suH5K9l5MBAwYwa9YsAF566SW+9a1v8dFHH9GmTRvuuOMO9t13X8aPH8+UKVP48MMPef311znxxBP52c9+BsAdd9zBT3/6Uzp16sQ+++zDdtttB8CiRYv46le/yvLly+nYsSN33HEHXbp0YcSIEbRp04ZXX32VRYsWcccddzBhwgSef/55+vfvz/jx4+uMtb597rTTTsyYMYMDDzyQ888/nwsuuIDly5ez/fbbc+utt9KjRw/uu+8+fvjDH9KqVSs6dOjAE088wWWXXcZHH33EM888wyWXXMLDDz/M97//fXr06AHA1ltvzfnnn79JLLfeeivjxo1j3bp17L333tx1111sv/32mxxj6tSpzJkzh7PPPpt169bxySefcP/999O9e3fatm3L6tWrGTp0KGvWrKF///5ccsklzJs3j7Zt23LRRRfx+uuv15qWmmm+7rrrqmNbtWoVs2bNom/fvtXz7r//foYMGcJuu+3GpEmTuOSSS/L+bdxzzz0MGDCAIUOGVM8bNGhQ3u3yeeCBB3j66acB+MpXvsLAgQO5+uqrM29/1FFHVX8++OCDNyrRDBkyhEmTJvGd73xni+PMVyJwS5+1CB9//DFPPvkkQ4cOBaBHjx5MnTqVGTNmMGbMGL73ve9Vr1tRUcHkyZOZPXs2kydPZsmSJSxbtozLL7+cZ599lscff5y5c+dWrz9q1CjOOussZs2axemnn86FF15Yvez999/nL3/5C9dffz1Dhgzhf/7nf5gzZw6zZ8+moqKier1BgwZRVlZG//798+5z/vz5PPHEE1x33XWce+653HTTTUyfPp1rr722+kQ+ZswYHnvsMWbOnMmUKVPYdtttGTNmDMOHD6eiooLhw4dTWVlJv3798n53J510Ei+//DIzZ86kZ8+e3HbbbbUeA2Ds2LF885vfrL6y7dy580b7mjJlSnUpbfjw4RstqystNdOca9q0afTp02ejeffeey+nnnoqp556Kvfee2/e9AGZv4tVq1ZVV+HVfOX+TVT55z//SadOnQDo1KkT77zzTq37lcRRRx1Fv379GDduXK3r3H777Rx77LHV0+Xl5fztb3/Lkry88pUIjmyUo1jJa8iVe2P66KOPKCsrY+HChfTr14/BgwcDsHLlSr7yla/w97//HUmsX7++epsjjzySDh06ANCrVy8WLVrEu+++y8CBA+nYsSMAw4cPZ/78+QA8//zz/P73yX0TZ5555kZXaEOGDEES++23H7vtthv77Zd029W7d28WLlxIWVkZkFQL7LLLLtXb1bfPk08+mVatWrF69Wqee+45Tj755Opl//73vwE49NBDGTFiBKeccgonnXTSFn2HlZWVXHrppXzwwQesXr2ao48+us5jDBgwgJ/85CcsXbqUk046ie7du2c6Rn1pyU1zTcuWLav+TSA58S5YsIDDDjsMSWy99dZUVlbSp0+fWu+maegdNu3atdsoA28szz77LLvvvjvvvPMOgwcPpkePHhxxxBHVy3/yk5+w9dZbc/rpp1fP23XXXXn77bcb5fj1lggi4r0t2bmkYyS9JmmBpItrWS5JN6bLZ6Wd2Zk1mqqrz0WLFrFu3brqNoIf/OAHDBo0iMrKSh588MGN7ruuqvKBpLG5ql4660kjd72qfW211VYb7XerrbZqUB1/7j532GEHAD755BN23HHH6raFiooK5s1LhgkZO3YsP/7xj1myZAllZWWsWLFik3327t2b6dOn5z32iBEjuPnmm5k9ezaXX3559XdV2zFOO+206qv+o48+mr/85S+Z0ldfWnLTXFObNm02+u0mT57M+++/T7du3ejatSsLFy5k0qRJAOy8884bNda+99571Zlv1u+ioSWC3XbbjWXLlgFJprXrrrvWut/dd98dSE7uJ554Ii+99FL1sgkTJvDQQw8xceLEjf4O1q5dS5s2bfLGnMVmdTqXRfpE8i+BY4FewKmSetVY7Vige/o6F/hVoeKx0tahQwduvPFGrr32WtavX8/KlSvZY49kTIf66uqr9O/fn6effpoVK1awfv167rvvvuplhxxySPXJZuLEiRx22GFbHG+WfbZv355u3bpVxxIRzJw5E4DXX3+d/v37M2bMGHbZZReWLFlCu3btWLVqVfX2o0eP5sorr6wu2XzyySf8/Oc/3+Q4q1atolOnTqxfv56JEydWz6/tGG+88QZ77bUXF154IUOHDq1uk8mnvrTUp2fPnixYsKB6+t577+XRRx9l4cKFLFy4kOnTp1d/jwMHDmTy5MmsW7cOSH73qnaA0047jeeee46HH364el+PPvoos2fP3uh4VSWC2l69etU8vcHQoUOZMGECkJzQhw0btsk6a9asqf5d1qxZw5///Ofq6q5HH32Uq6++milTprD99ttvtN38+fM3qRbbXAXLCICDgAUR8UZErAMmATW/hWHAnZF4AdhRUqcCxmQl7IADDqBv377VDWyXXHIJhx56KB9//HHebTt16sQVV1zBgAED+PznP8+BB/5f4fXGG2/kjjvuYP/99+euu+7ihhtu2OJYs+5z4sSJ3HbbbfTt25fevXvzwAMPAMlJfr/99qNPnz4cccQR9O3bl0GDBjF37lzKysqYPHky+++/P7/4xS849dRT6dmzJ3369Km+es31ox/9iP79+1dXWVSp7RiTJ0+mT58+lJWV8eqrrzbojqC60lKfHj16sHLlSlatWsXChQtZvHgxBx98cPXybt260b59e1588UVOOOEEDj/8cPr160dZWRnPPvtsdcNtmzZteOihh7jpppvo3r07vXr1Yvz48XVewWd18cUX8/jjj9O9e3cef/xxLr44qRh5++23Oe6444CkOuuwww6jb9++HHTQQRx//PEcc8wxQNJWtGrVKgYPHkxZWRkjR46s3vdTTz3F8ccfv0XxVVFENMqONtmx9CXgmIg4J50+E+gfEaNy1nkIuCoinkmnnwS+GxHTauzrXJISA126dOm3aNGiBsfzwwfnAE1XV12K5s2bR8+ePZs6DGvhrr/+etq1a7fJswQt2b///W8+97nP8cwzz7D11ps29db2vydpekSUb7IyhS0R1FahWjPXybIOETEuIsojojy3YaghLh/S25mAWQt03nnnbdT+UgoWL17MVVddVWsmsDkaZy+1WwrsmTPdGajZxJ1lHTOzOrVu3ZozzzyzqcMoqu7du2e+IyuL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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# random Forest \n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rfc = RandomForestClassifier(max_depth = 5)\n",
    "rfc.fit(x_train, y_train) \n",
    "y_pred = rfc.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', rfc.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(rfc, x_test, y_test)\n",
    "plt.savefig('rocauc/rf_2.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(rfc, X, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', rfc.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.7391304347826086\n",
      "[[10  2]\n",
      " [ 4  7]]\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.71428571 0.57142857 0.71428571 0.69230769]\n",
      "Test Accuracy Score 0.7391304347826086\n",
      "precision =  0.7777777777777778\n",
      "Sensitivity :  0.8333333333333334\n",
      "Specificity :  0.6363636363636364\n",
      "f1 score =  0.7000000000000001\n"
     ]
    },
    {
     "data": {
      "image/png": "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l/Hwww8DVLuPr7/+Og8//DARERHExcUxb9485syZw6RJk3jppZe49tpryc3NJS0tjTfffJOf/exnTJo0ifT0dD755JNq46+6n1dddVVlbJ9//jmDBg0iMvLw4WzatGn84he/4Pnnn2fhwoWcdtppAX/7J554ggceeID+/fsDEBkZyW233ebxL6d627dvp6CgoHL7119/Pe+88w5jx46tcZlp06Yxfvz4yuGK36asrIySkpLK41bbtm3p2bMnixYtYujQ+iWMDFQQtLgj5dSsLbSNjuCitONCHYpponr37o3P52PXrl28++67xMXFsXjxYoqLixk+fDijR49mzZo1vPPOO2RlZdG2bVv27NlzxDr27NnD22+/zZo1axAR9u3b96PtXH/99TzzzDNkZGQwceJEHn74YZ566inA+adftGgRH374IQ8//HCt1U0xMTF88cUX5OXlcckll/Dpp58SGxvLn/70J5588knuv/9+7rzzTt59910SExOZMWMGDzzwAE8//TT79++nT58+Ab+TP/7xj3Tu3Jny8nJGjRrFihUrSE5OrnYfH3nkEWbNmkXXrl1/tN9JSUm8+OKLTJo0iffff/+IaXl5efzhD3/4UfwTJ048Yj+rWrBgAYMHD64cPnToEJ999hl///vf2bdvH9OmTfNUEKxcuZJf//rXAeebPXs2v/rVr340vm3btnz55ZdHjNu2bRvJyYdvSElOTmbbtm21rn/GjBm8++67R4w799xzWbRoEWPHjuWyyy6rHJ+ens78+fODXhCMqtfam5j8Q6W89812LjrlONrHWCNxU1OXM/dgU7ce95NPPmHFihW88cYbAOTn57N+/Xo+/fRTbrrpJtq2bQtA585HdljYoUMHYmJiuPnmmzn//POPqIeuWM++ffvIyMgA4IYbbuDyyy+vnH7JJZcAMHjwYDZv3lxrrFdeeSUACxcuZPXq1QwfPhyAkpISTjvtNNauXcvKlSs555xzACgvL6dLly6oquer4v/85z9MnjyZsrIytm/fzurVqznhhBOq3cfhw4dz4403csUVV1Tuhxc1xV91P6vavn07xx9/fOXw+++/z8iRI2nbti2XXnopjz76KH/5y1+IiIiodn/rWjMwcuTIyvr7QCr+jrxur+LE4sQTTzxi/KxZsygqKuKaa67h888/r/wtk5KSWLNmjffga1BrQaCq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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.tree import DecisionTreeClassifier\n",
    "dtc = DecisionTreeClassifier()\n",
    "dtc.fit(x_train, y_train) \n",
    "y_pred = dtc.predict(x_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', dtc.score(x_test,y_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y_test, y_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(dtc, x_test, y_test)\n",
    "plt.savefig('rocauc/dt_2.png')\n",
    "\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(dtc, X, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y_test, y_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', dtc.score(x_test, y_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y_test,y_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y_test,y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Oversampling control cases - for unbalanced data using imblearn"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "import imblearn \n",
    "from imblearn.over_sampling import RandomOverSampler "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.DataFrame(list(zip(p300_amp_avg, p300_amp_var, p300_lat_avg, p300_lat_var, n200_amp_avg, n200_amp_var, n200_lat_avg, n200_lat_var, coherence_measure, list(subid_symp_rate['HadHeadInjury'].values))),\n",
    "               columns =['p300_amp_avg', 'p300_amp_var', 'p300_lat_avg', 'p300_lat_var', 'n200_amp_avg', 'n200_amp_var', 'n200_lat_avg', 'n200_lat_var', 'coherence_measure', 'HadHeadInjury'])\n",
    "X1 = data[['p300_amp_avg', 'p300_amp_var', 'p300_lat_avg', 'p300_lat_var', 'n200_amp_avg', 'n200_amp_var', 'n200_lat_avg', 'n200_lat_var']]\n",
    "Y1 = data[['HadHeadInjury']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "data2 = pd.read_csv('data2.csv')\n",
    "data2 = data2.drop(['Unnamed: 0'], axis=1)\n",
    "X2 = data2[['p300_amp_avg','p300_amp_var','n200_amp_avg','n200_amp_var']]\n",
    "Y2 = data2[['HadHeadInjury']] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1_train, x1_test, y1_train, y1_test = train_test_split(X1, Y1, test_size=0.33, random_state = 40)\n",
    "x2_train, x2_test, y2_train, y2_test = train_test_split(X2, Y2, test_size=0.33, random_state = 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "oversample = RandomOverSampler(sampling_strategy='minority')\n",
    "# fit and apply the transform\n",
    "# split once and then segregate into x1 and x2\n",
    "x1_train_over, y1_train_over = oversample.fit_resample(x1_train, y1_train)\n",
    "x2_train_over, y2_train_over = oversample.fit_resample(x2_train, y2_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lenth of train set 46\n",
      "number of head injury in train set  =  33.0\n",
      "number of controls in train set =  13.0\n",
      "length of test set 23\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n"
     ]
    }
   ],
   "source": [
    "print('lenth of train set', len(x1_train))\n",
    "print('number of head injury in train set  = ', sum(y1_train['HadHeadInjury']))\n",
    "print('number of controls in train set = ', len(y1_train) - sum(y1_train['HadHeadInjury']))\n",
    "\n",
    "\n",
    "print('length of test set', len(x1_test))\n",
    "print('number of head injury in test set  = ', sum(y1_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y1_test) - sum(y1_test['HadHeadInjury']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lenth of train set 46\n",
      "number of head injury in train set  =  33.0\n",
      "number of controls in train set =  13.0\n",
      "length of test set 23\n",
      "number of head injury in test set  =  11.0\n",
      "number of controls in test set =  12.0\n"
     ]
    }
   ],
   "source": [
    "print('lenth of train set', len(x2_train))\n",
    "print('number of head injury in train set  = ', sum(y2_train['HadHeadInjury']))\n",
    "print('number of controls in train set = ', len(y2_train) - sum(y2_train['HadHeadInjury']))\n",
    "\n",
    "\n",
    "print('length of test set', len(x2_test))\n",
    "print('number of head injury in test set  = ', sum(y2_test['HadHeadInjury']))\n",
    "print('number of controls in test set = ', len(y2_test) - sum(y2_test['HadHeadInjury']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "HadHeadInjury    33.0\n",
      "dtype: float64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "66"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(y1_train_over.sum())\n",
    "len(y1_train_over)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5652173913043478\n",
      "[[ 2 10]\n",
      " [ 0 11]]\n",
      "Test Accuracy Score 0.5652173913043478\n",
      "precision =  0.5238095238095238\n",
      "Sensitivity :  0.16666666666666666\n",
      "Specificity :  1.0\n",
      "f1 score =  0.6875000000000001\n"
     ]
    },
    {
     "data": {
      "image/png": "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Vy8OP/xw3n///VrX++CDDzjhhBPo3bs3ffr04fnnn693+7lz5zJq1Kitii1XvkTQCmiXvtrnvK96mf1La9u2LRUVFVRWVrLzzjvzy1/+aw6j8dRTT1FRUUFFRcUmP5r12bhxY4OOUTMRVFZWcuGFF3LPPfewYMECKisr2WOPPRq0z6xyk9tvfvMbZs2axXXXXce5557LGWeckXk/tZX52muv5Vvf+lb19AcffMCsWbP44IMPePPNNzPtd926dRxzzDGcd955LFq0iAULFnDeeeexcuXW3SU/ZswYDjvsMP72t79x2GGHMWbMmFrXu/jiiznyyCN59dVXeeWVV+jTp0+92w8YMIDly5ezdOnSrYqvSr6qoRURMbpRjmQl7YcPzmP+243b11Pff+/AVcOy93IyePBg5syZA8BLL73Et7/9bT755BPatm3L+PHj2WuvvZgwYQLTpk3j448/5vXXX+e4447jZz/7GQDjx4/nJz/5CV26dOELX/gC22+/PQBLlizhm9/8JitXrqRz586MHz+e7t27M2rUKNq2bcurr77KkiVLGD9+PBMnTuT5559n0KBBTJgwoc5Y69vnzjvvzOzZs9l33305//zzueCCC1i5ciU77LADt912G7179+b+++/nhz/8Ia1ataJjx4488cQTXHnllXzyySc888wzXH755Tz88MP84Ac/oHfv3gBsu+22nH/++ZvFcttttzFu3DjWr1/Pnnvuyd13380OO+yw2TGmT5/OvHnzOPPMM1m/fj2fffYZDzzwAL169aJdu3asXbuW4cOH89FHHzFo0CAuv/xyFixYQLt27bjkkkt4/fXXay1LzTLfcMMN1bGtWbOGOXPmMHDgwOp5DzzwAMOGDWO33XZj8uTJXH755Xn/bdx7770MHjyYYcOGVc8bOnRo3u3ymTp1Kk8//TQA3/jGNxgyZAg//elPN1nnww8/ZPr06dX/Hlq3bk3r1q3zbj9s2DAmT57Md7/73a2OM98VgVv6rEX49NNPefLJJxk+fDgAvXv3Zvr06cyePZvRo0fz/e9/v3rdiooKpkyZwty5c5kyZQrLli1jxYoVXHXVVTz77LM8/vjjzJ8/v3r9Cy+8kDPOOIM5c+Zw6qmnctFFF1Uve//99/nzn//MjTfeyLBhw/jv//5v5s2bx9y5c6moqKheb+jQoZSVlTFo0KC8+1y4cCFPPPEEN9xwA2effTa33HILM2fO5Prrr6/+IR89ejSPPfYYr7zyCtOmTaN169aMHj2akSNHUlFRwciRI6msrGS//fbL+9kdf/zxvPzyy9VnqnfccUetxwAYO3YsF198MRUVFcyYMYNu3bptsq9p06ZVX6WNHDlyk2V1laVmmXPNmDGD/v37bzLvvvvu4+STT+bkk0/mvvvuy1s+IPNnsWbNmuoqvJqv3H8TVf7xj3/QpUsXALp06cI777yz2TpvvPEGnTt35swzz2SfffbhrLPO4qOPPsq7fXl5OX/9618zlS+ffFcEhzXKUazkNeTMvTF98sknlJWVsXjxYvbbbz8OP/xwAFavXs03vvEN/va3vyGJDRs2VG9z2GGH0bFjRwD69u3LkiVLePfddxkyZAidO3cGYOTIkSxcuBCA559/nt//Prlv4vTTT9/kDG3YsGFIYsCAAey2224MGJB029WvXz8WL15MWVkZkFQNderUqXq7+vZ54okn0qpVK9auXctzzz3HiSeeWL3sn//8JwAHHXQQo0aN4qSTTuL444/fqs+wsrKSK664gg8++IC1a9dyxBFH1HmMwYMH8+Mf/5jly5dz/PHH06tXr0zHqK8suWWuacWKFdXfCSQ/nIsWLeLggw9GEttuuy2VlZX079+/1rtpGnqHTfv27TdJ4I1h48aNzJo1i1tuuYVBgwZx8cUXM2bMGK655pp6t9t11115++23GyWGeq8IIuK9rdm5pCMlvSZpkaTLalkuSTeny+ekndmZNZqqs88lS5awfv366jaC//mf/2Ho0KFUVlby4IMPbnLfdVWVDySNzVX10ll/NHLXq9rXNttss8l+t9lmmwbV8efuc8cddwTgs88+Y6eddqpuW6ioqGDBgmSYkLFjx/KjH/2IZcuWUVZWxqpVqzbbZ79+/Zg5c2beY48aNYpbb72VuXPnctVVV1V/VrUd45RTTqk+6z/iiCP485//nKl89ZUlt8w1tW3bdpPvbsqUKbz//vv07NmTHj16sHjxYiZPngzALrvssklj7XvvvVedfLN+Fg29Ithtt91YsWIFkCStXXfddbN1unXrRrdu3aqvBk844QRmzZqVd/t169bRtm3bvDFnsUWdzmWRPpH8S+AooC9wsqS+NVY7CuiVvs4Gfl2oeKy0dezYkZtvvpnrr7+eDRs2sHr1arp2TcZB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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(max_depth =  5)\n",
    "rfc = rfc.fit(x1_train_over, y1_train_over) \n",
    "y1_pred = rfc.predict(x1_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', rfc.score(x1_test,y1_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y1_test, y1_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(rfc, x1_test, y1_test)\n",
    "plt.savefig('rocauc/rf_FS1_OS.png')\n",
    "\n",
    "#cross valiation \n",
    "#print('Cross-Validation Accuracy Scores', cross_val_score(rfc, X1, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y1_test, y1_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', rfc.score(x1_test, y1_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y1_test,y1_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y1_test,y1_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5217391304347826\n",
      "[[4 8]\n",
      " [3 8]]\n",
      "Cross-Validation Accuracy Scores [0.64285714 0.64285714 0.57142857 0.71428571 0.76923077]\n",
      "Test Accuracy Score 0.5217391304347826\n",
      "precision =  0.5\n",
      "Sensitivity :  0.3333333333333333\n",
      "Specificity :  0.7272727272727273\n",
      "f1 score =  0.5925925925925926\n"
     ]
    },
    {
     "data": {
      "image/png": "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vI4dO9Z8nj9/PkceeSS77rorffr04YQTTuDdd99tUmwffPABhxxyCL169eKQQw5h5cqVda6X+zdQUVGxwbIbb7yR3XbbjX79+vGDH/wAgFmzZjFy5MgmxZYrX4mgHdCRpARQWzRbFGYF0qFDByorKwH45je/yc0338wll1zSskHV4amnnmK77bZr1Dbr169n002zFuqTjGDatGkceeSRAMyePZvzzz+fhx9+mN69e7N+/XrGjRvXqBiyys3cfv3rX1NVVcUWW2zR6P3UleYrr7ySSy+9tGb6ww8/5NVXX6Vjx4689dZbmRpNP/30U4466iiuvfZahg0bBiS/SVVVFTvssEOj46w2ZswYDj74YEaNGsWYMWMYM2YMv/jFL+pct66/gaeeeorJkyczc+ZMtthiC9577z0Adt99d5YtW8aSJUvo3r3pvf3k+ytaHhGjm3wUK3k/fnAOc99p3r6e+u7YmcuHZe/lZPDgwcycOROAV155he9973t88skndOjQgTvvvJPddtuN8ePHM2XKFD7++GPefPNNjj32WH75y18CcOedd/Lzn/+csrIyvvzlL9ecyBYvXsyZZ55JVVUVXbt25c4776R79+6MHDmSDh068Prrr7N48WLuvPNOJkyYwIsvvsigQYMYP358vbE2tM9tttmGGTNmsNdee3Huuedy3nnnUVVVxZZbbsltt91G7969uf/++/nxj39Mu3bt6NKlC0888QSXXXYZn3zyCc899xwXX3wxDz/8MJdccgm9e/cGYNNNN+Xcc8/9Qiy33XYb48aNY+3atey6667cfffdbLnlll84xjPPPMOcOXM444wzWLt2LZ9//jkPPPAAvXr1omPHjnz00Uccc8wxrFmzhkGDBnHxxRczb948OnbsyIUXXsibb75ZZ1pqp/maa66piW316tXMnDmTAQMG1Mx74IEHGDZsGDvssAMTJ07k4osvzvu3ce+99zJ48OCaTABg6NChebfLZ/LkyTz99NNAciEyZMiQejOCutx6662MGjWq5m9t++23r1k2bNgwJk6cWFNKaIp8VUNu6bM24bPPPuPJJ5/kmGOOAaB3794888wzzJgxg9GjR/OjH/2oZt3KykomTZrErFmzmDRpEkuXLmX58uVcfvnlPP/88zz++OPMnTu3Zv3zzz+f008/nZkzZ3LKKadwwQUX1CxbuXIlf/3rX7nuuusYNmwY//mf/8mcOXOYNWtWTUkFkpNOeXk5gwYNyrvP+fPn88QTT3DNNddw9tlnc+ONNzJ9+nSuvvrqmhP56NGjeeyxx3jttdeYMmUKm2++OaNHj2bEiBFUVlYyYsQIZs+ezd577533uzvuuOOYOnUqr732Gn369OH222+v8xgAY8eO5bvf/W5N6aNbt24b7GvKlCk1pbQRI0ZssKy+tNROc65p06bRv3//Debdd999nHTSSZx00kncd999edMHZP4uVq9eXVOFV/uV+zdR7d1336WsrAyAsrKymiv62iRx6KGHsvfee29QKps/fz7PPvssgwYN4qCDDmLq1Kk1yyoqKnj22WczpS+ffCWCg5vlKFbyGnPl3pw++eQTysvLWbRoEXvvvTeHHHIIAKtWreKb3/wm//M//4Mk1q1bV7PNwQcfTJcuXQDo27cvixcv5v3332fIkCF07doVgBEjRjB//nwAXnzxRf7wh+S+idNOO22DK7Rhw4Yhid13350ddtiB3XdPuu3q168fixYtory8HPhitUBD+zz++ONp164dH330ES+88ALHH398zbJ//vOfAOy3336MHDmSE044geOOO65J3+Hs2bO59NJL+fDDD/noo4847LDD6j3G4MGD+dnPfsayZcs47rjj6NWrV6ZjNJSW3DTXtnz58prfBJIT74IFC9h///2RxKabbsrs2bPp379/nXfTNPYOm06dOm2QgTeX559/nh133JH33nuPQw45hN69e3PggQeyfv16Vq5cyUsvvcTUqVM54YQTWLhwIZLYfvvteeedd5rl+A2WCCLig6bsXNLhkt6QtEDSqDqWS9IN6fKZaWd2Zs2m+upz8eLFrF27lptvToba/u///m+GDh3K7NmzefDBBze47zq37rpdu3asX78eyH7SyF2vel+bbLLJBvvdZJNNavbb2H1utdVWAHz++edsvfXWVFZW1rzmzUuGCRk7diw//elPWbp0KeXl5axYseIL++zXrx/Tp0/Pe+yRI0dy0003MWvWLC6//PKa76quY5x88sk1V/2HHXYYf/3rXzOlr6G05Ka5tg4dOmzw202aNImVK1fSs2dPevTowaJFi5g4cSIA22677QaNtR988EFN5pv1u2hsiWCHHXZg+fLlQJJp5Vbt5Npxxx2BpOrn2GOP5ZVXXgGgW7duHHfccUhi4MCBbLLJJrz//vtA0q7RoUOHvDFnsVGdzmWRPpF8M3AE0Bc4SVLfWqsdAfRKX2cDtxYqHittXbp04YYbbuDqq69m3bp1rFq1ip12SsaNaKiuvtqgQYN4+umnWbFiBevWreP++++vWbbvvvvWnGzuuece9t9//ybHm2WfnTt3pmfPnjWxRASvvfYaAG+++SaDBg1i9OjRbLfddixdupROnTqxevXqmu0vuugirrzyypqSzeeff8611177heOsXr2asrIy1q1bxz333FMzv65jLFy4kF122YULLriAY445pqZNJp+G0tKQPn36sGDBgprp++67j0cffZRFixaxaNEipk+fXvM9DhkyhEmTJrF27Vog+d2r2wFOPvlkXnjhBR5++OGafT366KPMmjVrg+NVlwjqevXtW/v0BscccwwTJkwAYMKECQwfPvwL66xZs6bmd1mzZg1/+ctfaqq7vva1r9VkpvPnz2ft2rU1mdf8+fO/UC22sQqWEQADgQURsTAi1gITgdrfwnDgrki8BGwtqayAMVkJ23PPPRkwYEBNA9vFF1/Mfvvtx2effZZ327KyMq644goGDx7MV7/6Vfba638LrzfccAN33nkne+yxB3fffTfXX399k2PNus977rmH22+/nQEDBtCvXz8mT54MJCf53Xffnf79+3PggQcyYMAAhg4dyty5cykvL2fSpEnsscce/OpXv+Kkk06iT58+9O/fv+bqNddPfvITBg0aVFNlUa2uY0yaNIn+/ftTXl7O66+/zumnn545zfWlpSG9e/dm1apVrF69mkWLFrFkyRL22WefmuU9e/akc+fOvPzyyxx99NEccMAB7L333pSXl/P888/XNNx26NCBhx56iBtvvJFevXrRt29fxo8fX+8VfFajRo3i8ccfp1evXjz++OOMGpVUjLzzzjs1d2+9++677L///gwYMICBAwdy1FFHcfjhhwNw5plnsnDhQvr378+JJ57IhAkTakqHTz31FEcddVST4qumiMLcBSrpG8DhEXFWOn0aMCgizs9Z5yFgTEQ8l04/CfwwIqbV2tfZJCUGunfvvvfixYsbHc+PH5wDtFxddSmaN28effr0aekwrI277rrr6NSp0xeeJWjL/vnPf3LQQQfx3HPP1XkLcV3/e5KmR0TFF1amsCWCLM8eZHo+ISLGRURFRFTkNgw1xuXD+jkTMGuDvv3tb2/UMwmt2ZIlSxgzZkyjniNpSPPspW7LgJ1zprsBtZu4s6xjZlav9u3bc9ppp7V0GEXVq1evzHdkZVHIEsFUoJeknpI2B04kGfg+1xTg9PTuoX2AVRHxxUpKa7UKVfVoZnXbmP+5gpUIImK9pPOBx0i6qrgjIuZIOiddPhZ4BDgSWAB8DJxRqHis+Nq3b8+KFSvcFbVZkVSPR9C+fftGbVewxuJCqaioiGnTpuVf0VqcRygzK776RihrqLG4kG0EVuI222yzRo2SZGYto5BtBGZm1go4IzAzK3HOCMzMSlyrayyWVAU0/tHixHbA+80YTmvgNJcGp7k0NCXN/xYRdT6R2+oygqaQNK2+VvO2ymkuDU5zaShUml01ZGZW4pwRmJmVuFLLCAozMvf/bU5zaXCaS0NB0lxSbQRmZvZFpVYiMDOzWpwRmJmVuDaZEUg6XNIbkhZIGlXHckm6IV0+U9Jede2nNcmQ5lPStM6U9IKkAS0RZ3PKl+ac9b4i6bN01LxWLUuaJQ2RVClpjqS/FTvG5pbhb7uLpAclvZamuVX3YizpDknvSZpdz/LmP39FRJt6kXR5/SawC7A58BrQt9Y6RwJ/JhkhbR/g5ZaOuwhp3hf4l/TzEaWQ5pz1/krS5fk3WjruIvzOWwNzge7p9PYtHXcR0vwj4Bfp567AB8DmLR17E9J8ILAXMLue5c1+/mqLJYKBwIKIWBgRa4GJwPBa6wwH7orES8DWksqKHWgzypvmiHghIlamky+RjAbXmmX5nQG+AzwAvFfM4AokS5pPBv4QEUsAIqK1pztLmgPopGTQi44kGcH64obZfCLiGZI01KfZz19tMSPYCViaM70sndfYdVqTxqbnP0iuKFqzvGmWtBNwLDC2iHEVUpbf+cvAv0h6WtJ0SacXLbrCyJLmm4A+JMPczgK+GxGfFye8FtHs56+2OB5BXUNh1b5HNss6rUnm9EgaSpIR7F/QiAovS5p/BfwwIj5rIyOkZUnzpsDewMFAB+BFSS9FxPxCB1cgWdJ8GFAJ/DvwJeBxSc9GxD8KHFtLafbzV1vMCJYBO+dMdyO5UmjsOq1JpvRI2gP4DXBERKwoUmyFkiXNFcDENBPYDjhS0vqI+FNRImx+Wf+234+INcAaSc8AA4DWmhFkSfMZwJhIKtAXSHoL6A28UpwQi67Zz19tsWpoKtBLUk9JmwMnAlNqrTMFOD1tfd8HWBURy4sdaDPKm2ZJ3YE/AKe14qvDXHnTHBE9I6JHRPQAfg+c24ozAcj2tz0ZOEDSppK2BAYB84ocZ3PKkuYlJCUgJO0A7AYsLGqUxdXs5682VyKIiPWSzgceI7nj4I6ImCPpnHT5WJI7SI4EFgAfk1xRtFoZ03wZsC1wS3qFvD5acc+NGdPcpmRJc0TMk/QoMBP4HPhNRNR5G2JrkPF3/gkwXtIskmqTH0ZEq+2eWtJ9wBBgO0nLgMuBzaBw5y93MWFmVuLaYtWQmZk1gjMCM7MS54zAzKzEOSMwMytxzgjMzEqcM4I2KO1pszLn1aOBdT9qhuONl/RWeqxXJQ3eiH38RlLf9POPai17oakxpvup/l5mp71Vbp1n/XJJR27EccokPZR+HiJplaQZkuZJunwj9ndMda+bkr5W/T2l06MlfbWx+6zjGOOVp3fWtNuKzLccp2l/KMN6Dfa2ma5TZ4+bkjaX9IykNncrfDE5I2ibPomI8pzXoiIc86KIKAdGAb9u7MYRcVZEzE0nf1Rr2b5NDw/43++lP0mnXuflWb+c5H7txvo+cFvO9LMRsSfJk86nStq7MTuLiCkRMSad/BrQN2fZZRHxxEbE+H/JeODwPOscAfRKX2cDtwKkHdE9CYwoYHxtnjOCEiCpo6Qn06v1WZK+0EtnehX7TM4V8wHp/EMlvZhue7+kjnkO9wywa7rt99N9zZb0vXTeVpIeVtJ3/GxJI9L5T0uqkDQG6JDGcU+67KP0fVLuFXp6Fft1Se0kXSVpanq1+K0MX8uLpB11SRqoZIyGGen7bulTrKOBEWksI9LY70iPM6Ou7zH1deDR2jPTbh+mA19KSxsvpfH+UdK/pLFcIGluOn9iOm+kpJsk7QscA1yVxvSl6it5SUdI+l3OdzNE0oPp50b9hpIuS9M4W9I4aYOOmk5Nv6PZkgam62f9XuqUobdNaLjHzT8BpzTmmFZLIfrT9qtlX8BnJJ1wVQJ/JHmCvHO6bDuSJxKrHyb8KH3/L+CS9HM7oFO67jPAVun8HwKX1XG88aR9/QPHAy+TdHw2C9iKpGvgOcCeJCfJ23K27ZK+Pw1U5MaUs051jMcCE9LPm5P0wNiB5Arx0nT+FsA0oGcdcX6Uk777gcPT6c7ApunnrwIPpJ9HAjflbH8lcGr6eWuS/nu2qnWMnsD0nOkhwEPp522BRUA/kid/D0rnjwZ+lX5+B9ii+hi148j9rnOn0994Sc5vdStw6kb+htvkzL8bGJbzG92Wfj6QtL/8+r6XWmmvIHnKub6/2R7U0/9+uvwhYP+c6Sdz/l7aAVUt/X/Xml+uV2ubPomkmgYASZsBV0o6kKTbgZ2AHYC/52wzFbgjXfdPEVEp6SCSaojn04vCzUmupOtylaRLgSqS3k0PBv4YyVUwkv4AHEBypXy1pF+QnCSebUS6/gzcIGkLkqqEZyLiE0mHAnvk1HF3IalCeKvW9h0kVZKcdKYDj+esP0FSL5JeHDer5/iHAsdIujCdbg90Z8O+fMrS7yDXAZJmkHz3Y0g6Dds6IqpHD5tAkjFBkkHcI+lPJFe6mUTSFcOjwDBJvweOAn4ANOY3rDZU0g+ALYFtSDLxB9Nl96XHe0ZSZyXtLPV9L7nxTQPOypqeOtTb42YkvcuuldQpIlY34RglyxlBaTiFZOSmvSNinaRFJP+sNdJ/7ANJTiB3S7oKWAk8HhEnZTjGRRHx++oJ1dOAGRHz0zryI4GfS/pLRIzOkoiI+FTS0yTdDo8gPSmRnCS+ExGP5dnFJxFRLqkLyRXmecANJH3VPBURxyppWH+6nu0FfD0i3mjoGNT6bknaCI6u2Uly/PocRXK1fQzw35L6NbBubZNI0vQBMDUiVqfVOll/QyS1B24hudpeKukKNkxP7T5pgnq+FyUdwDWXfD1ubgF82ozHKyluIygNXYD30kxgKPBvtVeQ9G/pOrcBt5MMlfcSsJ+k6jr/LSV9OeMxnwG+lm6zFUm1zrOSdgQ+jojfAlenx6ltXVoyqctEkk62DiDpiIz0/dvV20j6cnrMOkXEKuAC4MJ0my7A2+nikTmrriapIqv2GPCd6jpzSXvWsfv5JCWOeqXHX6m0HQY4DfibpE2AnSPiKZKr+a1JqtVy1Y4p19Mk3+f/I8kUoPG/YfVJ//20LaH2nUTVbTr7k/R6uYps30tT1dvjpqRtSaqG1hXguCXBGUFpuAeokDSNpHTweh3rDAEq0yqMrwPXR0QVyYnxPkkzSU4qvbMcMCJeJal3foWkzeA3ETED2B14Ja2iuQT4aR2bjwNmKm0sruUvJFfMT0RyxwgkYyzMBV5Vcgvir8lT2k1jeY2kW+NfkpROniepb672FNA3bZgdQVJy2CyNbXY6XXu/a4A3q0+8DfgmSXXaTJK7k0anx/6tkl40ZwDXRcSHtbabCFyUNsp+qdaxPyMp6RyRvtPY3zA93m0k7Tt/IqkyzLVSye28Y0mqACHD96LkRoDf1HVMJb1tvgjsJmmZpP9I55+jtJdRkh43F5K0b90GnJuzi6HpcttI7n3UrJlJOpakGu7Slo6lFKTtTxfnqbKzBriNwKyZRcQf0+oKKzAlt/n+yZlA07hEYGZW4txGYGZW4pwRmJmVOGcEZmYlzhmBmVmJc0ZgZlbi/j8tN2HE4nXqGQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rfc = RandomForestClassifier(max_depth =  5)\n",
    "rfc = rfc.fit(x2_train_over, y2_train_over) \n",
    "y2_pred = rfc.predict(x2_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', rfc.score(x2_test,y2_test))\n",
    "\n",
    "#confusion matrix\n",
    "print(confusion_matrix(y2_test, y2_pred))\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(rfc, x2_test, y2_test)\n",
    "plt.savefig('rocauc/rf_FS2_OS.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(rfc, X2, Y, cv=5))\n",
    "\n",
    "cm1 = confusion_matrix(y2_test, y2_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', rfc.score(x2_test, y2_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y2_test,y2_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y2_test,y2_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5652173913043478\n",
      "[[9 3]\n",
      " [7 4]]\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.57142857 0.5        0.64285714 0.53846154]\n",
      "Test Accuracy Score 0.5652173913043478\n",
      "precision =  0.5714285714285714\n",
      "Sensitivity :  0.75\n",
      "Specificity :  0.36363636363636365\n",
      "f1 score =  0.4444444444444444\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=5)\n",
    "knn.fit(x1_train_over, y1_train_over) \n",
    "y1_pred = knn.predict(x1_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', knn.score(x1_test,y1_test))\n",
    "\n",
    "#confusion matrix\n",
    "C = confusion_matrix(y1_test, y1_pred)\n",
    "print(C)\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(knn, x1_test, y1_test)\n",
    "plt.savefig('rocauc/knn_FS1_OS.png')\n",
    "\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(knn, X1, Y, cv=5, scoring = 'accuracy'))\n",
    "\n",
    "cm1 = confusion_matrix(y1_test, y1_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', knn.score(x1_test, y1_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y1_test,y1_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y1_test,y1_pred))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Accuracy Score 0.5652173913043478\n",
      "[[8 4]\n",
      " [6 5]]\n",
      "Cross-Validation Accuracy Scores [0.57142857 0.57142857 0.5        0.64285714 0.53846154]\n",
      "Test Accuracy Score 0.5652173913043478\n",
      "precision =  0.5555555555555556\n",
      "Sensitivity :  0.6666666666666666\n",
      "Specificity :  0.45454545454545453\n",
      "f1 score =  0.5\n"
     ]
    },
    {
     "data": {
      "image/png": "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t99mxIgRANx777088cQTJccsKiri6aefPu54xU8EpX9KVwuBc6fftGlTlixZgqry5ptvkpiYeNx62dnZFBYWArBlyxa+//57unbtSkFBQUkvp/z8fGbPnk2/fv1Kttu4ceMx0yfK63sEJ+IMYJOqbgEQkXeBRMC3n1gi8KY6tzVLRKSFiLRX1awAxmVMpbRq1YpPP/2Uc845p+TusVhUVBSXXHIJzzzzDAB9+vRh0qRJjBw5kqKiIiIjI3nxxRfp3LlzyTaDBg1i/PjxxMXF0blzZxISEmjevLnfOIYOHco111zDpk2buOqqq0p6kVx//fUldcQTJ06kf//+x1QpgVNXfcMNN1BU5KQa/9vf/gY4jcAHDx5k0KBBREZGEhkZeVw9eVxcHP3796dv37507dq1pOomJyeHxMREcnNzUdWS7+Dee+/l+++/R1U5//zziYuL44svvvB7fm3atOGNN97gyiuvJC8vD4BJkybRo0ePCrcbPXo011xzDQD//e9/Oe+880qeqgASExP54x//SF5eHn/5y1+47bbbiIuLQ1UZNWoUV199NQCnn346zz77LFdeeSWHDx9GRBg7dqzfuP156aWXuP766zly5AijR48uaSieOXMmKSkpPPbYYyxatIiHHnqIunXrEhERwdSpU2nVqhWHDh3ioosuIj8/n8LCQi644AJuvvnmkn0vXry4pNPASSnuWlbVP8BlwKs+09cAL5RaZzYw1Gd6PpBQxr5uAVKAlE6dOumJSNm2V297O0Uzfjp8Qtub4Fq7dm11hxBQOTk5qqp66NAhHThwoKamplZzRKFtwoQJunHjxuoOI6i+++47vfrqq8tcVtb/HyBFy7leB/KJwMu7B57eT1DVacA0gISEhBN6f2Fg55YM7DzQ/4rGBMEtt9zC2rVryc3N5brrrmPAAGseOxlPPvkkWVlZdO/evbpDCZrdu3fz+OOPV8m+AlkQpAMdfaY7AJknsI4xtc6///3v6g6hVunZsyc9e/as7jCC6sILL6yyfQWssRhYBnQXkS4iUg+4AphZap2ZwLVu76Ezgf1q7QPGpX561xhjjnci/28C9kSgqgUicgcwF2eoiumqukZEbnWXTwXmAGOATcBh4OTflTa1QoMGDdizZ48NRW1MJaibj6BBgwaV2k5C7a4rISFBq2ogLFNzWYYyY05MeRnKRCRVVRPK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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=5)\n",
    "knn.fit(x2_train_over, y2_train_over) \n",
    "y2_pred = knn.predict(x2_test)\n",
    "\n",
    "# accuracy \n",
    "print('Test Accuracy Score', knn.score(x2_test,y2_test))\n",
    "\n",
    "#confusion matrix\n",
    "C = confusion_matrix(y2_test, y2_pred)\n",
    "print(C)\n",
    "\n",
    "#ROC curve \n",
    "plot_roc_curve(knn, x2_test, y2_test)\n",
    "plt.savefig('rocauc/knn_FS2_OS.png')\n",
    "#cross valiation \n",
    "print('Cross-Validation Accuracy Scores', cross_val_score(knn, X2, Y, cv=5, scoring = 'accuracy'))\n",
    "\n",
    "cm1 = confusion_matrix(y2_test, y2_pred)\n",
    "#accuracy\n",
    "print('Test Accuracy Score', knn.score(x2_test, y2_test))\n",
    "#print precision \n",
    "from sklearn.metrics import precision_score\n",
    "print('precision = ', precision_score(y2_test,y2_pred))\n",
    "#recall/sensetivity\n",
    "sensitivity1 = cm1[0,0]/(cm1[0,0]+cm1[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "#specificity\n",
    "specificity1 = cm1[1,1]/(cm1[1,0]+cm1[1,1])\n",
    "print('Specificity : ', specificity1)\n",
    "#print f1 score \n",
    "from sklearn.metrics import f1_score\n",
    "print('f1 score = ', f1_score(y2_test,y2_pred))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
