{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "path_data = '../../data/'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import math\n", "import scipy.stats as stats\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "plt.style.use('fivethirtyeight')\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "def standard_units(x):\n", " return (x - np.mean(x))/np.std(x)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "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 p (an array of numbers) and the numbers in row i of attribute_table.\"\"\"\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 array p.\"\"\"\n", " training1 = training.copy()\n", " training1['Distance'] = all_distances(training1, point)\n", " return training1\n", "\n", "\n", "def closest(training, point, k):\n", " \"\"\"A table containing the k closest rows in the training table to array p.\"\"\"\n", " with_dists = table_with_distances(training, point)\n", " sorted_by_distance = with_dists.sort_values(by=['Distance'])\n", " topk = sorted_by_distance.take(np.arange(k))\n", " return topk" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "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" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HemoglobinGlucoseWhite Blood Cell CountClassColor
0-0.865744-0.221549-0.5697681darkblue
1-1.457446-0.9475971.1626841darkblue
2-1.0049683.841231-1.2755821darkblue
3-2.8148790.3963640.8097771darkblue
4-2.0839540.6435290.2322931darkblue
..................
1530.7005260.133751-0.5697680gold
1540.978974-0.870358-0.2168610gold
1550.735332-0.484162-0.6018500gold
1560.178436-0.267893-0.4093560gold
1570.735332-0.005280-0.5376860gold
\n", "

158 rows × 5 columns

\n", "
" ], "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", "\n", "\n", "ckd_Standard_Unit = pd.DataFrame({'Hemoglobin':standard_units(ckd['Hemoglobin']), \n", " 'Glucose':standard_units(ckd['Glucose']), \n", " 'White Blood Cell Count':standard_units(ckd['White Blood Cell Count']), \n", " 'Class':ckd['Class'].astype(str)})\n", "\n", "color_table = pd.DataFrame(\n", " {'Class':np.array([1, 0]),\n", " 'Color':np.array(['darkblue', 'gold'])}, index=np.array([1,0]))\n", " \n", "color_table['Class'] = color_table['Class'].astype(str)\n", "\n", "ckd_combined = pd.merge(ckd_Standard_Unit, color_table, on='Class')\n", "\n", "ckd_combined" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Training and Testing\n", "How good is our nearest neighbor classifier? To answer this we'll need to find out how frequently our classifications are correct. If a patient has chronic kidney disease, how likely is our classifier to pick that up?\n", "\n", "If the patient is in our training set, we can find out immediately. We already know what class the patient is in. So we can just compare our prediction and the patient's true class.\n", "\n", "But the point of the classifier is to make predictions for *new* patients not in our training set. We don't know what class these patients are in but we can make a prediction based on our classifier. How to find out whether the prediction is correct?\n", "\n", "One way is to wait for further medical tests on the patient and then check whether or not our prediction agrees with the test results. With that approach, by the time we can say how likely our prediction is to be accurate, it is no longer useful for helping the patient.\n", "\n", "Instead, we will try our classifier on some patients whose true classes are known. Then, we will compute the proportion of the time our classifier was correct. This proportion will serve as an estimate of the proportion of all new patients whose class our classifier will accurately predict. This is called *testing*." ] }, { "cell_type": "markdown", "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, "metadata": {}, "outputs": [ { "data": { "image/png": "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0JOu5Eal8kFCQjTi41OQkZEPf392CSAiIiKqKSasVqZS+WDjxgFSh0FERERUa7AkgIiIiIhkjQkrEREREckaE1YiIiIikjUmrEREREQka0xYiYiIiEjWmLASERERkawxYSUiIiIiWWPCSkRERESyxoSViIiIiGSNCSsRERERyRoTViIiIiKSNSasRERERCRrTFiJiIiISNaYsBIRERGRrDFhJSIiIiJZY8JKRERERLLGhJWIiIiIZI0JKxERERHJGhNWIiIiIpI1JqxEREREJGtMWImIiIhI1piwEhEREZGsMWElIiIiIlljwkpEREREssaElYiIiIhkjQkrEREREckaE1YiIiIikjUmrEREREQka0xYiYiIiEjWmLASERERkawxYSUiIiIiWWPCSkRERESy5jAJ68aNG9GzZ08EBwcjODgYTz75JA4ePCh1WERERERkYw6TsDZr1gyLFy/GsWPHcOTIEfTp0wdxcXH49ddfpQ6NiIiIiGzIReoAzDVo0CC9nxcsWIBPPvkEZ86cQfv27SWKioiIiIhszWES1opKS0uRkJCAvLw8PProo1KHQ0REREQ2pMjOzhakDsJcv/32GwYOHIjCwkJ4eXlh48aNiIqKMnh8amqqHaMjIiKyjYiICKlDIJKUQyWsxcXFuH79Ou7du4fExERs3boV+/btQ9u2baUOzapSU1Nr7X+c+GyOic/mmPhsjqk2PxtRdTlUSYCbmxuaN28OAOjcuTPOnj2LdevWYe3atRJHRkRERES24jBdAsRotVoUFxdLHQYRERER2VC1R1hLS0tx7949+Pj4wMXF9gO1ixYtwsCBAxEYGIjc3Fzs2rULx48fx44dO2x+byIiIiKSjsUjrGfPnkVsbCyaNWuGiIgInDhxAgCQlZWF0aNH49ixY1YPEgBu3ryJKVOmoGvXrhg6dCjOnj2LXbt24cknn7TJ/YiIiIhIHiwaGv3hhx8wZMgQNG3aFM888ww+++wz3T5fX1/k5ubi888/R9++fa0e6EcffWT1axIRERGR/Fk0wvr2228jPDwcp0+fxltvvVVlf+/evZGSkmK14IiIiIiILEpYz549i/Hjx8PDwwMKhaLK/sDAQNy8edNqwRERERERWZSwOjk5wcnJ8Ck3b95EvXr1ahwUEREREVE5ixLWTp064ZtvvhHdV1xcjJ07d3KpVCIiIiKy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fyErK0t3XHp6Onbu3Ilu3brpEq6BAwfi/PnzOHnypO64/Px8bNmyxay4hwwZgvbt2+O9996r0h8XAIqKijB//nwAZT12+/Tpgy1btuD69etVjrVGOYClMVnyWTVv3hwA9NpXlZSU4NNPP612rIb+rBER1XYcYaVawdnZGZGRkTh69CicnJwQGRmpt79bt2548803AUB0wlVNlLfHevvttzFixAi4ubmhT58+8PPzw5o1a/DCCy+gV69eGDVqFJo2bYobN24gKSkJXl5eosvGVnb58mV8+eWXAMpaXKWkpGD79u1o3ry50Znivr6+mDt3LhYvXoyhQ4di8ODBuHHjBjZs2ICQkBDMnDlTd+w777yD2NhYPPHEE3j++echCAI++eQTPHjwAG+//bbuuFdeeQU7duzAM888gylTpqBRo0b417/+pUukTHFxccEXX3yB2NhYxMTEYMiQIejZsyfc3d1x6dIl7N69G7du3cI777wDAHjvvfcQFRWFxx57DM8//zzCw8ORlZWF8+fP4/Dhw7h27ZpZ97VmTOZ+VgMGDEBISAj++te/IjU1FR4eHti1a1eNlgP29vZGREQEdu/ejRYtWqBRo0ZQqVRV/rwTEdU2TFip1ujRoweOHj2KNm3aVHnlX3FU1dojrF27doVarcaWLVswY8YMaLVa7N27F35+foiNjUVAQADee+89rFu3DgUFBbo16svbF5ny/fff4/vvvwdQlpj7+/vj2Wef1bVXMubVV1+Fr68vPv74YyxYsADe3t4YOnQoFi5cqPea+rHHHsOePXvw7rvvYsWKFVAoFIiMjMSnn36q62ULAE2aNMH+/fsxZ84crF27FvXr18eYMWMwYMAAXT9aU0JDQ/H9999j/fr1SExMxLfffouSkhIEBwdj0KBBeo3wW7RogaNHj2LFihXYuXMnbt++DV9fX7Rq1UovOawpS2Iy97NycXHBtm3bMHv2bCxbtgyNGjXC+PHj0atXL72SFUt9+OGHmDdvHtRqNYqKijB27FgmrERU6ymys7Or/+s+EREREZGNsYaViIiIiGSNCSsRERERyRoTViIiIiKSNSasRERERCRrTFiJiIiISNaYsBIRERGRrDFhJSIiIiJZY8JKRERERLLGhJWIiIiIZO3/Af6pYak+LHrWAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "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=(7,6))\n", "\n", "ax.scatter(glucose_color_darkblue['White Blood Cell Count'], \n", " glucose_color_darkblue['Glucose'], \n", " label='Color=darkblue', \n", " color='darkblue')\n", "\n", "ax.scatter(glucose_color_gold['White Blood Cell Count'], \n", " glucose_color_gold['Glucose'], \n", " label='Color=gold', \n", " color='gold')\n", "\n", "x_label = 'White Blood Cell Count'\n", "\n", "y_label = 'Glucose'\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "plt.ylabel(y_label)\n", "\n", "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "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", "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", "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." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "shuffled_ckd = ckd_combined.sample(len(ckd_combined), replace=False)\n", "\n", "shuffled_ckd\n", "\n", "training = shuffled_ckd.take(np.arange(79))\n", "\n", "testing = shuffled_ckd.take(np.arange(79, 158))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's construct our classifier based on the points in the training sample:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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ceJEkbVIUv/+/RUcHKyVK1fmC6s3X8/Ly0tt2rQp8H0pjh9//FE7d+606lVu1qyZJOno0aMlOic9rIABTp68ZLM9JcV2OwC4AyN+t0VERMhkMunXX38tcB+z2VzgSkqFrbBka9vNbf7+/vn2KWp6rPbt22vt2rWF7nOjcePG6fTp03rppZdUt25dVaxYUX369Mn3YJWtWiQpOjpan3zyif71r3+pZcuWxb6uLV5e1/o6b/xDIScnx2qfvLw8de/eXXFxcfmOv3Eogj0IrIABgoIq22yvXdt2OwC4AyN+t1WrVk333HOPli5dqjFjxuQbx5qWlqbGjRvr999/V3JysqWX9dixYzp58qQaN25s87yNGjVSQkKCHn74YUvbrl27Ctz/RvYMCWjUqJESExOtrpOYaN0jnZCQoJdfflnR0dGSrk3hZc8DTM8995yqVaummJgYffrpp7r99tutticmJlqGHZjNZu3du1d9+/a1ea5bb71V0rVxqtf//fPPP1vt07JlS33yyScKDQ1VhQoVil1nYRgSABggNjZK9epZj+eqVy9AsbFRBlUEAKVn1O+2BQsWyGw26+6779b69euVlJSkX3/9Ve+88446duyorl27qnnz5ho9erT279+vffv2adSoUWrZsqU6d+5s85xPPPGEPvroIy1dulSHDx/WkiVLtGbNGv3lL38psh57hgSMHTtWH374oVasWKHDhw/r1Vdf1Q8//GB1voiICK1evVoHDhzQ3r17NWLECLunz5oxY4aGDx+umJiYfAFz+fLl+vTTT5WUlKRp06bp+PHjGjFiRIH3FhISopdfflmHDh3SN998o/nz51vtM3LkSKWnp2v48OFKTEzUsWPHtHXrVj355JO6ePGiXXVfR2AFDBAWFqD163to4MAIdeoUpIEDI3jgCoDbM+p3W3h4uOXhqZkzZ+quu+5Snz59tGnTJr322msymUxatWqVatSooV69eql379667bbbtGrVqgKHBPTq1Uvz5s3T4sWL1bZtW7311lt65ZVXrB64coT+/ftr2rRpevHFF9W5c2f9+9//1vjx4632WbhwoTIzM9W1a1eNGDFCw4YNU926de2+1vPPP69HH31Uffv2tQqtM2fO1KJFi9SxY0d9/fXXWrlyZYHDGipUqKB33nlHx44dU8eOHTVnzhw9//zzVvsEBQXpyy+/lJeX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jn744Qf5+PgUuK1Tp052rxZTt25dpaSkqEKFCpa2hIQEzZ07V0OGDHFKD2fnzp0tq5ddunRJu3fv1oIFC7R3716tW7fO4ddztmPHjqlfv35KTk5Wnz59NGTIEFWqVEkHDx7UunXr9N577+nMmTPlviZbMjMzLSvcuftqfQBgDwIr3FrNmjUVERGhXbt2WbX/+OOPunTpkh588MECt7Vr187u65lMJvn5+ZWqZntFRERo0KBBltfDhw9XXl6eVq9erfPnz6tatWplWk9p5OTkaNiwYUpJSVF8fLw6duxotX3GjBmaPXt2ua8JAGCNIQFwe+3bt9eBAwesPpJPSEhQUFCQBg0aZHPb9eNu9sMPP+i+++5T7dq11axZMy1evNhq+81jJefMmaNZs2ZJklq2bGn56P7Gj2y3bNmiXr16KSQkRMHBwerVq5d2795dqnuuVauWJMnHp+i/Od9//3116NBBtWrVUoMGDTRmzBidPHky3367du1S7969VadOHYWEhCgmJkaJiYn59ktKSlL//v0VFBSkhg0basaMGbp69Wqx6o6Pj9cvv/yiSZMm5QuGkuTn56eXXnrJqu3w4cMaMWKEIiIidNttt6lDhw5auXJlsa7nrJqK814VNKbY1njfnj176o477tDhw4f1wAMPKDg4WJGRkZo1a5by8vIkXfvZa9SokSRp7ty5lp+1cePGlfYtAACXR2CF22vXrp3y8vL0/fffW9oSEhLUtm1b3XHHHZKUb5ufn59at25tdZ7k5GQ99NBDatu2rf72t78pPDxczz77rL755psCr927d2/1799fkvTSSy9pyZIlWrJkiSVYrF27Vg888IC8vb313HPP6bnnntO5c+fUp08fm2HQlqysLKWmpio1NVXHjx/XJ598ovfff1+9evVS1apVCz32tdde01/+8hcFBgZq9uzZGjx4sD799FNFR0dbhfjvvvtOffv21fHjxzV58mQ9/fTTOnTokHr27GlV55kzZ9SzZ0/t2bNHEyZM0FNPPaVt27bp+eefL9a9bNq0SZL00EMPFWv/gwcP6p577tGPP/6oCRMmaM6cOQoNDdXEiRPz/TFRUvbWVNz3yl7p6enq27ev6tWrp7i4ON1xxx167bXX9P7770uSbr31Vs2fP1+S1KtXL8vP2vDhw0t8TQBwFwwJgNu73lOakJCg7t27S5J2796tp59+WgEBAWrcuHG+ba1bt1bFihWtznPo0CGtX79eXbt2lSQNGzZMzZs314oVK9StWzeb127evLlatGihdevWqWfPngoLC7Nsy8zM1OTJkzVo0CC9+eablvbhw4erXbt2mj17tuLj44u8vw8//FAffvihVVv37t319ttvF3pcamqqXn75ZXXs2FHr16+39Ma2a9dOQ4cO1cKFCxUbGytJeu655+Tv76+vvvpKt956qyRp8ODBuvPOOxUbG6svvvhCkvT//t//0+nTp/X555+rQ4cOkqTHHnvMZs+kLQcPHlRAQIBCQ0OLtf+0adNUq1YtbdmyRZUrV5YkPf744xo+fLjmzJmjRx99VP7+/sU6l6NqKu57Za9Tp07p73//ux555BFJ0ogRI9SxY0etWLFCjz32mPz9/dWnTx9NmTJFzZo1sxomAgCejh5WuL2IiAjVqlXLMlb18OHDOn36tGWMart27fJtux62bj7P9bAqSRUrVlRUVJSOHTtWorq2bNmitLQ0Pfjgg5Ye0tTUVF2+fFldu3bVrl27ivVRenR0tNavX6/169frgw8+0DPPPKPt27dr9OjRhc5ysHXrVl25ckXjx4+3GjrQs2dPRUZG6ssvv5R0LSjt379fgwcPtgQwSQoODtaAAQO0e/duS2/sl19+qZYtW1q9f5UrV9Zjjz1WrPfk4sWLRfYKX5eWlqatW7cqJiZGly9ftnoP7733Xl28eFH79u0r1rkcVZM975W9/Pz8LA/XXXfXXXeV+OcPADwJPazwCG3bttXmzZuVnZ2thIQEVa5cWS1atLBs++CDDyzbJNl84MpWD1tgYKD+9a9/laim61Mh9evXr8B9Lly4YBV8bAkODrYK0vfff7+qV6+u5557Tl988YV69Ohh87j//ve/kqSGDRvm29awYUPt2LGjyP0aNWoks9ms48ePKzAwUMePH1fv3r3z7degQYNC7+G6qlWrFjuAHT58WGazWXPnzrU8GX+zs2fPFutcjqrJnvfKXsHBwfL29rZqCwwM1Pnz5+0+FwB4GgIrPEK7du0UHx+vffv2KSEhQW3atLH0KrZt21ZZWVmWbV5eXrrzzjvznePmsHBdSedqvf6wzOLFixUcHGxzn4CAgBKdu3PnzpKknTt3FhhYC1Pce7K1n62pwIp7vkaNGumnn37SiRMnFBISUui+19+/8ePHW4Zz3Kxp06bFuq6jairMze9BQVOmXb+vmxX08wcAILDCQ1z/iDohIUEJCQmKiYmxbAsPD1ft2rUt25o1a6ZbbrnFYdcuKJjUq1dP0rWHZW7sIXWEnJwcSdfGyRakbt26kqRff/01Xw9oUlKSZfuN+90sKSlJJpPJ0vscGhpqc7/iTqzfo0cPrVmzRv/4xz80efLkQvcNDw+XdG0mBEe/fyWtyZ736nova1pamlWPa2lW3rJ33mAA8BSMYYVHaNGihapUqaLPPvtMSUlJ+T7yb9u2bYHbSuv6w0A3j1285557dMstt2jBggW6cuVKvuNK83H25s2bJV176KsgXbt2VcWKFfXWW28pNzfX0r5p0yYlJSUpOjpa0rUpslq1aqV//OMfSk1Ntex38uRJrVmzRm3btrUEru7du+vHH3/Uzp07LftdunRJ7733XrHq7tOnj5o3b65XX3013/y4knTlyhU999xzkq7Nsdu5c2e99957OnHiRL59HTEcwN6a7Hmv6tevL0lW01fl5OTo3XffLXGtBf2sAYCno4cVHsHb21tRUVHaunWrvLy8FBUVZbW9bdu2evbZZyXJ5gNXpXF9eqwXX3xRDzzwgHx9fdW5c2fVrFlTr7/+uh5//HF17NhRAwcOVK1atfTbb79p+/bt8vf3t7ls7M0OHz6sjz76SNK1Ka4SExP1wQcfqH79+oU+KV6jRg1NmzZNs2bNUt++fdW7d2/99ttvevvtt1W3bl1NnDjRsu/f/vY3xcTE6N5779Wjjz4qs9msd955R1evXtWLL75o2e+pp57S6tWr9dBDD2n06NGqXr26/vGPf1iCVFF8fHy0cuVKxcTEqFevXurTp486dOigihUr6tChQ1q3bp1Onz6tv/3tb5KkV199VdHR0brrrrv06KOPKiIiQqmpqfrxxx/1zTff6Pjx48W6riNrKu571a1bN9WtW1d/+ctflJSUJD8/P61du7ZUywFXqVJFkZGRWrdunRo0aKDq1asrLCws3887AHgaAis8Rvv27bV161Y1adIk30f+N/aqOrqH9Y477lBsbKzee+89TZgwQXl5edqwYYNq1qypmJgYBQUF6dVXX9XixYt1+fJlyxr116cvKsq3336rb7/9VtK1YF67dm09/PDDlumVCvP000+rRo0aeuuttzRjxgxVqVJFffv21cyZM60+pr7rrrv06aef6qWXXtK8efNkMpkUFRWld9991zKXrSTddttt+uyzzzR16lQtXLhQVatW1aBBg9StWzfLfLRFCQ8P17fffqslS5YoPj5emzdvVk5OjkJDQ9WzZ0+rifAbNGigrVu3at68eVqzZo3Onj2rGjVqqFGjRlbhsLTsqam475WPj49WrVqlKVOm6OWXX1b16tU1bNgwdezY0WrIir0WLVqk6dOnKzY2VleuXNHgwYMJrAA8niktLa3kf+4DAAAATsYYVgAAALg0AisAAABcGoEVAAAALo3ACgAAAJdGYAUAAIBLI7ACAADApRFYAQAA4NIIrAAAAHBpBFYAAAC4NAIrAAAAXNr/B0nzkcoVKw4yAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "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=(7,6))\n", "\n", "ax.scatter(training_darkblue['White Blood Cell Count'], \n", " training_darkblue['Glucose'], \n", " label='Color=darkblue', \n", " color='darkblue')\n", "\n", "ax.scatter(training_gold['White Blood Cell Count'], \n", " training_gold['Glucose'], \n", " label='Color=gold', \n", " color='gold')\n", "\n", "x_label = 'White Blood Cell Count'\n", "\n", "y_label = 'Glucose'\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "plt.ylabel(y_label)\n", "\n", "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xlim(-2, 6)\n", "plt.ylim(-2, 6);\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get the following classification regions and decision boundary:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "x_array = np.array([])\n", "y_array = np.array([])\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, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1089" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(test_grid)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "tags": [ "remove_input" ] }, "outputs": [ { "data": { "text/plain": [ "array([1., 1., 1., 1., 1.])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "c_training = classify_grid(training.drop(columns=['Hemoglobin', 'Color']), test_grid, 1)\n", "c_training[0:5]" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1089" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(c_training)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GlucoseWhite Blood Cell CountClass
0-2.0-2.001
1-2.0-1.751
2-2.0-1.501
3-2.0-1.251
4-2.0-1.001
\n", "
" ], "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 1" ] }, "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.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Join df's" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "remove_input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
GlucoseWhite Blood Cell CountClassColor
0-2.00-2.001darkblue
1-2.00-1.751darkblue
2-2.00-1.501darkblue
3-2.00-1.251darkblue
4-2.00-1.001darkblue
...............
10840.75-0.500gold
10850.751.000gold
10860.751.250gold
10870.751.500gold
10881.001.250gold
\n", "

1089 rows × 4 columns

\n", "
" ], "text/plain": [ " Glucose White Blood Cell Count Class Color\n", "0 -2.00 -2.00 1 darkblue\n", "1 -2.00 -1.75 1 darkblue\n", "2 -2.00 -1.50 1 darkblue\n", "3 -2.00 -1.25 1 darkblue\n", "4 -2.00 -1.00 1 darkblue\n", "... ... ... ... ...\n", "1084 0.75 -0.50 0 gold\n", "1085 0.75 1.00 0 gold\n", "1086 0.75 1.25 0 gold\n", "1087 0.75 1.50 0 gold\n", "1088 1.00 1.25 0 gold\n", "\n", "[1089 rows x 4 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "color_table = pd.DataFrame(\n", " {'Class':np.array([1, 0]),\n", " 'Color':np.array(['darkblue', 'gold'])}, index=np.array([1,0]))\n", " \n", "color_table['Class'] = color_table['Class'].astype(str)\n", "\n", "test_grid_combined = pd.merge(test_grid, color_table, on='Class')\n", "\n", "test_grid_combined" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "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=(7,6))\n", "\n", "ax.scatter(training_darkblue['White Blood Cell Count'], \n", " training_darkblue['Glucose'], \n", " label='Color=darkblue', \n", " alpha=0.4, \n", " color='darkblue', \n", " s=30)\n", "\n", "ax.scatter(training_gold['White Blood Cell Count'], \n", " training_gold['Glucose'], \n", " label='Color=gold', \n", " alpha=0.4, \n", " s=30, \n", " color='gold')\n", "\n", "x_label = 'White Blood Cell Count'\n", "\n", "y_label = 'Glucose'\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "plt.ylabel(y_label)\n", "\n", "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xlim(-2, 6)\n", "plt.ylim(-2, 6);\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "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, "metadata": { "tags": [ "remove_input" ] }, "outputs": [ { "data": { "image/png": "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6qBGjRpo1aoVvvvuO7PGs5cmc66VqTnFxub7duvWDc8//zzOnTuHl19+GZ6enggICMCMGTOg1WoBPLr3goKCAABz587V32sjR44s6yUghBDRw4aVSJ6WLVtCq9Xit99+0x87dOgQWrRogeeffx4Air3m7OyMpk2bGrxPeno6XnnlFbRo0QIff/wx/Pz8MGnSJOzZs8fk2BEREejZsycA4JNPPsHSpUuxdOlSfWOxceNGvPzyy3BycsLkyZMxefJk3L59G5GRkUabQWPk5eXh1q1buHXrFi5duoSff/4Z3377LcLDw+Hm5lZi7aeffop3330X7u7umDlzJvr164ctW7agS5cuBk38gQMH0L17d1y6dAljx47F6NGjkZqaim7duhnovHnzJrp164bDhw/j7bffxqhRo7Bv3z5MnTrVLC/btm0DALzyyitmnX/mzBl07NgRJ06cwNtvv43Zs2fD29sb77zzTrFfJqzFUk3mXitLuXv3Lrp37w5/f3/MmjULzz//PD799FN8++23AIAnn3wS8+fPBwCEh4fr77WBAwdaPSYhhEgFTgkgkqfwSemhQ4cQFhYGAEhKSsLo0aNRqVIl1KtXr9hrTZs2RYUKFQzeJzU1FZs3b0ZoaCgAYMCAAWjUqBFWr16NDh06GB27UaNGaNy4MTZt2oRu3brB19dX/1pOTg7Gjh2Lvn374quvvtIfHzhwIFq2bImZM2ciOjq6VH8//PADfvjhB4NjYWFhiIqKKrHu1q1bmDNnDkJCQrB582b909iWLVuif//++OKLL/Dhhx8CACZPngwXFxfs3r0bTz75JACgX79+aN68OT788ENs374dAPB///d/uHHjBn755Re0atUKAPDmm28afTJpjDNnzqBSpUrw9vY26/wJEybAw8MDe/fuRcWKFQEAgwcPxsCBAzF79my88cYbcHFxMeu9bKXJ3GtlKRkZGfjss8/w+uuvAwAGDRqEkJAQrF69Gm+++SZcXFwQGRmJcePGoWHDhgbTRAghRO7wCSuRPHXq1IGHh4d+ruq5c+dw48YN/RzVli1bFnutsNl6/H0Km1UAqFChApo1a4a0tDSrdO3duxd37txBnz599E9Ib926hXv37iE0NBSJiYlm/Sm9S5cu2Lx5MzZv3ozvv/8e77//PuLj4zFs2LASdzmIi4vD/fv38dZbbxlMHejWrRsC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\n", "text/plain": [ "
" ] }, "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", "testing_darkblue = testing[testing['Color'] == 'darkblue']\n", "testing_gold = testing[testing['Color'] == 'gold']\n", "\n", "fig, ax = plt.subplots(figsize=(7,6))\n", "\n", "ax.scatter(training_darkblue['White Blood Cell Count'], \n", " training_darkblue['Glucose'], \n", " alpha=0.4, \n", " color='darkblue', \n", " s=30)\n", "\n", "ax.scatter(training_gold['White Blood Cell Count'], \n", " training_gold['Glucose'], \n", " alpha=0.4, \n", " s=30, \n", " color='gold')\n", "\n", "ax.scatter(testing_darkblue['White Blood Cell Count'], \n", " testing_darkblue['Glucose'], \n", " color='darkblue', label='Color=darkblue', ec='darkblue', s=30)\n", "\n", "ax.scatter(testing_gold['White Blood Cell Count'], \n", " testing_gold['Glucose'], \n", " color='gold', label='Color=gold', ec='darkblue', s=30)\n", "\n", "x_label = 'White Blood Cell Count'\n", "\n", "y_label = 'Glucose'\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "plt.ylabel(y_label)\n", "\n", "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\")\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xlim(-2, 6)\n", "plt.ylim(-2, 6);\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "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." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 1 }