{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7644f259",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import metrics\n",
    "import pandas as pd\n",
    "import seaborn as sn\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4e4955d3",
   "metadata": {},
   "outputs": [],
   "source": [
    "C = \"Cat\"\n",
    "F = \"Fish\"\n",
    "\n",
    "# True values\n",
    "y_true = [C, C, C, C, C, C, F, F, F, F, F, F, F, F, F, F]\n",
    "# Predicted values\n",
    "y_pred = [C, C, C, C, F, C, C, C, C, C, C, F, F, C, C, C,]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7a333d39",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[5 1]\n",
      " [8 2]]\n"
     ]
    }
   ],
   "source": [
    "print(metrics.confusion_matrix(y_true, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e7dea59b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "         Cat      0.385     0.833     0.526         6\n",
      "        Fish      0.667     0.200     0.308        10\n",
      "\n",
      "    accuracy                          0.438        16\n",
      "   macro avg      0.526     0.517     0.417        16\n",
      "weighted avg      0.561     0.438     0.390        16\n",
      "\n",
      "0.4375\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "list"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(metrics.classification_report(y_true, y_pred, digits=3))\n",
    "print(metrics.accuracy_score(y_true, y_pred))\n",
    "type(y_true)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2afe2477",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   y_true y_pred\n",
      "0     Cat    Cat\n",
      "1     Cat    Cat\n",
      "2     Cat    Cat\n",
      "3     Cat    Cat\n",
      "4     Cat   Fish\n",
      "5     Cat    Cat\n",
      "6    Fish    Cat\n",
      "7    Fish    Cat\n",
      "8    Fish    Cat\n",
      "9    Fish    Cat\n",
      "10   Fish    Cat\n",
      "11   Fish   Fish\n",
      "12   Fish   Fish\n",
      "13   Fish    Cat\n",
      "14   Fish    Cat\n",
      "15   Fish    Cat\n"
     ]
    }
   ],
   "source": [
    "data = {'y_true': [C, C, C, C, C, C, F, F, F, F, F, F, F, F, F, F],\n",
    "        'y_pred': [C, C, C, C, F, C, C, C, C, C, C, F, F, C, C, C,]}\n",
    "df = pd.DataFrame(data)\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "73ea1d96",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted  Cat  Fish\n",
      "Actual              \n",
      "Cat          5     1\n",
      "Fish         8     2\n"
     ]
    }
   ],
   "source": [
    "confusion_matrix = pd.crosstab(df['y_true'], df['y_pred'], rownames=['Actual'], colnames=['Predicted'])\n",
    "print(confusion_matrix)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "979b506f",
   "metadata": {},
   "outputs": [
    {
     "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": [
    "sn.heatmap(confusion_matrix, annot=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "ff05ac96",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted  Cat  Fish  All\n",
      "Actual                   \n",
      "Cat          5     1    6\n",
      "Fish         8     2   10\n",
      "All         13     3   16\n"
     ]
    },
    {
     "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": [
    "confusion_matrix = pd.crosstab(df['y_true'], df['y_pred'], rownames=['Actual'], colnames=['Predicted'], margins = True)\n",
    "print(confusion_matrix)\n",
    "sn.heatmap(confusion_matrix, annot=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "15286801",
   "metadata": {},
   "outputs": [],
   "source": [
    "H = \"Hen\"\n",
    "\n",
    "# True values\n",
    "y_actual = [C, C, C, C, C, C, F, F, F, F, F, F, F, F, F, F, H, H, H, H, H, H, H, H, H]\n",
    "# Predicted values\n",
    "y_predicted = [C, C, C, C, H, F, C, C, C, C, C, C, H, H, F, F, C, C, C, H, H, H, H, H, H]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d0563070",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[4 1 1]\n",
      " [6 2 2]\n",
      " [3 0 6]]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         Cat      0.308     0.667     0.421         6\n",
      "        Fish      0.667     0.200     0.308        10\n",
      "         Hen      0.667     0.667     0.667         9\n",
      "\n",
      "    accuracy                          0.480        25\n",
      "   macro avg      0.547     0.511     0.465        25\n",
      "weighted avg      0.581     0.480     0.464        25\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(metrics.confusion_matrix(y_true, y_pred))\n",
    "print(metrics.classification_report(y_true, y_pred, digits=3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7a2ac3bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   y_actual y_predicted\n",
      "0       Cat         Cat\n",
      "1       Cat         Cat\n",
      "2       Cat         Cat\n",
      "3       Cat         Cat\n",
      "4       Cat         Hen\n",
      "5       Cat        Fish\n",
      "6      Fish         Cat\n",
      "7      Fish         Cat\n",
      "8      Fish         Cat\n",
      "9      Fish         Cat\n",
      "10     Fish         Cat\n",
      "11     Fish         Cat\n",
      "12     Fish         Hen\n",
      "13     Fish         Hen\n",
      "14     Fish        Fish\n",
      "15     Fish        Fish\n",
      "16      Hen         Cat\n",
      "17      Hen         Cat\n",
      "18      Hen         Cat\n",
      "19      Hen         Hen\n",
      "20      Hen         Hen\n",
      "21      Hen         Hen\n",
      "22      Hen         Hen\n",
      "23      Hen         Hen\n",
      "24      Hen         Hen\n"
     ]
    }
   ],
   "source": [
    "data = {'y_actual': [C, C, C, C, C, C, F, F, F, F, F, F, F, F, F, F, H, H, H, H, H, H, H, H, H],\n",
    "        'y_predicted': [C, C, C, C, H, F, C, C, C, C, C, C, H, H, F, F, C, C, C, H, H, H, H, H, H]}\n",
    "df = pd.DataFrame(data)\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "28913157",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted  Cat  Fish  Hen\n",
      "Actual                   \n",
      "Cat          4     1    1\n",
      "Fish         6     2    2\n",
      "Hen          3     0    6\n"
     ]
    }
   ],
   "source": [
    "confusion_matrix = pd.crosstab(df['y_actual'], df['y_predicted'], rownames=['Actual'], colnames=['Predicted'])\n",
    "print(confusion_matrix)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a0acca2a",
   "metadata": {},
   "outputs": [
    {
     "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": [
    "sn.heatmap(confusion_matrix, annot=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d5ef0e3",
   "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.9.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
