{
 "nbformat": 4,
 "nbformat_minor": 0,
 "metadata": {
  "colab": {
   "name": "Solved.ipynb",
   "provenance": [],
   "collapsed_sections": []
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  }
 },
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "8C5-u33kPxWe"
   },
   "source": [
    "# Malware Classification with Machine Learning\n",
    "We need to develop an ML model for classifying `Malware classifier dataset` built with header fields' values of Portable Executable files. As opposed to signature-based scanning, which looks to match signatures found in files with that of a database of known malware, heuristic scanning uses rules and/or algorithms to look for commands which may indicate malicious intent.\n",
    "\n",
    "**Signature-based detection** uses a known list of `indicators of compromise (IOCs)`. These may include specific network attack behaviors. They may also include email subject lines and file hashes.\n",
    "\n",
    "A **heuristic-based IDS** solution goes beyond identifying particular attack signatures to detect and analyze malicious or unusual patterns of behavior. This type of system applies `Statistical, AI and machine learning` to analyze giant amounts of data and network traffic and pinpoint anomalies.\n",
    "\n",
    "Thus we are using **heuristic-based IDS** solution for this assignment. There are a total of **55 Raw Features** which are clustered as `IMAGEDOSHEADER (19)`, `FILE_HEADER (7)` and `OPTIONAL_HEADER (29)`.Finally we have a target variable with class - `0 (benign)`, `1 (malware)`We will be preprocessing the data, using different ML models and cross-validating our model in order to evaluate the models developed.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rFVNvh28R97D"
   },
   "source": [
    "## Collect and prepare the data"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "52paFmppNGl9"
   },
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.model_selection import StratifiedKFold, cross_val_score\n",
    "from sklearn.feature_selection import SelectKBest, SelectPercentile, chi2, mutual_info_classif\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.pipeline import Pipeline\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ],
   "execution_count": 1,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 226
    },
    "id": "MLnNbjF0SHPE",
    "outputId": "adf01aff-05aa-4b9b-8986-848361f8540e"
   },
   "source": [
    "df = pd.read_csv(\"ClaMP_Raw-5184.csv\")\n",
    "df.head()"
   ],
   "execution_count": 2,
   "outputs": [
    {
     "output_type": "execute_result",
     "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>e_magic</th>\n",
       "      <th>e_cblp</th>\n",
       "      <th>e_cp</th>\n",
       "      <th>e_crlc</th>\n",
       "      <th>e_cparhdr</th>\n",
       "      <th>e_minalloc</th>\n",
       "      <th>e_maxalloc</th>\n",
       "      <th>e_ss</th>\n",
       "      <th>e_sp</th>\n",
       "      <th>e_csum</th>\n",
       "      <th>e_ip</th>\n",
       "      <th>e_cs</th>\n",
       "      <th>e_lfarlc</th>\n",
       "      <th>e_ovno</th>\n",
       "      <th>e_res</th>\n",
       "      <th>e_oemid</th>\n",
       "      <th>e_oeminfo</th>\n",
       "      <th>e_res2</th>\n",
       "      <th>e_lfanew</th>\n",
       "      <th>Machine</th>\n",
       "      <th>NumberOfSections</th>\n",
       "      <th>CreationYear</th>\n",
       "      <th>PointerToSymbolTable</th>\n",
       "      <th>NumberOfSymbols</th>\n",
       "      <th>SizeOfOptionalHeader</th>\n",
       "      <th>Characteristics</th>\n",
       "      <th>Magic</th>\n",
       "      <th>MajorLinkerVersion</th>\n",
       "      <th>MinorLinkerVersion</th>\n",
       "      <th>SizeOfCode</th>\n",
       "      <th>SizeOfInitializedData</th>\n",
       "      <th>SizeOfUninitializedData</th>\n",
       "      <th>AddressOfEntryPoint</th>\n",
       "      <th>BaseOfCode</th>\n",
       "      <th>BaseOfData</th>\n",
       "      <th>ImageBase</th>\n",
       "      <th>SectionAlignment</th>\n",
       "      <th>FileAlignment</th>\n",
       "      <th>MajorOperatingSystemVersion</th>\n",
       "      <th>MinorOperatingSystemVersion</th>\n",
       "      <th>MajorImageVersion</th>\n",
       "      <th>MinorImageVersion</th>\n",
       "      <th>MajorSubsystemVersion</th>\n",
       "      <th>MinorSubsystemVersion</th>\n",
       "      <th>SizeOfImage</th>\n",
       "      <th>SizeOfHeaders</th>\n",
       "      <th>CheckSum</th>\n",
       "      <th>Subsystem</th>\n",
       "      <th>DllCharacteristics</th>\n",
       "      <th>SizeOfStackReserve</th>\n",
       "      <th>SizeOfStackCommit</th>\n",
       "      <th>SizeOfHeapReserve</th>\n",
       "      <th>SizeOfHeapCommit</th>\n",
       "      <th>LoaderFlags</th>\n",
       "      <th>NumberOfRvaAndSizes</th>\n",
       "      <th>class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>23117</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>65535</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>256</td>\n",
       "      <td>332</td>\n",
       "      <td>4</td>\n",
       "      <td>2006</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>224</td>\n",
       "      <td>8450</td>\n",
       "      <td>267</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>1100288</td>\n",
       "      <td>225792</td>\n",
       "      <td>0</td>\n",
       "      <td>1069880</td>\n",
       "      <td>4096</td>\n",
       "      <td>1110016</td>\n",
       "      <td>1184890880</td>\n",
       "      <td>4096</td>\n",
       "      <td>512</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1335296</td>\n",
       "      <td>1024</td>\n",
       "      <td>1194954</td>\n",
       "      <td>3</td>\n",
       "      <td>64</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>23117</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>65535</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>184</td>\n",
       "      <td>332</td>\n",
       "      <td>4</td>\n",
       "      <td>1999</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>224</td>\n",
       "      <td>8462</td>\n",
       "      <td>267</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>4096</td>\n",
       "      <td>2560</td>\n",
       "      <td>0</td>\n",
       "      <td>7680</td>\n",
       "      <td>4096</td>\n",
       "      <td>8192</td>\n",
       "      <td>268435456</td>\n",
       "      <td>4096</td>\n",
       "      <td>512</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>20480</td>\n",
       "      <td>1024</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>23117</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>65535</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>272</td>\n",
       "      <td>332</td>\n",
       "      <td>5</td>\n",
       "      <td>2012</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>224</td>\n",
       "      <td>8450</td>\n",
       "      <td>267</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>27648</td>\n",
       "      <td>20480</td>\n",
       "      <td>0</td>\n",
       "      <td>28859</td>\n",
       "      <td>4096</td>\n",
       "      <td>32768</td>\n",
       "      <td>268435456</td>\n",
       "      <td>4096</td>\n",
       "      <td>512</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>61440</td>\n",
       "      <td>1024</td>\n",
       "      <td>67688</td>\n",
       "      <td>2</td>\n",
       "      <td>320</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>23117</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>65535</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>184</td>\n",
       "      <td>332</td>\n",
       "      <td>1</td>\n",
       "      <td>2011</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>224</td>\n",
       "      <td>8450</td>\n",
       "      <td>267</td>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>87552</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>4096</td>\n",
       "      <td>4096</td>\n",
       "      <td>268435456</td>\n",
       "      <td>4096</td>\n",
       "      <td>512</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>94208</td>\n",
       "      <td>512</td>\n",
       "      <td>113668</td>\n",
       "      <td>2</td>\n",
       "      <td>1344</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>23117</td>\n",
       "      <td>144</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>65535</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>224</td>\n",
       "      <td>332</td>\n",
       "      <td>5</td>\n",
       "      <td>2012</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>224</td>\n",
       "      <td>258</td>\n",
       "      <td>267</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>11776</td>\n",
       "      <td>36352</td>\n",
       "      <td>0</td>\n",
       "      <td>13379</td>\n",
       "      <td>4096</td>\n",
       "      <td>16384</td>\n",
       "      <td>4194304</td>\n",
       "      <td>4096</td>\n",
       "      <td>512</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>6</td>\n",
       "      <td>2</td>\n",
       "      <td>57344</td>\n",
       "      <td>1024</td>\n",
       "      <td>69089</td>\n",
       "      <td>2</td>\n",
       "      <td>33088</td>\n",
       "      <td>262144</td>\n",
       "      <td>8192</td>\n",
       "      <td>1048576</td>\n",
       "      <td>4096</td>\n",
       "      <td>0</td>\n",
       "      <td>16</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   e_magic  e_cblp  e_cp  ...  LoaderFlags  NumberOfRvaAndSizes  class\n",
       "0    23117     144     3  ...            0                   16      0\n",
       "1    23117     144     3  ...            0                   16      0\n",
       "2    23117     144     3  ...            0                   16      0\n",
       "3    23117     144     3  ...            0                   16      0\n",
       "4    23117     144     3  ...            0                   16      0\n",
       "\n",
       "[5 rows x 56 columns]"
      ]
     },
     "metadata": {},
     "execution_count": 2
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "GAzTVL_-SXWw",
    "outputId": "79750be1-45c2-4033-addf-d190357a5600"
   },
   "source": [
    "df.shape"
   ],
   "execution_count": 3,
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "(5184, 56)"
      ]
     },
     "metadata": {},
     "execution_count": 3
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "nTCXCYUMW_8b"
   },
   "source": [
    "## Feature Transformation\n",
    "\n",
    "We will first observe the missing values in the dataset"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "oI-7axWGW2dV",
    "outputId": "267e7870-2395-4898-e0b9-225b111aeff6"
   },
   "source": [
    "df.isna().sum()"
   ],
   "execution_count": 4,
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "e_magic                           0\n",
       "e_cblp                            0\n",
       "e_cp                              0\n",
       "e_crlc                            0\n",
       "e_cparhdr                         0\n",
       "e_minalloc                        0\n",
       "e_maxalloc                        0\n",
       "e_ss                              0\n",
       "e_sp                              0\n",
       "e_csum                            0\n",
       "e_ip                              0\n",
       "e_cs                              0\n",
       "e_lfarlc                          0\n",
       "e_ovno                            0\n",
       "e_res                          5184\n",
       "e_oemid                           0\n",
       "e_oeminfo                         0\n",
       "e_res2                         5184\n",
       "e_lfanew                          0\n",
       "Machine                           0\n",
       "NumberOfSections                  0\n",
       "CreationYear                      0\n",
       "PointerToSymbolTable              0\n",
       "NumberOfSymbols                   0\n",
       "SizeOfOptionalHeader              0\n",
       "Characteristics                   0\n",
       "Magic                             0\n",
       "MajorLinkerVersion                0\n",
       "MinorLinkerVersion                0\n",
       "SizeOfCode                        0\n",
       "SizeOfInitializedData             0\n",
       "SizeOfUninitializedData           0\n",
       "AddressOfEntryPoint               0\n",
       "BaseOfCode                        0\n",
       "BaseOfData                        0\n",
       "ImageBase                         0\n",
       "SectionAlignment                  0\n",
       "FileAlignment                     0\n",
       "MajorOperatingSystemVersion       0\n",
       "MinorOperatingSystemVersion       0\n",
       "MajorImageVersion                 0\n",
       "MinorImageVersion                 0\n",
       "MajorSubsystemVersion             0\n",
       "MinorSubsystemVersion             0\n",
       "SizeOfImage                       0\n",
       "SizeOfHeaders                     0\n",
       "CheckSum                          0\n",
       "Subsystem                         0\n",
       "DllCharacteristics                0\n",
       "SizeOfStackReserve                0\n",
       "SizeOfStackCommit                 0\n",
       "SizeOfHeapReserve                 0\n",
       "SizeOfHeapCommit                  0\n",
       "LoaderFlags                       0\n",
       "NumberOfRvaAndSizes               0\n",
       "class                             0\n",
       "dtype: int64"
      ]
     },
     "metadata": {},
     "execution_count": 4
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "VOtMwv2wXJvr",
    "outputId": "ee82ebea-2eca-4c93-d6bb-141fb5f9dcb4"
   },
   "source": [
    "for col in df.columns:\n",
    "    print('Column:', col, '\\nNumber of unique characters:', len(df[col].unique()))\n",
    "    print()"
   ],
   "execution_count": 5,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Column: e_magic \n",
      "Number of unique characters: 1\n",
      "\n",
      "Column: e_cblp \n",
      "Number of unique characters: 9\n",
      "\n",
      "Column: e_cp \n",
      "Number of unique characters: 7\n",
      "\n",
      "Column: e_crlc \n",
      "Number of unique characters: 1\n",
      "\n",
      "Column: e_cparhdr \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: e_minalloc \n",
      "Number of unique characters: 4\n",
      "\n",
      "Column: e_maxalloc \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: e_ss \n",
      "Number of unique characters: 2\n",
      "\n",
      "Column: e_sp \n",
      "Number of unique characters: 8\n",
      "\n",
      "Column: e_csum \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: e_ip \n",
      "Number of unique characters: 4\n",
      "\n",
      "Column: e_cs \n",
      "Number of unique characters: 4\n",
      "\n",
      "Column: e_lfarlc \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: e_ovno \n",
      "Number of unique characters: 2\n",
      "\n",
      "Column: e_res \n",
      "Number of unique characters: 1\n",
      "\n",
      "Column: e_oemid \n",
      "Number of unique characters: 2\n",
      "\n",
      "Column: e_oeminfo \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: e_res2 \n",
      "Number of unique characters: 1\n",
      "\n",
      "Column: e_lfanew \n",
      "Number of unique characters: 39\n",
      "\n",
      "Column: Machine \n",
      "Number of unique characters: 3\n",
      "\n",
      "Column: NumberOfSections \n",
      "Number of unique characters: 22\n",
      "\n",
      "Column: CreationYear \n",
      "Number of unique characters: 36\n",
      "\n",
      "Column: PointerToSymbolTable \n",
      "Number of unique characters: 9\n",
      "\n",
      "Column: NumberOfSymbols \n",
      "Number of unique characters: 13\n",
      "\n",
      "Column: SizeOfOptionalHeader \n",
      "Number of unique characters: 2\n",
      "\n",
      "Column: Characteristics \n",
      "Number of unique characters: 42\n",
      "\n",
      "Column: Magic \n",
      "Number of unique characters: 2\n",
      "\n",
      "Column: MajorLinkerVersion \n",
      "Number of unique characters: 23\n",
      "\n",
      "Column: MinorLinkerVersion \n",
      "Number of unique characters: 36\n",
      "\n",
      "Column: SizeOfCode \n",
      "Number of unique characters: 936\n",
      "\n",
      "Column: SizeOfInitializedData \n",
      "Number of unique characters: 930\n",
      "\n",
      "Column: SizeOfUninitializedData \n",
      "Number of unique characters: 194\n",
      "\n",
      "Column: AddressOfEntryPoint \n",
      "Number of unique characters: 3480\n",
      "\n",
      "Column: BaseOfCode \n",
      "Number of unique characters: 124\n",
      "\n",
      "Column: BaseOfData \n",
      "Number of unique characters: 385\n",
      "\n",
      "Column: ImageBase \n",
      "Number of unique characters: 404\n",
      "\n",
      "Column: SectionAlignment \n",
      "Number of unique characters: 6\n",
      "\n",
      "Column: FileAlignment \n",
      "Number of unique characters: 7\n",
      "\n",
      "Column: MajorOperatingSystemVersion \n",
      "Number of unique characters: 10\n",
      "\n",
      "Column: MinorOperatingSystemVersion \n",
      "Number of unique characters: 10\n",
      "\n",
      "Column: MajorImageVersion \n",
      "Number of unique characters: 41\n",
      "\n",
      "Column: MinorImageVersion \n",
      "Number of unique characters: 53\n",
      "\n",
      "Column: MajorSubsystemVersion \n",
      "Number of unique characters: 6\n",
      "\n",
      "Column: MinorSubsystemVersion \n",
      "Number of unique characters: 5\n",
      "\n",
      "Column: SizeOfImage \n",
      "Number of unique characters: 675\n",
      "\n",
      "Column: SizeOfHeaders \n",
      "Number of unique characters: 19\n",
      "\n",
      "Column: CheckSum \n",
      "Number of unique characters: 3255\n",
      "\n",
      "Column: Subsystem \n",
      "Number of unique characters: 6\n",
      "\n",
      "Column: DllCharacteristics \n",
      "Number of unique characters: 25\n",
      "\n",
      "Column: SizeOfStackReserve \n",
      "Number of unique characters: 33\n",
      "\n",
      "Column: SizeOfStackCommit \n",
      "Number of unique characters: 22\n",
      "\n",
      "Column: SizeOfHeapReserve \n",
      "Number of unique characters: 44\n",
      "\n",
      "Column: SizeOfHeapCommit \n",
      "Number of unique characters: 14\n",
      "\n",
      "Column: LoaderFlags \n",
      "Number of unique characters: 6\n",
      "\n",
      "Column: NumberOfRvaAndSizes \n",
      "Number of unique characters: 4\n",
      "\n",
      "Column: class \n",
      "Number of unique characters: 2\n",
      "\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "3OnzLHmLXMY4"
   },
   "source": [
    "We observe that the 2 columns `e_res` and `e_res2` contains missing values and the remaining all the columns are clean. Also upon observing the dataset, we find that the dataset contains many columns which has only 1 unique value and thus it shows the particular column is redundant in analysing the class and thus we remove them"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "OtOOs2EuYJWa"
   },
   "source": [
    "new_col = []\n",
    "for col in df.columns:\n",
    "    if len(df[col].unique())==1:\n",
    "        continue\n",
    "    new_col.append(col)\n",
    "df = df[new_col]"
   ],
   "execution_count": 6,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "KYLLRg-uYbxE",
    "outputId": "162fa1fa-429f-4fad-94f8-7d7889a08975"
   },
   "source": [
    "df.shape"
   ],
   "execution_count": 7,
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "(5184, 52)"
      ]
     },
     "metadata": {},
     "execution_count": 7
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "j6J9WZ58SWCz"
   },
   "source": [
    "## Feature extraction\n",
    "\n",
    "Feature Extraction aims to reduce the number of features in a dataset by creating new features from the existing ones (and then discarding the original features). These new reduced set of features should then be able to summarize most of the information contained in the original set of features.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "BZ_N4hQZYiQr"
   },
   "source": [
    "X, y = df[df.columns[:-1]].values, df[df.columns[-1]]"
   ],
   "execution_count": 32,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "4CoP81YQ-Now",
    "outputId": "0cd4a564-522b-4378-8e9b-945017aabfc5"
   },
   "source": [
    "titles = []\n",
    "cases = []\n",
    "\n",
    "titles.append(\"SelecKBest Chi2\")\n",
    "cases.append(SelectKBest(chi2,k=5))\n",
    "\n",
    "titles.append(\"SelecKBest Mutual info\")\n",
    "cases.append(SelectKBest(mutual_info_classif,k=10))\n",
    "\n",
    "titles.append(\"SelectPercentile Chi2\")\n",
    "cases.append(SelectPercentile(chi2, percentile=10))\n",
    "\n",
    "titles.append(\"SelectPercentile Mutual info\")\n",
    "cases.append(SelectPercentile(mutual_info_classif, percentile=10))\n",
    "\n",
    "kfold = StratifiedKFold(n_splits=10, random_state=42, shuffle=True)\n",
    "\n",
    "for title, case in zip(titles, cases):\n",
    "    estimators = [(title, case), ('svm', SVC(kernel='linear', C=10, max_iter=80, random_state=42))]\n",
    "    clf = Pipeline(estimators)\n",
    "    scores = cross_val_score(clf, X, y, cv=kfold, scoring=\"f1\")\n",
    "    print(title)\n",
    "    print('Mean =',scores.mean(), 'Standard Deviation =', scores.std())"
   ],
   "execution_count": 20,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "SelecKBest Chi2\n",
      "Mean = 0.5016410853464106 Standard Deviation = 0.30119022569595993\n",
      "SelecKBest Mutual info\n",
      "Mean = 0.5855614374108522 Standard Deviation = 0.2746254124773457\n",
      "SelectPercentile Chi2\n",
      "Mean = 0.5016410853464106 Standard Deviation = 0.30119022569595993\n",
      "SelectPercentile Mutual info\n",
      "Mean = 0.28790384285103954 Standard Deviation = 0.3433342028459363\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "jWjXNuhhgWnQ"
   },
   "source": [
    "### Based on the above mean and Standard deviation of the f1-score, we select `SelecKBest Mutual info` for Feature selection"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "F67jpFlSgjj3"
   },
   "source": [
    "X_pca = SelectKBest(mutual_info_classif,k=10).fit_transform(X, y)"
   ],
   "execution_count": 33,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mK0taA1jawFR"
   },
   "source": [
    "## Train the model\n",
    "\n",
    "We will be choosing Random Forest, SVM and J48 Decision Tree models to train the dataset"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "vExjbtVHaveG"
   },
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "import sklearn.metrics as metrics"
   ],
   "execution_count": 34,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "ZsOM1yiccyqW"
   },
   "source": [
    "def False_Positive(y, y_pred):\n",
    "    cnf_matrix = confusion_matrix(y, y_pred)\n",
    "    FP = cnf_matrix.sum(axis=0) - np.diag(cnf_matrix)  \n",
    "    FN = cnf_matrix.sum(axis=1) - np.diag(cnf_matrix)\n",
    "    TP = np.diag(cnf_matrix)\n",
    "    TN = cnf_matrix.sum() - (FP + FN + TP)\n",
    "    FP = FP.astype(float)\n",
    "    FN = FN.astype(float)\n",
    "    TP = TP.astype(float)\n",
    "    TN = TN.astype(float)\n",
    "    FPR = FP/(FP+TN)\n",
    "    print('False Positive Rate =', FPR)\n",
    "\n",
    "def ROC(X_t, y_t, model):\n",
    "    probs = model.predict_proba(X_t)\n",
    "    preds = probs[:,1]\n",
    "    fpr, tpr, threshold = metrics.roc_curve(y_t, preds)\n",
    "    roc_auc = metrics.auc(fpr, tpr)\n",
    "    plt.title('Receiver Operating Characteristic')\n",
    "    plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\n",
    "    plt.legend(loc = 'lower right')\n",
    "    plt.plot([0, 1], [0, 1],'r--')\n",
    "    plt.xlim([0, 1])\n",
    "    plt.ylim([0, 1])\n",
    "    plt.ylabel('True Positive Rate')\n",
    "    plt.xlabel('False Positive Rate')\n",
    "    plt.show()\n",
    "\n",
    "def execute(model, X_train, X_val, X_test, y_train, y_val, y_test, name, show=1, pr=1):\n",
    "    if pr:\n",
    "        print('Model-name:', name)\n",
    "    model.fit(X_train, y_train)\n",
    "    \n",
    "    y_pred = model.predict(X_val)\n",
    "    \n",
    "    if show:\n",
    "        print('\\nClassification Report Validation\\n')\n",
    "        print(classification_report(y_val, y_pred))\n",
    "    if pr:\n",
    "        False_Positive(y_val, y_pred)\n",
    "        print('\\nAccuracy Validation\\n')\n",
    "        print(metrics.accuracy_score(y_val, y_pred))\n",
    "    if show:\n",
    "        ROC(X_val, y_val, model)\n",
    "\n",
    "    y_pred = model.predict(X_test)\n",
    "    if show:\n",
    "        print('\\nClassification Report Test\\n')\n",
    "        print(classification_report(y_test, y_pred))\n",
    "    if pr:\n",
    "        False_Positive(y_test, y_pred)\n",
    "        print('\\nAccuracy Test\\n')\n",
    "        print(metrics.accuracy_score(y_test, y_pred))\n",
    "    if show:\n",
    "        ROC(X_test, y_test, model)\n",
    "    if pr:\n",
    "        print()\n",
    "    return metrics.accuracy_score(y_test, y_pred)\n",
    "\n",
    "def initialize():\n",
    "    rf = RandomForestClassifier(max_depth=2, random_state=0)\n",
    "    svm = SVC(random_state=0, probability=True)\n",
    "    dt = DecisionTreeClassifier(random_state=0)\n",
    "    return [rf, svm, dt], ['Random Forest', 'SVM', 'J48 Decision Tree']"
   ],
   "execution_count": 35,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ka2apqDTcWHR"
   },
   "source": [
    "## Cross Validation, Improve results and Present results"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "YH8XTeGXcUfF"
   },
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import classification_report\n",
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_pca, y, test_size=0.3, random_state=0)\n",
    "X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=0)"
   ],
   "execution_count": 36,
   "outputs": []
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kQdjADZDccXp"
   },
   "source": [
    "### 1. Holdout method"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "CLvrJZjKioAb",
    "outputId": "be0b5f76-5f88-49dc-b020-1218b1ebe621"
   },
   "source": [
    "print('\\nHold out\\n')\n",
    "models, names = initialize()\n",
    "for model, name in zip(models, names):\n",
    "    _ = execute(model, X_train, X_val, X_test, y_train, y_val, y_test, name)"
   ],
   "execution_count": 37,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Hold out\n",
      "\n",
      "Model-name: Random Forest\n",
      "\n",
      "Classification Report Validation\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      0.87      0.91       356\n",
      "           1       0.88      0.97      0.92       370\n",
      "\n",
      "    accuracy                           0.92       726\n",
      "   macro avg       0.92      0.92      0.92       726\n",
      "weighted avg       0.92      0.92      0.92       726\n",
      "\n",
      "False Positive Rate = [0.02972973 0.13483146]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.918732782369146\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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GYUqvPUW1KsHEyfCP/7hejhZET9jEsbEiRPp2LEjderUoWLFiixatCjP16xfv55q1apxbASXnO+9914aNWr0p8c///nPP627detWqlat+sd8lSpV2Lp16xHrVKpUifT0dBYudLcBjB8/ni1btgCwbt06du7cSdu2bWnatClvvvlmnvEVheT+yrx5M9x8M6SkuLurzzgj6IiMSVh5ffP3y5gxY7j77rsB6NmzJ2PGjKFp06a59g7Kb6+hF154odAxZt//2LFjuffeezlw4AAdOnSguFcWKD09nUWLFvH555+zf/9+WrZsSYsWLf44+/BL8iWKzCJ+F1/sivjNmeOqvVp9JmMSzq+//sr06dNZvnw5IkJGRgYiwuDBg6lYsSI7d+780/qVKlWiVq1abN68md9++y3Ps4p7772XGTNm/On5nj178tBDDx3xXOXKlf84OwBITU2lcuXKf3pty5Yt+fLLLwGYNm0a69atA9wZSMWKFSlbtixly5aldevWLF261PdEgarG1aN06aZaYGvXqp53niqozpxZ8O0YYyKyatWqQPc/bNgw7du37xHPtW7dWr/44gtNS0vTGjVq/BHj999/r9WqVdNdu3apquoDDzygvXv31gMHDqiq6s8//6zvvfdeoeJZsWKFNmzYUNPS0nTDhg1as2ZNTU9P/9N6P/30k6qqpqWlabt27fTzzz9XVXc827Vrp4cOHdLff/9d69evr8uXL//T63M67sBCLeDnbnK0UaSnw6BBrojf8uXwn/9YbyZjksCYMWO4/PLLj3iuW7dujBkzhlKlSvH2229z44030qhRI7p3787IkSMpX748AE899RQnnHAC9erVo0GDBnTu3DmiNotw6tevT48ePahXrx4dO3Zk6NChf1xW6tSpEz/88AMAgwcPpm7dujRs2JAuXbrQrl07AOrWrUvHjh1p2LAhzZo14+abb6ZBgwaFiikSyVHr6aKLYNo0uOIKd0/EX/7iT3DGmCOsXr2aunXrBh1G0snpuBem1lPitlGkpbkb5ooXh7593aNbt6CjMsaYuJOYl57mzHEdrDOL+HXrZknCGGMKKLESxd69cNddbhChtDSwU15jAhdvl7fjnR/HO3ESxRdfQIMG8O9/Q//+sGIFtG8fdFTGJLXSpUuzY8cOSxZRot54FKVLly7S7SZWG8XRR7uqr+ecE3Qkxhhc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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Classification Report Test\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.96      0.86      0.91       727\n",
      "           1       0.89      0.97      0.93       829\n",
      "\n",
      "    accuracy                           0.92      1556\n",
      "   macro avg       0.92      0.92      0.92      1556\n",
      "weighted avg       0.92      0.92      0.92      1556\n",
      "\n",
      "False Positive Rate = [0.03256936 0.13617607]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9190231362467867\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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4Ir4rVoFF14YbEzGmDwbN24c559/PuPGjYv4NY888gg//PADK1euZPHixUyePJl9+/blKY7Vq1czfvx4Vq1axaeffkq/fv04evTocescO3aMnj17Mn78eFauXEnlypUZO3YsAHv37qVfv35MmTKFVatWMXHixDzFEyk79QTw449w550wcaLrtL73XlefyYr4GZNv7r7bXXaUn+rXhxdeCL/O/v37mTNnDjNnzqRTp048/vjj2W73wIEDjBw5kk2bNlGkSBEATjvtNLp165aneD/44AO6d+9OkSJFqFKlClWrVmX+/Pk0b978j3V2795N4cKFqV69OgBt2rThySefpE+fPrzzzjtceeWVVKpUCYBTTz01T/FEKrlbFKrw5ptQqxZ88AH8619uhJMV8TMmYXzwwQe0a9eO6tWrU7ZsWRYtWpTtazZs2EClSpUoFcEp5wEDBlC/fv0/3f7973//ad0dO3ZQsWLFP5YrVKjAjh07jlunXLlypKamsnChuwxg0qRJbNu2DYD169ezZ88eWrZsSaNGjXjjjTeyjS8/JPdX5q1b4aaboHFjd3X12WcHHZExCSu7b/5+GTduHP379wege/fujBs3jkaNGmU5Oiino4aef/75PMeYcf/jx49nwIABHDp0iLZt21LQKwuUmprKokWL+Pzzzzl48CDNmzenWbNmf7Q+/JJ8iSKtiF/79q6I31dfuWqvVp/JmITzyy+/MGPGDFasWIGIcPToUUSEIUOGULZsWfbs2fOn9cuVK0fVqlXZunUrv/32W7atigEDBjBz5sw/Pd69e3ceeOCB4x4rX778H60DgO3bt1O+fPk/vbZ58+Z8+eWXAEyfPp3169cDrgVStmxZSpQoQYkSJbjwwgtZtmyZ74kCVY2rW9GijTTX1q1TveACVVCdNSv32zHGRGT16tWB7n/48OHat2/f4x678MIL9YsvvtCUlBQ988wz/4hx8+bNWqlSJd27d6+qqg4cOFB79eqlhw4dUlXVn376SSdMmJCneFauXKl169bVlJQU3bhxo1apUkVTU1P/tN6PP/6oqqopKSnaqlUr/fzzz1XVHc9WrVrpkSNH9Pfff9fatWvrihUr/vT6zI47sFBz+bmbHH0Uqanw1FOuiN+KFfD66zaayZgkMG7cOK644orjHuvSpQvjxo2jSJEivPXWW/Tu3Zv69evTtWtX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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Model-name: SVM\n",
      "\n",
      "Classification Report Validation\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.93      0.51      0.66       356\n",
      "           1       0.67      0.96      0.79       370\n",
      "\n",
      "    accuracy                           0.74       726\n",
      "   macro avg       0.80      0.74      0.73       726\n",
      "weighted avg       0.80      0.74      0.73       726\n",
      "\n",
      "False Positive Rate = [0.03783784 0.48876404]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.7410468319559229\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Classification Report Test\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.91      0.50      0.64       727\n",
      "           1       0.68      0.95      0.80       829\n",
      "\n",
      "    accuracy                           0.74      1556\n",
      "   macro avg       0.79      0.73      0.72      1556\n",
      "weighted avg       0.79      0.74      0.72      1556\n",
      "\n",
      "False Positive Rate = [0.04583836 0.50206327]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.7410025706940874\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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1w9atYIpU0I3k4r4iUiB0hhFVXTpErqbunYNZTi22SbuiERy0sqVKykuLmb58uVxh1Jj1KtXjyZNmlA7jVMlK1GkasWKMEf1euvB2WfDmWfCCSeoPpNIEsXFxTRo0IDtttsO0/9Kxrk7ixcvpri4mObNm6dtu+p6SsX48dC2LfTvH5aPPz4U8tMfvkhSy5cvp1GjRkoSWWJmNGrUKO0tOCWKZH76CS67DPbZB5YuhRYt4o5IJO8oSWRXJo63up4q8uaboYjf55/DBRfArbfCxhvHHZWISNblZYti4MDSKaUzZtWqMCbxxhuhy0lJQiRvjRgxAjPj448//u2xsWPH0qVLl7XW69WrF8OHDwfCQPw111xDixYtaNu2LXvvvTcvvfRStWO59dZb2WGHHdhpp50YXXINVhmvvfYabdu2pU2bNuy3337Mnj0bgLlz53LwwQfTqlUrDjjgAIqLi6sdTyryMlEMHRp+9uyZ5g2PGBFaDhCK+E2fDh06pHknIpJtw4YNY7/99mPYsGEpv+Zvf/sbX331FdOmTeODDz5gxIgRLF26tFpxzJgxg8cff5zp06fz8ssvc8EFF7B69erfrXf++efz2GOPMWXKFHr27Enfvn0BuPLKKznttNOYOnUqN9xwA9dee2214klV3nY9dewIvXunaWNffw1//jM89VQYtL7iilCfSUX8RNLm0kvDZUfp1KYN3H138nWWLVvGW2+9xZgxYzjqqKO4+eabK93uzz//zKBBg/j888+pW7cuAFtuuSXdu3evVrzPPfccPXr0oG7dujRv3pwddtiB999/n7333nut9cyMH3/8EYAffviBbaJT8GfMmMFdd90FwIEHHsgxxxxTrXhSlXctilmz0vjH5g6PPAItW8Jzz8E//hHOcFIRP5GC8dxzz9GpUyd23HFHGjVqxKRJkyp9zezZs2nWrBkbp9DlfNlll9GmTZvf3W677bbfrbtgwQKaNm3623KTJk1YsGDB79YbPHgwnTt3pkmTJjzyyCNcc801ALRu3ZpnnnkGgGeffZalS5eyePHiSmOsrrz7yvzLL7Dffmnqdpo3L1wTUVQUrq7eeec0bFREylPZN/9MGTZsGJdccgkAPXr0YNiwYey5554Vnh20rmcN/etf/6p2jOVtc9SoUbRv355+/fpx+eWXM3jwYO68804uuugihgwZQocOHWjcuDG1slAyKO8SxQYbwNix1dhASRG/I44IRfzefjtUe1V9JpGC89133/H666/z0UcfYWasXr0aM6Nfv340atSIJUuW/G79zTffnB122IF58+bx448/VtqquOyyyxgzZszvHu/Ro8dvLYESjRs3Zv78+b8tFxcX07hx47XWWbRoER9++CHt27cH4MQTT6RTp04AbLPNNr+1KJYtW8bTTz/NJptskuLRqAZ3z6vbRhvt6VU2a5b7/vu7g/vYsVXfjoikZMaMGbHuf8CAAd67d++1HuvQoYO/8cYbvnz5ct9uu+1+i/GLL77wZs2a+ffff+/u7ldddZX36tXLV6xY4e7u33zzjT/55JPVimfatGneqlUrX758uc+ZM8ebN2/uq1atWmudlStXeqNGjXzWrFnu7j548GA/7rjj3N190aJFvnr1and3v+666/xvf/tbufsp77gDE72Kn7t5N0ZRJatWwe23hyJ+H30E//2vzmYSqQGGDRvGscceu9Zj3bp1Y9iwYdStW5dHH32UM844gzZt2nD88cczePBgGjZsCEDfvn3ZYostaNmyJbvtthtdunRJacwimV133ZXu3bvTsmVLOnXqRP/+/X/rOurcuTNffvkl66+/PoMGDaJbt260bt2aRx55hH79+gHhlN6ddtqJHXfcka+//prrr7++WvGkykKiyR8NGhT50qUT1+1Fhx8Or7wCxx0XronYaqvMBCcia5k5cya77LJL3GHUOOUddzOb5O5FVdle3o1RpGz58nDBXK1a4Tza3r2hW7e4oxIRyTuF2fX09tvhBOuSIn7duilJiIhUUWElimXL4OKLwyRCy5eDmrwiscu37u18l4njXTiJ4o03YLfd4D//gYsugmnT4NBD445KpEarV68eixcvVrLIEo/mo6hXr15at1tYYxQbbhiqvu67b9yRiAjhyuPi4mIWLVoUdyg1RskMd+mU32c9PfMMfPwxXHddWF69WhfOiYiUozpnPWW068nMOpnZLDObbWbXlPN8XTN7Inr+PTPbLqUNL1wYZpnr1g2efRZ+/TU8riQhIpJ2GUsUZlYL6A8cAbQETjKzlmVWOwtY4u47AP8Cbq9suw1XLg6D1C+8EEqCv/OOiviJiGRQJlsU7YDZ7j7H3X8FHge6llmnK/BwdH84cLBVUpFryxVzw6D1hx/CNdeEayVERCRjMjmY3RiY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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Model-name: J48 Decision Tree\n",
      "\n",
      "Classification Report Validation\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      0.96      0.97       356\n",
      "           1       0.96      0.97      0.97       370\n",
      "\n",
      "    accuracy                           0.97       726\n",
      "   macro avg       0.97      0.97      0.97       726\n",
      "weighted avg       0.97      0.97      0.97       726\n",
      "\n",
      "False Positive Rate = [0.02702703 0.03932584]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9669421487603306\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Classification Report Test\n",
      "\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.95      0.95      0.95       727\n",
      "           1       0.96      0.95      0.95       829\n",
      "\n",
      "    accuracy                           0.95      1556\n",
      "   macro avg       0.95      0.95      0.95      1556\n",
      "weighted avg       0.95      0.95      0.95      1556\n",
      "\n",
      "False Positive Rate = [0.04704463 0.04951857]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9517994858611826\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEWCAYAAAB42tAoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZgU1dXA4d8B2QREFmMMexSURTYnICriBgKCYEBEg4qiaHDfItG4EaIxGLcElUWCcYEoiYiKwqeAiMoqyCqKKDAIOo2IINsMc74/brXTjDM9PTNdXb2c93n6ma6u6qrTNTN1+tate0pUFWOMMaY4FYIOwBhjTHKzRGGMMSYqSxTGGGOiskRhjDEmKksUxhhjorJEYYwxJipLFKZURGS1iJwRdBzJQkTuEpEJAW17koiMCmLb8SYivxORWWV8r/1N+swSRQoTka9EZK+I7BaRbd6Bo4af21TVVqo6189thIlIFRF5SEQ2eZ/zcxG5Q0QkEdsvIp4zRCQ78jVVfVBVr/JpeyIiN4rIKhH5UUSyReQVETnRj+2VlYjcLyIvlGcdqvqiqnaPYVs/S46J/JvMVJYoUl8fVa0BtAPaA38MOJ5SE5HDipn1CnA20AuoCVwKDAOe8CEGEZFk+394ArgJuBGoAzQHpgHnxXtDUX4Hvgty2yZGqmqPFH0AXwHnREz/DXgzYvpk4EPge+AT4IyIeXWAfwFfAzuAaRHzegPLvfd9CLQpvE3gV8BeoE7EvPZACKjkTV8JrPXWPxNoHLGsAtcBnwNfFvHZzgb2AQ0Lvd4JOAgc503PBR4CFgE/AK8ViinaPpgL/AX4wPssxwFXeDHvAjYA13jLVveWyQd2e49fAfcDL3jLNPE+1+XAJm9f3B2xvWrAc97+WAv8Acgu5nfbzPucHaP8/icBY4A3vXgXAsdGzH8C2Oztl6VAl4h59wNTgRe8+VcBHYGPvH21FfgnUDniPa2A/wO+A74B7gJ6AAeAXG+ffOItWwt41lvPFmAUUNGbN8Tb548B2715Q4D53nzx5n3rxbYSaI37kpDrbW838Hrh/wOgohfXF94+WUqhvyF7lOFYE3QA9ijHL+/Qf5AG3j/UE950fe+fsBeu5djNmz7Km/8m8B+gNlAJ6Oq93t77B+3k/dNd7m2nShHbnA1cHRHPaOAZ73lfYD3QAjgM+BPwYcSy6h106gDVivhsfwXeK+Zzb6TgAD7XOxC1xh3M/0vBgbukfTAXd0Bv5cVYCfdt/VjvYNUV2AN08JY/g0IHdopOFONxSaEtsB9oEfmZvH3eAFhReH0R670W2FjC73+S93k6evG/CEyJmD8YqOvNuw3YBlSNiDsX6Oftm2rASbjEepj3WdYCN3vL18Qd9G8DqnrTnQrvg4htvwqM9X4nv8Al8vDvbAiQB9zgbasahyaKc3EH+CO930ML4JiIzzwqyv/BHbj/g+O997YF6gb9v5rqj8ADsEc5fnnuH2Q37puTAu8CR3rz7gSeL7T8TNyB/xjcN+PaRazzaeDPhV5bR0EiifynvAqY7T0X3LfX073pt4ChEeuogDvoNvamFTgrymebEHnQKzRvAd43ddzB/q8R81rivnFWjLYPIt47soR9PA24yXt+BrEligYR8xcBg7znG4BzI+ZdVXh9EfPuBhaUENskYELEdC/g0yjL7wDaRsQ9r4T13wy86j2/GFhWzHI/7QNv+mhcgqwW8drFwBzv+RBgU6F1DKEgUZwFfIZLWhWK+MzREsU6oK8f/2+Z/Ei2c7Km9Pqpak3cQewEoJ73emPgQhH5PvwATsMliYbAd6q6o4j1NQZuK/S+hrjTLIX9F+gsIscAp+OSz/sR63kiYh3f4ZJJ/Yj3b47yuUJerEU5xptf1Ho24loG9Yi+D4qMQUR6isgCEfnOW74XBfs0Vtsinu8BwhcY/KrQ9qJ9/u0U//lj2RYicruIrBWRnd5nqcWhn6XwZ28uIm94F0b8ADwYsXxD3OmcWDTG/Q62Ruz3sbiWRZHbjqSqs3GnvcYA34rIOBE5IsZtlyZOEyNLFGlCVd/Dfdt6xHtpM+7b9JERj+qq+ldvXh0RObKIVW0G/lLofYer6uQitrkDmAVcBFyCawFoxHquKbSeaqr6YeQqonykd4BOItIw8kUR6YQ7GMyOeDlymUa4UyqhEvbBz2IQkSq45PcIcLSqHgnMwCW4kuKNxVbcKaei4i7sXaCBiGSVZUMi0gXXBzIQ13I8EthJwWeBn3+ep4FPgWaqegTuXH94+c3Ar4vZXOH1bMa1KOpF7PcjVLVVlPccukLVJ1X1JFwLsTnulFKJ7/O2fWwJy5hSskSRXh4HuolIW1wnZR8ROVdEKopIVe/yzgaquhV3augpEaktIpVE5HRvHeOBa0Wkk3clUHUROU9EahazzZeAy4AB3vOwZ4A/ikgrABGpJSIXxvpBVPUd3MHyvyLSyvsMJ3uf62lV/Txi8cEi0lJEDgdGAlNV9WC0fVDMZisDVYAcIE9EegKRl2x+A9QVkVqxfo5CXsbtk9oiUh+4vrgFvc/3FDDZi7myF/8gERkRw7Zq4voBcoDDROReoKRv5TVxnce7ReQE4PcR894AjhGRm73Llmt6SRvcfmkSvmrM+/uaBfxdRI4QkQoicqyIdI0hbkTkN97fXyXgR9xFDfkR2youYYE7ZflnEWnm/f22EZG6sWzXFM8SRRpR1Rzg38C9qroZ16F8F+5gsRn3rSz8O78U9837U1zn9c3eOpYAV+Oa/jtwHdJDomx2Ou4KnW2q+klELK8CDwNTvNMYq4CepfxI/YE5wNu4vpgXcFfS3FBouedxraltuI7WG70YStoHh1DVXd57X8Z99ku8zxee/ykwGdjgnVIp6nRcNCOBbOBLXItpKu6bd3FupOAUzPe4UyoXAK/HsK2ZuP32Ge503D6in+oCuB33mXfhvjD8JzzD2zfdgD64/fw5cKY3+xXv53YR+dh7fhku8a7B7cupxHYqDVxCG++9byPuNNxob96zQEtv/08r4r2P4n5/s3BJ71lcZ7kpByk4U2BM6hGRubiO1EBGR5eHiPwe19Ed0zdtY4JiLQpjEkREjhGRU71TMcfjLjV9Nei4jCmJb4lCRCaKyLcisqqY+SIiT4rIehFZISId/IrFmCRRGXf1zy5cZ/xruH4IY5Kab6eevM7R3cC/VbV1EfN74c4198IN7npCVTsVXs4YY0ywfGtRqOo83LXzxemLSyKqqguAI73r8Y0xxiSRIItx1efQqzCyvde2Fl5QRIbh6rxQvXr1k0444YSEBGiMMcXJzwdV9zPyeVGvlTS/tO8pzYmgRmzkSL5nBXkhVT2qLJ81Jao2quo4YBxAVlaWLlmyJOCIjDFBUoX9+2HfPv8ee/cWP+/AgfJ/hqpVfXxUUfezmvDLV5+mys5vqf34/RvLGmuQiWILh45MbeC9ZoxJcqruYFnSAdWvx/5oo09iVKVK9INt7druZ7Vq8T+QV64Mvt1VZcsW+P3v4aKL4He/g7beuMnH7y/zKoNMFNOB60VkCq4ze6c3otMYU4LIA3VQj/Iq6UB95JH+feOuXBkqpNvgAFWYMAFuvx1yc+G8+N22xLdEISKTcYXq6om7K9h9uEJhqOozuBo6vXAjf/fg7gNgTEpQdf+L8T6lkcgDdeXK0Q+mRxwBv/hF+Q7IxX0bT8sDdZC++AKuvhrmzIEzz4Tx4+HY+JW88i1RqOrFJcxX3I1rjCm18hyo4/Uo75XllSpFP8DG40Bd3KNKFTtQp5WVK2HpUhg3Dq66Ku7ntVKiM9skH1XIy/P/YBzt27efB+qqVaFGDahXz78DdcWK8fldmAy1ahV8/DFcdhn06wcbNkBdf+ofWqJIYZEH6iA6FPPzS44xmsMOi34wPfxwqFMnPqc67EBt0saBA/Dgg+5x9NEwcKD7o/YpSYAlinJJxDfqaI+DB8sXf4UKhx5YCx9ky3KgLs036sPsr8+Y0lm4EIYOhdWrYfBgeOwx9w/ls4z7V506FTZujM838HgfqIt6+Hnlhx2ojUkhW7ZAly6uFfHGG3G9qqkkGXWo+OYbuDDi1jkiJR+oa9WKz6kOO1AbY8rks8+geXOoXx/+8x84+2x3pUMCZdSh6ttv3c9nn4VLL3UHat8GvRhjTHl8/z384Q9ubMTcuXD66XDBBYGEklGJIifH/fz1r90VL8YYk5SmT3ejq7dtgzvugN/8JtBwMipRhELuZ716wcZhjDHFuuoqd9rjxBPhtdcgKyvoiDIzURxVpvqJxhjjk/CgIBGXGBo3hjvvdEPYk0BGJYrwqac6dYKNwxhjfrJ5M1x7LQwa5DpPr7026Ih+JqMG8YdCriKk9U8YYwKXnw9PPw2tWrnO6niUxPVJxrUorH/CGBO4zz93fRHz5sE557gaTU2bBh1VsTIqUYRC1j9hjEkCa9bAihUwcSIMGZL01+lnVKLIyYEmTYKOwhiTkT75BJYvh8svh759XRG/2rWDjiomGddHYS0KY0xC7d8P99zjrma65x5X/wdSJklABiUKVeujMMYk2EcfQfv2MGoUXHIJLFuWkCJ+8ZYxp5527XI3urEWhTEmIbZsga5d4Ze/hBkzoGfPoCMqs4xpUYTHUFiLwhjjq7Vr3c/69eHll11J8BROEpBBicLKdxhjfLVjB1x5JbRsCe+/717r1w9q1gw2rjjImFNP4RaFnXoyxsTdq6/C8OHuQPPHPwZexC/eMiZRWIvCGOOLK6+Ef/0L2rWDN9+EDh2CjijuMiZRWIvCGBM3kUX8Tj4ZmjWD229P2/pAGZMoQiFXiLFGjaAjMcaktI0b4Zpr3OWul10Gw4YFHZHvMqYzOyfHtSaSfKS8MSZZ5efDmDHQujXMn++ut88QGdWisP4JY0yZrFvnivjNnw/du8PYsRlVDyhjEkW4RWGMMaW2bp0bDzFpkjvdlGGnJjImUYRCGfUFwBhTXsuWuSJ+V1wB55/vivgdeWTQUQUi4/oojDEmqn374K673FiI++8vKOKXoUkCMiRR5ObCzp3WR2GMKcEHH7jxEA895E4xLV+ekkX84i0jTj2FB9tZi8IYU6wtW+DMM12NppkzXae1ATKkRWGjso0xxVqzxv2sXx/++19YudKSRCEZkShsVLYx5me++87dhrRVK3fvaoA+fWxUbhEy6tSTtSiMMYBrOVx3HWzfDnffDR07Bh1RUsuoRGEtCmMMQ4bAc8+54n1vv+06r01UGZEowqee6tQJNg5jTEAii/idcgq0aAG33QaHZcQhsNx87aMQkR4isk5E1ovIiCLmNxKROSKyTERWiEgvP+IIhdx9zNO0sKMxJpovv3Sd0//+t5seNgzuvNOSRCn4lihEpCIwBugJtAQuFpGWhRb7E/CyqrYHBgFP+RFLTo71TxiTcQ4ehCefdEX8FiwoaFWYUvOzRdERWK+qG1T1ADAF6FtoGQWO8J7XAr72I5BQyPonjMkoa9dCly5w003Qtaur0zRkSNBRpSw/E0V9YHPEdLb3WqT7gcEikg3MAG4oakUiMkxElojIkpxwh0MpWIvCmAyzfr0r5Pf88+6uc40aBR1RSgt6HMXFwCRVbQD0Ap4XkZ/FpKrjVDVLVbOOKkPTwFoUxmSApUth4kT3vE8f1zcxeHDGVXr1g5+JYgvQMGK6gfdapKHAywCq+hFQFYjrd39Va1EYk9b27oURI6BTJ/jznwuK+B1xRPT3mZj5mSgWA81EpKmIVMZ1Vk8vtMwm4GwAEWmBSxSlP7cUxa5driigtSiMSUPz5kHbtvDww64PYtkyK+LnA9+uD1PVPBG5HpgJVAQmqupqERkJLFHV6cBtwHgRuQXXsT1ENb6XJoS7NKxFYUya2bIFzj4bGjaEd95xz40vfL2QWFVn4DqpI1+7N+L5GuBUP2Ow8h3GpJmVK+HEE10Rv1dfdRVfq1cPOqq0FnRntu+sIKAxaSIUgksvhTZtCor49e5tSSIB0n5oorUojElxqvDKK3D99bBjB9x3n+u4NgmT9onCWhTGpLjLL3fjIbKy4N133Wknk1BpnyhCIahc2UrMG5NSIov4de3qTjfdfLPVZwpIRvRRHHWUjbkxJmVs2ADnnAOTJrnpoUPh9tstSQQo7RNFKGT9E8akhIMH4fHH3amlxYuhQtofnlJG2qfocIvCGJPE1qyBK6+EhQvhvPPgmWegQYOgozKetE8UoRA0aRJ0FMaYqL78Er74Al56CQYNsnPFSSbtE4W1KIxJUosXw/LlcPXVrhWxYQPUrBl0VKYIaX0SMDcXdu60PgpjksqePa5z+uST4aGHCor4WZJIWmmdKMKD7axFYUySmDvXXer697+7loQV8UsJaX3qyUZlG5NEsrOhWzdo3Bhmz3Y1mkxKSOsWhY3KNiYJfPKJ+9mgAbz2GqxYYUkixaR1orAWhTEBysmBSy6Bdu3gvffca716weGHBxuXKbWMOPVkLQpjEkgVpkyBG290V5M88AB07hx0VKYc0jpRhE891akTbBzGZJRLL4UXX3QVXp99Flq1CjoiU04xJwoROVxV9/gZTLyFQlC7NlSqFHQkxqS5/Hw3SE7E9T+cdJJrUVSsGHRkJg5K7KMQkVNEZA3wqTfdVkSe8j2yOMjJsf4JY3y3fr27Dem//uWmhw6FW26xJJFGYunMfgw4F9gOoKqfAKf7GVS8hELWP2GMb/Ly4JFHXBG/ZctcPX+TlmI69aSqm+XQ2isH/QknvnJyrM6TMb5YtQquuAKWLIG+feGpp+BXvwo6KuOTWFoUm0XkFEBFpJKI3A6s9TmuuLAWhTE+2bQJNm50Vze9+qoliTQXS4viWuAJoD6wBZgFDPczqHhQtT4KY+Jq4UI3eG7YMDceYsMGu3VkhoilRXG8qv5OVY9W1V+o6mCghd+BldeuXa4ooLUojCmnH3+EW291YyH+9jfYv9+9bkkiY8SSKP4R42tJJTyGwloUxpTD7NmuiN9jj8G118LHH0OVKkFHZRKs2FNPItIZOAU4SkRujZh1BJD0171Z+Q5jyik7G849F5o2dSU4Tk+Jix2ND6L1UVQGanjLRBaK/wEY4GdQ8WAFAY0po2XLoH17V8Tv9deha1eoVi3oqEyAik0Uqvoe8J6ITFLVjQmMKS6sRWFMKX3zjRtN/fLL7r4RXbtCjx5BR2WSQCxXPe0RkdFAK+CnO4yo6lm+RRUH1qIwJkaqrjbTTTfB7t0wahScckrQUZkkEktn9ou48h1NgQeAr4DFPsYUF6GQGyhqF2YYU4JLLnGF/I4/3t3D+u67rUCaOUQsLYq6qvqsiNwUcToq6RNFTo5rTRw6oNwYAxxaxK97d3fp63XXWX0mU6RYWhS53s+tInKeiLQHkr5wdyhk/RPGFOmzz1yF14kT3fQVV1ilVxNVLC2KUSJSC7gNN37iCOBmX6OKg3CLwhjjycuDRx+F++6DqlXtSiYTsxIThaq+4T3dCZwJICKn+hlUPIRCVhDQmJ+sWAFXXglLl8IFF8CYMXDMMUFHZVJEtAF3FYGBuBpPb6vqKhHpDdwFVAPaJybEsrEWhTERsrNh82Z45RXo398670ypROujeBa4CqgLPCkiLwCPAH9T1ZiShIj0EJF1IrJeREYUs8xAEVkjIqtF5KXSfoCi5Oa6W/VaH4XJaB9+CM88456Hi/gNGGBJwpRatFNPWUAbVc0XkarANuBYVd0ey4q9FskYoBuQDSwWkemquiZimWbAH4FTVXWHiPyirB8kUniwnbUoTEbavdtd4vqPf8Cxx7rO6ipVoHr1oCMzKSpai+KAquYDqOo+YEOsScLTEVivqhtU9QAwBehbaJmrgTGqusPbzrelWH+xbFS2yVizZkHr1i5JXHedFfEzcRGtRXGCiKzwngtwrDctgKpqmxLWXR/YHDGdDXQqtExzABH5AFdo8H5VfbvwikRkGDAMoFGjRiVs1kZlmwy1eTOcd55rRcybB6edFnREJk1ESxSJuOfEYUAz4AygATBPRE5U1e8jF1LVccA4gKysLC1ppdaiMBll6VI46SRo2BBmzIAuXdzlr8bESbGnnlR1Y7RHDOveAjSMmG7gvRYpG5iuqrmq+iXwGS5xlIu1KExG2LYNLrwQsrJcGXCAbt0sSZi4i2VkdlktBpqJSFMRqQwMAqYXWmYarjWBiNTDnYraUN4Nh1sUdZJ+/LgxZaAKzz0HLVu6MuAPPmhF/IyvYhmZXSaqmici1wMzcf0PE1V1tYiMBJao6nRvXncRWQMcBO4oZYd5kUIhqF3b6pqZNDVokCsFfuqpMGECnHBC0BGZNBdTohCRakAjVV1XmpWr6gxgRqHX7o14rsCt3iNucnKsf8Kkmcgifr16uX6I4cOhgp8nBYxxSvwrE5E+wHLgbW+6nYgUPoWUVEIh658waeTTT91tSJ991k1ffjlcf70lCZMwsfyl3Y8bE/E9gKoux92bImlZi8Kkhdxc1//Qti2sWWM3VzGBianMuKruLPRaiZeoBslaFCblLV8OHTu6Edbnn+8SxaBBQUdlMlQsfRSrReQSoKJXcuNG4EN/wyo7VWtRmDSwbZt7/Pe/8NvfBh2NyXCxtChuwN0vez/wEq7ceNLej2LXLtdit0RhUs78+fDUU+55jx7wxReWJExSiCVRnKCqd6vqb7zHn7zaT0nJBtuZlLNrl+uc7tIFHn8c9u93rx9+eLBxGeOJJVH8XUTWisifRaS17xGVk5XvMCll5kxXxO+pp+Cmm6yIn0lKJSYKVT0Td2e7HGCsiKwUkT/5HlkZWYvCpIzNm6F3b9dymD/ftSbsyiaThGK6EFtVt6nqk8C1uDEV95bwlsBYi8IkNVVYtMg9b9gQ3noLli2zEhwmqcUy4K6FiNwvIiuBf+CueGrge2RlZC0Kk7S2bnW3Ie3UqaCI3znnWBE/k/RiuTx2IvAf4FxV/drneMotFILKla0Fb5KIKkyaBLfeCvv2wcMPuzpNxqSIEhOFqnZORCDxkpPjWhN2W2CTNAYOhKlT3VVNEyZA8+ZBR2RMqRSbKETkZVUd6J1yihyJHesd7gIRCln/hEkCBw+6bysVKkCfPnDWWXDNNVafyaSkaC2Km7yfvRMRSLyEWxTGBGbtWhg6FK64Aq6+Gi67LOiIjCmXaHe42+o9HV7E3e2GJya80rMWhQlMbi6MGgXt2sG6dVCrVtARGRMXsbSDuxXxWs94BxIv1qIwgVi2zN2S9J574IILXKti4MCgozImLqL1Ufwe13L4tYisiJhVE/jA78DKIjcXdu60FoUJwDffuObstGnQt2/Q0RgTV9H6KF4C3gIeAkZEvL5LVb/zNaoyCg+2sxaFSYh582DlSrjuOlfEb/16qFYt6KiMibtop55UVb8CrgN2RTwQkTr+h1Z6NirbJMQPP7jbkHbtCk8+WVDEz5KESVMltSh6A0txl8dGjkxQ4Nc+xlUmNirb+G7GDHeZ69dfuwF0I0daET+T9opNFKra2/uZ1Lc9jWQtCuOrzZtd/8Pxx7sBdJ06BR2RMQkRS62nU0Wkuvd8sIg8KiKN/A+t9KxFYeJOFRYscM8bNoRZs1wpcEsSJoPEcnns08AeEWkL3AZ8ATzva1RlFG5R1EnKHhSTcr7+Gvr1g86dC4r4nXmmKyZmTAaJJVHkqaoCfYF/quoY3CWySScUgtq1oVKloCMxKU3V1WRq2dK1IB55xIr4mYwWS/XYXSLyR+BSoIuIVACS8lCck2P9EyYOBgyA//3PXdU0YQIcd1zQERkTqFhaFBcB+4ErVXUb7l4Uo32NqoxCIeufMGV08CDk57vn/frBM8/A7NmWJIwhtluhbgNeBGqJSG9gn6r+2/fIysBaFKZMVq1yp5aefdZNX3qpVXo1JkIsVz0NBBYBFwIDgYUiMsDvwMrCWhSmVA4cgAcegA4d4IsvXAeXMeZnYumjuBv4jap+CyAiRwHvAFP9DKy0VK1FYUph6VIYMsS1Ji65BB5/3L5lGFOMWBJFhXCS8Gwntr6NhNq1yxUFtERhYrJ9O3z/Pbz+OvROqVuuGJNwsSSKt0VkJjDZm74ImOFfSGVjg+1MiebMcUX8brwRuneHzz+HqlWDjsqYpBdLZ/YdwFigjfcYp6p3+h1YaVn5DlOsnTtd5/RZZ8HTTxcU8bMkYUxMot2PohnwCHAssBK4XVW3JCqw0rIWhSnS66/DtdfCtm1w++2u89qK+BlTKtFaFBOBN4D+uAqy/0hIRGVkLQrzM5s3Q//+ULeuq9c0ejQcfnjQURmTcqL1UdRU1fHe83Ui8nEiAiora1EYwF3+9tFHcMopBUX8TjnF6jMZUw7RWhRVRaS9iHQQkQ5AtULTJRKRHiKyTkTWi8iIKMv1FxEVkazSfoCwUMgdC2rUKOsaTMrLzobzz3eD58JF/M44w5KEMeUUrUWxFXg0YnpbxLQCZ0VbsYhUBMYA3YBsYLGITFfVNYWWqwncBCwsXeiHyslxrQmRkpc1aSY/H8aPhzvugLw8ePRROO20oKMyJm1Eu3HRmeVcd0dgvapuABCRKbgKtGsKLfdn4GHgjvJsLBSy/omM1b8/TJvmrmoaPx5+nXQ3XzQmpfk5cK4+sDliOtt77SfeKayGqvpmtBWJyDARWSIiS3LCnRGFhFsUJkPk5RUU8evf3yWId96xJGGMDwIbYe2VK38UdzOkqFR1nKpmqWrWUcVkA2tRZJAVK9zNhMZ711oMHgxXXWXnHY3xiZ+JYgvQMGK6gfdaWE2gNTBXRL4CTgaml7VD21oUGWD/frjvPjjpJNi40X7hxiRILNVjxbtX9r3edCMR6RjDuhcDzUSkqYhUBgYB08MzVXWnqtZT1Saq2gRYAJyvqktK+yFyc93gW2tRpLHFi12V15Ej4eKLYe1a+O1vg47KmIwQS4viKaAzcLE3vQt3NVNUqpoHXA/MBNYCL6vqahEZKSLnlzHeIoUH29kXzDS2Ywfs3g0zZsC//+0G0RljEiKWooCdVLWDiCwDUNUdXguhRKo6g0IFBFX13mKWPSOWdRbFRmWnqdmzXRG/m25yRfw++8zKbxgTgFhaFLnemAiFn+5Hke9rVKVko7LTzPffw9VXw9lnw9ixBUX8LEkYEz58GsAAABbUSURBVIhYEsWTwKvAL0TkL8B84EFfoyola1Gkkddeg5YtYeJE+MMf3A2GLEEYE6gSTz2p6osishQ4GxCgn6qu9T2yUrAWRZrYtAkuvBBatIDp0yGrzBVdjDFxVGKiEJFGwB7g9cjXVHWTn4GVRrhFUadOsHGYMlCF+fOhSxdo1MgNmjv5ZKvPZEwSiaUz+01c/4QAVYGmwDqglY9xlUooBLVrQ6VKQUdiSmXTJneviLfegrlzoWtXOP30oKMyxhQSy6mnEyOnvbIbw32LqAxycqx/IqXk58Mzz8Cdd7oWxZNPWhE/Y5JYLC2KQ6jqxyLSyY9gyioUsv6JlPLb37pO627dYNw4aNIk6IiMMVHE0kdxa8RkBaAD8LVvEZVBTo4da5JeXh5UqOAeF10EffvCkCFWn8mYFBDL5bE1Ix5VcH0Wff0MqrSsRZHkPvkEOnVyrQdwJTiuuMKShDEpImqLwhtoV1NVb09QPKWman0USWvfPhg1Ch5+2F2S9stfBh2RMaYMik0UInKYquaJyKmJDKi0du1yRQEtUSSZRYvg8svh00/dz0cfteuXjUlR0VoUi3D9EctFZDrwCvBjeKaq/s/n2GJig+2S1A8/wN698PbbcO65QUdjjCmHWK56qgpsx90jOzyeQoGkSBRWviOJzJoFq1fDLbfAOefAunVWfsOYNBAtUfzCu+JpFQUJIkx9jaoUrEWRBHbsgFtvhUmToFUrGD7cJQhLEsakhWhXPVUEaniPmhHPw4+kYC2KgP3vf66I3/PPwx//CEuWWIIwJs1Ea1FsVdWRCYukjKxFEaBNm2DQIGjd2t1QqH37oCMyxvggWosiJS5yD4Vc/bgaSdPGSXOq8N577nmjRu7mQgsXWpIwJo1FSxRnJyyKcsjJca0JG7uVABs3Qs+ecMYZBcnitNOsGqMxaa7YRKGq3yUykLIKhax/wnf5+fDPf7qO6vnz4R//cGXBjTEZodRFAZNNuEVhfNSvH7z+uhsPMXYsNG4cdETGmARK+UQRCllBQF/k5kLFiq6I38UXw4ABcOmldo7PmAwUS1HApGYtCh98/DF07OjuGQEuUVx2mSUJYzJUSieK3FzYudP6KOJm7143FqJjR9i2DRo2DDoiY0wSSOlTT+HBdtaiiIMFC1zxvs8+gyuvhEcecfeXNcZkvLRIFNaiiIMff3RNtP/7P1enyRhjPCmdKGxUdjm9/bYr4nfbbXD22a4keOXKQUdljEkyKd1HYS2KMtq+3Z1m6tkTnnsODhxwr1uSMMYUIaUThbUoSkkVpk51Rfxeegn+9CdYvNgShDEmqpQ+9RRuUdiN02K0aRNccgm0aePuHdG2bdARGWNSQMq3KGrXtlJDUam6wn3gRlTPneuucLIkYYyJUUonCqvzVIIvv4Tu3V1HdbiI3ymnwGEp3ZA0xiRYyicK658owsGD8MQT7j4RCxfC009bET9jTJml9FfLnByr81Skvn3hzTehVy9XhsNGWBtjyiHlWxR26smTm+vKgYMr3vfCC/DGG5YkjDHl5muiEJEeIrJORNaLyIgi5t8qImtEZIWIvCsiMdevVrWCgD9ZsgSystwpJoCLLoLf/c6K+Blj4sK3RCEiFYExQE+gJXCxiLQstNgyIEtV2wBTgb/Fuv5du9yX6IxuUezdC3feCZ06uaxp94kwxvjAzxZFR2C9qm5Q1QPAFKBv5AKqOkdV93iTC4AGsa484wfbffSRu8T1b39zRfzWrIHevYOOyhiThvzszK4PbI6YzgY6RVl+KPBWUTNEZBgwDKBRo0aAle9g717XJ/HOO+7yV2OM8UlSXPUkIoOBLKBrUfNVdRwwDiArK0shQ1sUM2a4In533AFnnQVr19poQ2OM7/w89bQFiLzkpoH32iFE5BzgbuB8Vd0f68ozqkURCsHgwXDeefDiiwVF/CxJGGMSwM9EsRhoJiJNRaQyMAiYHrmAiLQHxuKSxLelWXlGtChUYcoUaNECXn4Z7rsPFi2yIn7GmITy7dSTquaJyPXATKAiMFFVV4vISGCJqk4HRgM1gFfEXcq5SVXPj2X9oZA7Xtao4dMHSAabNrly4G3bwrPPwoknBh2RMSYD+dpHoaozgBmFXrs34nmZb6UWHkORdkMFVOHdd91d5ho3djWafvMbqFgx6MiMMRkqZUdmp+Wo7C++cFcwdetWUMTv5JMtSRhjApWyiSKtRmUfPAiPPupOLS1dCmPHWhE/Y0zSSIrLY8siFEqjgoB9+sBbb7kBc08/DQ1iHndojDG+S9lEkfItigMH3H0hKlSAIUNcIb9Bg9Kw08UYk+pS8tRTbi7s3JnCfRSLFsFJJ8FTT7npgQPh4ostSRhjklJKJorwYLuUa1Hs2QO33QadO8OOHXDssUFHZIwxJUrJU08pOSp7/nw3JmLDBrjmGnj4YahVK+iojDGmRCmZKFJyVHZurrvMdc4cOOOMoKMxxpiYpWSiSJkWxeuvu8J9f/gDnHmmKwV+WErucmNMBkvJPoqkb1Hk5MAll8D558PkyQVF/CxJGGNSUEominCLok6dYOP4GVV46SVXxG/qVBg5EhYutCJ+xpiUlpJfcXNyoHbtJKyyvWkTXHEFtG/vivi1ahV0RMYYU24p26JImv6J/HyYOdM9b9wY3n8fPvjAkoQxJm2kbKJIiv6Jzz93d5rr0QPmzXOvdexoRfyMMWklJRNFTk7ALYq8PBg9Gtq0geXL3WkmK+JnjElTKdlHEQpBVlaAAfTu7U439e3rynD86lcBBmNM8srNzSU7O5t9+/YFHUrGqFq1Kg0aNKBSHDtxUzJRBFIQcP9+13teoQJcdRVceSVceKHVZzImiuzsbGrWrEmTJk0Q+1/xnaqyfft2srOzadq0adzWm3Knng4edIOcE3rqacEC6NABxoxx0wMGuEJ+9odvTFT79u2jbt26liQSRESoW7du3FtwKZco8vLcz4S0KH78EW65BU45BXbtgmbNErBRY9KLJYnE8mN/p9ypp3Ci8L1F8f77rojfl1/C8OHw0ENwxBE+b9QYY5KPtSiibahSJXfv6jFjLEkYk8KmTZuGiPDpp5/+9NrcuXPp3bv3IcsNGTKEqVOnAq4jfsSIETRr1owOHTrQuXNn3nrrrXLH8tBDD3Hcccdx/PHHMzM8BquQ2bNn06FDB1q3bs3ll19Onnfgmzt3LrVq1aJdu3a0a9eOkSNHljueWKRsovClRTFtmms5gCvit3o1nH66DxsyxiTS5MmTOe2005g8eXLM77nnnnvYunUrq1at4uOPP2batGns2rWrXHGsWbOGKVOmsHr1at5++22GDx/OwYMHD1kmPz+fyy+/nClTprBq1SoaN27Mc88999P8Ll26sHz5cpYvX869995brnhilXKnnnJz3c+4tii++QZuuAFeecV1Wt92m6vPZEX8jImbm292w47iqV07ePzx6Mvs3r2b+fPnM2fOHPr06cMDDzxQ4nr37NnD+PHj+fLLL6lSpQoARx99NAMHDixXvK+99hqDBg2iSpUqNG3alOOOO45FixbRuXPnn5bZvn07lStXpnnz5gB069aNhx56iKFDh5Zr2+WRki2KypWhRo04rEwVnn8eWraE116Dv/zFXeFkRfyMSRuvvfYaPXr0oHnz5tStW5elS5eW+J7169fTqFEjjojhlPMtt9zy06mgyMdf//rXny27ZcsWGjZs+NN0gwYN2LJlyyHL1KtXj7y8PJYsWQLA1KlT2bx580/zP/roI9q2bUvPnj1ZvXp1ifHFQ8p9Zc7Lc62JuHTsb9rkxkRkZbnR1SecEIeVGmOKUtI3f79MnjyZm266CYBBgwYxefJkTjrppGKvDirtVUOPPfZYuWMsvP0pU6Zwyy23sH//frp3705FryxQhw4d2LhxIzVq1GDGjBn069ePzz//PK7bL0pKJopy9U+Ei/j17OmK+H3wgav2avWZjEk73333HbNnz2blypWICAcPHkREGD16NHXr1mXHjh0/W75evXocd9xxbNq0iR9++KHEVsUtt9zCnDlzfvb6oEGDGDFixCGv1a9f/5DWQXZ2NvXr1//Zezt37sz7778PwKxZs/jss88ADomlV69eDB8+nFAoRD2/LwNV1ZR6VK9+kp5zjpbNunWqXbqogurcuWVciTEmVmvWrAl0+2PHjtVhw4Yd8trpp5+u7733nu7bt0+bNGnyU4xfffWVNmrUSL///ntVVb3jjjt0yJAhun//flVV/fbbb/Xll18uVzyrVq3SNm3a6L59+3TDhg3atGlTzcvL+9ly33zzjaqq7tu3T8866yx99913VVV169atmp+fr6qqCxcu1IYNG/40Hamo/Q4s0TIed1Oyj6LUyTMvDx5+2BXxW7kS/vUvu5rJmAwwefJkLrjggkNe69+/P5MnT6ZKlSq88MILXHHFFbRr144BAwYwYcIEatWqBcCoUaM46qijaNmyJa1bt6Z3794x9VlE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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5wQTL2NgjYid"
   },
   "source": [
    "Using **Hold out** method, the accuracy and false positive rates (along with other evaluation parameters such as precision, recall and F1-Score) is highest and lowest respectively for `Decision Tree`, thus we conclude that the `Decision Tree` model performs the best obtaining the accuracy of 95% on validation set and 94% on test dataset. We have also plotted the curve showing **ROC plots** and **AUC value**. The AUC value for all the models is above 90% showing that all the models performed extremely well on the dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WfceNq8Cm7x9"
   },
   "source": [
    "### 2. k-fold method\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "gncEm5kHkBL9",
    "outputId": "a51856e6-514e-4a62-b98f-83a632252322"
   },
   "source": [
    "from sklearn.model_selection import KFold\n",
    "\n",
    "kf = KFold()\n",
    "\n",
    "count = 1\n",
    "acc_rf = []\n",
    "acc_svm = []\n",
    "acc_dt = []\n",
    "for train_index, test_index in kf.split(X_pca):\n",
    "    print('\\nk-fold split =',count,'\\n')\n",
    "    count += 1\n",
    "    X_train, X_test = X_pca[train_index], X_pca[test_index]\n",
    "    y_train, y_test = y[train_index], y[test_index]\n",
    "    X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=0)\n",
    "    models, names = initialize()\n",
    "    for model, name in zip(models, names):\n",
    "        acc = execute(model, X_train, X_val, X_test, y_train, y_val, y_test, name, show=0)\n",
    "        if name[0] == 'R':\n",
    "            acc_rf.append(acc)\n",
    "        elif name[0] == 'S':\n",
    "            acc_svm.append(acc)\n",
    "        else:\n",
    "            acc_dt.append(acc)"
   ],
   "execution_count": 38,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "k-fold split = 1 \n",
      "\n",
      "Model-name: Random Forest\n",
      "False Positive Rate = [0.01544402 0.19230769]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9180722891566265\n",
      "False Positive Rate = [       nan 0.22372228]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.7762777242044359\n",
      "\n",
      "Model-name: SVM\n",
      "False Positive Rate = [0.02702703 0.45833333]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.810843373493976\n",
      "False Positive Rate = [       nan 0.50048216]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.49951783992285437\n",
      "\n",
      "Model-name: J48 Decision Tree\n",
      "False Positive Rate = [0.02895753 0.02884615]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9710843373493976\n",
      "False Positive Rate = [       nan 0.05593057]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.944069431051109\n",
      "\n",
      "\n",
      "k-fold split = 2 \n",
      "\n",
      "Model-name: Random Forest\n",
      "False Positive Rate = [0.01737452 0.18589744]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9192771084337349\n",
      "False Positive Rate = [       nan 0.20250723]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.7974927675988428\n",
      "\n",
      "Model-name: SVM\n",
      "False Positive Rate = [0.02702703 0.48717949]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.8\n",
      "False Positive Rate = [       nan 0.50144648]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.49855351976856316\n",
      "\n",
      "Model-name: J48 Decision Tree\n",
      "False Positive Rate = [0.02702703 0.06089744]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9602409638554217\n",
      "False Positive Rate = [       nan 0.06943105]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9305689488910318\n",
      "\n",
      "\n",
      "k-fold split = 3 \n",
      "\n",
      "Model-name: Random Forest\n",
      "False Positive Rate = [0.03439803 0.12056738]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9216867469879518\n",
      "False Positive Rate = [0.02459016 0.13348946]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9305689488910318\n",
      "\n",
      "Model-name: SVM\n",
      "False Positive Rate = [0.03194103 0.50827423]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.7253012048192771\n",
      "False Positive Rate = [0.04098361 0.45901639]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.7868852459016393\n",
      "\n",
      "Model-name: J48 Decision Tree\n",
      "False Positive Rate = [0.03685504 0.03546099]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.963855421686747\n",
      "False Positive Rate = [0.04098361 0.04215457]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9585342333654774\n",
      "\n",
      "\n",
      "k-fold split = 4 \n",
      "\n",
      "Model-name: Random Forest\n",
      "False Positive Rate = [0.11904762 0.08704453]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9\n",
      "False Positive Rate = [0.10414658        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.8958534233365477\n",
      "\n",
      "Model-name: SVM\n",
      "False Positive Rate = [0.02083333 0.5       ]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.6939759036144578\n",
      "False Positive Rate = [0.03953713        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9604628736740598\n",
      "\n",
      "Model-name: J48 Decision Tree\n",
      "False Positive Rate = [0.05654762 0.04048583]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9530120481927711\n",
      "False Positive Rate = [0.05689489        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9431051108968177\n",
      "\n",
      "\n",
      "k-fold split = 5 \n",
      "\n",
      "Model-name: Random Forest\n",
      "False Positive Rate = [0.09815951 0.0952381 ]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9036144578313253\n",
      "False Positive Rate = [0.10328185        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.8967181467181468\n",
      "\n",
      "Model-name: SVM\n",
      "False Positive Rate = [0.02760736 0.50198413]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.6843373493975904\n",
      "False Positive Rate = [0.03861004        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9613899613899614\n",
      "\n",
      "Model-name: J48 Decision Tree\n",
      "False Positive Rate = [0.05214724 0.04365079]\n",
      "\n",
      "Accuracy Validation\n",
      "\n",
      "0.9530120481927711\n",
      "False Positive Rate = [0.05984556        nan]\n",
      "\n",
      "Accuracy Test\n",
      "\n",
      "0.9401544401544402\n",
      "\n"
     ]
    }
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Pz9jjOOeq3t9",
    "outputId": "e14da11e-4062-4b4b-bd2c-44f3c9df6af5"
   },
   "source": [
    "print('\\nMean Random forest accuracy test for 5 splits =', sum(acc_rf)/len(acc_rf), '\\n')\n",
    "print('\\nMean SVM accuracy test for 5 splits =', sum(acc_svm)/len(acc_svm), '\\n')\n",
    "print('\\nMean J48 Decision tree accuracy test for 5 splits =', sum(acc_dt)/len(acc_dt), '\\n')"
   ],
   "execution_count": 39,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Mean Random forest accuracy test for 5 splits = 0.859382202149801 \n",
      "\n",
      "\n",
      "Mean SVM accuracy test for 5 splits = 0.7413618881314157 \n",
      "\n",
      "\n",
      "Mean J48 Decision tree accuracy test for 5 splits = 0.9432864328717752 \n",
      "\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "i75GJORErdMx"
   },
   "source": [
    "Using **k-fold method**, the accuracy and false positive rates is highest and lowest respectively for `Decision Tree`, thus we conclude that the `Decision Tree` model performs the best here obtaining the accuracy of 94% on test dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0Vqv_QNCr5en"
   },
   "source": [
    "### 3. Leave one out"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "id": "3c6hpvU0rP9m"
   },
   "source": [
    "from sklearn.model_selection import LeaveOneOut\n",
    "\n",
    "loo = LeaveOneOut()\n",
    "\n",
    "acc_rf = []\n",
    "acc_svm = []\n",
    "acc_dt = []\n",
    "count = 0\n",
    "for train_index, test_index in loo.split(X_pca):\n",
    "    X_train, X_test = X_pca[train_index], X_pca[test_index]\n",
    "    y_train, y_test = y[train_index], y[test_index]\n",
    "    models, names = initialize()\n",
    "    for model, name in zip(models, names):\n",
    "        model.fit(X_train, y_train)\n",
    "        y_pred = model.predict(X_test)\n",
    "        acc = metrics.accuracy_score(y_test, y_pred)\n",
    "        if name[0] == 'R':\n",
    "            acc_rf.append(acc)\n",
    "        elif name[0] == 'S':\n",
    "            acc_svm.append(acc)\n",
    "        else:\n",
    "            acc_dt.append(acc)\n",
    "    count += 1\n",
    "    if count%100==0:\n",
    "        break"
   ],
   "execution_count": 42,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "mQ00lRkxtnw-",
    "outputId": "c1c7b7c3-410a-42be-e429-f566d5cc3bf0"
   },
   "source": [
    "print('\\nMean Random forest accuracy test =', sum(acc_rf)/len(acc_rf), '\\n')\n",
    "print('\\nMean SVM accuracy test =', sum(acc_svm)/len(acc_svm), '\\n')\n",
    "print('\\nMean J48 Decision tree accuracy test =', sum(acc_dt)/len(acc_dt), '\\n')"
   ],
   "execution_count": 43,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "\n",
      "Mean Random forest accuracy test = 0.9 \n",
      "\n",
      "\n",
      "Mean SVM accuracy test = 0.52 \n",
      "\n",
      "\n",
      "Mean J48 Decision tree accuracy test = 0.98 \n",
      "\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "oDsvvrgHxE0G"
   },
   "source": [
    "Using **leave one out method**, the accuracy is highest for `Decision Tree`, thus we conclude that the `Decision Tree` model performs the best here again obtaining the accuracy of 98%+ on test dataset. So, overall comparing all the 3 cross validation methods, the clear winner is `Decision Tree` model. Just for the sake of information, the worst model was `SVM` and `Random Forest classifier` performed almost on an equal ground with `Decision Tree`."
   ]
  }
 ]
}