{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "38b3b8f6",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# 1. We need to include all of these packages to make sure \n",
    "# that all of the things we can to use can be.\n",
    "from sklearn import neighbors, datasets\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn import metrics\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "# We then need to load in the datasets \n",
    "mnistTrain = pd.read_csv('fashion-mnist_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "976c52dc",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   label  pixel1  pixel2  pixel3  pixel4  pixel5  pixel6  pixel7  pixel8  \\\n",
      "0      2       0       0       0       0       0       0       0       0   \n",
      "1      9       0       0       0       0       0       0       0       0   \n",
      "2      6       0       0       0       0       0       0       0       5   \n",
      "3      0       0       0       0       1       2       0       0       0   \n",
      "4      3       0       0       0       0       0       0       0       0   \n",
      "\n",
      "   pixel9  ...  pixel775  pixel776  pixel777  pixel778  pixel779  pixel780  \\\n",
      "0       0  ...         0         0         0         0         0         0   \n",
      "1       0  ...         0         0         0         0         0         0   \n",
      "2       0  ...         0         0         0        30        43         0   \n",
      "3       0  ...         3         0         0         0         0         1   \n",
      "4       0  ...         0         0         0         0         0         0   \n",
      "\n",
      "   pixel781  pixel782  pixel783  pixel784  \n",
      "0         0         0         0         0  \n",
      "1         0         0         0         0  \n",
      "2         0         0         0         0  \n",
      "3         0         0         0         0  \n",
      "4         0         0         0         0  \n",
      "\n",
      "[5 rows x 785 columns]\n"
     ]
    }
   ],
   "source": [
    "# 2. We can view that this data looks like by using the following code.\n",
    "print(mnistTrain.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bdfd167e",
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training data points: 53730\n",
      "Validation data points: 5970\n",
      "Testing data points: 300\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>KNeighborsClassifier(n_neighbors=10)</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\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier(n_neighbors=10)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "KNeighborsClassifier(n_neighbors=10)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 3. We now need to take the data that we have which is the MNISTFashion \n",
    "# data called 'mnistTrain'. We will split it up 75% for training and \n",
    "# 25% for testing.\n",
    "(trainData, testData, trainLabels, testLabels) = train_test_split(np.array(\n",
    "    mnistTrain),mnistTrain, test_size=0.005, random_state=42)\n",
    "\n",
    "#(trainData, testData, trainLabels, testLabels) = train_test_split(np.array(\n",
    "#    mnistTrain),mnistTrain, test_size=0.25, random_state=42)\n",
    "\n",
    "# now, let's take 10% of the training data and use that for validation\n",
    "(trainData, valData, trainLabels, valLabels) = train_test_split(\n",
    "    trainData, trainLabels,test_size=0.1, random_state=84)\n",
    "\n",
    "# Now we can see the amount that have been split.\n",
    "print(\"Training data points: {}\".format(len(trainLabels)))\n",
    "print(\"Validation data points: {}\".format(len(valLabels)))\n",
    "print(\"Testing data points: {}\".format(len(testLabels)))\n",
    "\n",
    "model = neighbors.KNeighborsClassifier(n_neighbors=10)\n",
    "model.fit(trainData, trainLabels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "be100307",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Data Shape: (53730, 785)\n"
     ]
    }
   ],
   "source": [
    "# 4.Finding out the train data shape\n",
    "print(\"Train Data Shape:\", trainData.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "403cc94d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[7, 0, 0, ..., 0, 0, 0],\n",
       "       [8, 0, 0, ..., 0, 0, 0],\n",
       "       [8, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [8, 0, 0, ..., 0, 0, 0],\n",
       "       [2, 0, 0, ..., 0, 0, 0],\n",
       "       [8, 0, 0, ..., 0, 0, 0]], dtype=int64)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 5. Now we can make a prediction using the test data \n",
    "y_pred2=model.predict(testData)\n",
    "y_pred2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "57689936",
   "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></th>\n",
       "      <th>label</th>\n",
       "      <th>pixel1</th>\n",
       "      <th>pixel2</th>\n",
       "      <th>pixel3</th>\n",
       "      <th>pixel4</th>\n",
       "      <th>pixel5</th>\n",
       "      <th>pixel6</th>\n",
       "      <th>pixel7</th>\n",
       "      <th>pixel8</th>\n",
       "      <th>pixel9</th>\n",
       "      <th>...</th>\n",
       "      <th>pixel775</th>\n",
       "      <th>pixel776</th>\n",
       "      <th>pixel777</th>\n",
       "      <th>pixel778</th>\n",
       "      <th>pixel779</th>\n",
       "      <th>pixel780</th>\n",
       "      <th>pixel781</th>\n",
       "      <th>pixel782</th>\n",
       "      <th>pixel783</th>\n",
       "      <th>pixel784</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>12628</th>\n",
       "      <td>7</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37730</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>187</td>\n",
       "      <td>190</td>\n",
       "      <td>196</td>\n",
       "      <td>201</td>\n",
       "      <td>209</td>\n",
       "      <td>221</td>\n",
       "      <td>218</td>\n",
       "      <td>211</td>\n",
       "      <td>102</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39991</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8525</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8279</th>\n",
       "      <td>9</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2980</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>223</td>\n",
       "      <td>218</td>\n",
       "      <td>33</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54612</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>51</td>\n",
       "      <td>11</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49686</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31067</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>138</td>\n",
       "      <td>114</td>\n",
       "      <td>61</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51402</th>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>300 rows × 785 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       label  pixel1  pixel2  pixel3  pixel4  pixel5  pixel6  pixel7  pixel8  \\\n",
       "12628      7       0       0       0       0       0       0       0       0   \n",
       "37730      8       0       0       0       0       0       0       0       0   \n",
       "39991      8       0       0       0       0       0       0       0       0   \n",
       "8525       5       0       0       0       0       0       0       0       0   \n",
       "8279       9       0       0       0       0       0       0       0       0   \n",
       "...      ...     ...     ...     ...     ...     ...     ...     ...     ...   \n",
       "2980       4       0       0       0       0       0       0       0       0   \n",
       "54612      0       0       0       0       0       0       0       0       0   \n",
       "49686      8       0       0       0       0       0       0       0       0   \n",
       "31067      2       0       0       0       0       1       0       0       0   \n",
       "51402      8       0       0       0       0       0       0       0       0   \n",
       "\n",
       "       pixel9  ...  pixel775  pixel776  pixel777  pixel778  pixel779  \\\n",
       "12628       0  ...         0         0         0         0         0   \n",
       "37730       0  ...       187       190       196       201       209   \n",
       "39991       0  ...         0         0         0         0         0   \n",
       "8525        0  ...         0         1         0         0         0   \n",
       "8279        0  ...         0         0         0         0         0   \n",
       "...       ...  ...       ...       ...       ...       ...       ...   \n",
       "2980        0  ...         2         0         9       223       218   \n",
       "54612       0  ...        51        11         0         0         0   \n",
       "49686       0  ...         0         0         0         0         0   \n",
       "31067       0  ...         0         2         0         2       138   \n",
       "51402       0  ...         0         0         0         1         0   \n",
       "\n",
       "       pixel780  pixel781  pixel782  pixel783  pixel784  \n",
       "12628         0         0         0         0         0  \n",
       "37730       221       218       211       102         0  \n",
       "39991         0         0         0         0         0  \n",
       "8525          0         0         0         0         0  \n",
       "8279          0         0         0         0         0  \n",
       "...         ...       ...       ...       ...       ...  \n",
       "2980         33         0         0         0         0  \n",
       "54612         0         0         0         0         0  \n",
       "49686         0         0         0         0         0  \n",
       "31067       114        61         0         0         0  \n",
       "51402         0         0         0         0         0  \n",
       "\n",
       "[300 rows x 785 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#6. Now we can check the test labels \n",
    "testLabels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d3942e63",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[114600    113     52 ...      0      0      7]\n",
      " [  2012     99     25 ...      0      0      0]\n",
      " [  1183     43     64 ...      0      0      0]\n",
      " ...\n",
      " [    13      0      0 ...      4      5     43]\n",
      " [    14      0      0 ...      3      1     71]\n",
      " [   101      2      3 ...     18     28    668]]\n"
     ]
    }
   ],
   "source": [
    "# 7. Now we are going to make a confusion matrix\n",
    "print(metrics.confusion_matrix(testLabels.to_numpy().ravel(), \n",
    "                               y_pred2.ravel()))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "9af99126",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0      0.834     0.992     0.906    115552\n",
      "           1      0.171     0.045     0.071      2207\n",
      "           2      0.159     0.047     0.072      1374\n",
      "           3      0.153     0.045     0.070       990\n",
      "           4      0.102     0.034     0.051       700\n",
      "           5      0.107     0.039     0.058       533\n",
      "           6      0.110     0.053     0.072       433\n",
      "           7      0.124     0.071     0.090       325\n",
      "           8      0.161     0.104     0.126       289\n",
      "           9      0.173     0.135     0.152       252\n",
      "          10      0.000     0.000     0.000       220\n",
      "          11      0.006     0.005     0.005       191\n",
      "          12      0.011     0.011     0.011       182\n",
      "          13      0.028     0.026     0.027       196\n",
      "          14      0.006     0.004     0.005       225\n",
      "          15      0.006     0.006     0.006       180\n",
      "          16      0.015     0.016     0.016       182\n",
      "          17      0.005     0.005     0.005       216\n",
      "          18      0.000     0.000     0.000       212\n",
      "          19      0.005     0.004     0.005       225\n",
      "          20      0.010     0.008     0.009       260\n",
      "          21      0.005     0.005     0.005       222\n",
      "          22      0.012     0.015     0.014       197\n",
      "          23      0.017     0.014     0.016       277\n",
      "          24      0.010     0.008     0.009       237\n",
      "          25      0.016     0.013     0.014       300\n",
      "          26      0.008     0.009     0.008       212\n",
      "          27      0.008     0.007     0.007       282\n",
      "          28      0.008     0.007     0.007       303\n",
      "          29      0.027     0.030     0.028       271\n",
      "          30      0.004     0.004     0.004       258\n",
      "          31      0.000     0.000     0.000       199\n",
      "          32      0.021     0.020     0.021       293\n",
      "          33      0.009     0.008     0.008       258\n",
      "          34      0.016     0.015     0.015       274\n",
      "          35      0.004     0.004     0.004       270\n",
      "          36      0.014     0.012     0.013       347\n",
      "          37      0.004     0.005     0.004       217\n",
      "          38      0.004     0.003     0.004       286\n",
      "          39      0.007     0.007     0.007       302\n",
      "          40      0.018     0.015     0.017       334\n",
      "          41      0.007     0.007     0.007       294\n",
      "          42      0.004     0.005     0.004       207\n",
      "          43      0.015     0.013     0.014       302\n",
      "          44      0.003     0.003     0.003       313\n",
      "          45      0.013     0.017     0.015       232\n",
      "          46      0.007     0.008     0.008       251\n",
      "          47      0.007     0.006     0.007       335\n",
      "          48      0.000     0.000     0.000       279\n",
      "          49      0.011     0.012     0.011       256\n",
      "          50      0.004     0.003     0.003       292\n",
      "          51      0.010     0.011     0.010       283\n",
      "          52      0.016     0.016     0.016       311\n",
      "          53      0.003     0.004     0.003       279\n",
      "          54      0.007     0.006     0.006       325\n",
      "          55      0.016     0.016     0.016       311\n",
      "          56      0.014     0.012     0.013       333\n",
      "          57      0.000     0.000     0.000       230\n",
      "          58      0.003     0.003     0.003       333\n",
      "          59      0.000     0.000     0.000       281\n",
      "          60      0.011     0.015     0.013       269\n",
      "          61      0.010     0.010     0.010       292\n",
      "          62      0.006     0.007     0.007       300\n",
      "          63      0.004     0.004     0.004       256\n",
      "          64      0.009     0.011     0.010       280\n",
      "          65      0.003     0.004     0.003       256\n",
      "          66      0.016     0.016     0.016       307\n",
      "          67      0.009     0.007     0.008       290\n",
      "          68      0.009     0.010     0.010       298\n",
      "          69      0.021     0.022     0.022       314\n",
      "          70      0.020     0.021     0.020       339\n",
      "          71      0.000     0.000     0.000       256\n",
      "          72      0.021     0.018     0.020       380\n",
      "          73      0.000     0.000     0.000       214\n",
      "          74      0.004     0.003     0.003       305\n",
      "          75      0.009     0.009     0.009       318\n",
      "          76      0.021     0.021     0.021       284\n",
      "          77      0.000     0.000     0.000       219\n",
      "          78      0.022     0.019     0.020       318\n",
      "          79      0.003     0.004     0.004       236\n",
      "          80      0.007     0.006     0.006       326\n",
      "          81      0.000     0.000     0.000       268\n",
      "          82      0.007     0.006     0.006       346\n",
      "          83      0.009     0.011     0.010       264\n",
      "          84      0.009     0.008     0.008       253\n",
      "          85      0.010     0.012     0.011       338\n",
      "          86      0.003     0.003     0.003       322\n",
      "          87      0.003     0.004     0.003       258\n",
      "          88      0.006     0.007     0.007       284\n",
      "          89      0.003     0.003     0.003       322\n",
      "          90      0.012     0.014     0.013       282\n",
      "          91      0.003     0.004     0.003       270\n",
      "          92      0.000     0.000     0.000       319\n",
      "          93      0.003     0.004     0.003       277\n",
      "          94      0.009     0.010     0.009       306\n",
      "          95      0.005     0.008     0.006       266\n",
      "          96      0.009     0.008     0.008       372\n",
      "          97      0.003     0.003     0.003       286\n",
      "          98      0.006     0.009     0.007       235\n",
      "          99      0.003     0.003     0.003       315\n",
      "         100      0.003     0.003     0.003       298\n",
      "         101      0.004     0.004     0.004       266\n",
      "         102      0.005     0.006     0.005       358\n",
      "         103      0.011     0.013     0.012       389\n",
      "         104      0.003     0.003     0.003       335\n",
      "         105      0.009     0.011     0.010       369\n",
      "         106      0.003     0.004     0.003       284\n",
      "         107      0.000     0.000     0.000       351\n",
      "         108      0.007     0.008     0.007       358\n",
      "         109      0.002     0.003     0.003       298\n",
      "         110      0.011     0.010     0.010       401\n",
      "         111      0.005     0.006     0.005       308\n",
      "         112      0.011     0.015     0.013       324\n",
      "         113      0.005     0.006     0.005       362\n",
      "         114      0.002     0.003     0.003       308\n",
      "         115      0.008     0.009     0.008       348\n",
      "         116      0.004     0.006     0.005       341\n",
      "         117      0.009     0.011     0.010       348\n",
      "         118      0.002     0.003     0.003       339\n",
      "         119      0.006     0.008     0.007       381\n",
      "         120      0.000     0.000     0.000       388\n",
      "         121      0.005     0.005     0.005       384\n",
      "         122      0.000     0.000     0.000       418\n",
      "         123      0.002     0.003     0.003       341\n",
      "         124      0.007     0.007     0.007       401\n",
      "         125      0.012     0.012     0.012       412\n",
      "         126      0.006     0.008     0.007       391\n",
      "         127      0.000     0.000     0.000       314\n",
      "         128      0.005     0.005     0.005       411\n",
      "         129      0.005     0.005     0.005       387\n",
      "         130      0.004     0.004     0.004       479\n",
      "         131      0.002     0.003     0.003       368\n",
      "         132      0.000     0.000     0.000       401\n",
      "         133      0.004     0.005     0.005       366\n",
      "         134      0.003     0.003     0.003       379\n",
      "         135      0.007     0.007     0.007       407\n",
      "         136      0.009     0.010     0.009       408\n",
      "         137      0.002     0.002     0.002       438\n",
      "         138      0.002     0.002     0.002       422\n",
      "         139      0.004     0.005     0.005       389\n",
      "         140      0.016     0.020     0.017       405\n",
      "         141      0.002     0.002     0.002       500\n",
      "         142      0.002     0.002     0.002       417\n",
      "         143      0.000     0.000     0.000       443\n",
      "         144      0.006     0.006     0.006       506\n",
      "         145      0.009     0.011     0.010       455\n",
      "         146      0.008     0.010     0.009       405\n",
      "         147      0.002     0.002     0.002       452\n",
      "         148      0.006     0.007     0.006       454\n",
      "         149      0.006     0.006     0.006       483\n",
      "         150      0.002     0.002     0.002       453\n",
      "         151      0.008     0.009     0.009       453\n",
      "         152      0.005     0.005     0.005       433\n",
      "         153      0.005     0.006     0.006       492\n",
      "         154      0.008     0.010     0.009       401\n",
      "         155      0.002     0.002     0.002       529\n",
      "         156      0.012     0.013     0.013       448\n",
      "         157      0.019     0.018     0.019       545\n",
      "         158      0.013     0.012     0.013       569\n",
      "         159      0.008     0.008     0.008       502\n",
      "         160      0.011     0.011     0.011       566\n",
      "         161      0.007     0.006     0.006       540\n",
      "         162      0.017     0.016     0.017       556\n",
      "         163      0.013     0.011     0.011       571\n",
      "         164      0.007     0.009     0.008       465\n",
      "         165      0.008     0.007     0.007       581\n",
      "         166      0.006     0.005     0.006       571\n",
      "         167      0.008     0.007     0.007       578\n",
      "         168      0.010     0.011     0.010       473\n",
      "         169      0.005     0.005     0.005       427\n",
      "         170      0.005     0.005     0.005       638\n",
      "         171      0.012     0.011     0.011       565\n",
      "         172      0.007     0.006     0.006       684\n",
      "         173      0.010     0.009     0.009       672\n",
      "         174      0.007     0.006     0.007       631\n",
      "         175      0.004     0.003     0.003       690\n",
      "         176      0.011     0.010     0.010       624\n",
      "         177      0.011     0.009     0.010       640\n",
      "         178      0.012     0.010     0.011       711\n",
      "         179      0.007     0.006     0.007       620\n",
      "         180      0.005     0.005     0.005       635\n",
      "         181      0.004     0.005     0.005       620\n",
      "         182      0.010     0.009     0.009       659\n",
      "         183      0.011     0.011     0.011       623\n",
      "         184      0.013     0.012     0.012       688\n",
      "         185      0.016     0.015     0.016       659\n",
      "         186      0.012     0.012     0.012       686\n",
      "         187      0.013     0.010     0.011       769\n",
      "         188      0.006     0.006     0.006       698\n",
      "         189      0.010     0.009     0.009       666\n",
      "         190      0.022     0.020     0.021       738\n",
      "         191      0.006     0.005     0.005       640\n",
      "         192      0.011     0.010     0.010       736\n",
      "         193      0.009     0.007     0.008       701\n",
      "         194      0.013     0.011     0.012       731\n",
      "         195      0.007     0.005     0.006       813\n",
      "         196      0.007     0.005     0.006       766\n",
      "         197      0.014     0.011     0.012       753\n",
      "         198      0.012     0.009     0.010       764\n",
      "         199      0.016     0.013     0.014       782\n",
      "         200      0.017     0.013     0.015       792\n",
      "         201      0.018     0.014     0.016       712\n",
      "         202      0.013     0.010     0.012       781\n",
      "         203      0.018     0.011     0.014       786\n",
      "         204      0.021     0.016     0.018       795\n",
      "         205      0.013     0.009     0.010       822\n",
      "         206      0.006     0.005     0.005       842\n",
      "         207      0.005     0.004     0.004       778\n",
      "         208      0.008     0.006     0.007       887\n",
      "         209      0.013     0.009     0.011       843\n",
      "         210      0.015     0.011     0.012       854\n",
      "         211      0.013     0.008     0.010       853\n",
      "         212      0.030     0.021     0.025       803\n",
      "         213      0.025     0.015     0.019       885\n",
      "         214      0.008     0.005     0.006       842\n",
      "         215      0.017     0.009     0.011       913\n",
      "         216      0.033     0.018     0.023       946\n",
      "         217      0.023     0.013     0.017       925\n",
      "         218      0.030     0.018     0.022       910\n",
      "         219      0.026     0.012     0.017       885\n",
      "         220      0.015     0.009     0.011       798\n",
      "         221      0.016     0.008     0.011       841\n",
      "         222      0.037     0.018     0.024       850\n",
      "         223      0.024     0.012     0.016       737\n",
      "         224      0.030     0.013     0.018       854\n",
      "         225      0.033     0.015     0.021       844\n",
      "         226      0.010     0.005     0.007       821\n",
      "         227      0.013     0.006     0.008       876\n",
      "         228      0.031     0.012     0.018       967\n",
      "         229      0.034     0.015     0.021       815\n",
      "         230      0.030     0.011     0.016       796\n",
      "         231      0.037     0.014     0.020       725\n",
      "         232      0.046     0.015     0.023       738\n",
      "         233      0.038     0.012     0.018       673\n",
      "         234      0.011     0.003     0.005       646\n",
      "         235      0.018     0.005     0.008       627\n",
      "         236      0.036     0.009     0.014       561\n",
      "         237      0.017     0.004     0.007       492\n",
      "         238      0.006     0.002     0.003       493\n",
      "         239      0.026     0.007     0.011       449\n",
      "         240      0.050     0.011     0.018       458\n",
      "         241      0.030     0.008     0.012       395\n",
      "         242      0.045     0.010     0.017       388\n",
      "         243      0.030     0.006     0.010       338\n",
      "         244      0.000     0.000     0.000       317\n",
      "         245      0.073     0.013     0.022       303\n",
      "         246      0.000     0.000     0.000       276\n",
      "         247      0.000     0.000     0.000       255\n",
      "         248      0.059     0.012     0.020       249\n",
      "         249      0.021     0.004     0.006       274\n",
      "         250      0.000     0.000     0.000       239\n",
      "         251      0.056     0.010     0.017       200\n",
      "         252      0.000     0.000     0.000       260\n",
      "         253      0.043     0.014     0.021       293\n",
      "         254      0.011     0.003     0.004       398\n",
      "         255      0.327     0.320     0.324      2085\n",
      "\n",
      "    accuracy                          0.495    235500\n",
      "   macro avg      0.020     0.015     0.016    235500\n",
      "weighted avg      0.423     0.495     0.454    235500\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Print the precision and recall, among other metrics\n",
    "print(metrics.classification_report(testLabels.to_numpy().ravel(), \n",
    "                                    y_pred2.ravel(), digits=3))"
   ]
  }
 ],
 "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
}
