{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "98656492",
   "metadata": {},
   "source": [
    "# Training, Testing, and Accuracy\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "518460f3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:47.786982Z",
     "iopub.status.busy": "2026-08-31T06:02:47.786752Z",
     "iopub.status.idle": "2026-08-31T06:02:48.578958Z",
     "shell.execute_reply": "2026-08-31T06:02:48.578688Z"
    },
    "tags": [
     "hide-input",
     "thebe-init",
     "runnable"
    ]
   },
   "outputs": [],
   "source": [
    "path_data = '../../data/'\n",
    "\n",
    "import math\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import scipy.stats as stats\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "plt.style.use('fivethirtyeight')\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fb799b00",
   "metadata": {},
   "source": [
    "```{contents}\n",
    ":local:\n",
    ":depth: 2\n",
    "```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "032cf565",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.580290Z",
     "iopub.status.busy": "2026-08-31T06:02:48.580180Z",
     "iopub.status.idle": "2026-08-31T06:02:48.581563Z",
     "shell.execute_reply": "2026-08-31T06:02:48.581351Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def standard_units(x):\n",
    "    return (x - np.mean(x))/np.std(x)\n",
    "\n",
    "def standardize(df, columns, reference):\n",
    "    \"\"\"Convert columns of df to standard units using the mean and SD of reference.\n",
    "\n",
    "    Pass the training set as reference so that the test set never\n",
    "    influences how the features are scaled.\"\"\"\n",
    "    scaled = df.copy()\n",
    "    for column in columns:\n",
    "        scaled[column] = (df[column] - reference[column].mean()) / reference[column].std(ddof=0)\n",
    "    return scaled\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9f946f5a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.582544Z",
     "iopub.status.busy": "2026-08-31T06:02:48.582476Z",
     "iopub.status.idle": "2026-08-31T06:02:48.584705Z",
     "shell.execute_reply": "2026-08-31T06:02:48.584516Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def distance(point1, point2):\n",
    "    \"\"\"The distance between two arrays of numbers.\"\"\"\n",
    "    return np.sqrt(np.sum((point1 - point2)**2))\n",
    "\n",
    "def all_distances(training, point):\n",
    "    \"\"\"The distance between point (an array of numbers) and each row of the training features.\"\"\"\n",
    "    attributes = training.drop(columns=['Class'])\n",
    "    def distance_from_point(row):\n",
    "        return distance(point, np.array(row))\n",
    "    return attributes.apply(distance_from_point, axis=1)\n",
    "\n",
    "def table_with_distances(training, point):\n",
    "    \"\"\"A copy of the training table with the distance from each row to point.\"\"\"\n",
    "    training1 = training.copy()\n",
    "    training1['Distance'] = all_distances(training1, point)\n",
    "    return training1\n",
    "\n",
    "def closest(training, point, k):\n",
    "    \"\"\"A table containing the k closest rows in the training table to point.\"\"\"\n",
    "    with_dists = table_with_distances(training, point)\n",
    "    sorted_by_distance = with_dists.sort_values(by=['Distance'])\n",
    "    return sorted_by_distance.head(k)\n",
    "\n",
    "def majority(topkclasses):\n",
    "    \"\"\"The most common class among the k nearest neighbors.\"\"\"\n",
    "    return topkclasses.value_counts().idxmax()\n",
    "\n",
    "def classify(training, point, k):\n",
    "    closestk = closest(training, point, k)\n",
    "    return majority(closestk['Class'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3a5bb9e2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.585604Z",
     "iopub.status.busy": "2026-08-31T06:02:48.585547Z",
     "iopub.status.idle": "2026-08-31T06:02:48.587131Z",
     "shell.execute_reply": "2026-08-31T06:02:48.586977Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def classify_grid(training, test, k): \n",
    "    ckd_new1 = pd.DataFrame(columns=['Hemoglobin', 'Glucose', 'Class', 'Distance'])\n",
    "    empty = np.array([])\n",
    "    for i in range(len(test)):\n",
    "        ckd_new2 = closest(training, np.array([test.iloc[i]]), k)\n",
    "        ones = len(ckd_new2[ckd_new2['Class'] == '1'])\n",
    "        zeros = len(ckd_new2[ckd_new2['Class'] == '0'])\n",
    "        if ones > zeros:\n",
    "            empty = np.append(empty, 1)\n",
    "        else:\n",
    "            empty = np.append(empty, 0)\n",
    "    return empty     ### 0, 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "48f1fc2e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.588044Z",
     "iopub.status.busy": "2026-08-31T06:02:48.587982Z",
     "iopub.status.idle": "2026-08-31T06:02:48.598282Z",
     "shell.execute_reply": "2026-08-31T06:02:48.598063Z"
    },
    "tags": []
   },
   "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>Hemoglobin</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>White Blood Cell Count</th>\n",
       "      <th>Class</th>\n",
       "      <th>Color</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.865744</td>\n",
       "      <td>-0.221549</td>\n",
       "      <td>-0.569768</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.457446</td>\n",
       "      <td>-0.947597</td>\n",
       "      <td>1.162684</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.004968</td>\n",
       "      <td>3.841231</td>\n",
       "      <td>-1.275582</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.814879</td>\n",
       "      <td>0.396364</td>\n",
       "      <td>0.809777</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.083954</td>\n",
       "      <td>0.643529</td>\n",
       "      <td>0.232293</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153</th>\n",
       "      <td>0.700526</td>\n",
       "      <td>0.133751</td>\n",
       "      <td>-0.569768</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>154</th>\n",
       "      <td>0.978974</td>\n",
       "      <td>-0.870358</td>\n",
       "      <td>-0.216861</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>155</th>\n",
       "      <td>0.735332</td>\n",
       "      <td>-0.484162</td>\n",
       "      <td>-0.601850</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>156</th>\n",
       "      <td>0.178436</td>\n",
       "      <td>-0.267893</td>\n",
       "      <td>-0.409356</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>157</th>\n",
       "      <td>0.735332</td>\n",
       "      <td>-0.005280</td>\n",
       "      <td>-0.537686</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>158 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Hemoglobin   Glucose  White Blood Cell Count Class     Color\n",
       "0     -0.865744 -0.221549               -0.569768     1  darkblue\n",
       "1     -1.457446 -0.947597                1.162684     1  darkblue\n",
       "2     -1.004968  3.841231               -1.275582     1  darkblue\n",
       "3     -2.814879  0.396364                0.809777     1  darkblue\n",
       "4     -2.083954  0.643529                0.232293     1  darkblue\n",
       "..          ...       ...                     ...   ...       ...\n",
       "153    0.700526  0.133751               -0.569768     0      gold\n",
       "154    0.978974 -0.870358               -0.216861     0      gold\n",
       "155    0.735332 -0.484162               -0.601850     0      gold\n",
       "156    0.178436 -0.267893               -0.409356     0      gold\n",
       "157    0.735332 -0.005280               -0.537686     0      gold\n",
       "\n",
       "[158 rows x 5 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ckd = pd.read_csv(path_data + 'ckd.csv')\n",
    "ckd.rename(columns={'Blood Glucose Random':'Glucose'}, inplace=True)\n",
    "ckd['Class'] = ckd['Class'].astype(str)\n",
    "\n",
    "features = ['Hemoglobin', 'Glucose', 'White Blood Cell Count']\n",
    "\n",
    "color_table = pd.DataFrame(\n",
    "    {'Class':np.array([1, 0]),\n",
    "    'Color':np.array(['darkblue', 'gold'])   ### darkblue == 1\n",
    "    }, index=np.array([1,0])\n",
    ")\n",
    "color_table['Class'] = color_table['Class'].astype(str)\n",
    "\n",
    "# For the first plot only, we put the whole data set in standard units.\n",
    "ckd_Standard_Unit = standardize(ckd[features + ['Class']], features, ckd)\n",
    "ckd_combined = pd.merge(ckd_Standard_Unit, color_table, on='Class')\n",
    "ckd_combined\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84cee20f",
   "metadata": {},
   "source": [
    "## Overly Optimistic \"Testing\"\n",
    "The training set offers a very tempting set of patients on whom to test out our classifier, because we know the class of each patient in the training set.\n",
    "\n",
    "But let's be careful ... there will be pitfalls ahead if we take this path. An example will show us why.\n",
    "\n",
    "Suppose we use a 1-nearest neighbor classifier to predict whether a patient has chronic kidney disease, based on glucose and white blood cell count."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3f9d2cb0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.599415Z",
     "iopub.status.busy": "2026-08-31T06:02:48.599352Z",
     "iopub.status.idle": "2026-08-31T06:02:48.635385Z",
     "shell.execute_reply": "2026-08-31T06:02:48.635194Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAApEAAAE8CAYAAACYQepmAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAATOZJREFUeJzt3Qd0VNXWB/A9kwRCCqEFCFITShQENSqCBQsqIgICgoDgszyfnyiKyhMU1Kc+e++CFQQULBQFC6goRfSBIohBCR0JJSEJaaTMfOt/4A7TM3d6+f/Wypp25869ZxLuZp9z9jEUFRWZhYiIiIhIB6OejYmIiIiIGEQSERERkVeYiSQiIiIi3RhEEhEREZFuDCKJiIiISDcGkURERESkG4NIIiIiItKNQSQRERER6cYgkoiIiIh0YxBJRERERLoxiCQiIiIi3RhEkluVlZWydetWdUv+xbYNLLYv25aIAotBJNWptraWrRQgbNvAYvuybYkocBhEEhEREZFuDCKJiIiISDcGkURERESkG4NIIiIiItKNQSTFhJoaU6gPgYiIKKowiKSolptbKDk5c6VbtznqFo+JiIjId/F+2AdR2Bo9eqnk5RXbPF67dnhIj4mIvGMymaSkpESqq6vZhEQBYDAYpGHDhlKvXj2PtmcQSVHdhV1WZnuxKS+vVs/HxzMJTxRJqqqqpKioSNLS0tQPLnZE5P//qBUUFKi/MU8CSV5JKWohUExOTrB5LikpgQEkUQQ6fPiwNG3aVOrXr88AkihAjEaj+jtDxt+j7QN1IEThYNasvpKVlSYZGUnqFo+JKDIzJHFxcaE+DKKYCCTNZrNH27I7m6JadnYTNQaSXdhERET+xUwkxQSOgSQiIvIvBpFEREREpBuDSCIiIiLSjUEkERFRhKipqZE5c+bI6NGj5fTTT5cTTzxRzjvvPBk5cqS88847qgySt6ZMmSKZmZmSn58vkWjEiBFyyimnBPQzxo0bp9qorKzMr9tGavtzYg0REVEE2L59u4waNUo2bdpk8/zevXvlt99+kyVLlsgbb7whP/74o1f7R7BTWFgotbW1EomKi4vV8Qe61BQ+w5PZy4d1bBup7c8gkoiIKMwhwzho0CDZsWOHtG/fXm699Vbp3bu3NGnSRA4cOCB79uyRpUuXyoYNG0J9qBRDGEQSERGFuSeeeEIFkDk5OfLpp5+qpek0LVu2lJNPPln69eun6mkSBQvHRBIREYUxdG/OmjVL3X/xxRdtAkhnhaKt7dy5U+6++24566yzJDs7W42ffOSRR3SNndSzD+txgG+//bb07dtXunTpYjl+f/j999/l2muvlW7duqlxof/+979VV7arMaQLFiyQa665Rs4880w56aST5OKLL5ZnnnlGKioq/Hb877//vnTq1EnGjBnjMAYS3dnTpk2TPn36qM/v37+/LFy40KNzHTp0qMtxnngN528PbfHkk0/KRRddpMbM4j8eOK+tW7eKvzETSUREFMYwBhLL0CGY6dq1q8fv27hxowwYMMAm2MOkDYyf/OSTT+Srr76SZs2a+XUf2jjA+++/X9566y3L81rA9vHHH8vEiRM9Pgd02995552Wx2vXrpWBAwfaBGpbtmyRNWvWOF3R6IUXXpCHH37Y5rm///5bfv75Z/n6669l8eLFNoF3Xcdvz2w2y3/+8x95/vnn1XhV3NqvOY19YdKT9eevWrVKHn/8cbn55pu9Hufp7DWMj7388ssdAsa8vDxZtGiRCl79OfmImUgiIiI7WOUqXGizdZEh0wMBGIK/888/XwVLCPzmzZunAlEEGffdd1/A9vHBBx+o4A3BHQIYZAKhsrJSBT6e/pSXl9vs94477lABJAJbjAFdv369vPfee3Lo0CFZt26dw3HEx8ermesIXn/99VcVFH/xxRcyZMgQNQEJQbCe47dWXl6uMo8IVBEovvrqqw4BJHz44YdqXwhcV69erTKnOC68BwGlP40fP159L1deeaV8/vnnKmuLz7znnnuktLRUtZ8/MRNJRER0TG5uoYwevVTKyqolOTlBZs3qq5ZPDSVttq59V7U7yM4haEIX69y5cy3BTdu2baVHjx6qGxRZqZdeeslp4OPrPqZOneo0yzZs2DA1dtNTDRo0sNz/888/1cSh7t27y4wZMyzt0a5dO8nKylLd7PZuu+02lYGbPn265ObmqkAK40bRzQ0Iip0dj6vjtw7sb7zxRtm8ebO8++67atKTu9I9t9xyi+UxupiR2US7of3qykZ6avfu3Sq7ioDfOvN5wgknqM88ePCgyq5ibC3azB8YRBIRER2DADIvr9jm8dq1w0PaPunp6ZYgwVMIuAABkn2A17x5c+nVq5d8+eWXap+uMpy+7MNVoFi/fn314w0EtXDppZc6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+iAyHGASDcZAcnY2EVFgocQYVh7DmslEFDhYhx1LO3qCYyL9gOV9iIgCKzk5WUpLS6WiokJXpoSIPIf626i96emqP8xEEhFR2MPax02bNpWysjJVP5iIAvN3hrKJuPUEg0giIooIuLClpqaqHyIKPb8EkehewIoy69evl0OHDknHjh3l1ltvtfSt5+fnq/EsXJaIiIiIKDr4HEQieETAeODAActzffr0sQSR6HrIycmRtLQ0tTRhXFycrx9JRERERCHm08SaFStWyOjRo1UA2atXLxk6dKjDNk2aNFFBZUFBgaxcudKXjyMiIiKiaAgi7733XrX04Lhx42TJkiUyZswYp9udffbZ6va7777z5eOIiIiIKNKDyN27d8tvv/2mpoFPmTLF7batWrVSt3l5ed5+HBERERFFQxC5a9cudYtJNHUVf0VZBm18JBERERHFcBCpVTOvqqqqc1tt0o2nxSuJiIiIKEqDyA4dOqg1TLdt21ZnhvHbb79VtyeddJK3H0dERERE0RBEoov6rLPOUgHkiy++6HK7r7/+Wj755BMVcA4YMMDbjyMiIiKiaKkT+cADD6jA8IknnpA9e/ZI+/bt1fOVlZWydOlSVUPyrbfeEpPJpGZuZ2dn++u4iYiIiChSg0hkIqdNm6YKi7///vuW59esWSPDhg2zPO7Xr5889dRTvh0pEREREUVHnUgYMmSIrFq1Sm6++Wbp1KmTxMcfjUtTUlJUkfE333xT5syZo5Y9JCIiIqLo4Je1s9GN/fjjj1seY8Z2vXr1/LFrIiIiIorGTKQzDCCJiIiIoptfMpHObN26Vb744gspKSmRiy++WHJycgL1UUREREQUSZnImTNnysknn+wwaWbZsmVqvWysrY1u7r59+8prr73m67ESERERUTQEkW+88YZa/vDyyy+3PGc2m2XixIlSUVEh559/vvrBc/fff7/s2LHDH8dMRERERJEaRBYWFsrGjRslPT3dZiWatWvXqq7sSy65RObPn69+cL+6uloVHSciIiKiGA4ikYGEtm3b2jy/YsUKS+kfzaBBg9Qtgk4iIiIiiuEgsrS0VN1iOUNrKDSuFSLXIFsJmGRDRERERDEcRDZv3lzdouu6pqZG3T9y5IisXLlSvaYtgQgFBQWW9baJiIiIKIaDyKysLGnRooUaG4nZ2YcOHZKnn37aUtLH2u7du512fRMRERFRjAWRRqNRJkyYoO4/8cQT0qFDBxVMotD4uHHjbLZdvny5usVMbSIiIiKK8WLjWC8bweT06dPlwIED0rlzZ5k6darNbO39+/ertbXRxW09TpKIiIiIYnjFmptuukn9uNKkSRM1bjIhIUEFnEREREQU+eID/gHx8dKoUaNAfwwRERERRWIQuW/fPlm9erWaRINZ2shAdu/eXU499VRmIImIiIiijM9B5MGDB2Xy5MlqNZra2lqH1zHh5pFHHrFZGpGIiIiIIptPgxQxmQblfObNm6cCyMaNG0tOTo5ccMEFqgRQXFycbNu2TUaPHi1vv/22/46aiIiIiCI3iJwyZYoKEps1ayavvvqqbNmyRZYtWyaffvqpWkMbq9f069dPbYts5c6dO/113EREREQUiUFkWVmZzJ8/X92fNWuWjBo1SmUerXXs2FFmz54tvXr1UuMk586d6/sRU8yqqTGF+hCIiIjI1yDyzz//VIFhdna29OzZ0+V2KOszduxYdX/Dhg3efhzFsNzcQsnJmSvdus1Rt3hMREREERpEVlRUqFuMg6wLZmpDZWWltx9HMWz06KWSl1cs+fnl6haPiYiIKEKDSKybDX/88YfKSLrz66+/2ryHSE8XdllZtc1z5eXV7NomIiKK1CASs6/btGkjRUVFaqlDs9nsdLvNmzerSTfAtbMDL9rGDcbHGyU5OcHmuaSkBPU8ERERhY5PV+JJkyap22nTpsm5554rM2bMkB9//FE2btwoX3zxhUycOFHOO+88KS4uVutpDxo0yF/HTTE0bnDWrL6SlZUmGRlJ6haPiYiIKIKLjaP+4/bt2+Xpp59WgeP48eOdbofJNx9++KHD7G3y/7hB68dr1w6PiibOzm6izgVZVmYgiYiIwoPPfYL33XefLF26VEaMGCGtW7e2LHGYnJysSvs8/vjj8u2336qubwqMWBk3yACSiIgoytbOxio1b7zxhrpvMpmkpqZG6tWr549dkwc4bjA6MfNKREThzO+zE5CJZAAZfBw3GD2ieXwrERFFD79kIin0OG4wekTz+FYiIooePmUi33zzTencubM8+eSTLrc5ePCgdO3aVXr37i21tbW+fBx5gOMGI1usjG8lIqIYDyJR//HAgQMybNgwl9s0a9ZMjZnctGmTLF682JePoyjAYMg9jm8lIqKoDyL37t0rW7dulYyM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8WK2mhf27dun2rBr165y+umnS9u2baWwsFC17a5du1TgvnbtWklOTmb7+mj37t0qC9m3b19ZunQp29MP3nvvPbn77rvVfbQrsrvV1dWybNkyWb9+PduYKAZxxRqygWAG3asNGzaUlStXSuvWrdXzhw8flj59+qhs2ueffy5nn302W06n/fv3q65AZHStFRUVqbbdsWOHfPDBB9KvXz+2rY9GjBihgvapU6fK0KFD5brrrpPnnnuO7eqlQ4cOqSEt6KVANnLYsGE2r2/YsEG9TkSxhRNryMZXX30lZrNZRo0aZQkgITU1VW655RZ1/4svvmCreaF58+YOASQ0atRIBg4cqO6XlJSwbX306aefquzYSy+9xLWz/WTu3LkqgMTvqX0ACQwgiWITu7PJhjZer1evXg4to2UfMTGE/N/9Cqeddhqb1gfFxcUyadIkGT9+vApsvvvuO7anH6BXAq666iqV4cUQDGTVO3ToIAMGDJCmTZuynYliEINIcuhyBesspOaEE06w2Yb848cff5SFCxfK8OHDpWPHjmxWHzzwwAOSkpIi//73v9mOfrR9+3Z1izGQZ5xxhk3G/L777pNp06ZJ//792eZEMYZBJNnALFZwVsonMTHRZhvy3V9//aVmbHfp0sUyk5i8s3r1apkxY4YKyLXfVfKPiooKdTt58mQ14e7GG29U5am0MmCYcIf/DLVr145NThRDOCaSbGgX38rKSoeW0cp6NGjQgK3mB5iMcPnll0uzZs1k/vz5ajITeaeqqkruuOMOGTt2rJxzzjlsxgD9u4DeiFWrVqkyPwgov/76azVGEkHmrFmz2O5EMYaZSLKh1YBEIWyUobGG2cPW25D3kLXBDGJclBcsWCDp6elsTh+8/fbbsnnzZsnJyVFjIjV79uxRt2vWrFHPY1zvFVdcwbbWqVWrVuo/PSNHjlQZSPsakR999JH8+eefbFeiGMMgkpzOsly+fLkMGTLE5jU8Z70NeT8DHhferKwsFUByUoLv8vPz1e3s2bNdThjTJo0xiNQPZb++/PJLlfG1h3GSEBcX58WeiSiSMYgkG5deeqnKNKCkB8Y9aQHj3r175ZVXXlH3MRuTvIOMzc0336wKjqMLG8vGke9QWxMllOzl5eXJW2+9JT179pRBgwapYIj0Q2mfp556St555x21AAHKUmnjo1988UV1n0sfEsUe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",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "glucose_color_darkblue = ckd_combined[ckd_combined['Color'] == 'darkblue']\n",
    "glucose_color_gold = ckd_combined[ckd_combined['Color'] == 'gold']\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(4,3))\n",
    "\n",
    "ax.scatter(glucose_color_darkblue['White Blood Cell Count'], \n",
    "           glucose_color_darkblue['Glucose'],  \n",
    "           label='Color=darkblue', \n",
    "           color='darkblue', s=10)\n",
    "\n",
    "ax.scatter(glucose_color_gold['White Blood Cell Count'], \n",
    "           glucose_color_gold['Glucose'],  \n",
    "           label='Color=gold', \n",
    "           color='gold', s=10)\n",
    "\n",
    "x_label = 'White Blood Cell Count'\n",
    "y_label = 'Glucose'\n",
    "y_vals = ax.get_yticks()\n",
    "plt.ylabel(y_label)\n",
    "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n",
    "plt.xlabel(x_label)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "560dc41e",
   "metadata": {},
   "source": [
    "Earlier, we said that we expect to get some classifications wrong, because there's some intermingling of blue and gold points in the lower-left.\n",
    "\n",
    "But what about the points in the training set, that is, the points already on the scatter? Will we ever mis-classify them?\n",
    "\n",
    "The answer is no. Remember that 1-nearest neighbor classification looks for the point *in the training set* that is nearest to the point being classified. Well, if the point being classified is already in the training set, then its nearest neighbor in the training set is itself! And therefore it will be classified as its own color, which will be correct because each point in the training set is already correctly colored.\n",
    "\n",
    "In other words, **if we use our training set to \"test\" our 1-nearest neighbor classifier, the classifier will pass the test 100% of the time.**\n",
    "\n",
    "Mission accomplished. What a great classifier! \n",
    "\n",
    "No, not so much. A new point in the lower-left might easily be mis-classified, as we noted earlier. \"100% accuracy\" was a nice dream while it lasted.\n",
    "\n",
    "The lesson of this example is *not* to use the training set to test a classifier that is based on it."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23672ed6",
   "metadata": {},
   "source": [
    "## Generating a Test Set\n",
    "In earlier chapters, we saw that random sampling could be used to estimate the proportion of individuals in a population that met some criterion.  Unfortunately, we have just seen that the training set is not like a random sample from the population of all patients, in one important respect: Our classifier guesses correctly for a higher proportion of individuals in the training set than it does for individuals in the population.\n",
    "\n",
    "When we computed confidence intervals for numerical parameters, we wanted to have many new random samples from a population, but we only had access to a single sample.  We solved that problem by taking bootstrap resamples from our sample.\n",
    "\n",
    "We will use an analogous idea to test our classifier. We will *create two samples out of the original training set*, use one of the samples as our training set, and *the other one for testing*. \n",
    "\n",
    "So we will have three groups of individuals:\n",
    "- a training set on which we can do any amount of exploration to build our classifier;\n",
    "- a separate testing set on which to try out our classifier and see what fraction of times it classifies correctly;\n",
    "- the underlying population of individuals for whom we don't know the true classes; the hope is that our classifier will succeed about as well for these individuals as it did for our testing set."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a3ce048",
   "metadata": {},
   "source": [
    "How to generate the training and testing sets? You've guessed it – we'll select at random.\n",
    "\n",
    "There are 158 individuals in `ckd`. Let's use a random half of them for training and the other half for testing. To do this, we'll shuffle all the rows, take the first 79 as the training set, and the remaining 79 for testing.\n",
    "\n",
    "We split **before** converting to standard units. The mean and SD used for scaling come from the training set only, and the same values are applied to the test set. If we scaled the whole data set first, the test patients would influence the classifier through the scaling, and the test would no longer be a fair stand-in for new patients. We also fix the random seed (`random_state`) so that the split, and every result below, is the same each time the page is built.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "326dd1fe",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.636569Z",
     "iopub.status.busy": "2026-08-31T06:02:48.636508Z",
     "iopub.status.idle": "2026-08-31T06:02:48.639932Z",
     "shell.execute_reply": "2026-08-31T06:02:48.639731Z"
    },
    "tags": []
   },
   "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>Hemoglobin</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>White Blood Cell Count</th>\n",
       "      <th>Class</th>\n",
       "      <th>Color</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.060053</td>\n",
       "      <td>-0.011128</td>\n",
       "      <td>-0.341363</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.272064</td>\n",
       "      <td>-0.625135</td>\n",
       "      <td>-0.820080</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.821888</td>\n",
       "      <td>-0.708863</td>\n",
       "      <td>0.169268</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.133548</td>\n",
       "      <td>-0.806546</td>\n",
       "      <td>-0.820080</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-1.879166</td>\n",
       "      <td>-0.052993</td>\n",
       "      <td>0.328840</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Hemoglobin   Glucose  White Blood Cell Count Class     Color\n",
       "0    0.060053 -0.011128               -0.341363     0      gold\n",
       "1    1.272064 -0.625135               -0.820080     0      gold\n",
       "2    0.821888 -0.708863                0.169268     0      gold\n",
       "3    1.133548 -0.806546               -0.820080     0      gold\n",
       "4   -1.879166 -0.052993                0.328840     1  darkblue"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffled_ckd = ckd.sample(len(ckd), replace=False, random_state=12)\n",
    "\n",
    "training_raw = shuffled_ckd.iloc[:79]\n",
    "testing_raw = shuffled_ckd.iloc[79:]\n",
    "\n",
    "# Scale both sets with the training set's mean and SD.\n",
    "training = standardize(training_raw[features + ['Class']], features, training_raw).merge(color_table, on='Class')\n",
    "testing = standardize(testing_raw[features + ['Class']], features, training_raw).merge(color_table, on='Class')\n",
    "\n",
    "training.head()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "abee399f",
   "metadata": {},
   "source": [
    "Now let's construct our classifier based on the points in the training sample:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "93cffc5a",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.640946Z",
     "iopub.status.busy": "2026-08-31T06:02:48.640886Z",
     "iopub.status.idle": "2026-08-31T06:02:48.670569Z",
     "shell.execute_reply": "2026-08-31T06:02:48.670368Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqEAAAFDCAYAAAAKxtdKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAASCFJREFUeJzt3Qec0/X9x/HPDdYdyAZB2SooOKkMrQUVFQFBRUWh4my1YnFiQaHuKo46i+JqlSIKtYpYQcQqDqx/Cw4QAdlD9uaOcev/eH/t70xyubskl0tyyev5eNwjl/n75Zfk8r7Pd6Xt2LGjyAAAAIAYSo/lxgAAAAAhhAIAACDmCKEAAACIOUIoAAAAYo4QCgAAgJgjhAIAACDmCKEAAACIOUIoAAAAYo4QCgAAgJjLtBTy8ccf2+TJk23p0qVWp04d6969u1111VVWt27deO8aAABASklLhWU7CwsL7eabb7a//e1vJa5r3769ffHFF3HZLwAAgFSVEpXQsWPHugBau3Ztu/766+1Xv/qVpaWl2UcffWTTp0+P9+4BAACknKSvhG7evNk6duxoBQUFLnB26dLF7/p9+/ZZzZo147Z/AAAAqSjpBya9+eabduDAARs4cGCJACoEUAAAgNhL+ub4//73v+60T58+9tlnn9kzzzxj69evt5YtW9p5551n/fv3j/cuAgAApJykD6EKnLJ48WI3El7N8jJ37lxXJb388svt8ccfj/NeAgAApJakb47Pz893p3/+85+tX79+NmXKFPvXv/5lI0eOtFq1arkBS++++268dxMAACClJH0lNDs725127drVXn755eLLTz75ZGvQoIHddttt9tZbb7nmegAAAMRG0ldCW7du7U5PPfXUEtedfvrp7nTNmjUx369Up1kJli9f7k7Bsa0qeN8CQPQkfQg98cQT3em6detKXLd27Vp3etBBB8V8v2DF/XMRfRzbysOxBYDoSPoQevbZZ7tlOSdMmGDvvfde8eUrV66022+/3f3eo0ePOO4hAABA6kn6PqGqct577702fPhwGzRokDVp0sSysrJcE7wqGh06dLDLLrss3rsJAACQUpK+EipDhw61cePG2SGHHGKbNm1yVdD09HQ3gf0777xTPHgJAAAAsZH0lVDP4MGD7ZJLLrHVq1e7wQUtWrRwFVEAAADEXsqEUElLS7NWrVrFezcA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zWrVqrltZmZmur6iujxwPtOqLtTPW1KHUIVMBU9Ncvv444/7XXf88ce7UKkOyvoPsLw+GVRCo0tVOn3o9WGuXr16VB871UfHV+axTXUc26pbCSWEQhQiFTIHDx5c/PdRM+eoWqnJ5++99177/e9/z8GqIEKomc2fP99NJlse/RcYuCQXKhf9Fjm2VRHv26qLEArRP+ia41NzdrZr1871j1VFWP9gqo/onDlzUnqgUKw/b0ldLvIqnMF+vOkfvPMAACC5aXT8lVde6ZrXVahS87gCqJr/NciIPBBbiddzOsoT9JbW55PR8QAApBY1wf/5z392A4JWrlzp5urU/OGRrsKEiknqEAoAABBIg4bULI/4StkQqpI7y3YCAADER8qG0K+//jreuwAAAJCyknpgEgAAABITIRQAAAAxRwgFAKSEoqKkXZsFqJKfM0IoACAlVmVi5Tug8u3fv98tTRoKQigAIOllZ2fbnj17bO/evVREgUqi5dA192qok/6n7Oh4AEDq0Ap6DRs2tJycHNuyZUu8dwdI2s9ZvXr13GkoCKEAgJSgL8Y6deq4HwDxF5UQquaN9957z7755hvbvn27HXbYYXb99dcX9w3YsGGD64/DslgAAACISghV+FTg3Lx5c/FlPXr0KA6havro3Lmz1a1b15YsWWIZGRkceQAAgBRXoYFJn376qQ0ZMsQF0O7du9vAgQNL3KZBgwYulG7dutU+++yzimwOAAAASaJCIfT22293668PGzbMpk+fbpdeemnQ25188snu9KOPPqrI5gAAAJDqIXTt2rX27bffumH4o0ePLvO2zZs3d6fLli2LdHMAAABIIhGH0DVr1rhTDUKqVatWmbfVtBhe/1AAAAAg4hDqzYZ/4MCBcm/rDVoKdfJSAAAAJLeIQ2ibNm0sLS3NVqxYUW6F88MPP3SnRx11VKSbAwAAQBKJOISqib1bt24ugD755JOl3u7999+3f/7zny6w9uvXL9LNAQAAIIlUaJ7QO++80wXLsWPH2rp166x169bu8n379tmsWbPcHKIvvviiFRYWupHzHTp0iNZ+AwAAoApL27FjR1FFHkBVTk1Mn5ubW+ptevfubX/729/cqkmA94+KBre1aNGC90WUcWwrD8cWABJknlA5//zzbc6cOXbttdfa4YcfbpmZPxVXa9eu7Sapf+GFF2zSpEkEDQAA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0nbs2FFkKWb//v12zjnnuNHys2fPtjZt2sR7lwAAAFJKwldCVa3s379/yLc/8sgjg46G9+Tl5dnVV19tX331lU2cOJEACgAAEAcJH0IVGjWaPVSZmaU/pb1797q5QVX9fPnll+3MM8+M0l4CAAAgqUKoBg99/PHHId8+Kysr6OU7duywiy++2FVANSXTWWedFcW9BAAAQDhSok/oxo0b3QCkZcuW2d///nfr1atXvHcJAAAgpSV8JbSiVq1aZeeee65t2LDBJk2aZKeeemq8dwkAACDlJX0ldNCgQfbee+9ZvXr1Sl2e85133nHXh2LPnj3273//21VV1cR/yCGH2BlnnMEApxDt3r3bHW9NkaWuE6eccop169Yt9BcUvC/j7IUXXrClS5e6vyfXX399vHcnKahIoL/TKho0atTIevbs6eZyBpDckr4Smp+f704VGPUTTEFBQUiPddddd9n48ePdACdfaWlpNmzYMLv33nvd7wju22+/df1yf/zxR7/LL7roInv22WdZOCBCvC9jZ86cOTZixAgrKiqy4447jhAaBU888YT96U9/clPnefR3VAFff1MBJK+kD6GPPvqo7dq1q8zbhFoF/c9//uNG32uO0Xbt2ll2drZ98cUXNmvWLHv66aetdevWbvonlLRv3z4bPHiwC6DHH3+89evXz7Zu3er66E6ePNnat29vt9xyC4cuArwvY+PAgQN200032emnn+4+86i4J5980u68804XOvv06WO/+MUv3D/5qorqn1YAyS3pm+OjSYHzmGOOsVq1avld/thjj9ndd9/tmpVnzJgRt/1LZK+88ooNHz7cTj75ZJs6dWrxVFqarUADxbS86g8//GDVq1eP965WObwvY+OBBx6w5557zt5//30XllQJ/eijj2K09eSzdu1a69y5s2utevXVV0vMWKKp+Tp16hS3/QNQ+Vg4PQxdu3YtEUDlsssuc6flVVxT2fTp093pzTff7DeXq6qi6lO7c+dO+/zzz+O4h1UX78vKpz7M+mfz/vvvd30WUXEKnmqCVwtJsCnzCKBA8iOERsGaNWvc6QknnBCNh0tKCxcudKfBBiGpOirhLEqA8vG+jA71/7zhhhvc+1SBCdHx2WefudMLL7zQVUXVN1QtSprHubT++wCSS9L3Ca1sGtQ0ZswYVyFVfzEEt3nzZqtfv77rRxvIm7VAtwHvy0TsSvLNN9+4QUmInpUrV7rT7du3W5cuXSw3N7f4Ov1N1ap2PXr04JADSSwz1f7oaRR2qI499li75JJLyqyQ3HrrrfbJJ5+4UfMarITSByYddNBBQa+rUaNG8W1Qcbwvo2fTpk1u4Mztt9/uBh4iejQASV1z1EVHx1YDkzRAyRuUdOmll9rcuXOtcePGHHYgSaVUCF2/fn1YIVSrLJUWQlUBvfHGG93obvUV0zRDKJ0qxYFTW3m8y0tbchWh430ZXX/4wx+sbdu29rvf/Y63YZTVrFnTDUrq2LGjvfnmm5aRkeEuHzVqlJvKbebMmW7mDE1/ByA5pVQI1X/bmo8uVIcffnipU7VoKqZp06a5fkxDhw6N4l4mp2bNmrkJvjUAqW7dun7XaYJqOfjgg+O0d8mB92X0Zx1QONLAuTvuuMPvOMu6dets5MiR7u/KtddeG+WtJ7/mzZvb6tWr7de//nVxAJX09HT3N1UhVAPCACSvzFQLQtddd12FHkMrJumP5scff+zmBh0yZEjU9i+ZHX300S6Ezp492/r37+93nTfNjW6DyPC+rJxVfERTMuknkPowq2VFg+0IoeHTdHea49YL9b7y8vLcqW84BZB8UiqEVpQ60A8cONANUtCXD03woevbt6+rKo0dO9ZOO+00Ny+oqNqhQN+0aVM3OAG8LxOF/ikK1nKivsv33HOPG1Cnf2pV0UP4BgwY4OZd1Y9+r1Onjrs8JyfHxo0b537XXKwAkheT1YdBHec1QvbII48MOmpT/R41iAHB+ypqnXhN1aQvb606oxWTNLm/+oWpW4M33yrCw/sytjR9kJrgmay+4jQ9k6rMTZo0cevFa2CS/ilV//2WLVu6Sil9xYHkRQgNgyZWX7FiRanXa/S3+jghOPX9VFeG+fPn+/X/0ujY0aNHc9gixPsytgih0T2WV111lX3wwQd+l2uwkqZoOuyww6K4NQCJhub4MGg6Jg2sKY031RCCa9WqlesTqmqyluhU5VgTgLdo0YJDVgG8L2NL71s106t6h4qpV6+evfHGG66Lk37UYtKhQwfXz1ZVUQDJjUooAAAAYo5lOwEAABBzhFAAAADEHCEUAAAAMUcIBQAAQMwRQgEAABBzhFAAAADEHCEUAAAAMUcIBQAAQMwRQgEAABBzLNuZJD799FN7/fXXrX79+nbPPfcEvc3y5cvtsccec78PGDDAevXqFfR2r7zyin355ZfWuXNnu/zyy91lGzdutPvuu89q165tDzzwQFj7tmfPHhs1apRlZGTY448/7rdu9JgxY6xatWr25z//2WLp97//fYnLtEyglmRs2bKl9ezZ061fHc7zSURjx461tWvX2vXXX2/t27eP6DG0lOJXX31ln3/+uXsf7N+/3xo3bmxdu3Z1y65mZkbnz0hpxzUaxztWzyFe4vlZAoBIsWxnkpg7d66dfvrp7velS5dao0aNStzm2WeftZEjR7rfzzvvPPvrX/8a9LH0xbx48WIXZocPH+4uW7JkiXXp0sUaNGjgwmw4tm7dau3atXMhQr971q1b54JejRo1XDCI9ZrV5TnnnHPcMcvOzg7p+SSiX/7yl7ZgwQJ76623XLAO19SpU937YNmyZUGvb9GihY0ePdoGDRpU4X0t7bhW9HjH8jnESzw/SwAQqar97z+KHXvssVanTh3bvXu3ffbZZ67SGWjOnDnutGbNmsW/B9qyZYsLoKIKUbL73e9+Z0ceeaT7vaioyDZt2mSffPKJffzxxzZt2jR3rJ5//nlLRXfeeac98cQT7nf983HmmWfaUUcdZVlZWe59omq5KvDXXHONO27BqsvxlgzPAQCSFSE0Sag5URXMWbNmlRlC9UWsitg///lP++GHH+zwww/3u43uKwq0xx13XFT2TU34Tz75pGvuTjSqHgd2SxgxYoSrnKlZU8fp4YcfDqlymkxUJffC2xVXXOGOh94TgX788UfXTUOniSYZngMAJDNCaBJR5VIhNFiVU9VNVX769OljJ510kgtXul1gCPXuq0Cr5s+y+qC9/fbb9v3331thYaFrChw4cGCJpmvJy8tzFSc93qWXXuou+/vf/24fffSR+z0/P79EBeqWW26x1q1b+122YcMGmzFjhutuoD59hxxySHFlK9ouueQSF0LVl1DhJNwQ+s0339i///1vd181kWofdezLe5xI7qfjP3PmTPfa7du3zx23/v3726GHHmqR2Llzp6sgykUXXVTcjziY5s2b27hx42z9+vVBr4/la1ZZzyGc10RdH8aPH++6D9x4441BH+9Pf/qT29ZNN91kbdu2Lb48sN91qJ+xSD5LAJAICKFJxGs+/+6779wXmO+XpFfhVADt3r178WWXXXaZ32N4tyurKV5feFdddVWJ/nkPPfSQa8Ju06aN3+UKHxMmTPAbWKLt/OMf/3C/K+jpel9Dhw4t/uJUM7kG2ChI6LF83XXXXTZkyBAXGBUQoiU3N7f4dw1gCVVOTo4NGzbM9cEMpNdD+3n++edH7X7bt293gfk///mP3+Wq+qmCG4nXXnvNdu3a5Qa53HvvvSHdp1mzZn7n4/GaRfs5RPKaaBCY3svdunUrNYTqM6JgOXjwYL8QquCs+6q14qyzzgr5MxbOZwkAEgkhNImccMIJrkqiL09VxVStCRYuVcnRKHrvMo+C68KFC4sHtASjkcr68lS1Rv0pW7VqZStWrHAj6r1R2P/617/K3ddf//rXri/mH//4R9eVIHBEr++X7B133OEqVenp6e456XlqFLv2dcqUKTZx4kR33VNPPWXRoGrio48+6n7/xS9+EXIIVfDSbALvv/++2x9VrU488UQXhhQSFi1a5IKFmoTPOOOMqNxPx1EBtHr16i6MdurUyfVtnDRpkgtB6vsYrtmzZxe/B5o2bWqRiPVrFu3nEOlrEg3hfsbC+SwBQCIhhCYRfQFpBPuHH35YIoTqvL4wjznmGNc3U83taiZduXJlcZVE09eo2U9BtrT+oAcOHHBfeKoOKch61Pzbt29fF2xXrVrlvjjLojCs7eqLUxVSVWtKG/WvMKMw9eabb7r99nXttde6qpGaJPWFHW4z7zPPPONGT3vBQ10W/vvf/7pTdVXQ9aF69913XWgRVaN0PDw33HCDXXzxxfbBBx/Yrbfe6qYLUripyP1UEdPx1vHT66Eqt0cVvN69e7uwFC5vYJreK5Go7NcsFs8h0tckGsL9jIX6WQKARMNk9UnGa0b3rXJqSiX1QVNA9fp5eoFFI4M93n10OzVjlkbNrL5fjt52O3To4H73qqnR4E0jdd1115UIM3L00Ue7pl0FSAWHcClIKGToR6FIwVwBVNUjNRsH9pkti+ZpFfV59A0touP54IMPuuOvAKHAX9H7qaIoqtL5BlCvuVjzRkZCTfyiZuFEfM1i8RwifU2iJZafMQCIFyqhSRpCv/32Wzddk6qfXtD07efp2y9UzXne74G3C1ZtVdNqMJrkXZU39W2LFq+vo6prpU2f41W9wp2/NHCKJq9Lgh7vjTfecEFJP08//XRII/tVEfMqVsEo0GpwiV6befPmFR/nit4vMCR5zj77bBeYNDAsHN4/KupfmIivWSyeQ6SvSTTE+jMGAPFCCE0yWuVIfe/27t1rX3zxhZt+yBvx7lstU3O7mku94KnAqi/UsvqDykEHHeT6HwbjrToT6Rd/aaOrRV0MyqO+sNGYokk0Sf9pp53m+i7+6le/Cmkic28QiYJCadSEquMcOBl7JPfbtm1bmfdTE7FGo6vLRTgaNmxomzdvjnjS88p+zWLxHCJ9TaIh1p8xAIgXQmiS0ZeXBlBosnUFTAUsnSqY+lZXVCHToBvdbs2aNa4ypS+2wNvFm1eBVD88TXtTlvL6oYZDS1z269fPNctqkE8oIdSrvpVVeVR/P9/bVuR+Xj/EwNHnwe4XDvWjVLVNfWOr0msWzecQ6WsSCnVDAAAQQpOSmgYVLlUBVcDUj6qbgdUVNcl7YVXLcooCbGlVmHhQJU9hQqexHnCh+SNFI5NDcfDBB7uKspqYvSVUA3nNz77TAUV6P/2uBQdU6dSUQMFG+XtVyXBotPfkyZNdc7r6HoY7cCier1m0nkOkr4nXl9p3iq9ATIoPAD9hYFIS8prT1VdNk9dL4MAV38sUVr1m+bKa4qPNC7uaYLs0PXr0cKeaniaSql5FeCPLNVVOKLwgGDhPo0fHWKFRfAfsRHo/73cNqApGj6fZDsJ17rnnFk90r2qmwmxZ9Lr83//9X0K8ZtF6DpG+JuoGIPrHIFgVVYOYNM1TPD5LAJBoCKFJSM3sWvNcX4LePIzBBk6o6qnKjVaD8QZixHK9eI3g1vbVDaC0qYQ0cEgTmmslGs2PGOwLXIOJ1HczmhUmDUzSSHnfUFUezSsp6ieo0c2+za7aN03n4x13jRCv6P281ac08CxwfXstWKDHioRek7/85S+umVkrXZ1zzjlu1aBACrg6Ruo7qxW44v2aRfM5RPqaaJCb/mnRc/aWDPWotUF9jeP1WQKARJO2Y8cOOiglIW8+QdGXk6aSCTZxufqMev3mFFx1u2Cr2OgLVFM3acqb0kY0a4JtTbmjL3+NKvdo4Ib6BioQBA7iUDj45JNP3ONqAJC3trfvUoPql6npfvQFqy94VZ6aNGniBuZo6il96aqSpa4Foc4L6a0mpaZWr9ldNOpYz9X7IleTslaI8p2wvqzno0na9fzlsMMOc/1rFUi0b2qi1aCT9957z29EfkXup1CjiqNotLYmq9eAHB1T9e/Va6rJ6zXnZM+ePS3cIK75Rr0qokaEa/t6H+l5q6lbr4HeL1qqUtVHTySvWWnHtazjXZnPIdLXRFNjef/86bkdccQRtm7dOrctvb/Vl1ev0fTp04tnqajoZyzUzxIAJBIGJiUpVTS9EOqNhA9GX4JeCNXI+spaRrE0WiNbg370Je27PKLvUoO6XkFRk3GrYqu5PX1pPsULL7zQBcZwBT6WR4FHUxxpPshwlu28//77Xdh65JFH3Hrp+vEoxKg6FhhaKnI/rY6jsKlKqKqf+vEG/Oiym2++2YXQSGj+UVX5VAnUCj1qfvaaoL2R2prCaNSoUSX2rTJfs1g9h0hfk9GjR7tR+eqTqkqqN+uE+qXqNbn66qtdCI3HZwkAEgmV0CSlPmmq2HjVH9+Ki69ly5YVh1VNhK1KTDCqEGplIYXU0kaKq2K4evVqF4B9R0Vr9LYqYxo17TUh+1K3AQVh3dcb6a3Vnho1ahT0eamZV4NG1P9Og0IUBLypa0LlVQ+D9a1T6FRw9/r3BSrv+Ygqb5oiS1U/VSO1jxpxX55I76cBSLqf9k0BVM3EqrhpVSVN3K6BOoFro4dD+6U+xgpX2oaWwtQ/LaoGlifU16y04xrK8a7M5xDpa6Jq5tdff+2qwaqkHn/88e7yt99+23VH0IpWCrnR+IxF8lkCgHgjhAIAACDmGJgEAACAmCOEAgAAIOYIoQAAAIg5QigAAABijhAKAACAmCOEAgAAIOYIoQAAAIg5QigAAABijhAKAACAmCOEAgAAIOYIoQAAAIg5QigAAABijhAKAACAmCOEAgAAwGLt/wHM9ie3olwfvAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "training_darkblue = training[training['Color'] == 'darkblue']\n",
    "training_gold = training[training['Color'] == 'gold']\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(4,3))\n",
    "\n",
    "ax.scatter(training_darkblue['White Blood Cell Count'], \n",
    "           training_darkblue['Glucose'],  \n",
    "           label='Color=darkblue', \n",
    "           color='darkblue', s=10)\n",
    "\n",
    "ax.scatter(training_gold['White Blood Cell Count'], \n",
    "           training_gold['Glucose'],  \n",
    "           label='Color=gold', \n",
    "           color='gold', s=10)\n",
    "\n",
    "x_label = 'White Blood Cell Count'\n",
    "y_label = 'Glucose'\n",
    "y_vals = ax.get_yticks()\n",
    "plt.ylabel(y_label)\n",
    "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n",
    "plt.xlabel(x_label)\n",
    "plt.xlim(-2, 6)\n",
    "plt.ylim(-2, 6);\n",
    "plt.show()\n",
    "\n",
    "# training.scatter('White Blood Cell Count', 'Glucose', group='Color')\n",
    "# plt.xlim(-2, 6)\n",
    "# plt.ylim(-2, 6);"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a22d70f",
   "metadata": {},
   "source": [
    "We get the following classification regions and decision boundary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "69c253db",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.671701Z",
     "iopub.status.busy": "2026-08-31T06:02:48.671640Z",
     "iopub.status.idle": "2026-08-31T06:02:48.675564Z",
     "shell.execute_reply": "2026-08-31T06:02:48.675345Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "x_array = np.array([])\n",
    "y_array = np.array([])\n",
    "\n",
    "for x in np.arange(-2, 6.1, 0.25):\n",
    "    for y in np.arange(-2, 6.1, 0.25):\n",
    "        x_array = np.append(x_array, x)\n",
    "        y_array = np.append(y_array, y)\n",
    "        \n",
    "test_grid = pd.DataFrame({\n",
    "    'Glucose': x_array,\n",
    "    'White Blood Cell Count': y_array\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "86492f60",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.676538Z",
     "iopub.status.busy": "2026-08-31T06:02:48.676484Z",
     "iopub.status.idle": "2026-08-31T06:02:48.678030Z",
     "shell.execute_reply": "2026-08-31T06:02:48.677850Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1089"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(test_grid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "23d03ef0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:48.678903Z",
     "iopub.status.busy": "2026-08-31T06:02:48.678852Z",
     "iopub.status.idle": "2026-08-31T06:02:49.806812Z",
     "shell.execute_reply": "2026-08-31T06:02:49.806569Z"
    },
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [],
   "source": [
    "c_training = classify_grid(training.drop(columns=['Hemoglobin', 'Color']), test_grid, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d48b7939",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.808184Z",
     "iopub.status.busy": "2026-08-31T06:02:49.808114Z",
     "iopub.status.idle": "2026-08-31T06:02:49.809829Z",
     "shell.execute_reply": "2026-08-31T06:02:49.809666Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1089"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(c_training)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "eef65028",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.810787Z",
     "iopub.status.busy": "2026-08-31T06:02:49.810716Z",
     "iopub.status.idle": "2026-08-31T06:02:49.814153Z",
     "shell.execute_reply": "2026-08-31T06:02:49.813838Z"
    },
    "tags": []
   },
   "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>Glucose</th>\n",
       "      <th>White Blood Cell Count</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.75</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.25</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.00</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1084</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1085</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.25</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1086</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1087</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.75</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1088</th>\n",
       "      <td>6.0</td>\n",
       "      <td>6.00</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1089 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      Glucose  White Blood Cell Count Class\n",
       "0        -2.0                   -2.00     1\n",
       "1        -2.0                   -1.75     1\n",
       "2        -2.0                   -1.50     1\n",
       "3        -2.0                   -1.25     1\n",
       "4        -2.0                   -1.00     0\n",
       "...       ...                     ...   ...\n",
       "1084      6.0                    5.00     1\n",
       "1085      6.0                    5.25     1\n",
       "1086      6.0                    5.50     1\n",
       "1087      6.0                    5.75     1\n",
       "1088      6.0                    6.00     1\n",
       "\n",
       "[1089 rows x 3 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_grid['Class'] = c_training.astype(int)\n",
    "test_grid['Class'] = test_grid['Class'].astype(str)\n",
    "test_grid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "0990a0db",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.815288Z",
     "iopub.status.busy": "2026-08-31T06:02:49.815223Z",
     "iopub.status.idle": "2026-08-31T06:02:49.819193Z",
     "shell.execute_reply": "2026-08-31T06:02:49.819014Z"
    },
    "tags": []
   },
   "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>Glucose</th>\n",
       "      <th>White Blood Cell Count</th>\n",
       "      <th>Class</th>\n",
       "      <th>Color</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-2.00</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.75</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.50</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.25</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-2.0</td>\n",
       "      <td>-1.00</td>\n",
       "      <td>0</td>\n",
       "      <td>gold</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1084</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.00</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1085</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.25</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1086</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.50</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1087</th>\n",
       "      <td>6.0</td>\n",
       "      <td>5.75</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1088</th>\n",
       "      <td>6.0</td>\n",
       "      <td>6.00</td>\n",
       "      <td>1</td>\n",
       "      <td>darkblue</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1089 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      Glucose  White Blood Cell Count Class     Color\n",
       "0        -2.0                   -2.00     1  darkblue\n",
       "1        -2.0                   -1.75     1  darkblue\n",
       "2        -2.0                   -1.50     1  darkblue\n",
       "3        -2.0                   -1.25     1  darkblue\n",
       "4        -2.0                   -1.00     0      gold\n",
       "...       ...                     ...   ...       ...\n",
       "1084      6.0                    5.00     1  darkblue\n",
       "1085      6.0                    5.25     1  darkblue\n",
       "1086      6.0                    5.50     1  darkblue\n",
       "1087      6.0                    5.75     1  darkblue\n",
       "1088      6.0                    6.00     1  darkblue\n",
       "\n",
       "[1089 rows x 4 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_grid_combined = test_grid[['Glucose', 'White Blood Cell Count', 'Class']].merge(color_table, on='Class')\n",
    "test_grid_combined"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "f7fd4c3b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.820210Z",
     "iopub.status.busy": "2026-08-31T06:02:49.820148Z",
     "iopub.status.idle": "2026-08-31T06:02:49.855094Z",
     "shell.execute_reply": "2026-08-31T06:02:49.854894Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "training_darkblue = test_grid_combined[test_grid_combined['Color'] == 'darkblue']\n",
    "training_gold = test_grid_combined[test_grid_combined['Color'] == 'gold']\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(4,4))\n",
    "\n",
    "ax.scatter(training_darkblue['White Blood Cell Count'], training_darkblue['Glucose'],  \n",
    "           label='Color=darkblue', alpha=0.4, color='darkblue', s=10)\n",
    "\n",
    "ax.scatter(training_gold['White Blood Cell Count'], training_gold['Glucose'],  \n",
    "           label='Color=gold', alpha=0.4, s=10, color='gold')\n",
    "\n",
    "x_label = 'White Blood Cell Count'\n",
    "y_label = 'Glucose'\n",
    "y_vals = ax.get_yticks()\n",
    "plt.ylabel(y_label)\n",
    "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n",
    "plt.xlabel(x_label)\n",
    "plt.xlim(-2, 6)\n",
    "plt.ylim(-2, 6);\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4daeadc",
   "metadata": {},
   "source": [
    "Place the *test* data on this graph and you can see at once that while the classifier got almost all the points right, there are some mistakes.  For example, some blue points of the test set fall in the gold region of the classifier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "7f341cf6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.856196Z",
     "iopub.status.busy": "2026-08-31T06:02:49.856129Z",
     "iopub.status.idle": "2026-08-31T06:02:49.890727Z",
     "shell.execute_reply": "2026-08-31T06:02:49.890522Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1. Add predictions to grid\n",
    "test_grid['Class'] = c_training\n",
    "test_grid['Class'] = test_grid['Class'].astype(int)\n",
    "color_table['Class'] = color_table['Class'].astype(int)\n",
    "\n",
    "# 2. Merge with color table on Class to attach colors\n",
    "test_grid = pd.merge(test_grid, color_table, on='Class', how='left')\n",
    "\n",
    "# 3. Scatter background grid (colored prediction regions)\n",
    "fig, ax = plt.subplots(figsize=(4,4))\n",
    "\n",
    "for color, group in test_grid.groupby(\"Color\"):\n",
    "    ax.scatter(group['White Blood Cell Count'], group['Glucose'],\n",
    "               color=color, alpha=0.4, s=10, label='Color='+color)\n",
    "\n",
    "# 4. Plot actual testing points\n",
    "ax.scatter(testing['White Blood Cell Count'], testing['Glucose'],\n",
    "           c=testing['Color'], edgecolors='k', s=10)\n",
    "\n",
    "# Formatting\n",
    "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n",
    "plt.xlabel(\"White Blood Cell Count\")\n",
    "plt.ylabel(\"Glucose\")\n",
    "plt.xlim(-2, 6)\n",
    "plt.ylim(-2, 6)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03e0186f",
   "metadata": {},
   "source": [
    "Some errors notwithstanding, it looks like the classifier does fairly well on the test set. Assuming that the original sample was drawn randomly from the underlying population, the hope is that the classifier will perform with similar accuracy on the overall population, since the test set was chosen randomly from the original sample."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3958490c",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "bec1097c",
   "metadata": {},
   "source": [
    "<!-- moved-from-1406-accuracy-of-the-classifier -->\n",
    "\n",
    "## Classifier Accuracy\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "697c8960",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.891906Z",
     "iopub.status.busy": "2026-08-31T06:02:49.891836Z",
     "iopub.status.idle": "2026-08-31T06:02:49.894401Z",
     "shell.execute_reply": "2026-08-31T06:02:49.894208Z"
    },
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [],
   "source": [
    "def distance(point1, point2):\n",
    "    \"\"\"Returns the distance between point1 and point2\n",
    "    where each argument is an array\n",
    "    consisting of the coordinates of the point\"\"\"\n",
    "    return np.sqrt(np.sum((point1 - point2)**2))\n",
    "\n",
    "def table_with_distances(training, new_point):\n",
    "    \"\"\"Augments the training table\n",
    "    with a column of distances from new_point\"\"\"\n",
    "    attributes = training.drop(columns=['Class'])\n",
    "    distances = np.sqrt(((attributes - new_point) ** 2).sum(axis=1))\n",
    "    return training.assign(Distance=distances)\n",
    "\n",
    "def closest(training, new_point, k):\n",
    "    \"\"\"Returns a table of the k rows of the augmented table\n",
    "    corresponding to the k smallest distances\"\"\"\n",
    "    with_dists = table_with_distances(training, new_point)\n",
    "    sorted_by_distance = with_dists.sort_values('Distance')\n",
    "    topk = sorted_by_distance.head(k)\n",
    "    return topk\n",
    "\n",
    "def majority(topkclasses):\n",
    "    # value_counts() returns counts; idxmax() gives the label with max count\n",
    "    return topkclasses.value_counts().idxmax()\n",
    "\n",
    "def classify(training, new_point, k):\n",
    "    closestk = closest(training, new_point, k)\n",
    "    return majority(closestk['Class'])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "1fe85690",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.895323Z",
     "iopub.status.busy": "2026-08-31T06:02:49.895260Z",
     "iopub.status.idle": "2026-08-31T06:02:49.898860Z",
     "shell.execute_reply": "2026-08-31T06:02:49.898693Z"
    },
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [],
   "source": [
    "wine = pd.read_csv(path_data + 'wine.csv')\n",
    "\n",
    "# Class (cultivar 1, 2, or 3) is the label; every other column is a feature.\n",
    "# Any column computed from Class would leak the answer into the features."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "055fea8a",
   "metadata": {},
   "source": [
    "```{contents}\n",
    ":local:\n",
    ":depth: 2\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80cfaf2c",
   "metadata": {},
   "source": [
    "## Measuring the Accuracy of Our Wine Classifier\n",
    "OK, so let's apply the hold-out method to evaluate the effectiveness of the $k$-nearest neighbor classifier for identifying wines.  The data set has 178 wines, so we'll randomly permute the data set and put 89 of them in the training set and the remaining 89 in the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d5d2aee6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.899861Z",
     "iopub.status.busy": "2026-08-31T06:02:49.899794Z",
     "iopub.status.idle": "2026-08-31T06:02:49.904054Z",
     "shell.execute_reply": "2026-08-31T06:02:49.903889Z"
    },
    "tags": []
   },
   "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>Class</th>\n",
       "      <th>Alcohol</th>\n",
       "      <th>Malic Acid</th>\n",
       "      <th>Ash</th>\n",
       "      <th>Alcalinity of Ash</th>\n",
       "      <th>Magnesium</th>\n",
       "      <th>Total Phenols</th>\n",
       "      <th>Flavanoids</th>\n",
       "      <th>Nonflavanoid phenols</th>\n",
       "      <th>Proanthocyanins</th>\n",
       "      <th>Color Intensity</th>\n",
       "      <th>Hue</th>\n",
       "      <th>OD280/OD315 of diulted wines</th>\n",
       "      <th>Proline</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>160</th>\n",
       "      <td>3</td>\n",
       "      <td>12.36</td>\n",
       "      <td>3.83</td>\n",
       "      <td>2.38</td>\n",
       "      <td>21.0</td>\n",
       "      <td>88</td>\n",
       "      <td>2.30</td>\n",
       "      <td>0.92</td>\n",
       "      <td>0.50</td>\n",
       "      <td>1.04</td>\n",
       "      <td>7.65</td>\n",
       "      <td>0.56</td>\n",
       "      <td>1.58</td>\n",
       "      <td>520</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>156</th>\n",
       "      <td>3</td>\n",
       "      <td>13.84</td>\n",
       "      <td>4.12</td>\n",
       "      <td>2.38</td>\n",
       "      <td>19.5</td>\n",
       "      <td>89</td>\n",
       "      <td>1.80</td>\n",
       "      <td>0.83</td>\n",
       "      <td>0.48</td>\n",
       "      <td>1.56</td>\n",
       "      <td>9.01</td>\n",
       "      <td>0.57</td>\n",
       "      <td>1.64</td>\n",
       "      <td>480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>78</th>\n",
       "      <td>2</td>\n",
       "      <td>12.33</td>\n",
       "      <td>0.99</td>\n",
       "      <td>1.95</td>\n",
       "      <td>14.8</td>\n",
       "      <td>136</td>\n",
       "      <td>1.90</td>\n",
       "      <td>1.85</td>\n",
       "      <td>0.35</td>\n",
       "      <td>2.76</td>\n",
       "      <td>3.40</td>\n",
       "      <td>1.06</td>\n",
       "      <td>2.31</td>\n",
       "      <td>750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>1</td>\n",
       "      <td>14.21</td>\n",
       "      <td>4.04</td>\n",
       "      <td>2.44</td>\n",
       "      <td>18.9</td>\n",
       "      <td>111</td>\n",
       "      <td>2.85</td>\n",
       "      <td>2.65</td>\n",
       "      <td>0.30</td>\n",
       "      <td>1.25</td>\n",
       "      <td>5.24</td>\n",
       "      <td>0.87</td>\n",
       "      <td>3.33</td>\n",
       "      <td>1080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>112</th>\n",
       "      <td>2</td>\n",
       "      <td>11.76</td>\n",
       "      <td>2.68</td>\n",
       "      <td>2.92</td>\n",
       "      <td>20.0</td>\n",
       "      <td>103</td>\n",
       "      <td>1.75</td>\n",
       "      <td>2.03</td>\n",
       "      <td>0.60</td>\n",
       "      <td>1.05</td>\n",
       "      <td>3.80</td>\n",
       "      <td>1.23</td>\n",
       "      <td>2.50</td>\n",
       "      <td>607</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Class  Alcohol  Malic Acid   Ash  Alcalinity of Ash  Magnesium  \\\n",
       "160      3    12.36        3.83  2.38               21.0         88   \n",
       "156      3    13.84        4.12  2.38               19.5         89   \n",
       "78       2    12.33        0.99  1.95               14.8        136   \n",
       "45       1    14.21        4.04  2.44               18.9        111   \n",
       "112      2    11.76        2.68  2.92               20.0        103   \n",
       "\n",
       "     Total Phenols  Flavanoids  Nonflavanoid phenols  Proanthocyanins  \\\n",
       "160           2.30        0.92                  0.50             1.04   \n",
       "156           1.80        0.83                  0.48             1.56   \n",
       "78            1.90        1.85                  0.35             2.76   \n",
       "45            2.85        2.65                  0.30             1.25   \n",
       "112           1.75        2.03                  0.60             1.05   \n",
       "\n",
       "     Color Intensity   Hue  OD280/OD315 of diulted wines  Proline  \n",
       "160             7.65  0.56                          1.58      520  \n",
       "156             9.01  0.57                          1.64      480  \n",
       "78              3.40  1.06                          2.31      750  \n",
       "45              5.24  0.87                          3.33     1080  \n",
       "112             3.80  1.23                          2.50      607  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffled_wine = wine.sample(len(wine), replace=False, random_state=12)\n",
    "training_set = shuffled_wine.take(np.arange(89))\n",
    "training_set.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "183f81a8",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.905019Z",
     "iopub.status.busy": "2026-08-31T06:02:49.904958Z",
     "iopub.status.idle": "2026-08-31T06:02:49.908936Z",
     "shell.execute_reply": "2026-08-31T06:02:49.908740Z"
    },
    "tags": []
   },
   "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>Class</th>\n",
       "      <th>Alcohol</th>\n",
       "      <th>Malic Acid</th>\n",
       "      <th>Ash</th>\n",
       "      <th>Alcalinity of Ash</th>\n",
       "      <th>Magnesium</th>\n",
       "      <th>Total Phenols</th>\n",
       "      <th>Flavanoids</th>\n",
       "      <th>Nonflavanoid phenols</th>\n",
       "      <th>Proanthocyanins</th>\n",
       "      <th>Color Intensity</th>\n",
       "      <th>Hue</th>\n",
       "      <th>OD280/OD315 of diulted wines</th>\n",
       "      <th>Proline</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>13.16</td>\n",
       "      <td>2.36</td>\n",
       "      <td>2.67</td>\n",
       "      <td>18.6</td>\n",
       "      <td>101</td>\n",
       "      <td>2.80</td>\n",
       "      <td>3.24</td>\n",
       "      <td>0.30</td>\n",
       "      <td>2.81</td>\n",
       "      <td>5.68</td>\n",
       "      <td>1.03</td>\n",
       "      <td>3.17</td>\n",
       "      <td>1185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>1</td>\n",
       "      <td>13.87</td>\n",
       "      <td>1.90</td>\n",
       "      <td>2.80</td>\n",
       "      <td>19.4</td>\n",
       "      <td>107</td>\n",
       "      <td>2.95</td>\n",
       "      <td>2.97</td>\n",
       "      <td>0.37</td>\n",
       "      <td>1.76</td>\n",
       "      <td>4.50</td>\n",
       "      <td>1.25</td>\n",
       "      <td>3.40</td>\n",
       "      <td>915</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>3</td>\n",
       "      <td>13.32</td>\n",
       "      <td>3.24</td>\n",
       "      <td>2.38</td>\n",
       "      <td>21.5</td>\n",
       "      <td>92</td>\n",
       "      <td>1.93</td>\n",
       "      <td>0.76</td>\n",
       "      <td>0.45</td>\n",
       "      <td>1.25</td>\n",
       "      <td>8.42</td>\n",
       "      <td>0.55</td>\n",
       "      <td>1.62</td>\n",
       "      <td>650</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>132</th>\n",
       "      <td>3</td>\n",
       "      <td>12.81</td>\n",
       "      <td>2.31</td>\n",
       "      <td>2.40</td>\n",
       "      <td>24.0</td>\n",
       "      <td>98</td>\n",
       "      <td>1.15</td>\n",
       "      <td>1.09</td>\n",
       "      <td>0.27</td>\n",
       "      <td>0.83</td>\n",
       "      <td>5.70</td>\n",
       "      <td>0.66</td>\n",
       "      <td>1.36</td>\n",
       "      <td>560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>13.86</td>\n",
       "      <td>1.35</td>\n",
       "      <td>2.27</td>\n",
       "      <td>16.0</td>\n",
       "      <td>98</td>\n",
       "      <td>2.98</td>\n",
       "      <td>3.15</td>\n",
       "      <td>0.22</td>\n",
       "      <td>1.85</td>\n",
       "      <td>7.22</td>\n",
       "      <td>1.01</td>\n",
       "      <td>3.55</td>\n",
       "      <td>1045</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Class  Alcohol  Malic Acid   Ash  Alcalinity of Ash  Magnesium  \\\n",
       "2        1    13.16        2.36  2.67               18.6        101   \n",
       "28       1    13.87        1.90  2.80               19.4        107   \n",
       "148      3    13.32        3.24  2.38               21.5         92   \n",
       "132      3    12.81        2.31  2.40               24.0         98   \n",
       "9        1    13.86        1.35  2.27               16.0         98   \n",
       "\n",
       "     Total Phenols  Flavanoids  Nonflavanoid phenols  Proanthocyanins  \\\n",
       "2             2.80        3.24                  0.30             2.81   \n",
       "28            2.95        2.97                  0.37             1.76   \n",
       "148           1.93        0.76                  0.45             1.25   \n",
       "132           1.15        1.09                  0.27             0.83   \n",
       "9             2.98        3.15                  0.22             1.85   \n",
       "\n",
       "     Color Intensity   Hue  OD280/OD315 of diulted wines  Proline  \n",
       "2               5.68  1.03                          3.17     1185  \n",
       "28              4.50  1.25                          3.40      915  \n",
       "148             8.42  0.55                          1.62      650  \n",
       "132             5.70  0.66                          1.36      560  \n",
       "9               7.22  1.01                          3.55     1045  "
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_set  = shuffled_wine.take(np.arange(89, 178))\n",
    "test_set.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95a8b5a0",
   "metadata": {},
   "source": [
    "We'll train the classifier using the 89 wines in the training set, and evaluate how well it performs on the test set. To make our lives easier, we'll write a function to evaluate a classifier on every wine in the test set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "3ea566a6",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.909856Z",
     "iopub.status.busy": "2026-08-31T06:02:49.909798Z",
     "iopub.status.idle": "2026-08-31T06:02:49.911501Z",
     "shell.execute_reply": "2026-08-31T06:02:49.911308Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def count_zero(array):\n",
    "    \"\"\"Counts the number of 0's in an array\"\"\"\n",
    "    return len(array) - np.count_nonzero(array)\n",
    "\n",
    "def count_equal(array1, array2):\n",
    "    \"\"\"Takes two numerical arrays of equal length\n",
    "    and counts the indices where the two are equal\"\"\"\n",
    "    return count_zero(array1 - array2)\n",
    "\n",
    "def evaluate_accuracy(training, test, k):\n",
    "    test_attributes = test.drop(columns=['Class'])\n",
    "    def classify_testrow(row):\n",
    "        return classify(training, row, k)\n",
    "    c = test_attributes.apply(classify_testrow, axis=1)\n",
    "    return count_equal(c, test['Class']) / len(test)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "11ce8099",
   "metadata": {},
   "source": [
    "Now for the grand reveal -- let's see how we did.  We'll arbitrarily use $k=5$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "5dff699d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.912383Z",
     "iopub.status.busy": "2026-08-31T06:02:49.912330Z",
     "iopub.status.idle": "2026-08-31T06:02:49.962708Z",
     "shell.execute_reply": "2026-08-31T06:02:49.962524Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.6741573033707865)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "evaluate_accuracy(training_set, test_set, 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2f4c220",
   "metadata": {},
   "source": [
    "About 67% of the test wines are classified correctly. That is better than guessing among three cultivars, but the classifier is missing something. Look at the columns in `training_set.head()` above: `Proline` is in the hundreds or thousands, while most other attributes are below 10. Distance adds up squared differences, so a difference of 100 in `Proline` swamps every other attribute, and the classifier is effectively using one attribute.\n",
    "\n",
    "**Scaling the features.** As with the kidney data, we convert each attribute to standard units. The mean and SD come from the training set, and the same values are applied to the test set.\n"
   ]
  },
  {
   "cell_type": "code",
   "id": "e2cccef1",
   "metadata": {
    "tags": []
   },
   "source": [
    "wine_features = wine.columns.drop('Class')\n",
    "\n",
    "training_scaled = standardize(training_set, wine_features, training_set)\n",
    "test_scaled = standardize(test_set, wine_features, training_set)\n",
    "\n",
    "evaluate_accuracy(training_scaled, test_scaled, 5)\n"
   ],
   "execution_count": 23,
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.9550561797752809)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b48f35ef",
   "metadata": {},
   "source": [
    "Once every attribute counts on the same scale, the same classifier, with the same training and test wines, is far more accurate: about 96% of the test wines are now classified correctly, up from 67%. Scaling is part of building a nearest-neighbor classifier, not an optional extra.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36187a55",
   "metadata": {},
   "source": [
    "## Breast Cancer Diagnosis\n",
    "\n",
    "Now I want to do an example based on diagnosing breast cancer.  I was inspired by Brittany Wenger, who won the Google national science fair in 2012 as a 17-year old high school student.  Here's Brittany:\n",
    "\n",
    "![Brittany Wenger](http://i.huffpost.com/gen/701499/thumbs/o-GSF83-570.jpg?3)\n",
    "\n",
    "Brittany's [science fair project](https://sites.google.com/a/googlesciencefair.com/science-fair-2012-project-64a91af142a459cfb486ed5cb05f803b2eb41354-1333130785-87/home) was to build a classification algorithm to diagnose breast cancer.  She won grand prize for building an algorithm whose accuracy was almost 99%. \n",
    "\n",
    "Let's see how well we can do, with the ideas we've learned in this course.\n",
    "\n",
    "So, let me tell you a little bit about the data set.  Basically, if a woman has a lump in her breast, the doctors may want to take a biopsy to see if it is cancerous.  There are several different procedures for doing that.  Brittany focused on fine needle aspiration (FNA), because it is less invasive than the alternatives.  The doctor gets a sample of the mass, puts it under a microscope, takes a picture, and a trained lab tech analyzes the picture to determine whether it is cancer or not.  We get a picture like one of the following:\n",
    "<!-- \n",
    "![benign](MISSING1)\n",
    "\n",
    "![cancer](MISSING2) -->\n",
    "\n",
    "Unfortunately, distinguishing between benign vs malignant can be tricky.  So, researchers have studied the use of machine learning to help with this task.  The idea is that we'll ask the lab tech to analyze the image and compute various attributes: things like the typical size of a cell, how much variation there is among the cell sizes, and so on.  Then, we'll try to use this information to predict (classify) whether the sample is malignant or not.  We have a training set of past samples from women where the correct diagnosis is known, and we'll hope that our machine learning algorithm can use those to learn how to predict the diagnosis for future samples.\n",
    "\n",
    "We end up with the following data set.  For the \"Class\" column, 1 means malignant (cancer); 0 means benign (not cancer)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "956449b7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.963772Z",
     "iopub.status.busy": "2026-08-31T06:02:49.963706Z",
     "iopub.status.idle": "2026-08-31T06:02:49.968128Z",
     "shell.execute_reply": "2026-08-31T06:02:49.967952Z"
    },
    "tags": []
   },
   "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>Clump Thickness</th>\n",
       "      <th>Uniformity of Cell Size</th>\n",
       "      <th>Uniformity of Cell Shape</th>\n",
       "      <th>Marginal Adhesion</th>\n",
       "      <th>Single Epithelial Cell Size</th>\n",
       "      <th>Bare Nuclei</th>\n",
       "      <th>Bland Chromatin</th>\n",
       "      <th>Normal Nucleoli</th>\n",
       "      <th>Mitoses</th>\n",
       "      <th>Class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>7</td>\n",
       "      <td>10</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</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",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>678</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>679</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680</th>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>10</td>\n",
       "      <td>3</td>\n",
       "      <td>7</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>10</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>681</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>6</td>\n",
       "      <td>4</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>682</th>\n",
       "      <td>4</td>\n",
       "      <td>8</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>10</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>683 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     Clump Thickness  Uniformity of Cell Size  Uniformity of Cell Shape  \\\n",
       "0                  5                        1                         1   \n",
       "1                  5                        4                         4   \n",
       "2                  3                        1                         1   \n",
       "3                  6                        8                         8   \n",
       "4                  4                        1                         1   \n",
       "..               ...                      ...                       ...   \n",
       "678                3                        1                         1   \n",
       "679                2                        1                         1   \n",
       "680                5                       10                        10   \n",
       "681                4                        8                         6   \n",
       "682                4                        8                         8   \n",
       "\n",
       "     Marginal Adhesion  Single Epithelial Cell Size  Bare Nuclei  \\\n",
       "0                    1                            2            1   \n",
       "1                    5                            7           10   \n",
       "2                    1                            2            2   \n",
       "3                    1                            3            4   \n",
       "4                    3                            2            1   \n",
       "..                 ...                          ...          ...   \n",
       "678                  1                            3            2   \n",
       "679                  1                            2            1   \n",
       "680                  3                            7            3   \n",
       "681                  4                            3            4   \n",
       "682                  5                            4            5   \n",
       "\n",
       "     Bland Chromatin  Normal Nucleoli  Mitoses  Class  \n",
       "0                  3                1        1      0  \n",
       "1                  3                2        1      0  \n",
       "2                  3                1        1      0  \n",
       "3                  3                7        1      0  \n",
       "4                  3                1        1      0  \n",
       "..               ...              ...      ...    ...  \n",
       "678                1                1        1      0  \n",
       "679                1                1        1      0  \n",
       "680                8               10        2      1  \n",
       "681               10                6        1      1  \n",
       "682               10                4        1      1  \n",
       "\n",
       "[683 rows x 10 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "patients = pd.read_csv(path_data + 'breast-cancer.csv').drop(columns='ID')\n",
    "patients"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c96c206",
   "metadata": {},
   "source": [
    "So we have 9 different attributes.  I don't know how to make a 9-dimensional scatterplot of all of them, so I'm going to pick two and plot them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "02cc52e1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.969171Z",
     "iopub.status.busy": "2026-08-31T06:02:49.969106Z",
     "iopub.status.idle": "2026-08-31T06:02:49.971271Z",
     "shell.execute_reply": "2026-08-31T06:02:49.971079Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "color_table = pd.DataFrame({\n",
    "    'Class': [1, 0],\n",
    "    'Color': ['darkblue', 'gold']\n",
    "})\n",
    "patients_with_colors = patients.merge(color_table, on='Class')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "04a67cb1",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:49.972150Z",
     "iopub.status.busy": "2026-08-31T06:02:49.972097Z",
     "iopub.status.idle": "2026-08-31T06:02:50.022627Z",
     "shell.execute_reply": "2026-08-31T06:02:50.022260Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize=(5, 4))\n",
    "for color, group in patients_with_colors.groupby('Color'):\n",
    "    ax.scatter(group['Bland Chromatin'], group['Single Epithelial Cell Size'],\n",
    "               color=color, label=color, alpha=0.7, s=15)\n",
    "ax.set_xlabel('Bland Chromatin')\n",
    "ax.set_ylabel('Single Epithelial Cell Size')\n",
    "ax.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4e98916",
   "metadata": {},
   "source": [
    "Oops.  That plot is utterly misleading, because there are a bunch of points that have identical values for both the x- and y-coordinates.  To make it easier to see all the data points, I'm going to add a little bit of random jitter to the x- and y-values.  Here's how that looks:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2330d03f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:50.026674Z",
     "iopub.status.busy": "2026-08-31T06:02:50.025617Z",
     "iopub.status.idle": "2026-08-31T06:02:50.069852Z",
     "shell.execute_reply": "2026-08-31T06:02:50.069590Z"
    },
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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plJevJbhsLjXK0+Az8K2n8xaT0Rl4tSICf6alCyVxGntg3JtuCplqymbPZKYue+8IAhNgygAJvUQmO67NZtqPtSzTZYqQQyrklJX5SVhsnra6tlojvHVomSpTol54e/93ZqT7wRBqI4JVkcherCp5kON7T/Q3MqLFzXvAW6acTZlm+RmoCUm3wmCUB1RAARBaDXJd4IgHEXUeUEQBEFohYgCIAiCIAitEFEABEEQBKEVIgqAIAiCYHo++eQTfPfdd3V6b2lpKf773/9i5cqVzT6uaKbJkgC5H/KaNWuQn5+v9k0+/fTTm+pfC4IgCK2cu+66C0OHDsVppx2/yufQoUO45ZZbcPPNN2P48OFhGV+rVAB2796NyZMnY968eVXPTZgwoUoByMnJwcSJE9GpUyd8/fXXjf06QRAEQRAiHQLYtWsXzjjjDCX8k5KS0L9//2Pek56ejvbt22P58uVYv359Y75OEARBEAQzKAD333+/crXQ2l+3bh2efPLJkO8788wz1f3cuXMb83WCIAiCieGOsD/99BNmzJiBH3/8UT0+Xjx+586dmD17Nj7//HNs3ry5Sb5TaOYQQEFBgXLpx8TEqC14k5OTa3xv165d1f2mTZsa+nWCIAiCiWE4+JprrlHGYOAuss8880zIePyBAwdw66234ttvv632f0466SS8/vrr6Nmz53G/c8+ePeo7165dW+07n3766Sb7XS2ZBisA27Ztg8/nQ69evZSbvzbS0tLUPRMEBSHsVG20tFbtzGeaPQIEoYXgcrnwy1/+UlnwNAZPPvlkeDweZZnfcccdx7yfr1166aVKWUhISMCJJ54Ih8OBFStWqNtFF12ERYsW1WpY8juvuOKKY76Tn7/zzjub+Re3DBq8Cnq9/v3rY2Njj/vesrKyOr9XEJoU3QNn4ZSqnfi4LS935uPmPKIECFGHSZXZzz77TAliZun/73//Q7t27aqSwCdNmnTM++nup/Dv27cvPv30U3Tu3LnKSPzVr36FJUuW4O2338bdd99d43caIYPg78zKysLFF1/cbL+1JdHgHADD6mf8hp6A2li2bJm679HDfNueCi10kaz8AY6Sl2EvfQ0W92bAkghoseqeygAXUUGIRmU2pvgp2Crnqns+5vORZuHCher+T3/6U5UgNuTEAw88cMz7f/jhB3X/yCOPVAl/kpqaiqeeeqra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",
      "text/plain": [
       "<Figure size 500x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rng = np.random.default_rng(12)\n",
    "\n",
    "def randomize_column(a):\n",
    "    return a + rng.normal(0.0, 0.09, size=len(a))\n",
    "\n",
    "jittered = patients.merge(color_table, on='Class').copy()\n",
    "jittered['Bland Chromatin (jittered)'] = randomize_column(patients['Bland Chromatin'])\n",
    "jittered['Single Epithelial Cell Size (jittered)'] = randomize_column(patients['Single Epithelial Cell Size'])\n",
    "\n",
    "fig, ax = plt.subplots(figsize=(5, 4))\n",
    "for color, group in jittered.groupby('Color'):\n",
    "    ax.scatter(group['Bland Chromatin (jittered)'], group['Single Epithelial Cell Size (jittered)'],\n",
    "               color=color, label=color, alpha=0.7, s=15)\n",
    "ax.set_xlabel('Bland Chromatin (jittered)')\n",
    "ax.set_ylabel('Single Epithelial Cell Size (jittered)')\n",
    "ax.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ad6b0c4c",
   "metadata": {},
   "source": [
    "For instance, you can see there are lots of samples with chromatin = 2 and epithelial cell size = 2; all non-cancerous.\n",
    "\n",
    "Keep in mind that the jittering is just for visualization purposes, to make it easier to get a feeling for the data.  We're ready to work with the data now, and we'll use the original (unjittered) data."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ab0cf5b",
   "metadata": {},
   "source": [
    "First we'll create a training set and a test set. The data set has 683 patients, so we'll randomly permute the data set and put 342 of them in the training set and the remaining 341 in the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "da304d39",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:50.071014Z",
     "iopub.status.busy": "2026-08-31T06:02:50.070937Z",
     "iopub.status.idle": "2026-08-31T06:02:50.072693Z",
     "shell.execute_reply": "2026-08-31T06:02:50.072527Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "shuffled_patients = patients.sample(frac=1, random_state=12).reset_index(drop=True)\n",
    "training_set = shuffled_patients.iloc[:342]\n",
    "test_set  = shuffled_patients.iloc[342:]\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37b70b2b",
   "metadata": {},
   "source": [
    "Let's stick with 5 nearest neighbors, and see how well our classifier does."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "ee5a71b2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:50.073590Z",
     "iopub.status.busy": "2026-08-31T06:02:50.073530Z",
     "iopub.status.idle": "2026-08-31T06:02:50.232054Z",
     "shell.execute_reply": "2026-08-31T06:02:50.231868Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(0.9765395894428153)"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "evaluate_accuracy(training_set, test_set, 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dd0cf93d",
   "metadata": {},
   "source": [
    "Almost 98% accuracy.  Not bad!  Once again, pretty darn good for such a simple technique.\n",
    "\n",
    "As a footnote, you might have noticed that Brittany Wenger did even better.  What techniques did she use? One key innovation is that she incorporated a confidence score into her results: her algorithm had a way to determine when it was not able to make a confident prediction, and for those patients, it didn't even try to predict their diagnosis.  Her algorithm was 99% accurate on the patients where it made a prediction -- so that extension seemed to help quite a bit."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cell-e1242daa",
   "metadata": {},
   "source": [
    "\n",
    "## Section Practice\n",
    "\n",
    "Use this short exercise to check the main workflow from this section.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "cell-50582e88",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:50.233162Z",
     "iopub.status.busy": "2026-08-31T06:02:50.233101Z",
     "iopub.status.idle": "2026-08-31T06:02:50.234823Z",
     "shell.execute_reply": "2026-08-31T06:02:50.234416Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: Practice Training, Testing, and Accuracy\n",
    "# A 1-nearest neighbor classifier was checked twice: on its own training set\n",
    "# and on a separate test set. Its predictions and the actual labels are below.\n",
    "#   1. Compute the accuracy (proportion of correct predictions) on each set.\n",
    "#   2. Print both. Which one is the honest estimate for new customers?\n",
    "# Print exactly:\n",
    "# Training accuracy: 1.0\n",
    "# Test accuracy: 0.75\n",
    "train_predicted = ['yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "train_actual = ['yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "test_predicted = ['yes', 'no', 'yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "test_actual = ['yes', 'no', 'no', 'no', 'yes', 'yes', 'no', 'yes']\n",
    "### Your code starts here\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "cell-87bec7ba",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:50.236095Z",
     "iopub.status.busy": "2026-08-31T06:02:50.236020Z",
     "iopub.status.idle": "2026-08-31T06:02:50.237933Z",
     "shell.execute_reply": "2026-08-31T06:02:50.237727Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training accuracy: 1.0\n",
      "Test accuracy: 0.75\n"
     ]
    }
   ],
   "source": [
    "### Solution\n",
    "train_predicted = ['yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "train_actual = ['yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "test_predicted = ['yes', 'no', 'yes', 'no', 'no', 'yes', 'no', 'yes']\n",
    "test_actual = ['yes', 'no', 'no', 'no', 'yes', 'yes', 'no', 'yes']\n",
    "\n",
    "def accuracy(predicted, actual):\n",
    "    correct = sum(p == a for p, a in zip(predicted, actual))\n",
    "    return correct / len(actual)\n",
    "\n",
    "print('Training accuracy:', accuracy(train_predicted, train_actual))\n",
    "print('Test accuracy:', accuracy(test_predicted, test_actual))\n",
    "# The test accuracy is the honest estimate: a 1-NN classifier always gets its own\n",
    "# training points right, because each point is its own nearest neighbor.\n"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "celltoolbar": "Tags",
  "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.13.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
