{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CHAPTER 1: Predicting students admission with Logistic Regression\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PART 1 - Data Handling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Importing data with pandas\n",
    "data = pd.read_csv(\"dataset_admissions.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "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>admit</th>\n",
       "      <th>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>380</td>\n",
       "      <td>3.61</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>660</td>\n",
       "      <td>3.67</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>800</td>\n",
       "      <td>4.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>640</td>\n",
       "      <td>3.19</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>520</td>\n",
       "      <td>2.93</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   admit  gre   gpa  rank\n",
       "0      0  380  3.61     3\n",
       "1      1  660  3.67     3\n",
       "2      1  800  4.00     1\n",
       "3      1  640  3.19     4\n",
       "4      0  520  2.93     4"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Showing an overview of our data\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(400, 4)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The shape property returns a tuple representing the dimensionality of the DataFrame  \n",
    "# The format of shape is (rows, columns)\n",
    "data.shape "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "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>admit</th>\n",
       "      <th>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>400.000000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>400.000000</td>\n",
       "      <td>400.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.317500</td>\n",
       "      <td>587.700000</td>\n",
       "      <td>3.389900</td>\n",
       "      <td>2.48500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.466087</td>\n",
       "      <td>115.516536</td>\n",
       "      <td>0.380567</td>\n",
       "      <td>0.94446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>2.260000</td>\n",
       "      <td>1.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>520.000000</td>\n",
       "      <td>3.130000</td>\n",
       "      <td>2.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>580.000000</td>\n",
       "      <td>3.395000</td>\n",
       "      <td>2.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>660.000000</td>\n",
       "      <td>3.670000</td>\n",
       "      <td>3.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>800.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>4.00000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            admit         gre         gpa       rank\n",
       "count  400.000000  400.000000  400.000000  400.00000\n",
       "mean     0.317500  587.700000    3.389900    2.48500\n",
       "std      0.466087  115.516536    0.380567    0.94446\n",
       "min      0.000000  220.000000    2.260000    1.00000\n",
       "25%      0.000000  520.000000    3.130000    2.00000\n",
       "50%      0.000000  580.000000    3.395000    2.00000\n",
       "75%      1.000000  660.000000    3.670000    3.00000\n",
       "max      1.000000  800.000000    4.000000    4.00000"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Pandas describe() is used to view some basic statistical details like percentile, mean, std etc. of a data frame or a series of numeric values. W\n",
    "data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "admit      0.466087\n",
       "gre      115.516536\n",
       "gpa        0.380567\n",
       "rank       0.944460\n",
       "dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.std() # std() is to get the standard deviation   \n",
    "# Standard deviation (S) = square root of the variance\n",
    "# Variance is the average squared deviations from the mean, while standard deviation is the square root of this number. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "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>rank</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>admitted</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>28</td>\n",
       "      <td>97</td>\n",
       "      <td>93</td>\n",
       "      <td>55</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>33</td>\n",
       "      <td>54</td>\n",
       "      <td>28</td>\n",
       "      <td>12</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "rank       1   2   3   4\n",
       "admitted                \n",
       "0         28  97  93  55\n",
       "1         33  54  28  12"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#The pandas crosstab function builds a cross-tabulation table that can show the frequency with which certain groups of data appear.\n",
    "pd.crosstab(data['admit'], data['rank'], rownames = ['admitted'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data.hist(color=\"pink\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "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>rank_1</th>\n",
       "      <th>rank_2</th>\n",
       "      <th>rank_3</th>\n",
       "      <th>rank_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   rank_1  rank_2  rank_3  rank_4\n",
       "0       0       0       1       0\n",
       "1       0       0       1       0\n",
       "2       1       0       0       0\n",
       "3       0       0       0       1\n",
       "4       0       0       0       1"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummy_rank = pd.get_dummies(data['rank'],prefix=\"rank\") # converte a variável categórica (1,2,3,4) para valores binários \n",
    "dummy_rank.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "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>admit</th>\n",
       "      <th>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank_1</th>\n",
       "      <th>rank_2</th>\n",
       "      <th>rank_3</th>\n",
       "      <th>rank_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>380</td>\n",
       "      <td>3.61</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>660</td>\n",
       "      <td>3.67</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>800</td>\n",
       "      <td>4.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>640</td>\n",
       "      <td>3.19</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>520</td>\n",
       "      <td>2.93</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   admit  gre   gpa  rank_1  rank_2  rank_3  rank_4\n",
       "0      0  380  3.61       0       0       1       0\n",
       "1      1  660  3.67       0       0       1       0\n",
       "2      1  800  4.00       1       0       0       0\n",
       "3      1  640  3.19       0       0       0       1\n",
       "4      0  520  2.93       0       0       0       1"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "collumns_to_keep = ['admit','gre','gpa']\n",
    "data = data[collumns_to_keep].join(dummy_rank[['rank_1','rank_2','rank_3','rank_4']])\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "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>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank_1</th>\n",
       "      <th>rank_2</th>\n",
       "      <th>rank_3</th>\n",
       "      <th>rank_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>380</td>\n",
       "      <td>3.61</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>660</td>\n",
       "      <td>3.67</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>800</td>\n",
       "      <td>4.00</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>640</td>\n",
       "      <td>3.19</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>520</td>\n",
       "      <td>2.93</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</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",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>395</th>\n",
       "      <td>620</td>\n",
       "      <td>4.00</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>396</th>\n",
       "      <td>560</td>\n",
       "      <td>3.04</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>397</th>\n",
       "      <td>460</td>\n",
       "      <td>2.63</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>398</th>\n",
       "      <td>700</td>\n",
       "      <td>3.65</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>399</th>\n",
       "      <td>600</td>\n",
       "      <td>3.89</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>400 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     gre   gpa  rank_1  rank_2  rank_3  rank_4\n",
       "0    380  3.61       0       0       1       0\n",
       "1    660  3.67       0       0       1       0\n",
       "2    800  4.00       1       0       0       0\n",
       "3    640  3.19       0       0       0       1\n",
       "4    520  2.93       0       0       0       1\n",
       "..   ...   ...     ...     ...     ...     ...\n",
       "395  620  4.00       0       1       0       0\n",
       "396  560  3.04       0       0       1       0\n",
       "397  460  2.63       0       1       0       0\n",
       "398  700  3.65       0       1       0       0\n",
       "399  600  3.89       0       0       1       0\n",
       "\n",
       "[400 rows x 6 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# defining x and y\n",
    "X = data.drop('admit',axis=1) # In pandas, axis=1 stands for columns / aqui estou dizendo q quero dar o drop na coluna admit\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      0\n",
       "1      1\n",
       "2      1\n",
       "3      1\n",
       "4      0\n",
       "      ..\n",
       "395    0\n",
       "396    0\n",
       "397    0\n",
       "398    0\n",
       "399    0\n",
       "Name: admit, Length: 400, dtype: int64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y = data['admit']\n",
    "Y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PART 2 - Data Analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train,X_test, Y_train,Y_real = train_test_split(X,Y,test_size=0.2) #20% é para teste (x, y) / 80% para treinamento (x e y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# For small datasets, ‘liblinear’ is a good choice, whereas ‘sag’ and ‘saga’ are faster for large ones.\n",
    "log_reg = LogisticRegression(solver = 'liblinear')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(solver='liblinear')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#training the model \n",
    "log_reg.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "#salvando o teste do modelo numa variável \n",
    "y_pred = log_reg.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Observation:\n",
    "\n",
    "Note that one class is dominating the other.  The more is predicting more situations where the result is False. That leads to biases in the model. This model will be biased towards rejecting.  I will do Part 3 anyways, only to see the results. After this I will apply a resampling method and create a new model. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PART 3 - Valuation Analysis: Performance Measurement & K-Fold "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Performance Measurement "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### a) Accuracy  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6875"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Accuracy = true negatives + true positives / true positives + false positives + true negatives + false negatives\n",
    "accuracy = metrics.accuracy_score(Y_real,y_pred)  \n",
    "accuracy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### b) Precision "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Precision = true positive / true positive + false positive\n",
    "precision = metrics.precision_score(Y_real,y_pred)  \n",
    "precision"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### c) Recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.08"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Recall = true positive / true positive + false negative\n",
    "recall = metrics.recall_score(Y_real,y_pred)  \n",
    "recall"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### d) Confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[53,  2],\n",
       "       [23,  2]], dtype=int64)"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "confusion_matrix = metrics.confusion_matrix(Y_real,y_pred)\n",
    "confusion_matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 0,0: 53 => True Negative\n",
    "# 0,1: 0  => False Positive \n",
    "# 1,0: 23 => False Negative \n",
    "# 1,1: 4 =>  True Positive \n",
    "sns.heatmap(confusion_matrix, annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### e) AUC - ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5218181818181818"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc = metrics.roc_auc_score(Y_real, y_pred) # as the documentation explain, the main parameters are: y_true and y_score\n",
    "auc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## K-Fold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7075"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Now using kfold, a model validation technique where it's not using your pre-trained model\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "kf = KFold(n_splits=5,shuffle=True)  \n",
    "cv_r = cross_val_score(log_reg, X, Y, cv=kf)\n",
    "np.mean(cv_r)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CHAPTER 2: Predicting students admission with Logistic Regression, Decision Tree, SVM and Random Forest "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Observation:\n",
    "\n",
    "In Chapter 1, the data has shown that one class dominates the other. In such a case, the model will have a hard time learning from data to predict future classes. Next, I will apply a resampling method and then use Logistic Regression again. After this, I will also use three other algorithms: Decision Tree, SVM and Random Forest. Finally, I will do the Valuation Analisis (Performance Measurement & K-Fold)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " # PART 1 - Data Handling: Resampling   \n",
    "A widely adopted technique for dealing with highly unbalanced datasets is called resampling. There are two main ways to perform random resampling: Undersampling and Oversampling. \n",
    "* Oversampling — Duplicating samples from the minority class. \n",
    "* Undersampling — Deleting samples from the majority class.\n",
    "\n",
    "Random Sampling involves creating a new transformed version of the data with a new class distribution. The goal is to reduce the influence of the data on our ML algorithm. Generally, oversampling is preferable as under sampling can result in the loss of important data.\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import resample"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "admit     127\n",
       "gre       127\n",
       "gpa       127\n",
       "rank_1    127\n",
       "rank_2    127\n",
       "rank_3    127\n",
       "rank_4    127\n",
       "dtype: int64"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Counting how many admissions are in the dataset \n",
    "data[data['admit']==1].count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "admit     273\n",
       "gre       273\n",
       "gpa       273\n",
       "rank_1    273\n",
       "rank_2    273\n",
       "rank_3    273\n",
       "rank_4    273\n",
       "dtype: int64"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Counting how many rejections are in the dataset \n",
    "data[data['admit']==0].count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Creating variables to store the results \n",
    "majority = data[data['admit']==0]\n",
    "minority = data[data['admit']==1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Applying a resampling strategy (Oversampling) to obtain a more balanced data\n",
    "minority_upsample = resample(minority, replace = True, n_samples=273, random_state=123) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "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>admit</th>\n",
       "      <th>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank_1</th>\n",
       "      <th>rank_2</th>\n",
       "      <th>rank_3</th>\n",
       "      <th>rank_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "      <td>546.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>599.010989</td>\n",
       "      <td>3.414835</td>\n",
       "      <td>0.188645</td>\n",
       "      <td>0.384615</td>\n",
       "      <td>0.278388</td>\n",
       "      <td>0.148352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.500459</td>\n",
       "      <td>118.855906</td>\n",
       "      <td>0.394142</td>\n",
       "      <td>0.391585</td>\n",
       "      <td>0.486950</td>\n",
       "      <td>0.448617</td>\n",
       "      <td>0.355774</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>220.000000</td>\n",
       "      <td>2.260000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>520.000000</td>\n",
       "      <td>3.140000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>600.000000</td>\n",
       "      <td>3.445000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>680.000000</td>\n",
       "      <td>3.710000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>800.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            admit         gre         gpa      rank_1      rank_2      rank_3  \\\n",
       "count  546.000000  546.000000  546.000000  546.000000  546.000000  546.000000   \n",
       "mean     0.500000  599.010989    3.414835    0.188645    0.384615    0.278388   \n",
       "std      0.500459  118.855906    0.394142    0.391585    0.486950    0.448617   \n",
       "min      0.000000  220.000000    2.260000    0.000000    0.000000    0.000000   \n",
       "25%      0.000000  520.000000    3.140000    0.000000    0.000000    0.000000   \n",
       "50%      0.500000  600.000000    3.445000    0.000000    0.000000    0.000000   \n",
       "75%      1.000000  680.000000    3.710000    0.000000    1.000000    1.000000   \n",
       "max      1.000000  800.000000    4.000000    1.000000    1.000000    1.000000   \n",
       "\n",
       "           rank_4  \n",
       "count  546.000000  \n",
       "mean     0.148352  \n",
       "std      0.355774  \n",
       "min      0.000000  \n",
       "25%      0.000000  \n",
       "50%      0.000000  \n",
       "75%      0.000000  \n",
       "max      1.000000  "
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_data = pd.concat([majority,minority_upsample])\n",
    "new_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 9 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "new_data.hist(color=\"green\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "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>gre</th>\n",
       "      <th>gpa</th>\n",
       "      <th>rank_1</th>\n",
       "      <th>rank_2</th>\n",
       "      <th>rank_3</th>\n",
       "      <th>rank_4</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>380</td>\n",
       "      <td>3.61</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>520</td>\n",
       "      <td>2.93</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>400</td>\n",
       "      <td>3.08</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>700</td>\n",
       "      <td>3.92</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>800</td>\n",
       "      <td>4.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</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",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>391</th>\n",
       "      <td>660</td>\n",
       "      <td>3.88</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>760</td>\n",
       "      <td>3.00</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>317</th>\n",
       "      <td>780</td>\n",
       "      <td>3.63</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>263</th>\n",
       "      <td>620</td>\n",
       "      <td>3.95</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>277</th>\n",
       "      <td>580</td>\n",
       "      <td>3.58</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>546 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     gre   gpa  rank_1  rank_2  rank_3  rank_4\n",
       "0    380  3.61       0       0       1       0\n",
       "4    520  2.93       0       0       0       1\n",
       "7    400  3.08       0       1       0       0\n",
       "9    700  3.92       0       1       0       0\n",
       "10   800  4.00       0       0       0       1\n",
       "..   ...   ...     ...     ...     ...     ...\n",
       "391  660  3.88       0       1       0       0\n",
       "5    760  3.00       0       1       0       0\n",
       "317  780  3.63       0       0       0       1\n",
       "263  620  3.95       0       0       1       0\n",
       "277  580  3.58       1       0       0       0\n",
       "\n",
       "[546 rows x 6 columns]"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Creating X \n",
    "X = new_data.drop(\"admit\",axis=1)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      0\n",
       "4      0\n",
       "7      0\n",
       "9      0\n",
       "10     0\n",
       "      ..\n",
       "391    1\n",
       "5      1\n",
       "317    1\n",
       "263    1\n",
       "277    1\n",
       "Name: admit, Length: 546, dtype: int64"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Creating Y\n",
    "Y = new_data[\"admit\"]\n",
    "Y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " # PART 2 - Data Analysis\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train,X_test,Y_train,Y_real = train_test_split(X,Y,test_size=0.2) # test size will be 20% and train size will be 80%"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Part 2.1. Logistic Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### LIBLINEAR -- A Library for Large Linear Classification\n",
    "\n",
    "The solvers implemented in the class Logistic Regression are “liblinear”, “newton-cg”, “lbfgs”, “sag” and “saga”. According to Scikit Documentation: The “liblinear” solver was the one used by default for historical reasons before version 0.22. Since then, default use is lbfgs Algorithm.\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(solver='liblinear')"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_model = LogisticRegression(solver='liblinear')\n",
    "lr_model.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0,\n",
       "       0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1,\n",
       "       0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1,\n",
       "       1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = lr_model.predict(X_test)\n",
    "y_pred"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logistic Regression - Performance measurement"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### a) Accuracy    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6454545454545455"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_lg = metrics.accuracy_score(Y_real, y_pred)\n",
    "acc_lg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### b) Precision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7142857142857143"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pre_lg = metrics.precision_score(Y_real, y_pred)\n",
    "pre_lg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### c) Recall  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5833333333333334"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rec_lg = metrics.recall_score(Y_real, y_pred)\n",
    "rec_lg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### d) Confusion matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[36, 14],\n",
       "       [25, 35]], dtype=int64)"
      ]
     },
     "execution_count": 106,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm_lg = metrics.confusion_matrix(Y_real,y_pred)\n",
    "cm_lg"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "sns.heatmap(confusion_matrix, annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### e) AUC - ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6516666666666667"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc_lg = metrics.roc_auc_score(Y_real, y_pred) # as the documentation explain, the main parameters are: y_true and y_score\n",
    "auc_lg"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logistic Regression - KFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6264553794829023"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kf_lg = KFold(n_splits = 5,shuffle=True)\n",
    "cv_lg = cross_val_score(lr_model, X, Y, cv=kf_lg)\n",
    "np.mean(cv_lg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Part 2.2. Decision Tree"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import tree\n",
    "tree_model = tree.DecisionTreeClassifier(max_depth=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeClassifier(max_depth=3)"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tree_model.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Decision Tree - Performance measurement"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### a) Accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6181818181818182"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_dt = tree_model.score(X_test,Y_real) \n",
    "acc_dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " #### b) Precision   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7142857142857143"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pre_dt = metrics.precision_score(Y_real, y_pred)\n",
    "pre_dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### c) Recall   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5833333333333334"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rec_dt = metrics.recall_score(Y_real, y_pred)\n",
    "rec_dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   #### d) Confusion matrix  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[36, 14],\n",
       "       [25, 35]], dtype=int64)"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm_dt = metrics.confusion_matrix(Y_real,y_pred)\n",
    "cm_dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### e) AUC - ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6516666666666667"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc_dt = metrics.roc_auc_score(Y_real, y_pred) # as the documentation explain, the main parameters are: y_true and y_score\n",
    "auc_dt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Decision Tree - KFold"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6390825688073394"
      ]
     },
     "execution_count": 118,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kf_dt = KFold(n_splits = 5,shuffle=True)\n",
    "cv_dt = cross_val_score(tree_model, X, Y, cv=kf_dt)\n",
    "np.mean(cv_dt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Part 2.3. SVM - SVC "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import svm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(kernel='linear')"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_SVC = svm.SVC(kernel=\"linear\")\n",
    "model_SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SVC(kernel='linear')"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_SVC.fit(X_train,Y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,\n",
       "       0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0,\n",
       "       0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1,\n",
       "       0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1,\n",
       "       1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Y_pred = model_SVC.predict(X_test)\n",
    "Y_pred"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SVM - SVC - Performance measurement"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### a) Accuracy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6454545454545455"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_svc = metrics.accuracy_score(Y_pred,Y_real)  \n",
    "acc_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " #### b) Precision   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7142857142857143"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pre_svc = metrics.precision_score(Y_real, y_pred)\n",
    "pre_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### c) Recall   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5833333333333334"
      ]
     },
     "execution_count": 125,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rec_svc = metrics.recall_score(Y_real, y_pred)\n",
    "rec_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   #### d) Confusion matrix  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[36, 14],\n",
       "       [25, 35]], dtype=int64)"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm_svc = metrics.confusion_matrix(Y_real,y_pred)\n",
    "cm_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### e) AUC - ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6516666666666667"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc_svc = metrics.roc_auc_score(Y_real, y_pred) # as the documentation explain, the main parameters are: y_true and y_score\n",
    "auc_svc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SVM-SVC K-Fold\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6242869057547956"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kf_svm = KFold(n_splits = 5,shuffle=True)\n",
    "cv_svm = cross_val_score(model_SVC, X, Y, cv=kf_svm)\n",
    "np.mean(cv_svm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Part 2.4. Random Forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1,\n",
       "       1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0,\n",
       "       1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n",
       "       1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0,\n",
       "       0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_random_forest = RandomForestClassifier().fit(X_train,Y_train)\n",
    "y_pred_random_forest = model_random_forest.predict(X_test)\n",
    "y_pred_random_forest"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Forest - Performance measurement"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " #### a) Accuracy   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8545454545454545"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc_rf = metrics.accuracy_score(Y_real,y_pred_random_forest)   \n",
    "acc_rf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### b) Precision   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8333333333333334"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metrics.precision_score(Y_real, y_pred_random_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### c) Recall    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9166666666666666"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metrics.recall_score(Y_real, y_pred_random_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  #### d) Confusion matrix   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8483333333333333"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metrics.roc_auc_score(Y_real, y_pred_random_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " #### e) AUC - ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[39, 11],\n",
       "       [ 5, 55]], dtype=int64)"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "metrics.confusion_matrix(Y_real,y_pred_random_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random Forest K-Fold\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6081401167639701"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kf_rf = KFold(n_splits = 5,shuffle=True)\n",
    "cv_rf = cross_val_score(model_SVC, X, Y, cv=kf_rf)\n",
    "np.mean(cv_rf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PART 3 - Valuation Analysis: Performance Measurement & K-Fold \n",
    "\n",
    "\n",
    "In Part 2 I did the performance measurement and K-fold of each ML model. Now I'll compare the accuracy of the different models (Accuracy comparison graph)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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+moA5s+fT0xMDDExMTRt2pSDBw8yZMgQFixYQExMDOPHj083/6FDh+jVqxeNGzcmOjqaDz74IMvY2rZty44dOwA4fPgwt99+O61ataJp06Z8/PHHACQlJXHLLbfQoEEDbrjhBlq3bu17zHXJkiUZMGAATZo0IT4+nrfffptWrVoRExPD//73P1JSUkhJSaFnz540atSIxo0bM378eAAmTZpEgwYNiI6OpmvXrgBMmzaN3r17A04idOmllxIdHU3Hjh3Z6p4u9ezZkz59+hAbG0vt2rWZOXNm7nxQxuRTDz+8D+cQejFwMwBRUTBqlJdRmZwo8AkC0ArYqKqbVPU4MB24LmAeBUq7r8sAv+dhfBn9uQc2bIFjx53hY8ed4bOQJPznP/9hzJgxJCYm0rhxY4YPHw5Ar169ePnll0lISCAyMjLosmPHjuX5558nISGBBQsWULx4cUaPHk379u1JSEigX79+6eYfMWIEZcqUYdWqVSQmJnLppZdmGdsXX3zB9ddfD8CoUaO49NJLWbx4Md9++y0DBw7k8OHDvPDCC5QrV461a9cyYsQIli1b5lv+8OHDtG7dmpUrV1KhQgVmzJjBjz/+6CtTXFwcCQkJ7Nixg9WrV7Nq1Sp69eoFwOjRo1mxYgWJiYm89FLGiqP777+fHj16kJiYSLdu3dJdRtm5cyc//PADn376qdU4mLC3Zs0wRPZRufJERIQaNWDKFGugGAosQYDzgW1+w9vdcf6GAf8Wke3AHOB+v2m13EsP80WkfWYbEZG7RGSpiCzdtWvXmUX82w5ITU0/LjXVGZ+LDhw4wP79+7n44osB6NGjB99//z379+/n4MGDtG3bFoDbbrst6PLt2rWjf//+TJo0if3791OoUNY3zcydO5f77rvPN1yuXLmg83Xr1o1atWoxatQo3/xfffUVo0ePJiYmhg4dOnD06FG2bt3KDz/84DvDb9SoEdHR0b71REZGctNNNwEwb948li1bRsuWLYmJiWHevHls2rSJ2rVrs2nTJu6//36++OILSpd28sTo6Gi6devG22+/HbRc8fHxvvele/fu/PDDD75p119/PRERETRo0IA///wzy/fEmFC2du1ann/+ef73v7v4/fcmpKbC5s2WHIQKSxBy5lZgmqpWBa4C3hKRCGAnUN299NAfeEdESgdbgapOUdUWqtqiUqUz7LE0reYgp+M9MmTIEF599VWOHDlCu3btWLduXa6sNy4ujk2bNtGjRw/uv9/J1VSVDz74gISEBBISEti6dSv169fPcj3FihXz1X6oKj169PAtv379eoYNG0a5cuVYuXIlHTp04KWXXuK///0vAJ999hn33Xcfy5cvp2XLlpw4cSLH8RctWtT3WlVPtfjGhARV5YEHHqBUqVKMGDHC63DMabAEAXYA1fyGq7rj/N0BvAegqvFAMaCiqh5T1T3u+GXAr0Ddsx5x0SKnNv40lSlThnLlyrFgwQIA3nrrLS6++GLKli1LqVKlWLRoEQDTp08Puvyvv/5K48aNGTx4MC1btmTdunWUKlWKgwcPBp3/8ssv5/nnn/cNp7V3CEZEGDFiBAsXLmTdunV07tyZyZMn+35wV6xYATi1GO+99x7gnM2sWrUq6Po6duzIzJkz+euvvwDYu3cvW7ZsYffu3aSmpnLTTTcxcuRIli9fTmpqKtu2beOSSy5hzJgxHDhwgEOHDqVbX2xsrO99iYuLo337TCuXjAlLn3zyCV9//TXDhw+nYsWKXodjToM9KAmWAHVEpBZOYtAVCKwz3wp0BKaJSH2cBGGXiFQC9qpqiojUBuoAm856xLXOd9oc+F9miIhwxp+BpKQkqlat6hvu378/b7zxBnfffTdJSUnUrl2bqVOnAvDaa69x5513EhERwcUXX0yZMmUyrG/ChAl8++23RERE0LBhQ6688koiIiKIjIykSZMm9OzZk6ZNm/rmf+SRR7jvvvto1KgRkZGRPP7449x4442Zxlu8eHEGDBjAM888w3PPPccDDzxAdHQ0qamp1KpVi08//ZR7772XHj160KBBAy666CIaNmwYNNYGDRowcuRIOnXqRGpqKoULF+b555+nePHi9OrVi1T3vX7qqadISUnh3//+NwcOHEBV6dOnD2XLlk23vsmTJ9OrVy+eeeYZKlWq5HvfjCkIjh07Rv/+/WnQoAH33HOP1+GY0yRWxQnubYsTgEjgdVUdJSJPAEtVdbZ7V8MrQEmcBouDVPUrEbkJeAJIBlKBx1X1k+y216JFC01rSZ/m559/zrZKPJ0/9zhtDo4dd2oOap0P51bI+fJn6NChQ77nJowePZqdO3cyceLEPNt+TqWkpJCcnEyxYsX49ddfueyyy1i/fj1FiuRubUtuOuV9wZh8ZsyYMQwZMoSvvvqKyy+/PFfWKSLLVLVFrqzM5IjVIACqOgen8aH/uMf8Xq8F2gVZ7gMg63vxzpZzK+RpQhDos88+46mnnuLEiRPUqFGDadOmeRZLVpKSkrjkkktITk5GVXnhhRfydXJgTKjbuXMnI0eO5Nprr8215MB4wxIEc1q6dOlCly5dvA4jW6VKlSKwtsYYc/Y89NBDHD9+nHHjxnkdijlD1kjRGGNMrli0aBFvvPEG/fr148ILL/Q6HHOGLEEwxhhzxlJTU+nbty/nnXceQ60nprBglxiMMcacsbfffptFixYxbdo0SpUq5XU4JhdYDYIxxpgzktbPSqtWrejevbvX4ZhcYgmC8YmMjCQmJoaGDRvSpEkTxo0b57v//1Q99thjzJ07N9PpL730Em+++ebphgrAqlWrfJ1BlS9fnlq1ahETE8Nll112Rus1xpyaJ598kp07dzJp0iQiIuxnJVzYcxA8kCvPQTgLSpYs6Xsi4F9//cVtt91Gu3btfB005Wc9e/bk6quv5uabb043/sSJE9n2AZHf5Id9wZic2rhxIw0bNqRr16688cYbZ2079hyEvGepXoiKWxVHzQk1iRgeQc0JNYlbFZer6z/nnHOYMmUKzz33HKpKSkoKAwcOpGXLlkRHR/Pyyy/75h0zZgyNGzemSZMmvt4Je/bs6evKeMiQIb6ukR988EEAhg0bxtixY4HMu5Tu0KEDgwcPplWrVtStW9f3yOfsdOjQgQceeIAWLVowceJEli1bxsUXX0zz5s3p3LkzO3fuBJxHQV9xxRU0b96c9u3b51pfEcYUJA8++CBFihRh9OjRXodicllonVoZwEkO7vrkLpKSkwDYcmALd31yFwDdGudeN2m1a9cmJSWFv/76i48//pgyZcqwZMkSjh07Rrt27ejUqRPr1q3j448/ZtGiRURFRbF3795069izZw8fffQR69atQ0TYv39/hu385z//YfLkyVx88cU89thjDB8+nAkTJgBODcDixYuZM2cOw4cPz/Kyhb/jx4+zdOlSkpOTufjii/n444+pVKkSM2bMYOjQobz++uvcddddvPTSS9SpU4dFixZx77338s0335zp22ZMgfH111/z8ccf89RTT1G5cmWvwzG5zBKEEDR03lBfcpAmKTmJofOG5mqC4O+rr74iMTHRVytw4MABfvnlF+bOnUuvXr2IiooCoHz5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9cSJE3rzzTfr559/rqqqBw4c0OTkZFVV/frrr/XGG29UVdWpU6dqrVq1dP/+/XrkyBGtXr26bt26VX///XetVq2a/vXXX3rs2DGNjY3V++67T1VVr776ap02bZqqqr722mt63XXXqapqjx49tEuXLpqamqqzZs3SUqVKaWJioqakpGizZs10xYoVGeK9+OKLtW7dutqkSRNt0qSJ7t69W3v37q3Dhg1TVdV58+ZpkyZNVFX18ccf12bNmmlSUpKqqt566626YMECVVXdsmWLXnTRRb74fvjhB1VVPXjwoCYnJ+u3336r//znP8/szT0Fp7IvGHO6brzxRo2KitJt27Z5HUqOAEs1H/xmFKS/At9IEVgC1BGRWsAOnEaHtwXMsxXoCEwTkfpAMWAXMBt4R0SexWmkWAdYfLYDzqq35zN5uOKRI0eIiYlhx44d1K9fn8svvxyAAwcO0KNHD3755RdEhOTkZN8yHTt29DVsatCgAVu2bGH37t106NCBtJqSLl26sGHDBgDi4+P58MMPAejevXu6WodrrrkGEaFx48ace+65NG7cGHB6dNy8eTMxMTEZYo6Li6NFi5NPX/3hhx/44IMPALj00kvZs2cPf//9NwDXXnstxYsXB2Du3LmsXXuyHerff//NoUOHaNeuHf3796dbt27ceOONQTunMibUffPNN3z44YeMHDnS9nGTqQJ/iUFVTwC9cc7+f8a5W2GNiDwhIte6sw0A7hSRlcC7QE83qV0DvAesBb4A7tM8uIPhLPX27GuDsGXLFlTV1wbh0Ucf5ZJLLmH16tV88sknHD161LdM0aJFfa8jIyNP+fq+v7R1RUREpFtvRETEGa03TYkSJXyvU1NTWbhwoa/9wo4dOyhZsiRDhgzh1Vdf5ciRI7Rr145169ad8XaNyU9OnDhB3759qVmzJv379/c6HJOPFfgEAUBV56hqXVW9QFVHueMeU9XZ7uu1qtpOVZuoaoyqfuW37Ch3uXqq+nlexHsWentOJyoqikmTJjFu3DhOnDjBgQMHOP98p+3ltGnTsl2+devWzJ8/nz179pCcnMz777/vmxYbG8v06dMB5+y/ffv2uRO0q3379sS5DTK+++47KlasSOnSpTPM16lTp3S9UyYkJADw66+/0rhxYwYPHkzLli1Zt24dpUqV4uDBg7kapzFemTJlCqtXr2bcuHG+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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Accuracy Comparison Graph\")\n",
    "\n",
    "plt.ylabel(\"Accuracy Score\")\n",
    "\n",
    "plt.xlabel(\"Machine Learning Algorithms - 1.Logistic Regression / 2.Decision Tree / 3.SVM-SCV / 4.Random Forest\")\n",
    "\n",
    "x = [acc_lg,acc_dt,acc_svc,acc_rf]\n",
    "\n",
    "plt.plot([1,2,3,4],x, color = \"black\")\n",
    "\n",
    "plt.scatter(1,acc_lg, marker=\"o\", color=\"pink\", label=\"Logistic Regression\")\n",
    "\n",
    "plt.scatter(2,acc_dt, marker=\"o\", color=\"green\", label=\"Decision Tree\")\n",
    "\n",
    "plt.scatter(3,acc_svc, marker=\"o\", color=\"red\", label=\"SVM-SVC\")\n",
    "\n",
    "plt.scatter(4,acc_rf, marker=\"o\", color = \"blue\",label = \"Random Forest\")\n",
    "\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}