{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1abbf44e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "52024597",
   "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>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width species\n",
       "0           5.1          3.5           1.4          0.2  setosa\n",
       "1           4.9          3.0           1.4          0.2  setosa\n",
       "2           4.7          3.2           1.3          0.2  setosa\n",
       "3           4.6          3.1           1.5          0.2  setosa\n",
       "4           5.0          3.6           1.4          0.2  setosa"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('iris.csv')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "53f85ec3",
   "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>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width species\n",
       "0           5.1          3.5           1.4          0.2  setosa\n",
       "1           4.9          3.0           1.4          0.2  setosa\n",
       "2           4.7          3.2           1.3          0.2  setosa\n",
       "3           4.6          3.1           1.5          0.2  setosa\n",
       "4           5.0          3.6           1.4          0.2  setosa"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "70f12208",
   "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>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>145</th>\n",
       "      <td>6.7</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>2.3</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146</th>\n",
       "      <td>6.3</td>\n",
       "      <td>2.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>147</th>\n",
       "      <td>6.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>6.2</td>\n",
       "      <td>3.4</td>\n",
       "      <td>5.4</td>\n",
       "      <td>2.3</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>149</th>\n",
       "      <td>5.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>1.8</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal_length  sepal_width  petal_length  petal_width    species\n",
       "145           6.7          3.0           5.2          2.3  virginica\n",
       "146           6.3          2.5           5.0          1.9  virginica\n",
       "147           6.5          3.0           5.2          2.0  virginica\n",
       "148           6.2          3.4           5.4          2.3  virginica\n",
       "149           5.9          3.0           5.1          1.8  virginica"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d18c5f2d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 150 entries, 0 to 149\n",
      "Data columns (total 5 columns):\n",
      " #   Column        Non-Null Count  Dtype  \n",
      "---  ------        --------------  -----  \n",
      " 0   sepal_length  150 non-null    float64\n",
      " 1   sepal_width   150 non-null    float64\n",
      " 2   petal_length  150 non-null    float64\n",
      " 3   petal_width   150 non-null    float64\n",
      " 4   species       150 non-null    object \n",
      "dtypes: float64(4), object(1)\n",
      "memory usage: 6.0+ KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "98ac41d7",
   "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>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>5.843333</td>\n",
       "      <td>3.057333</td>\n",
       "      <td>3.758000</td>\n",
       "      <td>1.199333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.828066</td>\n",
       "      <td>0.435866</td>\n",
       "      <td>1.765298</td>\n",
       "      <td>0.762238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>4.300000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.800000</td>\n",
       "      <td>1.600000</td>\n",
       "      <td>0.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.800000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>1.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.400000</td>\n",
       "      <td>3.300000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>1.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>7.900000</td>\n",
       "      <td>4.400000</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sepal_length  sepal_width  petal_length  petal_width\n",
       "count    150.000000   150.000000    150.000000   150.000000\n",
       "mean       5.843333     3.057333      3.758000     1.199333\n",
       "std        0.828066     0.435866      1.765298     0.762238\n",
       "min        4.300000     2.000000      1.000000     0.100000\n",
       "25%        5.100000     2.800000      1.600000     0.300000\n",
       "50%        5.800000     3.000000      4.350000     1.300000\n",
       "75%        6.400000     3.300000      5.100000     1.800000\n",
       "max        7.900000     4.400000      6.900000     2.500000"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d9210c7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150, 5)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "88829673",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sepal_length    0\n",
       "sepal_width     0\n",
       "petal_length    0\n",
       "petal_width     0\n",
       "species         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a10e5824",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     sepal_length  sepal_width  petal_length  petal_width\n",
      "0             5.1          3.5           1.4          0.2\n",
      "1             4.9          3.0           1.4          0.2\n",
      "2             4.7          3.2           1.3          0.2\n",
      "3             4.6          3.1           1.5          0.2\n",
      "4             5.0          3.6           1.4          0.2\n",
      "..            ...          ...           ...          ...\n",
      "145           6.7          3.0           5.2          2.3\n",
      "146           6.3          2.5           5.0          1.9\n",
      "147           6.5          3.0           5.2          2.0\n",
      "148           6.2          3.4           5.4          2.3\n",
      "149           5.9          3.0           5.1          1.8\n",
      "\n",
      "[150 rows x 4 columns]\n",
      "       species\n",
      "0       setosa\n",
      "1       setosa\n",
      "2       setosa\n",
      "3       setosa\n",
      "4       setosa\n",
      "..         ...\n",
      "145  virginica\n",
      "146  virginica\n",
      "147  virginica\n",
      "148  virginica\n",
      "149  virginica\n",
      "\n",
      "[150 rows x 1 columns]\n",
      "(150, 4)\n",
      "(150, 1)\n"
     ]
    }
   ],
   "source": [
    "X = df.drop(['species'], axis=1)\n",
    "y = df.drop(['sepal_length',  'sepal_width',  'petal_length',  'petal_width'], axis=1)\n",
    "print(X)\n",
    "print(y)\n",
    "print(X.shape)\n",
    "print(y.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d6b1618f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(120, 4)\n",
      "(30, 4)\n",
      "(120, 1)\n",
      "(30, 1)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=True)\n",
    "print(X_train.shape)\n",
    "print(X_test.shape)\n",
    "print(y_train.shape)\n",
    "print(y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "37eed9ea",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\HP\\.conda\\anakonda\\Lib\\site-packages\\sklearn\\utils\\validation.py:1184: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GaussianNB()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GaussianNB</label><div class=\"sk-toggleable__content\"><pre>GaussianNB()</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "GaussianNB()"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.naive_bayes import GaussianNB\n",
    "model = GaussianNB()\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "14bdfbf4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9666666666666667"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = model.predict(X_test)\n",
    "model.score(X_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "85b8d699",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9666666666666667\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import accuracy_score, confusion_matrix, ConfusionMatrixDisplay\n",
    "print(accuracy_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a79e5b8f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion matrix:\n",
      "[[12  0  0]\n",
      " [ 0  9  1]\n",
      " [ 0  0  8]]\n"
     ]
    }
   ],
   "source": [
    "cm = confusion_matrix(y_test, y_pred)\n",
    "disp = ConfusionMatrixDisplay(confusion_matrix = cm)\n",
    "print(\"Confusion matrix:\")\n",
    "print(cm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "0724221a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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G7366quSpOeee05TpkzRzJkztXfvXs2aNUuPPfaYli9fLkkqKSnRgAED1L59e+Xk5Gj69On6wx/+4Pe/SVRUlObNm6dPP/1Uy5cv1zvvvKOHH37Y5zOlpaWaOXOmli9frvfff1/FxcUaOnRo5ftvvvmmbr/9do0fP1579uzR4sWLtWzZssofKwCCzAAi0IgRI4xBgwZVvv7oo4+MRo0aGbfddpthGIYxbdo0IzY21igoKKj8zNtvv224XC6jrKzM51wXXHCBsXjxYsMwDKNPnz7GmDFjfN7v3bu30bVr12q/u7i42HA6ncZzzz1XbZy5ubmGJGPHjh0++9PT040VK1b47HviiSeMPn36GIZhGIsXLzZSUlKMkpKSyvcXLlxY7bl+rHXr1sbTTz993vdfeeUVo1GjRpWvly5dakgytmzZUrlv7969hiTjo48+MgzDMK666ipj1qxZPud5/vnnjebNm1e+lmSsWrXqvN8LoPYYI0fEev3111W/fn253W5VVFRo0KBBevbZZyvfb926tZo0aVL5OicnRydPnlSjRo18znPq1Cl9/vnnkqS9e/dWWf+9T58+2rBhQ7Ux7N27V+Xl5bruuutqHHdhYaHy8vI0atQo3X333ZX73W535fj73r171bVrV9WrV88nDn9t2LBBs2bN0p49e1RcXCy3262ysjKVlJQoMTFRkhQTE6OePXtWHtOhQwc1aNBAe/fu1aWXXqqcnBxt27bNpwL3eDwqKytTaWmpT4wAAo9Ejoh17bXXauHChYqNjVVaWlqVyWxnE9VZXq9XzZs318aNG6ucq7a3YCUkJPh9jNfrlXSmvd67d2+f96KjoyVJRgBWHz548KBuuukmjRkzRk888YRSUlL03nvvadSoUT5DEFL1a2af3ef1ejVjxgzdcsstVT4THx9vOk4AP41EjoiVmJioCy+8sMaf7969u/Lz8xUTE6M2bdpU+5mOHTtqy5YtuuOOOyr3bdmy5bznbNeunRISEvT2229r9OjRVd6Pi4uTdKaCPatp06Zq0aKFvvjiCw0fPrza81588cV6/vnnderUqcofCz8VR3Wys7Pldrv1l7/8RVFRZ6bLvPLKK1U+53a7lZ2drUsvvVSStG/fPh0/flwdOnSQdObfbd++fX79WwMIHBI58L3rr79effr00eDBgzV79my1b99ehw8f1tq1azV48GD17NlTDzzwgEaMGKGePXvqyiuv1Isvvqjdu3erbdu21Z4zPj5ekyZN0sMPP6y4uDhdccUVKiws1O7duzVq1CilpqYqISFB69atU8uWLRUfH6/k5GRNnz5d48ePl8vlUv/+/VVeXq7s7GwdO3ZMEydO1LBhwzRlyhSNGjVKjz76qL788kv9+c9/9uvvveCCC+R2u/Xss89q4MCBev/997Vo0aIqn4uNjdX999+vefPmKTY2Vvfdd58uu+yyysQ+depUDRgwQOnp6br11lsVFRWlXbt26ZNPPtGTTz7p/4UA4BdmrQPfczgcWrt2ra6++mrddddduuiiizR06FB9+eWXlbPMhwwZoqlTp2rSpEnq0aOHDh48qHvvvfcnz/vYY4/p97//vaZOnaqOHTtqyJAhKigokHRm/HnevHlavHix0tLSNGjQIEnS6NGj9be//U3Lli1Tly5ddM0112jZsmWVt6vVr19f//73v7Vnzx5lZmZqypQpmj17tl9/b7du3TRnzhzNnj1bnTt31osvvqisrKwqn6tXr54mTZqkYcOGqU+fPkpISNDLL79c+f6NN96o119/XevXr1evXr102WWXac6cOWrdurVf8QCoHYcRiME2AAAQElTkAABYGIkcAAALI5EDAGBhJHIAACyMRA4AgIWRyAEAsDASOQAAFkYiBwDAwkjkAABYGIkcAAALI5EDAGBhJHIAACzs/wMcVGs1ik7/BgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "disp.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "9f362cb9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TP:  12\n",
      "FP:  0\n",
      "FN:  0\n",
      "TN:  9\n"
     ]
    }
   ],
   "source": [
    "def get_confusion_matrix_values(y_true, y_pred):\n",
    "    cm = confusion_matrix(y_true, y_pred)\n",
    "    return(cm[0][0], cm[0][1], cm[1][0], cm[1][1])\n",
    "\n",
    "TP, FP, FN, TN = get_confusion_matrix_values(y_test, y_pred)\n",
    "print(\"TP: \", TP)\n",
    "print(\"FP: \", FP)\n",
    "print(\"FN: \", FN)\n",
    "print(\"TN: \", TN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "57f531ad",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TP:  12\n",
      "FP:  0\n",
      "FN:  0\n",
      "TN:  9\n"
     ]
    }
   ],
   "source": [
    "\n",
    "TP, FP, FN, TN = get_confusion_matrix_values(y_test, y_pred)\n",
    "print(\"TP: \", TP)\n",
    "print(\"FP: \", FP)\n",
    "print(\"FN: \", FN)\n",
    "print(\"TN: \", TN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2addd4e9",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
