diff --git a/partAknn__-final.ipynb b/partAknn__-final.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..de102595fdffc6e0d9d9155a59c3f7e92f14ec03
--- /dev/null
+++ b/partAknn__-final.ipynb
@@ -0,0 +1,1901 @@
+{
+ "cells": [
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1>1. Loading Datasets</h1>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 70,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "\n",
+      "[  TrainingDataBinary.csv info ]\n",
+      "<class 'pandas.core.frame.DataFrame'>\n",
+      "RangeIndex: 6000 entries, 0 to 5999\n",
+      "Columns: 129 entries, R1-PA1:VH to marker\n",
+      "dtypes: float64(112), int64(17)\n",
+      "memory usage: 5.9 MB\n",
+      "\n",
+      "[  TestingDataBinary.csv info  ]\n",
+      "<class 'pandas.core.frame.DataFrame'>\n",
+      "RangeIndex: 100 entries, 0 to 99\n",
+      "Columns: 128 entries, R1-PA1:VH to snort_log4\n",
+      "dtypes: float64(112), int64(16)\n",
+      "memory usage: 100.1 KB\n"
+     ]
+    }
+   ],
+   "source": [
+    "import numpy as np\n",
+    "import matplotlib.pyplot as plt\n",
+    "import pandas as pd\n",
+    "\n",
+    "mTrain = pd.read_csv(\"TrainingDataBinary.csv\")\n",
+    "mTest = pd.read_csv(\"TestingDataBinary.csv\")\n",
+    "\n",
+    "\n",
+    "print(\"\\n[  TrainingDataBinary.csv info ]\")\n",
+    "mTrain.info()\n",
+    "\n",
+    "print(\"\\n[  TestingDataBinary.csv info  ]\")\n",
+    "mTest.info()"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1>1.1 Analysing the Data</h1>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 71,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "R1-PA1:VH     float64\n",
+       "R1-PM1:V      float64\n",
+       "R1-PA2:VH     float64\n",
+       "R1-PM2:V      float64\n",
+       "R1-PA3:VH     float64\n",
+       "               ...   \n",
+       "snort_log1      int64\n",
+       "snort_log2      int64\n",
+       "snort_log3      int64\n",
+       "snort_log4      int64\n",
+       "marker          int64\n",
+       "Length: 129, dtype: object"
+      ]
+     },
+     "execution_count": 71,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mTrain.dtypes"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 72,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "marker\n",
+       "0    3000\n",
+       "1    3000\n",
+       "Name: count, dtype: int64"
+      ]
+     },
+     "execution_count": 72,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mTrain['marker'].value_counts()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 73,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>R1-PA1:VH</th>\n",
+       "      <th>R1-PM1:V</th>\n",
+       "      <th>R1-PA2:VH</th>\n",
+       "      <th>R1-PM2:V</th>\n",
+       "      <th>R1-PA3:VH</th>\n",
+       "      <th>R1-PM3:V</th>\n",
+       "      <th>R1-PA4:IH</th>\n",
+       "      <th>R1-PM4:I</th>\n",
+       "      <th>R1-PA5:IH</th>\n",
+       "      <th>R1-PM5:I</th>\n",
+       "      <th>...</th>\n",
+       "      <th>control_panel_log4</th>\n",
+       "      <th>relay1_log</th>\n",
+       "      <th>relay2_log</th>\n",
+       "      <th>relay3_log</th>\n",
+       "      <th>relay4_log</th>\n",
+       "      <th>snort_log1</th>\n",
+       "      <th>snort_log2</th>\n",
+       "      <th>snort_log3</th>\n",
+       "      <th>snort_log4</th>\n",
+       "      <th>marker</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>70.399324</td>\n",
+       "      <td>127673.0908</td>\n",
+       "      <td>-49.572308</td>\n",
+       "      <td>127648.0176</td>\n",
+       "      <td>-169.578319</td>\n",
+       "      <td>127723.2374</td>\n",
+       "      <td>65.689611</td>\n",
+       "      <td>605.91099</td>\n",
+       "      <td>-57.003571</td>\n",
+       "      <td>626.78553</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>73.688102</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-46.300719</td>\n",
+       "      <td>130255.6377</td>\n",
+       "      <td>-166.278082</td>\n",
+       "      <td>130355.9307</td>\n",
+       "      <td>71.831719</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.947407</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>73.733939</td>\n",
+       "      <td>130305.7842</td>\n",
+       "      <td>-46.254883</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-166.232245</td>\n",
+       "      <td>130381.0040</td>\n",
+       "      <td>71.808800</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.913030</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>74.083443</td>\n",
+       "      <td>130581.5902</td>\n",
+       "      <td>-45.899649</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>-165.882741</td>\n",
+       "      <td>130656.8100</td>\n",
+       "      <td>72.152575</td>\n",
+       "      <td>482.86107</td>\n",
+       "      <td>-50.437475</td>\n",
+       "      <td>499.15786</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>74.553268</td>\n",
+       "      <td>131083.0556</td>\n",
+       "      <td>-45.424094</td>\n",
+       "      <td>131057.9823</td>\n",
+       "      <td>-165.424375</td>\n",
+       "      <td>131158.2754</td>\n",
+       "      <td>72.118198</td>\n",
+       "      <td>484.50906</td>\n",
+       "      <td>-50.013486</td>\n",
+       "      <td>497.69298</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5995</th>\n",
+       "      <td>116.889120</td>\n",
+       "      <td>131860.3269</td>\n",
+       "      <td>-3.076783</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-123.094253</td>\n",
+       "      <td>131910.4735</td>\n",
+       "      <td>114.780635</td>\n",
+       "      <td>376.10794</td>\n",
+       "      <td>-5.254023</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5996</th>\n",
+       "      <td>116.849013</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-3.116890</td>\n",
+       "      <td>131760.0339</td>\n",
+       "      <td>-123.128630</td>\n",
+       "      <td>131885.4002</td>\n",
+       "      <td>114.769176</td>\n",
+       "      <td>376.29105</td>\n",
+       "      <td>-5.322778</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5997</th>\n",
+       "      <td>116.384917</td>\n",
+       "      <td>131734.9606</td>\n",
+       "      <td>-3.586716</td>\n",
+       "      <td>131684.8140</td>\n",
+       "      <td>-123.586996</td>\n",
+       "      <td>131785.1071</td>\n",
+       "      <td>114.299351</td>\n",
+       "      <td>376.47416</td>\n",
+       "      <td>-5.849899</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5998</th>\n",
+       "      <td>111.125164</td>\n",
+       "      <td>130506.3704</td>\n",
+       "      <td>-8.846468</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-128.858208</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.667553</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.464508</td>\n",
+       "      <td>477.73399</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5999</th>\n",
+       "      <td>110.878793</td>\n",
+       "      <td>130481.2971</td>\n",
+       "      <td>-9.092840</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-129.104580</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.392533</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.750987</td>\n",
+       "      <td>477.91710</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>6000 rows × 129 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       R1-PA1:VH     R1-PM1:V  R1-PA2:VH     R1-PM2:V   R1-PA3:VH   \n",
+       "0      70.399324  127673.0908 -49.572308  127648.0176 -169.578319  \\\n",
+       "1      73.688102  130280.7109 -46.300719  130255.6377 -166.278082   \n",
+       "2      73.733939  130305.7842 -46.254883  130280.7109 -166.232245   \n",
+       "3      74.083443  130581.5902 -45.899649  130556.5169 -165.882741   \n",
+       "4      74.553268  131083.0556 -45.424094  131057.9823 -165.424375   \n",
+       "...          ...          ...        ...          ...         ...   \n",
+       "5995  116.889120  131860.3269  -3.076783  131810.1804 -123.094253   \n",
+       "5996  116.849013  131810.1804  -3.116890  131760.0339 -123.128630   \n",
+       "5997  116.384917  131734.9606  -3.586716  131684.8140 -123.586996   \n",
+       "5998  111.125164  130506.3704  -8.846468  130456.2238 -128.858208   \n",
+       "5999  110.878793  130481.2971  -9.092840  130456.2238 -129.104580   \n",
+       "\n",
+       "         R1-PM3:V   R1-PA4:IH   R1-PM4:I  R1-PA5:IH   R1-PM5:I  ...   \n",
+       "0     127723.2374   65.689611  605.91099 -57.003571  626.78553  ...  \\\n",
+       "1     130355.9307   71.831719  483.59351 -50.947407  500.98896  ...   \n",
+       "2     130381.0040   71.808800  483.59351 -50.913030  500.98896  ...   \n",
+       "3     130656.8100   72.152575  482.86107 -50.437475  499.15786  ...   \n",
+       "4     131158.2754   72.118198  484.50906 -50.013486  497.69298  ...   \n",
+       "...           ...         ...        ...        ...        ...  ...   \n",
+       "5995  131910.4735  114.780635  376.10794  -5.254023  374.82617  ...   \n",
+       "5996  131885.4002  114.769176  376.29105  -5.322778  374.82617  ...   \n",
+       "5997  131785.1071  114.299351  376.47416  -5.849899  374.82617  ...   \n",
+       "5998  130556.5169  106.667553  478.83265 -13.464508  477.73399  ...   \n",
+       "5999  130556.5169  106.392533  478.83265 -13.750987  477.91710  ...   \n",
+       "\n",
+       "      control_panel_log4  relay1_log  relay2_log  relay3_log  relay4_log   \n",
+       "0                      0           0           0           0           0  \\\n",
+       "1                      0           0           0           0           0   \n",
+       "2                      0           0           0           0           0   \n",
+       "3                      0           0           0           0           0   \n",
+       "4                      0           0           0           0           0   \n",
+       "...                  ...         ...         ...         ...         ...   \n",
+       "5995                   0           0           0           0           0   \n",
+       "5996                   0           0           0           0           0   \n",
+       "5997                   0           0           0           0           0   \n",
+       "5998                   0           0           0           0           0   \n",
+       "5999                   0           0           0           0           0   \n",
+       "\n",
+       "      snort_log1  snort_log2  snort_log3  snort_log4  marker  \n",
+       "0              0           0           0           0       0  \n",
+       "1              0           0           0           0       0  \n",
+       "2              0           0           0           0       0  \n",
+       "3              0           0           0           0       0  \n",
+       "4              0           0           0           0       0  \n",
+       "...          ...         ...         ...         ...     ...  \n",
+       "5995           0           0           0           0       0  \n",
+       "5996           0           0           0           0       0  \n",
+       "5997           0           0           0           0       0  \n",
+       "5998           0           0           0           0       0  \n",
+       "5999           0           0           0           0       0  \n",
+       "\n",
+       "[6000 rows x 129 columns]"
+      ]
+     },
+     "execution_count": 73,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mTrain"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 74,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>R1-PA1:VH</th>\n",
+       "      <th>R1-PM1:V</th>\n",
+       "      <th>R1-PA2:VH</th>\n",
+       "      <th>R1-PM2:V</th>\n",
+       "      <th>R1-PA3:VH</th>\n",
+       "      <th>R1-PM3:V</th>\n",
+       "      <th>R1-PA4:IH</th>\n",
+       "      <th>R1-PM4:I</th>\n",
+       "      <th>R1-PA5:IH</th>\n",
+       "      <th>R1-PM5:I</th>\n",
+       "      <th>...</th>\n",
+       "      <th>control_panel_log4</th>\n",
+       "      <th>relay1_log</th>\n",
+       "      <th>relay2_log</th>\n",
+       "      <th>relay3_log</th>\n",
+       "      <th>relay4_log</th>\n",
+       "      <th>snort_log1</th>\n",
+       "      <th>snort_log2</th>\n",
+       "      <th>snort_log3</th>\n",
+       "      <th>snort_log4</th>\n",
+       "      <th>marker</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>70.399324</td>\n",
+       "      <td>127673.0908</td>\n",
+       "      <td>-49.572308</td>\n",
+       "      <td>127648.0176</td>\n",
+       "      <td>-169.578319</td>\n",
+       "      <td>127723.2374</td>\n",
+       "      <td>65.689611</td>\n",
+       "      <td>605.91099</td>\n",
+       "      <td>-57.003571</td>\n",
+       "      <td>626.78553</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>73.688102</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-46.300719</td>\n",
+       "      <td>130255.6377</td>\n",
+       "      <td>-166.278082</td>\n",
+       "      <td>130355.9307</td>\n",
+       "      <td>71.831719</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.947407</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>73.733939</td>\n",
+       "      <td>130305.7842</td>\n",
+       "      <td>-46.254883</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-166.232245</td>\n",
+       "      <td>130381.0040</td>\n",
+       "      <td>71.808800</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.913030</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>74.083443</td>\n",
+       "      <td>130581.5902</td>\n",
+       "      <td>-45.899649</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>-165.882741</td>\n",
+       "      <td>130656.8100</td>\n",
+       "      <td>72.152575</td>\n",
+       "      <td>482.86107</td>\n",
+       "      <td>-50.437475</td>\n",
+       "      <td>499.15786</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>74.553268</td>\n",
+       "      <td>131083.0556</td>\n",
+       "      <td>-45.424094</td>\n",
+       "      <td>131057.9823</td>\n",
+       "      <td>-165.424375</td>\n",
+       "      <td>131158.2754</td>\n",
+       "      <td>72.118198</td>\n",
+       "      <td>484.50906</td>\n",
+       "      <td>-50.013486</td>\n",
+       "      <td>497.69298</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5995</th>\n",
+       "      <td>116.889120</td>\n",
+       "      <td>131860.3269</td>\n",
+       "      <td>-3.076783</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-123.094253</td>\n",
+       "      <td>131910.4735</td>\n",
+       "      <td>114.780635</td>\n",
+       "      <td>376.10794</td>\n",
+       "      <td>-5.254023</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5996</th>\n",
+       "      <td>116.849013</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-3.116890</td>\n",
+       "      <td>131760.0339</td>\n",
+       "      <td>-123.128630</td>\n",
+       "      <td>131885.4002</td>\n",
+       "      <td>114.769176</td>\n",
+       "      <td>376.29105</td>\n",
+       "      <td>-5.322778</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5997</th>\n",
+       "      <td>116.384917</td>\n",
+       "      <td>131734.9606</td>\n",
+       "      <td>-3.586716</td>\n",
+       "      <td>131684.8140</td>\n",
+       "      <td>-123.586996</td>\n",
+       "      <td>131785.1071</td>\n",
+       "      <td>114.299351</td>\n",
+       "      <td>376.47416</td>\n",
+       "      <td>-5.849899</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5998</th>\n",
+       "      <td>111.125164</td>\n",
+       "      <td>130506.3704</td>\n",
+       "      <td>-8.846468</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-128.858208</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.667553</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.464508</td>\n",
+       "      <td>477.73399</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5999</th>\n",
+       "      <td>110.878793</td>\n",
+       "      <td>130481.2971</td>\n",
+       "      <td>-9.092840</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-129.104580</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.392533</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.750987</td>\n",
+       "      <td>477.91710</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>6000 rows × 129 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       R1-PA1:VH     R1-PM1:V  R1-PA2:VH     R1-PM2:V   R1-PA3:VH   \n",
+       "0      70.399324  127673.0908 -49.572308  127648.0176 -169.578319  \\\n",
+       "1      73.688102  130280.7109 -46.300719  130255.6377 -166.278082   \n",
+       "2      73.733939  130305.7842 -46.254883  130280.7109 -166.232245   \n",
+       "3      74.083443  130581.5902 -45.899649  130556.5169 -165.882741   \n",
+       "4      74.553268  131083.0556 -45.424094  131057.9823 -165.424375   \n",
+       "...          ...          ...        ...          ...         ...   \n",
+       "5995  116.889120  131860.3269  -3.076783  131810.1804 -123.094253   \n",
+       "5996  116.849013  131810.1804  -3.116890  131760.0339 -123.128630   \n",
+       "5997  116.384917  131734.9606  -3.586716  131684.8140 -123.586996   \n",
+       "5998  111.125164  130506.3704  -8.846468  130456.2238 -128.858208   \n",
+       "5999  110.878793  130481.2971  -9.092840  130456.2238 -129.104580   \n",
+       "\n",
+       "         R1-PM3:V   R1-PA4:IH   R1-PM4:I  R1-PA5:IH   R1-PM5:I  ...   \n",
+       "0     127723.2374   65.689611  605.91099 -57.003571  626.78553  ...  \\\n",
+       "1     130355.9307   71.831719  483.59351 -50.947407  500.98896  ...   \n",
+       "2     130381.0040   71.808800  483.59351 -50.913030  500.98896  ...   \n",
+       "3     130656.8100   72.152575  482.86107 -50.437475  499.15786  ...   \n",
+       "4     131158.2754   72.118198  484.50906 -50.013486  497.69298  ...   \n",
+       "...           ...         ...        ...        ...        ...  ...   \n",
+       "5995  131910.4735  114.780635  376.10794  -5.254023  374.82617  ...   \n",
+       "5996  131885.4002  114.769176  376.29105  -5.322778  374.82617  ...   \n",
+       "5997  131785.1071  114.299351  376.47416  -5.849899  374.82617  ...   \n",
+       "5998  130556.5169  106.667553  478.83265 -13.464508  477.73399  ...   \n",
+       "5999  130556.5169  106.392533  478.83265 -13.750987  477.91710  ...   \n",
+       "\n",
+       "      control_panel_log4  relay1_log  relay2_log  relay3_log  relay4_log   \n",
+       "0                      0           0           0           0           0  \\\n",
+       "1                      0           0           0           0           0   \n",
+       "2                      0           0           0           0           0   \n",
+       "3                      0           0           0           0           0   \n",
+       "4                      0           0           0           0           0   \n",
+       "...                  ...         ...         ...         ...         ...   \n",
+       "5995                   0           0           0           0           0   \n",
+       "5996                   0           0           0           0           0   \n",
+       "5997                   0           0           0           0           0   \n",
+       "5998                   0           0           0           0           0   \n",
+       "5999                   0           0           0           0           0   \n",
+       "\n",
+       "      snort_log1  snort_log2  snort_log3  snort_log4  marker  \n",
+       "0              0           0           0           0       0  \n",
+       "1              0           0           0           0       0  \n",
+       "2              0           0           0           0       0  \n",
+       "3              0           0           0           0       0  \n",
+       "4              0           0           0           0       0  \n",
+       "...          ...         ...         ...         ...     ...  \n",
+       "5995           0           0           0           0       0  \n",
+       "5996           0           0           0           0       0  \n",
+       "5997           0           0           0           0       0  \n",
+       "5998           0           0           0           0       0  \n",
+       "5999           0           0           0           0       0  \n",
+       "\n",
+       "[6000 rows x 129 columns]"
+      ]
+     },
+     "execution_count": 74,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "mTrain.isnull().sum()\n",
+    "mTrain = mTrain.dropna()\n",
+    "mTrain\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 75,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>R1-PA1:VH</th>\n",
+       "      <th>R1-PM1:V</th>\n",
+       "      <th>R1-PA2:VH</th>\n",
+       "      <th>R1-PM2:V</th>\n",
+       "      <th>R1-PA3:VH</th>\n",
+       "      <th>R1-PM3:V</th>\n",
+       "      <th>R1-PA4:IH</th>\n",
+       "      <th>R1-PM4:I</th>\n",
+       "      <th>R1-PA5:IH</th>\n",
+       "      <th>R1-PM5:I</th>\n",
+       "      <th>...</th>\n",
+       "      <th>control_panel_log3</th>\n",
+       "      <th>control_panel_log4</th>\n",
+       "      <th>relay1_log</th>\n",
+       "      <th>relay2_log</th>\n",
+       "      <th>relay3_log</th>\n",
+       "      <th>relay4_log</th>\n",
+       "      <th>snort_log1</th>\n",
+       "      <th>snort_log2</th>\n",
+       "      <th>snort_log3</th>\n",
+       "      <th>snort_log4</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>70.399324</td>\n",
+       "      <td>127673.0908</td>\n",
+       "      <td>-49.572308</td>\n",
+       "      <td>127648.0176</td>\n",
+       "      <td>-169.578319</td>\n",
+       "      <td>127723.2374</td>\n",
+       "      <td>65.689611</td>\n",
+       "      <td>605.91099</td>\n",
+       "      <td>-57.003571</td>\n",
+       "      <td>626.78553</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>73.688102</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-46.300719</td>\n",
+       "      <td>130255.6377</td>\n",
+       "      <td>-166.278082</td>\n",
+       "      <td>130355.9307</td>\n",
+       "      <td>71.831719</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.947407</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>73.733939</td>\n",
+       "      <td>130305.7842</td>\n",
+       "      <td>-46.254883</td>\n",
+       "      <td>130280.7109</td>\n",
+       "      <td>-166.232245</td>\n",
+       "      <td>130381.0040</td>\n",
+       "      <td>71.808800</td>\n",
+       "      <td>483.59351</td>\n",
+       "      <td>-50.913030</td>\n",
+       "      <td>500.98896</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>3</th>\n",
+       "      <td>74.083443</td>\n",
+       "      <td>130581.5902</td>\n",
+       "      <td>-45.899649</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>-165.882741</td>\n",
+       "      <td>130656.8100</td>\n",
+       "      <td>72.152575</td>\n",
+       "      <td>482.86107</td>\n",
+       "      <td>-50.437475</td>\n",
+       "      <td>499.15786</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>4</th>\n",
+       "      <td>74.553268</td>\n",
+       "      <td>131083.0556</td>\n",
+       "      <td>-45.424094</td>\n",
+       "      <td>131057.9823</td>\n",
+       "      <td>-165.424375</td>\n",
+       "      <td>131158.2754</td>\n",
+       "      <td>72.118198</td>\n",
+       "      <td>484.50906</td>\n",
+       "      <td>-50.013486</td>\n",
+       "      <td>497.69298</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>...</th>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "      <td>...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5995</th>\n",
+       "      <td>116.889120</td>\n",
+       "      <td>131860.3269</td>\n",
+       "      <td>-3.076783</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-123.094253</td>\n",
+       "      <td>131910.4735</td>\n",
+       "      <td>114.780635</td>\n",
+       "      <td>376.10794</td>\n",
+       "      <td>-5.254023</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5996</th>\n",
+       "      <td>116.849013</td>\n",
+       "      <td>131810.1804</td>\n",
+       "      <td>-3.116890</td>\n",
+       "      <td>131760.0339</td>\n",
+       "      <td>-123.128630</td>\n",
+       "      <td>131885.4002</td>\n",
+       "      <td>114.769176</td>\n",
+       "      <td>376.29105</td>\n",
+       "      <td>-5.322778</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5997</th>\n",
+       "      <td>116.384917</td>\n",
+       "      <td>131734.9606</td>\n",
+       "      <td>-3.586716</td>\n",
+       "      <td>131684.8140</td>\n",
+       "      <td>-123.586996</td>\n",
+       "      <td>131785.1071</td>\n",
+       "      <td>114.299351</td>\n",
+       "      <td>376.47416</td>\n",
+       "      <td>-5.849899</td>\n",
+       "      <td>374.82617</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5998</th>\n",
+       "      <td>111.125164</td>\n",
+       "      <td>130506.3704</td>\n",
+       "      <td>-8.846468</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-128.858208</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.667553</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.464508</td>\n",
+       "      <td>477.73399</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>5999</th>\n",
+       "      <td>110.878793</td>\n",
+       "      <td>130481.2971</td>\n",
+       "      <td>-9.092840</td>\n",
+       "      <td>130456.2238</td>\n",
+       "      <td>-129.104580</td>\n",
+       "      <td>130556.5169</td>\n",
+       "      <td>106.392533</td>\n",
+       "      <td>478.83265</td>\n",
+       "      <td>-13.750987</td>\n",
+       "      <td>477.91710</td>\n",
+       "      <td>...</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "<p>6000 rows × 128 columns</p>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "       R1-PA1:VH     R1-PM1:V  R1-PA2:VH     R1-PM2:V   R1-PA3:VH   \n",
+       "0      70.399324  127673.0908 -49.572308  127648.0176 -169.578319  \\\n",
+       "1      73.688102  130280.7109 -46.300719  130255.6377 -166.278082   \n",
+       "2      73.733939  130305.7842 -46.254883  130280.7109 -166.232245   \n",
+       "3      74.083443  130581.5902 -45.899649  130556.5169 -165.882741   \n",
+       "4      74.553268  131083.0556 -45.424094  131057.9823 -165.424375   \n",
+       "...          ...          ...        ...          ...         ...   \n",
+       "5995  116.889120  131860.3269  -3.076783  131810.1804 -123.094253   \n",
+       "5996  116.849013  131810.1804  -3.116890  131760.0339 -123.128630   \n",
+       "5997  116.384917  131734.9606  -3.586716  131684.8140 -123.586996   \n",
+       "5998  111.125164  130506.3704  -8.846468  130456.2238 -128.858208   \n",
+       "5999  110.878793  130481.2971  -9.092840  130456.2238 -129.104580   \n",
+       "\n",
+       "         R1-PM3:V   R1-PA4:IH   R1-PM4:I  R1-PA5:IH   R1-PM5:I  ...   \n",
+       "0     127723.2374   65.689611  605.91099 -57.003571  626.78553  ...  \\\n",
+       "1     130355.9307   71.831719  483.59351 -50.947407  500.98896  ...   \n",
+       "2     130381.0040   71.808800  483.59351 -50.913030  500.98896  ...   \n",
+       "3     130656.8100   72.152575  482.86107 -50.437475  499.15786  ...   \n",
+       "4     131158.2754   72.118198  484.50906 -50.013486  497.69298  ...   \n",
+       "...           ...         ...        ...        ...        ...  ...   \n",
+       "5995  131910.4735  114.780635  376.10794  -5.254023  374.82617  ...   \n",
+       "5996  131885.4002  114.769176  376.29105  -5.322778  374.82617  ...   \n",
+       "5997  131785.1071  114.299351  376.47416  -5.849899  374.82617  ...   \n",
+       "5998  130556.5169  106.667553  478.83265 -13.464508  477.73399  ...   \n",
+       "5999  130556.5169  106.392533  478.83265 -13.750987  477.91710  ...   \n",
+       "\n",
+       "      control_panel_log3  control_panel_log4  relay1_log  relay2_log   \n",
+       "0                      0                   0           0           0  \\\n",
+       "1                      0                   0           0           0   \n",
+       "2                      0                   0           0           0   \n",
+       "3                      0                   0           0           0   \n",
+       "4                      0                   0           0           0   \n",
+       "...                  ...                 ...         ...         ...   \n",
+       "5995                   0                   0           0           0   \n",
+       "5996                   0                   0           0           0   \n",
+       "5997                   0                   0           0           0   \n",
+       "5998                   0                   0           0           0   \n",
+       "5999                   0                   0           0           0   \n",
+       "\n",
+       "      relay3_log  relay4_log  snort_log1  snort_log2  snort_log3  snort_log4  \n",
+       "0              0           0           0           0           0           0  \n",
+       "1              0           0           0           0           0           0  \n",
+       "2              0           0           0           0           0           0  \n",
+       "3              0           0           0           0           0           0  \n",
+       "4              0           0           0           0           0           0  \n",
+       "...          ...         ...         ...         ...         ...         ...  \n",
+       "5995           0           0           0           0           0           0  \n",
+       "5996           0           0           0           0           0           0  \n",
+       "5997           0           0           0           0           0           0  \n",
+       "5998           0           0           0           0           0           0  \n",
+       "5999           0           0           0           0           0           0  \n",
+       "\n",
+       "[6000 rows x 128 columns]"
+      ]
+     },
+     "execution_count": 75,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "X = mTrain.drop(columns = 'marker')\n",
+    "X"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 76,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "y = mTrain['marker']"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Stratified Train-Test Split\n",
+    "The train-test split is stratified to ensure that the train and test samples from each class are almost the same percentage. This may be desirable for imbalanced number of samples as in this case. \n",
+    "\n",
+    "In such imbalanced datasets, the stratified K fold cross validation is used instead of the K-fold cross validation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 77,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sklearn.model_selection import train_test_split\n",
+    "X_train, X_test, y_train, y_test =  train_test_split(X,y, random_state=1,  shuffle = True, test_size=0.2, stratify=y)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 78,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "marker\n",
+       "1    2400\n",
+       "0    2400\n",
+       "Name: count, dtype: int64"
+      ]
+     },
+     "execution_count": 78,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "y_train.value_counts()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 79,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "marker\n",
+       "1    600\n",
+       "0    600\n",
+       "Name: count, dtype: int64"
+      ]
+     },
+     "execution_count": 79,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "y_test.value_counts()"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": []
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1>3. Choosing a Model: KNN , training, and evaluation</h1>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 80,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from sklearn.neighbors import KNeighborsClassifier\n",
+    "from sklearn.metrics import accuracy_score, precision_score, recall_score"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 81,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<style>#sk-container-id-4 {color: black;background-color: white;}#sk-container-id-4 pre{padding: 0;}#sk-container-id-4 div.sk-toggleable {background-color: white;}#sk-container-id-4 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-4 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-4 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-4 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-4 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-4 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-4 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-4 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-4 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-4 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-4 div.sk-item {position: relative;z-index: 1;}#sk-container-id-4 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-4 div.sk-item::before, #sk-container-id-4 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-4 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-4 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-4 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-4 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-4 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-4 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-4 div.sk-label-container {text-align: center;}#sk-container-id-4 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-4 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier(n_neighbors=18)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier(n_neighbors=18)</pre></div></div></div></div></div>"
+      ],
+      "text/plain": [
+       "KNeighborsClassifier(n_neighbors=18)"
+      ]
+     },
+     "execution_count": 81,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "knn = KNeighborsClassifier(n_neighbors=18)\n",
+    "knn.fit(X_train, y_train)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 82,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([1, 0, 0, ..., 0, 0, 0], dtype=int64)"
+      ]
+     },
+     "execution_count": 82,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "firstknn_pred = knn.predict(X_test)\n",
+    "firstknn_pred"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 83,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Accuracy: 0.845\n",
+      "Precision: 0.9620535714285714\n",
+      "Recall: 0.7183333333333334\n"
+     ]
+    }
+   ],
+   "source": [
+    "accuracy = accuracy_score(y_test, firstknn_pred)\n",
+    "precision = precision_score(y_test, firstknn_pred)\n",
+    "recall = recall_score(y_test, firstknn_pred)\n",
+    "\n",
+    "print(\"Accuracy:\", accuracy)\n",
+    "print(\"Precision:\", precision)\n",
+    "print(\"Recall:\", recall)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 84,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "                       precision    recall  f1-score   support\n",
+      "\n",
+      "               normal       0.78      0.97      0.86       600\n",
+      "data injection attack       0.96      0.72      0.82       600\n",
+      "\n",
+      "             accuracy                           0.84      1200\n",
+      "            macro avg       0.87      0.84      0.84      1200\n",
+      "         weighted avg       0.87      0.84      0.84      1200\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.metrics import confusion_matrix\n",
+    "from sklearn.metrics import classification_report\n",
+    "from sklearn.metrics import ConfusionMatrixDisplay\n",
+    "confusion_matrix(y_test, firstknn_pred)\n",
+    "labels = ['normal', 'data injection attack']\n",
+    "print(classification_report(y_test, firstknn_pred, target_names = labels))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 85,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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RFFRUbrzzjt1+PBhSaeHDzt27ChJqlq1qiwWi+69915J0qpVq9SuXTuFhYWpWrVq6tatm/bu3XveeM4cGq5du7aeeeYZ3X///QoJCVFsbKxeeuklp3POrOAdOHBAt912m8LCwhQeHq6UlBTt37/f6ZxXX31VjRs3lp+fn2rUqKGBAwc6ridJt9xyiywWi+PzmUPDdrtdEyZMUK1ateTn56fmzZtr1apVjuMlw6rLli1Tx44dFRgYqGbNmiktLe289z9jxgwlJiYqKChIMTEx6t+/v/Ly8iSdrrzed999OnHihCwWiywWi8aNG6cOHTrop59+0tChQx37JenIkSPq1auXatasqcDAQCUmJuqNN95wup7dbteUKVNUv359+fn5KTY2Vk8//fQ5Y7PZbLr//vvVqFEjZWVlnXW8oKBAubm5ThvKV9XgPxToX6S7OqVry/e1NPSFLlq/o46euf8zNa93UJK0c3+E8gurqP9NW+TnUyx/3yINvPlLVfE2VM36ewXfASAVfl4g2w/F8v9P6XNWC5bl68T1R5R7/VEVf1mooFlWWXwspbZH5cLQcAUaMWKE1q1bpw8++ECfffaZ1q5dq2+++capTVFRkSZOnKjt27dr+fLl2r9/vyPZi4mJ0XvvvSdJyszMVHZ2tmbPni3pdJI5bNgwbd26VatXr5aXl5duueUW2e2urfGePn26WrVqpW+//Vb9+/dXv379lJmZec62RUVFSk5OVkhIiDZs2KBNmzYpODhYN9xwgwoLCyVJL7zwggYMGKCHHnpIO3bs0IoVK1S/fn1J0tdffy1JWrBggbKzsx2fzzR79mxNnz5d06ZN0//+9z8lJyfrpptu0u7du53aPfHEExo+fLjS09N1+eWXq1evXiouLi71Xr28vDRnzhzt3LlTixYt0po1azRy5EhJUps2bTRr1ixZrVZlZ2crOztbw4cP17Jly1SrVi1NmDDBsV+S8vPz1bJlS3300Uf67rvv9NBDD+nuu+/WV1995bje448/rsmTJ2v06NHatWuXli5dqsjIyLPiKigo0L///W+lp6drw4YNio2NPavNpEmTFBoa6thiYmJKvU94htf//c+34bs4vbW2qXb/cple/7y5Nu+M1c1tMyRJx08FaPSC69W2yU/6fMqr+nTyQgUHFOj7A5fJMPhBioplP2RT/uxTChwTLItf6d+Pvp19FfxqmIL+a5VXjLd+H31SRkEl/skPZ4aHtkqqwlYN5+Xlaf78+Xr99dd13XXXSZIWLVqkWrVqObW7//77HX+uW7eu5syZo9atWysvL0/BwcEKDw+XJEVERDjNX+vZs6dTP6+++qqqV6+uXbt2qUmTJmWOs0uXLurfv78kadSoUZo5c6a++OILNWzY8Ky2b731lux2u1555RVHZWzBggUKCwvT2rVr1blzZz311FN69NFHNXjwYMd5rVu3liRVr15dkhQWFqaoqKhSY5o2bZpGjRqlO+64Q5L07LPP6osvvtCsWbM0d+5cR7vhw4era9eukqTx48ercePG2rNnjxo1anTOfs+shj711FN6+OGH9fzzz8vX11ehoaGyWCxnxebt7e2o2JaoWbOmhg8f7vg8aNAgffrpp3r77bf1r3/9SydPntTs2bP13//+V3369JEk1atXT+3atXPqOy8vT127dlVBQYG++OILhYaGnjP2xx9/XMOGDXN8zs3NJRksZ8dP+avYZtH+nKpO+/cfquo07PtVZi3dNrGXQoPyZbNblPeHn1ZMfE2rj9S72CEDTmyZNhnHDOX1PfGXnZJte7EKl+XLuiZcFm+LLMFe8g6WFOMt78ZVlHvjURWtL5Tv9eU7LQi4GCosEdy7d68KCwt15ZVXOvaFh4eflWBt27ZN48aN0/bt23Xs2DFHRS8rK0sJCQml9r97926NGTNGW7Zs0W+//eZ0niuJYNOmTR1/LkmCSoamz7R9+3bt2bPnrHmG+fn52rt3rw4fPqyDBw86Et8LkZubq4MHD6ptW+dVnG3bttX27dtLjb1GjRqSpMOHD5eaCH7++eeaNGmSvv/+e+Xm5qq4uFj5+fn6/fffFRjo2qM+bDabnnnmGb399tv65ZdfVFhYqIKCAkc/GRkZKigo+NuvRa9evVSrVi2tWbNGAQEBpbbz8/Mr97macFZs81ZGVoRiI4477Y+JOKGc/3t0zF+dOOUvSWrR4BdVDf5DG7+LuxhhAqWq0spHwYudf7n845k8ecV5y693gCze56gSllR/iipxCQhOzP6u4Uv6OYKnTp1ScnKykpOTtWTJElWvXl1ZWVlKTk52DLWWpnv37oqLi9PLL7+s6Oho2e12NWnS5G/PO5OPj4/TZ4vFUurwcl5enlq2bKklS5acdax69ery8rq4I/F/jb2kQlla7Pv371e3bt3Ur18/Pf300woPD9fGjRvVt29fFRYWupwITp06VbNnz9asWbMc8w6HDBni+PqfL6n7qy5duuj1119XWlqarr32WpdigPsCfItUq/qf1ZLoarlqUPM35f7ur0PHgrV0TVNN6LNa6Xtr6Jvd0boq/oDaNv5Jg/7b3XFOlysz9VNOmI7nBahxnUMa0mOz3lqXqKzDYRVwR8CfLIEWedc948egv0UWq5e861aR/RebCtcUyqe1jyxhFtl/tavg9T9k8bOoStKfC0tsP9ukPwwZR+1SgSHb7tNTcLxqezOXsDLwxKrfSrxquMISwXr16snHx0dbtmxxzPk6duyYfvjhB7Vv316S9P333+vIkSOaPHmyY5hv69atTv34+p7+x2iz2Rz7jhw5oszMTL388su6+uqrJUkbN24s93tq0aKF3nrrLUVERMhqtZ6zTe3atbV69WrHIpcz+fj4ON3LmaxWq6Kjo7Vp0ybH10mSNm3apH/9618XHPu2bdtkt9s1ffp0R8L69ttvO7Xx9fU9Z2zn2r9p0yalpKTorrvuknQ6Af3hhx8cVdwGDRooICBAq1ev1gMPPFBqXP369VOTJk1000036aOPPnK6Z5S/RrG/6r+DVjo+P3LLl5Kkj7dcrqeXdtD6/9XR1Lfb6e7r0zW0x2ZlHQ7TE69er//9+Oc0gdiI43q421eyBhYo+2iIFn12hd5am3jR7wVwmZ9Ftu1FKnz7DxknDVnCvVSlWRUFzQuVV9U/f7H/Y3KebOl/zr/Ou+/0L08h74TJUoNHyuDSVmGJYHBwsPr27asRI0aoWrVqioiI0BNPPOFUNYuNjZWvr6+ee+45Pfzww/ruu+/Oes5fXFycLBaLVq5cqS5duiggIEBVq1ZVtWrV9NJLL6lGjRrKysrSY489Vu731Lt3b02dOlUpKSmOVb0//fSTli1bppEjR6pWrVoaN26cHn74YUVEROjGG2/UyZMntWnTJg0aNEjSn4li27Zt5efnp6pVq551nREjRmjs2LGqV6+emjdvrgULFig9Pf2clciyql+/voqKivTcc8+pe/fu2rRpk+bNm+fUpnbt2srLy9Pq1avVrFkzBQYGKjAwULVr19b69et1xx13yM/PT5dddpkaNGigd999V5s3b1bVqlU1Y8YMHTp0yJEI+vv7a9SoURo5cqR8fX3Vtm1b/frrr9q5c6f69u3rdN1BgwbJZrOpW7du+uSTT86aR4jy8+2eaLUd/NB523y0pZE+2nLu6QaSNO/DKzXvwytLPQ5cSoL/++dQsddlXgqadu5f6ks7B5WP2YeGK3TV8NSpU3X11Vere/fu6tSpk9q1a6eWLVs6jlevXl0LFy7UO++8o4SEBE2ePFnTpk1z6qNmzZoaP368HnvsMUVGRmrgwIHy8vLSm2++qW3btqlJkyYaOnSopk6dWu73ExgYqPXr1ys2NlY9evRQfHy8+vbtq/z8fEeFsE+fPpo1a5aef/55NW7cWN26dXNa7Tt9+nSlpqYqJiZGV1xxxTmv88gjj2jYsGF69NFHlZiYqFWrVmnFihVq0KDBBcferFkzzZgxQ88++6yaNGmiJUuWaNKkSU5t2rRpo4cffli33367qlevrilTpkiSJkyYoP3796tevXqOBS9PPvmkWrRooeTkZHXo0EFRUVG6+eabnfobPXq0Hn30UY0ZM0bx8fG6/fbbS51/OWTIEI0fP15dunTR5s2bL/g+AQBwYvJVwxbDqMQD2xWsoKBA/v7+Sk1NVadOnSo6HPxFbm6uQkND1eqWiari41/R4QDloubgPRUdAlBuik4VakXnBTpx4kSp063cUfJzIumGCW7/nCguylfaqjHlFmt5uqQXi1zKcnNztWzZMnl5eZW6ChcAAFzazD40TCJ4gcaOHaulS5fq2WefPevZhwAAoJKwG6c3d/uopEgEL9DMmTM1c+bMig4DAAC4wxNz/CpvHlixi0UAAABQcagIAgAA07LIA3MEPRJJxSARBAAA5mXyN4swNAwAAGBSVAQBAIBp8fgYAAAAs2LVMAAAAMyIiiAAADAti2HI4uZiD3fPr0gkggAAwLzs/7e520clxdAwAACASVERBAAApsXQMAAAgFmZfNUwiSAAADAv3iwCAAAAM6IiCAAATIs3iwAAAJgVQ8MAAAAwIyqCAADAtCz205u7fVRWJIIAAMC8GBoGAACAGVERBAAA5sUDpQEAAMzJ7K+YY2gYAADApKgIAgAA82KxCAAAgEkZkuxubi7mgevXr1f37t0VHR0ti8Wi5cuXO4dkGBozZoxq1KihgIAAderUSbt373Zqc/ToUfXu3VtWq1VhYWHq27ev8vLyXAtEJIIAAMDESuYIuru54tSpU2rWrJnmzp17zuNTpkzRnDlzNG/ePG3ZskVBQUFKTk5Wfn6+o03v3r21c+dOpaamauXKlVq/fr0eeughl++foWEAAICL6MYbb9SNN954zmOGYWjWrFl68sknlZKSIklavHixIiMjtXz5ct1xxx3KyMjQqlWr9PXXX6tVq1aSpOeee05dunTRtGnTFB0dXeZYqAgCAADzMvTnPMEL3k53lZub67QVFBS4HM6+ffuUk5OjTp06OfaFhobqyiuvVFpamiQpLS1NYWFhjiRQkjp16iQvLy9t2bLFpeuRCAIAAPNyOwn8c7FJTEyMQkNDHdukSZNcDicnJ0eSFBkZ6bQ/MjLScSwnJ0cRERFOx6tUqaLw8HBHm7JiaBgAAMADDhw4IKvV6vjs5+dXgdGUDRVBAABgXu6uGC7ZJFmtVqftQhLBqKgoSdKhQ4ec9h86dMhxLCoqSocPH3Y6XlxcrKNHjzralBWJIAAAMK2KWDV8PnXq1FFUVJRWr17t2Jebm6stW7YoKSlJkpSUlKTjx49r27ZtjjZr1qyR3W7XlVde6dL1GBoGAAC4iPLy8rRnzx7H53379ik9PV3h4eGKjY3VkCFD9NRTT6lBgwaqU6eORo8erejoaN18882SpPj4eN1www168MEHNW/ePBUVFWngwIG64447XFoxLJEIAgAAM6uAN4ts3bpVHTt2dHweNmyYJKlPnz5auHChRo4cqVOnTumhhx7S8ePH1a5dO61atUr+/v6Oc5YsWaKBAwfquuuuk5eXl3r27Kk5c+a4HDqJIAAAMK8KSAQ7dOgg4zznWCwWTZgwQRMmTCi1TXh4uJYuXerSdc+FOYIAAAAmRUUQAACYVwVUBC8lJIIAAMC87JIsHuijkiIRBAAApuWJx7948vExFxtzBAEAAEyKiiAAADAv5ggCAACYlN2QLG4mcvbKmwgyNAwAAGBSVAQBAIB5MTQMAABgVh5IBFV5E0GGhgEAAEyKiiAAADAvhoYBAABMym7I7aFdVg0DAACgsqEiCAAAzMuwn97c7aOSIhEEAADmxRxBAAAAk2KOIAAAAMyIiiAAADAvhoYBAABMypAHEkGPRFIhGBoGAAAwKSqCAADAvBgaBgAAMCm7XZKbzwG0V97nCDI0DAAAYFJUBAEAgHkxNAwAAGBSJk8EGRoGAAAwKSqCAADAvEz+ijkSQQAAYFqGYZdhuLfq193zKxKJIAAAMC/DcL+ixxxBAAAAVDZUBAEAgHkZHpgjWIkrgiSCAADAvOx2yeLmHL9KPEeQoWEAAACToiIIAADMi6FhAAAAczLsdhluDg1X5sfHMDQMAABgUlQEAQCAeTE0DAAAYFJ2Q7KYNxFkaBgAAMCkqAgCAADzMgxJ7j5HsPJWBEkEAQCAaRl2Q4abQ8MGiSAAAEAlZNjlfkWQx8cAAACgkqEiCAAATIuhYQAAALMy+dAwiSD+kUp+O7MV5VdwJED5KTpVWNEhAOWm5Pu7vKttxSpy+3nSxSryTDAVwGJU5nomUIqff/5ZMTExFR0GAMBNBw4cUK1atTzeb35+vurUqaOcnByP9BcVFaV9+/bJ39/fI/1dLCSC+Eey2+06ePCgQkJCZLFYKjqcf7zc3FzFxMTowIEDslqtFR0O4HF8j198hmHo5MmTio6OlpdX+axtzc/PV2GhZyrrvr6+lS4JlBgaxj+Ul5dXufwGifOzWq38kMQ/Gt/jF1doaGi59u/v718pkzdP4vExAAAAJkUiCAAAYFIkggDc5ufnp7Fjx8rPz6+iQwHKBd/j+KdisQgAAIBJUREEAAAwKRJBAAAAkyIRBAAAMCkSQQCXrNq1a2vWrFkVHYbpdejQQUOGDKk017ZYLFq+fHm5xFNi3Lhxat68eble41Kzf/9+WSwWpaenV3Qo8CASQQCAR61du1YWi0XHjx93u69ly5Zp4sSJLp2TnZ2tG2+80e1rlzhXYjl8+HCtXr3aY9e4UAsXLlRYWNhZ+/klCmXFm0UAXLDCwkL5+vpWdBj4BwsPD3f5nKioqHKIxFlwcLCCg4PL/TpAeaMiCJhIhw4d9Mgjj2jkyJEKDw9XVFSUxo0b5zielZWllJQUBQcHy2q16rbbbtOhQ4ccx0uGw1555RXVqVPH8Womi8WiF198Ud26dVNgYKDi4+OVlpamPXv2qEOHDgoKClKbNm20d+9eR1979+5VSkqKIiMjFRwcrNatW+vzzz+/aF8LnNupU6d0zz33KDg4WDVq1ND06dPPavPaa6+pVatWCgkJUVRUlO68804dPnxY0unhw44dO0qSqlatKovFonvvvVeStGrVKrVr105hYWGqVq2aunXr5vQ9cS5nDg3Xrl1bzzzzjO6//36FhIQoNjZWL730ktM5Z1bwDhw4oNtuu01hYWEKDw9XSkqK9u/f73TOq6++qsaNG8vPz081atTQwIEDHdeTpFtuuUUWi8Xx+cyhYbvdrgkTJqhWrVry8/NT8+bNtWrVKsfxkmHVZcuWqWPHjgoMDFSzZs2UlpZ23vufMWOGEhMTFRQUpJiYGPXv3195eXmSTlde77vvPp04cUIWi0UWi0Xjxo1Thw4d9NNPP2no0KGO/ZJ05MgR9erVSzVr1lRgYKASExP1xhtvOF3PbrdrypQpql+/vvz8/BQbG6unn376nLHZbDbdf//9atSokbKyss57H7h0kQgCJrNo0SIFBQVpy5YtmjJliiZMmKDU1FTZ7XalpKTo6NGjWrdunVJTU/Xjjz/q9ttvdzp/z549eu+997Rs2TKnuUITJ07UPffco/T0dDVq1Eh33nmn/vOf/+jxxx/X1q1bZRiG44erJOXl5alLly5avXq1vv32W91www3q3r07P1Aq2IgRI7Ru3Tp98MEH+uyzz7R27Vp98803Tm2Kioo0ceJEbd++XcuXL9f+/fsdyV5MTIzee+89SVJmZqays7M1e/ZsSaeTzGHDhmnr1q1avXq1vLy8dMstt8hut7sU4/Tp09WqVSt9++236t+/v/r166fMzMxzti0qKlJycrJCQkK0YcMGbdq0ScHBwbrhhhtUWFgoSXrhhRc0YMAAPfTQQ9qxY4dWrFih+vXrS5K+/vprSdKCBQuUnZ3t+Hym2bNna/r06Zo2bZr+97//KTk5WTfddJN2797t1O6JJ57Q8OHDlZ6erssvv1y9evVScXFxqffq5eWlOXPmaOfOnVq0aJHWrFmjkSNHSpLatGmjWbNmyWq1Kjs7W9nZ2Ro+fLiWLVumWrVqacKECY79kpSfn6+WLVvqo48+0nfffaeHHnpId999t7766ivH9R5//HFNnjxZo0eP1q5du7R06VJFRkaeFVdBQYH+/e9/Kz09XRs2bFBsbGyp94BLnAHANNq3b2+0a9fOaV/r1q2NUaNGGZ999pnh7e1tZGVlOY7t3LnTkGR89dVXhmEYxtixYw0fHx/j8OHDTn1IMp588knH57S0NEOSMX/+fMe+N954w/D39z9vfI0bNzaee+45x+e4uDhj5syZLt8nLszJkycNX19f4+2333bsO3LkiBEQEGAMHjy41PO+/vprQ5Jx8uRJwzAM44svvjAkGceOHTvv9X799VdDkrFjx45S27Rv397p2nFxccZdd93l+Gy3242IiAjjhRdecOyTZLz//vuGYRjGa6+9ZjRs2NCw2+2O4wUFBUZAQIDx6aefGoZhGNHR0cYTTzxRagx/7a/E2LFjjWbNmjk+R0dHG08//bRTm9atWxv9+/c3DMMw9u3bZ0gyXnnlFcfxkn9fGRkZpV77TO+8845RrVo1x+cFCxYYoaGhZ7Ur67+drl27Go8++qhhGIaRm5tr+Pn5GS+//PI525bcw4YNG4zrrrvOaNeunXH8+PEyx45LExVBwGSaNm3q9LlGjRo6fPiwMjIyFBMTo5iYGMexhIQEhYWFKSMjw7EvLi5O1atXP2+/JRWExMREp335+fnKzc2VdLoiOHz4cMXHxyssLEzBwcHKyMigIliB9u7dq8LCQl155ZWOfeHh4WrYsKFTu23btql79+6KjY1VSEiI2rdvL0l/+3e3e/du9erVS3Xr1pXVanUMs7r6d/7X7zWLxaKoqCjH0PSZtm/frj179igkJMQxry88PFz5+fnau3evDh8+rIMHD+q6665zKYa/ys3N1cGDB9W2bVun/W3btnX6t3Nm7DVq1JCkUmOXpM8//1zXXXedatasqZCQEN199906cuSIfv/9d5fjtNlsmjhxohITExUeHq7g4GB9+umnjq9/RkaGCgoK/vZr0atXL506dUqfffaZQkNDXY4DlxYWiwAm4+Pj4/TZYrG4NDQXFBT0t/2WzEk6176Saw0fPlypqamaNm2a6tevr4CAAN16662O4Tpcmk6dOqXk5GQlJydryZIlql69urKyspScnPy3f3fdu3dXXFycXn75ZUVHR8tut6tJkyYu/5278j2cl5enli1basmSJWcdq169ury8Lm495Hz/Js60f/9+devWTf369dPTTz+t8PBwbdy4UX379lVhYaECAwNduvbUqVM1e/ZszZo1yzHvcMiQIY6vf0BAQJn66dKli15//XWlpaXp2muvdSkGXHqoCAKQJMXHx+vAgQM6cOCAY9+uXbt0/PhxJSQkePx6mzZt0r333qtbbrlFiYmJioqKOmsCPy6uevXqycfHR1u2bHHsO3bsmH744QfH5++//15HjhzR5MmTdfXVV6tRo0ZnVbRKVpLbbDbHviNHjigzM1NPPvmkrrvuOsXHx+vYsWPlfEdSixYttHv3bkVERKh+/fpOW2hoqEJCQlS7du3zPgrGx8fH6V7OZLVaFR0drU2bNjnt37Rpk1v/drZt2ya73a7p06frqquu0uWXX66DBw86tfH19T1nbOfav2nTJqWkpOiuu+5Ss2bNVLduXae/2wYNGiggIOBvH4vTr18/TZ48WTfddJPWrVt3wfeHSwOJIABJUqdOnZSYmKjevXvrm2++0VdffaV77rlH7du3V6tWrTx+vQYNGjgWnGzfvl133nmny4sG4FnBwcHq27evRowYoTVr1ui7777Tvffe61Q1i42Nla+vr5577jn9+OOPWrFixVnP+YuLi5PFYtHKlSv166+/Ki8vT1WrVlW1atX00ksvac+ePVqzZo2GDRtW7vfUu3dvXXbZZUpJSdGGDRu0b98+rV27Vo888oh+/vlnSadXAE+fPl1z5szR7t279c033+i5555z9FGSKObk5JSavI4YMULPPvus3nrrLWVmZuqxxx5Tenq6Bg8efMGx169fX0VFRY6v9WuvvaZ58+Y5taldu7by8vK0evVq/fbbb44h49q1a2v9+vX65Zdf9Ntvv0k6/W8uNTVVmzdvVkZGhv7zn/84PRXA399fo0aN0siRI7V48WLt3btXX375pebPn39WbIMGDdJTTz2lbt26aePGjRd8j6h4JIIAJJ0epvrggw9UtWpVXXPNNerUqZPq1q2rt956q1yuN2PGDFWtWlVt2rRR9+7dlZycrBYtWpTLtVB2U6dO1dVXX63u3burU6dOateunVq2bOk4Xr16dS1cuFDvvPOOEhISNHnyZE2bNs2pj5o1a2r8+PF67LHHFBkZqYEDB8rLy0tvvvmmtm3bpiZNmmjo0KGaOnVqud9PYGCg1q9fr9jYWPXo0UPx8fHq27ev8vPzZbVaJUl9+vTRrFmz9Pzzz6tx48bq1q2b02rf6dOnKzU1VTExMbriiivOeZ1HHnlEw4YN06OPPqrExEStWrVKK1asUIMGDS449mbNmmnGjBl69tln1aRJEy1ZskSTJk1yatOmTRs9/PDDuv3221W9enVNmTJFkjRhwgTt379f9erVc8zpffLJJ9WiRQslJyerQ4cOioqK0s033+zU3+jRo/Xoo49qzJgxio+P1+23317qHMYhQ4Zo/Pjx6tKlizZv3nzB94mKZTEMw6joIAAA8ISCggL5+/srNTVVnTp1quhwgEsei0UAAP8Iubm5WrZsmby8vNSoUaOKDgeoFEgEAQD/CGPHjtXSpUv17LPPqlatWhUdDlApMDQMAABgUiwWAQAAMCkSQQAAAJMiEQQAADApEkEAAACTIhEEAAAwKRJBACgn9957r9ObGzp06KAhQ4Zc9DjWrl0ri8Wi48ePl9rGYrFo+fLlZe5z3Lhxat68uVtx7d+/XxaLRenp6W71A+DCkQgCMJV7771XFotFFotFvr6+ql+/viZMmKDi4uJyv/ayZcvOei9vacqSvAGAu3igNADTueGGG7RgwQIVFBTo448/1oABA+Tj46PHH3/8rLaFhYXy9fX1yHXDw8M90g8AeAoVQQCm4+fnp6ioKMXFxalfv37q1KmTVqxYIenP4dynn35a0dHRatiwoSTpwIEDuu222xQWFqbw8HClpKRo//79jj5tNpuGDRumsLAwVatWTSNHjtSZz+s/c2i4oKBAo0aNUkxMjPz8/FS/fn3Nnz9f+/fvV8eOHSVJVatWlcVi0b333itJstvtmjRpkurUqaOAgAA1a9ZM7777rtN1Pv74Y11++eUKCAhQx44dneIsq1GjRunyyy9XYGCg6tatq9GjR6uoqOisdi+++KJiYmIUGBio2267TSdOnHA6/sorryg+Pl7+/v5q1KiRnn/+eZdjAVB+SAQBmF5AQIAKCwsdn1evXq3MzEylpqZq5cqVKioqUnJyskJCQrRhwwZt2rRJwcHBuuGGGxznTZ8+XQsXLtSrr76qjRs36ujRo3r//ffPe9177rlHb7zxhubMmaOMjAy9+OKLCg4OVkxMjN577z1JUmZmprKzszV79mxJ0qRJk7R48WLNmzdPO3fu1NChQ3XXXXdp3bp1kk4nrD169FD37t2Vnp6uBx54QI899pjLX5OQkBAtXLhQu3bt0uzZs/Xyyy9r5syZTm327Nmjt99+Wx9++KFWrVqlb7/9Vv3793ccX7JkicaMGaOnn35aGRkZeuaZZzR69GgtWrTI5XgAlBMDAEykT58+RkpKimEYhmG3243U1FTDz8/PGD58uON4ZGSkUVBQ4DjntddeMxo2bGjY7XbHvoKCAiMgIMD49NNPDcMwjBo1ahhTpkxxHC8qKjJq1arluJZhGEb79u2NwYMHG4ZhGJmZmYYkIzU19ZxxfvHFF4Yk49ixY459+fn5RmBgoLF582antn379jV69eplGIZhPP7440ZCQoLT8VGjRp3V15kkGe+//36px6dOnWq0bNnS8Xns2LGGt7e38fPPPzv2ffLJJ4aXl5eRnZ1tGIZh1KtXz1i6dKlTPxMnTjSSkpIMwzCMffv2GZKMb7/9ttTrAihfzBEEYDorV65UcHCwioqKZLfbdeedd2rcuHGO44mJiU7zArdv3649e/YoJCTEqZ/8/Hzt3btXJ06cUHZ2tq688krHsSpVqqhVq1ZnDQ+XSE9Pl7e3t9q3b1/muPfs2aPff/9d119/vdP+wsJCXXHFFZKkjIwMpzgkKSkpqczXKPHWW29pzpw52rt3r/Ly8lRcXCyr1erUJjY2VjVr1nS6jt1uV2ZmpkJCQrR371717dtXDz74oKNNcXGxQkNDXY4HQPkgEQRgOh07dtQLL7wgX19fRUdHq0oV5/8Kg4KCnD7n5eWpZcuWWrJkyVl9Va9e/YJiCAgIcPmcvLw8SdJHH33klIBJp+c9ekpaWpp69+6t8ePHKzk5WaGhoXrzzTc1ffp0l2N9+eWXz0pMvb29PRYrAPeQCAIwnaCgINWvX7/M7Vu0aKG33npLERERZ1XFStSoUUNbtmzRNddcI+l05Wvbtm1q0aLFOdsnJibKbrdr3bp16tSp01nHSyqSNpvNsS8hIUF+fn7KysoqtZIYHx/vWPhS4ssvv/z7m/yLzZs3Ky4uTk888YRj308//XRWu6ysLB08eFDR0dGO63h5ealhw4aKjIxUdHS0fvzxR/Xu3dul6wO4eFgsAgB/o3fv3rrsssuUkpKiDRs2aN++fVq7dq0eeeQR/fzzz5KkwYMHa/LkyVq+fLm+//579e/f/7zPAKxdu7b69Omj+++/X8uXL3f0+fbbb0uS4uLiZLFYtHLlSv3666/Ky8tTSEiIhg8frqFDh2rRokXau3evvvnmGz333HOOBRgPP/ywdu/erREjRigzM1NLly7VwoULXbrfBg0aKCsrS2+++ab27t2rOXPmnHPhi7+/v/r06aPt27drw4YNeuSRR3TbbbcpKipKkjR+/HhNmjRJc+bM0Q8//KAdO3ZowYIFmjFjhkvxACg/JIIA8DcCAwO1fv16xcbGqkePHoqPj1ffvn2Vn5/vqBA++uijuvvuu9WnTx8lJSUpJCREt9xyy3n7feGFF3Trrbeqf//+atSokR588EGdOnVKklSzZk2NHz9ejz32mCIjIzVw4EBJ0sSJEzV69GhNmjRJ8fHxuuGGG/TRRx+pTp06kk7P23vvvfe0fPlyNWvWTPPmzdMzzzzj0v3edNNNGjp0qAYOHKjmzZtr8+bNGj169Fnt6tevrx49eqhLly7q3LmzmjZt6vR4mAceeECvvPKKFixYoMTERLVv314LFy50xAqg4lmM0mYyAwAA4B+NiiAAAIBJkQgCAACYFIkgAACASZEIAgAAmBSJIAAAgEmRCAIAAJgUiSAAAIBJkQgCAACYFIkgAACASZEIAgAAmBSJIAAAgEn9f+B2nmhH69azAAAAAElFTkSuQmCC",
+      "text/plain": [
+       "<Figure size 640x480 with 2 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "cm =confusion_matrix(y_test, firstknn_pred)\n",
+    "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels = labels)\n",
+    "disp.plot()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1>4. Improving</h1>"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "A grid search will be performed to find the optimal value of K. \n",
+    "\n",
+    "Afterwards, the stratified K fold cross validation will be used, followed by a confusion metric as an evaluation."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 86,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "{'n_neighbors': 1}"
+      ]
+     },
+     "execution_count": 86,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "from sklearn.model_selection import GridSearchCV\n",
+    "from sklearn.model_selection import KFold\n",
+    "from sklearn.model_selection import StratifiedKFold\n",
+    "#create new a knn model\n",
+    "knn2 = KNeighborsClassifier()\n",
+    "#create a dictionary of all values we want to test for n_neighbors\n",
+    "param_grid = {'n_neighbors': np.arange(1, 25,1)}\n",
+    "#use gridsearch to test all values for n_neighbors\n",
+    "im_knn = GridSearchCV(knn2, param_grid, cv=StratifiedKFold(n_splits=5, random_state=None, shuffle=False))\n",
+    "#fit model to data\n",
+    "im_knn.fit(X_train, y_train)\n",
+    "im_knn.best_params_"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 88,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.9391666666666667"
+      ]
+     },
+     "execution_count": 88,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "im_knn.best_score_"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The commented code displays the accuracy against K value graph, code sourced from the link below"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "https://towardsdatascience.com/building-a-k-nearest-neighbors-k-nn-model-with-scikit-learn-51209555453a#:~:text=k%2DFold%20Cross%2DValidation,scored%20on%20the%20test%20set."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 89,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# from sklearn.model_selection import KFold\n",
+    "# from sklearn.model_selection import cross_val_score\n",
+    "# from sklearn.model_selection import StratifiedKFold\n",
+    "\n",
+    "# import seaborn as sns\n",
+    "# k_values = [i for i in range (1,31)]\n",
+    "# scores = []\n",
+    "\n",
+    "# for k in k_values:\n",
+    "#     score = cross_val_score(KNeighborsClassifier(n_neighbors=k), X_train, y_train, cv=StratifiedKFold(n_splits=5, random_state=None, shuffle=False))\n",
+    "#     scores.append(np.mean(score))\n",
+    "# sns.lineplot(x = k_values, y = scores, marker = 'o')\n",
+    "# plt.xlabel(\"K Values\")\n",
+    "# plt.ylabel(\"Accuracy Score\")"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1> 5. Metric Evaluation</h1>"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Evaluation for the imrpoved KNN model. (When K=1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 90,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([1, 0, 0, ..., 0, 0, 1], dtype=int64)"
+      ]
+     },
+     "execution_count": 90,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "my_pred = im_knn.predict(X_test)\n",
+    "my_pred"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 91,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "0.9558333333333333"
+      ]
+     },
+     "execution_count": 91,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "score = im_knn.score(X_test, y_test)\n",
+    "score"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Confusion Matrix"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 92,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "array([[580,  20],\n",
+       "       [ 33, 567]], dtype=int64)"
+      ]
+     },
+     "execution_count": 92,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "from sklearn.metrics import confusion_matrix\n",
+    "from sklearn.metrics import classification_report\n",
+    "from sklearn.metrics import ConfusionMatrixDisplay\n",
+    "confusion_matrix(y_test, my_pred)\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 93,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "              precision    recall  f1-score   support\n",
+      "\n",
+      "           0       0.95      0.97      0.96       600\n",
+      "           1       0.97      0.94      0.96       600\n",
+      "\n",
+      "    accuracy                           0.96      1200\n",
+      "   macro avg       0.96      0.96      0.96      1200\n",
+      "weighted avg       0.96      0.96      0.96      1200\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(classification_report(y_test, my_pred))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 94,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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v0g69F6CtLQ0jRs3Tvfcc4+fowN8x2Kx6PXXX9fw4cP9HQrgM1T2+F0NDQ0qLCxUZmama19ISIgyMzNVUFDgx8gAAC1Bssfv+v777+VwOJScnOy2Pzk5WWVlZX6KCgDQUiR7AACCHMkev+u4445TaGioysvL3faXl5crJSXFT1EBAFqKZI/fFRERof79+2vNmjWufU6nU2vWrJHdbvdjZACAlgjzdwAIDBMmTFB2drZOP/10nXnmmXr88cdVW1ur0aNH+zs0wGs1NTXavn276/POnTu1efNmJSYmqlOnTn6MDPANbr1Di/3lL3/Rww8/rLKyMvXr10/z58/XgAED/B0W4LW1a9dq0KBBh+3Pzs5Wfn5+2wcE+BjJHgCAIMecPQAAQY5kDwBAkCPZAwAQ5Ej2AAAEOZI9AABBjmQPAECQI9kDABDkSPYAAAQ5kj3gpRtvvFHDhw93fT7//PN15513tnkca9eulcViUWVl5a+OsVgsWrZsWYuvOWPGDPXr18+ruHbt2iWLxaLNmzd7dR0AR49kj6B04403ymKxyGKxKCIiQt26ddOsWbPU1NTU6t/9z3/+U7Nnz27R2JYkaADwFi/CQdC6+OKLtWjRItXX12vlypXKyclReHi4pkyZctjYhoYGRURE+OR7ExMTfXIdAPAVKnsErcjISKWkpCg9PV1jx45VZmam3njjDUm/tN4feOABpaamqkePHpKkkpISXXXVVUpISFBiYqKGDRumXbt2ua7pcDg0YcIEJSQkqH379rr77rv136+X+O82fn19vSZPnqy0tDRFRkaqW7duWrhwoXbt2uV6+Uq7du1ksVh04403Sjr0CuE5c+aoS5cuio6OVt++ffXqq6+6fc/KlSt10kknKTo6WoMGDXKLs6UmT56sk046STExMerataumTp2qxsbGw8Y988wzSktLU0xMjK666ipVVVW5HX/uuefUq1cvRUVFqWfPnnrqqac8jgVA6yHZwzSio6PV0NDg+rxmzRoVFRVp9erVWrFihRobG5WVlaX4+Hi9//77+vDDDxUXF6eLL77Ydd6jjz6q/Px8Pf/88/rggw+0f/9+vf7667/5vTfccIP+8Y9/aP78+dq6daueeeYZxcXFKS0tTa+99pokqaioSHv37tUTTzwhSZozZ44WL16sBQsW6Msvv9T48eN13XXXad26dZIO/VEyYsQIXXbZZdq8ebNuvvlm3XPPPR7/3yQ+Pl75+fn66quv9MQTT+jZZ5/VvHnz3MZs375dL7/8spYvX65Vq1bps88+02233eY6/uKLL2ratGl64IEHtHXrVj344IOaOnWqXnjhBY/jAdBKDCAIZWdnG8OGDTMMwzCcTqexevVqIzIy0pg4caLreHJyslFfX+86529/+5vRo0cPw+l0uvbV19cb0dHRxttvv20YhmEcf/zxxty5c13HGxsbjY4dO7q+yzAM47zzzjPuuOMOwzAMo6ioyJBkrF69+ohx/vvf/zYkGT/++KNrX11dnRETE2Ns2LDBbeyYMWOMa6+91jAMw5gyZYqRkZHhdnzy5MmHXeu/STJef/31Xz3+8MMPG/3793d9nj59uhEaGmrs3r3bte+tt94yQkJCjL179xqGYRgnnniisWTJErfrzJ4927Db7YZhGMbOnTsNScZnn332q98LoHUxZ4+gtWLFCsXFxamxsVFOp1N//OMfNWPGDNfx3r17u83Tf/7559q+fbvi4+PdrlNXV6cdO3aoqqpKe/fu1YABA1zHwsLCdPrppx/Wym+2efNmhYaG6rzzzmtx3Nu3b9fBgwd10UUXue1vaGjQqaeeKknaunWrWxySZLfbW/wdzZYuXar58+drx44dqqmpUVNTk6xWq9uYTp066YQTTnD7HqfTqaKiIsXHx2vHjh0aM2aMbrnlFteYpqYm2Ww2j+MB0DpI9ghagwYN0tNPP62IiAilpqYqLMz91z02Ntbtc01Njfr3768XX3zxsGt16NDhqGKIjo72+JyamhpJ0ptvvumWZKVD6xB8paCgQKNGjdLMmTOVlZUlm82ml156SY8++qjHsT777LOH/fERGhrqs1gBeIdkj6AVGxurbt26tXj8aaedpqVLlyopKemw6rbZ8ccfr48//ljnnnuupEMVbGFhoU477bQjju/du7ecTqfWrVunzMzMw443dxYcDodrX0ZGhiIjI1VcXPyrHYFevXq5Fhs2++ijj37/h/wPGzZsUHp6uu69917Xvu++++6wccXFxSotLVVqaqrre0JCQtSjRw8lJycrNTVV3377rUaNGuXR9wNoOyzQA342atQoHXfccRo2bJjef/997dy5U2vXrtXtt9+u3bt3S5LuuOMOPfTQQ1q2bJm2bdum22677Tfvke/cubOys7N10003admyZa5rvvzyy5Kk9PR0WSwWrVixQvv27VNNTY3i4+M1ceJEjR8/Xi+88IJ27NihTZs26cknn3Qterv11lv1zTffaNKkSSoqKtKSJUuUn5/v0c/bvXt3FRcX66WXXtKOHTs0f/78Iy42jIqKUnZ2tj7//HO9//77uv3223XVVVcpJSVFkjRz5kzNmTNH8+fP19dff60tW7Zo0aJFeuyxxzyKB0DrIdkDP4uJidH69evVqVMnjRgxQr169dKYMWNUV1fnqvTvuusuXX/99crOzpbdbld8fLyuuOKK37zu008/rSuvvFK33XabevbsqVtuuUW1tbWSpBNOOEEzZ87UPffco+TkZOXm5kqSZs+eralTp2rOnDnq1auXLr74Yr355pvq0qWLpEPz6K+99pqWLVumvn37asGCBXrwwQc9+nkvv/xyjR8/Xrm5uerXr582bNigqVOnHjauW7duGjFihC655BINHjxYffr0cbu17uabb9Zzzz2nRYsWqXfv3jrvvPOUn5/vihWA/1mMX1tZBAAAggKVPQAAQY5kDwBAkCPZAwAQ5Ej2AAAEOZI9AABBjmQPAECQI9kDABDkSPYAAAQ5kj0AAEGOZA8AQJAj2QMAEOT+P30XGNiEmau3AAAAAElFTkSuQmCC",
+      "text/plain": [
+       "<Figure size 640x480 with 2 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "cm =confusion_matrix(y_test, my_pred)\n",
+    "disp = ConfusionMatrixDisplay(confusion_matrix=cm,)\n",
+    "disp.plot()\n",
+    "plt.show()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 95,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[0.94914459 0.91638213 0.92562835 0.93236807 0.94583029]\n",
+      " StratifiedKFold Cross-Validation Accuracy: 93.39% | Standard Deviation: 1.23%\n"
+     ]
+    }
+   ],
+   "source": [
+    "from sklearn.model_selection import cross_val_score\n",
+    "from sklearn.model_selection import StratifiedKFold\n",
+    "\n",
+    "cvScore = cross_val_score(im_knn, X, y, cv=StratifiedKFold(n_splits=5, shuffle=True, random_state=1), scoring='f1_macro')\n",
+    "print (cvScore)\n",
+    "print (\" StratifiedKFold Cross-Validation Accuracy: %0.2f%% | Standard Deviation: %0.2f%%\" % (100*cvScore.mean(), 100*cvScore.std()))\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 101,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Accuracy: 0.9558333333333333\n",
+      "Precision: 0.9659284497444633\n",
+      "Recall: 0.945\n"
+     ]
+    }
+   ],
+   "source": [
+    "accuracy = accuracy_score(y_test, my_pred)\n",
+    "precision = precision_score(y_test, my_pred)\n",
+    "recall = recall_score(y_test, my_pred)\n",
+    "\n",
+    "print(\"Accuracy:\", accuracy)\n",
+    "print(\"Precision:\", precision)\n",
+    "print(\"Recall:\", recall)"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1> 6. Testing Data</h1>"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 102,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stderr",
+     "output_type": "stream",
+     "text": [
+      "C:\\Users\\60172\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python311\\site-packages\\sklearn\\base.py:439: UserWarning: X does not have valid feature names, but KNeighborsClassifier was fitted with feature names\n",
+      "  warnings.warn(\n"
+     ]
+    },
+    {
+     "data": {
+      "text/plain": [
+       "predicted marker\n",
+       "1                   53\n",
+       "0                   47\n",
+       "Name: count, dtype: int64"
+      ]
+     },
+     "execution_count": 102,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "y_testpred = im_knn.predict(mTest.values)\n",
+    "y_testpred = pd.DataFrame(y_testpred, columns=['predicted marker'])\n",
+    "y_testpred.value_counts()"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<h1> 7. Import to CSV file</h1>"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Import to CSV (Marker Labels only)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 103,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "y_testpred.to_csv('ShowingLabelsOnly.csv')"
+   ]
+  },
+  {
+   "attachments": {},
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Import to CSV (marker column added to testing csv file)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 104,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mTest[\"marker\"] = y_testpred"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 106,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "mTest.to_csv('TestingResultsBinaryKNN.csv')"
+   ]
+  }
+ ],
+ "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.11.3"
+  },
+  "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}