From 55827279e90b9faccf4fd963f2fec28aa264e51e Mon Sep 17 00:00:00 2001 From: Tuan-Dat Tran Date: Fri, 7 May 2021 16:13:54 +0000 Subject: [PATCH] Added rudimentary plot to compare k X train_size X accuracy --- 0-pilot-project/MNIST-kNN.ipynb | 397 ++++++++++++++++++++------------ 1 file changed, 252 insertions(+), 145 deletions(-) diff --git a/0-pilot-project/MNIST-kNN.ipynb b/0-pilot-project/MNIST-kNN.ipynb index 4d5ad29..6eeb096 100644 --- a/0-pilot-project/MNIST-kNN.ipynb +++ b/0-pilot-project/MNIST-kNN.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "6bf486b7", + "id": "a53bc33d", "metadata": {}, "source": [ "### Load MNIST dataset" @@ -10,8 +10,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "id": "7edbae9a", + "execution_count": 70, + "id": "7f5485c6", "metadata": {}, "outputs": [], "source": [ @@ -22,8 +22,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "id": "6147f183", + "execution_count": 71, + "id": "a7c20b8c", "metadata": {}, "outputs": [], "source": [ @@ -34,8 +34,8 @@ }, { "cell_type": "code", - "execution_count": 26, - "id": "450ad407", + "execution_count": 72, + "id": "efa1777a", "metadata": {}, "outputs": [], "source": [ @@ -45,8 +45,8 @@ }, { "cell_type": "code", - "execution_count": 27, - "id": "63dc2184", + "execution_count": 73, + "id": "f61e1e2f", "metadata": {}, "outputs": [ { @@ -55,7 +55,7 @@ "sklearn.utils.Bunch" ] }, - "execution_count": 27, + "execution_count": 73, "metadata": {}, "output_type": "execute_result" } @@ -73,7 +73,7 @@ }, { "cell_type": "markdown", - "id": "a9554eb6", + "id": "48008a44", "metadata": {}, "source": [ "Bunch objects are sometimes used as an output for functions and methods. They extend dictionaries by enabling values to be accessed by key, bunch[\"value_key\"], or by an attribute, bunch.value_key.\\\n", @@ -82,8 +82,8 @@ }, { "cell_type": "code", - "execution_count": 28, - "id": "45c2787c", + "execution_count": 74, + "id": "cb7cd8b0", "metadata": {}, "outputs": [ { @@ -92,7 +92,7 @@ "dict_keys(['name', 'age'])" ] }, - "execution_count": 28, + "execution_count": 74, "metadata": {}, "output_type": "execute_result" } @@ -105,8 +105,8 @@ }, { "cell_type": "code", - "execution_count": 29, - "id": "0fe177e6", + "execution_count": 75, + "id": "86c8c4c9", "metadata": {}, "outputs": [ { @@ -115,7 +115,7 @@ "dict_keys(['data', 'target', 'frame', 'categories', 'feature_names', 'target_names', 'DESCR', 'details', 'url'])" ] }, - "execution_count": 29, + "execution_count": 75, "metadata": {}, "output_type": "execute_result" } @@ -127,7 +127,7 @@ }, { "cell_type": "markdown", - "id": "8b329945", + "id": "be902d54", "metadata": {}, "source": [ "Datasets loaded by Scikit-Learn generally have a similar dictionary structure, including the following:\\\n", @@ -138,8 +138,8 @@ }, { "cell_type": "code", - "execution_count": 30, - "id": "5a0886aa", + "execution_count": 76, + "id": "b6e38bcd", "metadata": {}, "outputs": [ { @@ -148,7 +148,7 @@ "\"**Author**: Yann LeCun, Corinna Cortes, Christopher J.C. Burges \\n**Source**: [MNIST Website](http://yann.lecun.com/exdb/mnist/) - Date unknown \\n**Please cite**: \\n\\nThe MNIST database of handwritten digits with 784 features, raw data available at: http://yann.lecun.com/exdb/mnist/. It can be split in a training set of the first 60,000 examples, and a test set of 10,000 examples \\n\\nIt is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image. It is a good database for people who want to try learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting. The original black and white (bilevel) images from NIST were size normalized to fit in a 20x20 pixel box while preserving their aspect ratio. The resulting images contain grey levels as a result of the anti-aliasing technique used by the normalization algorithm. the images were centered in a 28x28 image by computing the center of mass of the pixels, and translating the image so as to position this point at the center of the 28x28 field. \\n\\nWith some classification methods (particularly template-based methods, such as SVM and K-nearest neighbors), the error rate improves when the digits are centered by bounding box rather than center of mass. If you do this kind of pre-processing, you should report it in your publications. The MNIST database was constructed from NIST's NIST originally designated SD-3 as their training set and SD-1 as their test set. However, SD-3 is much cleaner and easier to recognize than SD-1. The reason for this can be found on the fact that SD-3 was collected among Census Bureau employees, while SD-1 was collected among high-school students. Drawing sensible conclusions from learning experiments requires that the result be independent of the choice of training set and test among the complete set of samples. Therefore it was necessary to build a new database by mixing NIST's datasets. \\n\\nThe MNIST training set is composed of 30,000 patterns from SD-3 and 30,000 patterns from SD-1. Our test set was composed of 5,000 patterns from SD-3 and 5,000 patterns from SD-1. The 60,000 pattern training set contained examples from approximately 250 writers. We made sure that the sets of writers of the training set and test set were disjoint. SD-1 contains 58,527 digit images written by 500 different writers. In contrast to SD-3, where blocks of data from each writer appeared in sequence, the data in SD-1 is scrambled. Writer identities for SD-1 is available and we used this information to unscramble the writers. We then split SD-1 in two: characters written by the first 250 writers went into our new training set. The remaining 250 writers were placed in our test set. Thus we had two sets with nearly 30,000 examples each. The new training set was completed with enough examples from SD-3, starting at pattern # 0, to make a full set of 60,000 training patterns. Similarly, the new test set was completed with SD-3 examples starting at pattern # 35,000 to make a full set with 60,000 test patterns. Only a subset of 10,000 test images (5,000 from SD-1 and 5,000 from SD-3) is available on this site. The full 60,000 sample training set is available.\\n\\nDownloaded from openml.org.\"" ] }, - "execution_count": 30, + "execution_count": 76, "metadata": {}, "output_type": "execute_result" } @@ -159,7 +159,7 @@ }, { "cell_type": "markdown", - "id": "6af69535", + "id": "e075b017", "metadata": {}, "source": [ "### Prepare the MNIST dataset" @@ -167,7 +167,7 @@ }, { "cell_type": "markdown", - "id": "3ae3a802", + "id": "3c2fbdfe", "metadata": {}, "source": [ "$f(X) = y$\n", @@ -180,8 +180,8 @@ }, { "cell_type": "code", - "execution_count": 31, - "id": "9b55671e", + "execution_count": 77, + "id": "171d9760", "metadata": {}, "outputs": [], "source": [ @@ -190,8 +190,8 @@ }, { "cell_type": "code", - "execution_count": 32, - "id": "fcf580ea", + "execution_count": 78, + "id": "7f85bb27", "metadata": {}, "outputs": [ { @@ -200,7 +200,7 @@ "numpy.ndarray" ] }, - "execution_count": 32, + "execution_count": 78, "metadata": {}, "output_type": "execute_result" } @@ -211,8 +211,8 @@ }, { "cell_type": "code", - "execution_count": 33, - "id": "0189e0fa", + "execution_count": 79, + "id": "050a0699", "metadata": {}, "outputs": [ { @@ -221,7 +221,7 @@ "(70000, 784)" ] }, - "execution_count": 33, + "execution_count": 79, "metadata": {}, "output_type": "execute_result" } @@ -232,8 +232,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "id": "ed42522f", + "execution_count": 80, + "id": "8b2e374f", "metadata": {}, "outputs": [ { @@ -242,7 +242,7 @@ "(70000,)" ] }, - "execution_count": 34, + "execution_count": 80, "metadata": {}, "output_type": "execute_result" } @@ -253,7 +253,7 @@ }, { "cell_type": "markdown", - "id": "c499bad9", + "id": "9a749472", "metadata": {}, "source": [ "### Plot data" @@ -261,8 +261,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "id": "3ceb40c5", + "execution_count": 81, + "id": "06947e31", "metadata": {}, "outputs": [], "source": [ @@ -273,8 +273,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "id": "d8fefd6c", + "execution_count": 82, + "id": "fb335302", "metadata": {}, "outputs": [ { @@ -296,8 +296,8 @@ }, { "cell_type": "code", - "execution_count": 37, - "id": "78b8c86a", + "execution_count": 83, + "id": "88958ee2", "metadata": {}, "outputs": [ { @@ -316,8 +316,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "id": "ebc75faa", + "execution_count": 84, + "id": "1db59a90", "metadata": {}, "outputs": [ { @@ -342,8 +342,8 @@ }, { "cell_type": "code", - "execution_count": 39, - "id": "a12ad99b", + "execution_count": 85, + "id": "2f694e64", "metadata": {}, "outputs": [ { @@ -363,8 +363,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "id": "476e14e4", + "execution_count": 86, + "id": "ac6db0a7", "metadata": {}, "outputs": [], "source": [ @@ -374,8 +374,8 @@ }, { "cell_type": "code", - "execution_count": 41, - "id": "b21767f1", + "execution_count": 87, + "id": "76885a2b", "metadata": {}, "outputs": [], "source": [ @@ -388,8 +388,8 @@ }, { "cell_type": "code", - "execution_count": 42, - "id": "30502bec", + "execution_count": 88, + "id": "1da99848", "metadata": {}, "outputs": [ { @@ -412,8 +412,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "id": "8e73fe36", + "execution_count": 89, + "id": "a26aa8a4", "metadata": {}, "outputs": [], "source": [ @@ -428,8 +428,8 @@ }, { "cell_type": "code", - "execution_count": 44, - "id": "7c81b406", + "execution_count": 90, + "id": "c21d180a", "metadata": {}, "outputs": [ { @@ -454,7 +454,7 @@ }, { "cell_type": "markdown", - "id": "9fda7cf0", + "id": "c6b82d42", "metadata": {}, "source": [ "### Prepare data for machine learning" @@ -462,8 +462,8 @@ }, { "cell_type": "code", - "execution_count": 45, - "id": "46d90d0f", + "execution_count": 91, + "id": "fb7f3887", "metadata": {}, "outputs": [ { @@ -472,7 +472,7 @@ "70000" ] }, - "execution_count": 45, + "execution_count": 91, "metadata": {}, "output_type": "execute_result" } @@ -482,36 +482,9 @@ "len(X)" ] }, - { - "cell_type": "code", - "execution_count": 58, - "id": "1513adb6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "X_train: 60000\n", - "X_test: 10000\n", - "y_train: 60000\n", - "y_test: 10000\n" - ] - } - ], - "source": [ - "i = 60000\n", - "# we use the first 60000 for training and test with the other 10000 images\n", - "X_train, X_test, y_train, y_test = X[:i], X[i:], y[:i], y[i:]\n", - "print(f\"X_train: {len(X_train)}\")\n", - "print(f\"X_test: {len(X_test)}\")\n", - "print(f\"y_train: {len(y_train)}\")\n", - "print(f\"y_test: {len(y_test)}\")" - ] - }, { "cell_type": "markdown", - "id": "41e7c963", + "id": "07bb81c8", "metadata": {}, "source": [ "### Train classifier" @@ -519,57 +492,191 @@ }, { "cell_type": "code", - "execution_count": 59, - "id": "2e34ed2f", + "execution_count": 93, + "id": "a6edf780", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "k= 1, accuracy=96.91%\n", - "k= 3, accuracy=97.05%\n", - "k= 5, accuracy=96.88%\n", - "k= 7, accuracy=96.94%\n", - "k= 9, accuracy=96.59%\n", - "k=11, accuracy=96.68%\n", - "k=13, accuracy=96.53%\n", - "k=15, accuracy=96.33%\n", - "k=17, accuracy=96.30%\n", - "k=19, accuracy=96.32%\n", - "k=21, accuracy=96.30%\n", - "k=23, accuracy=96.19%\n", - "k=25, accuracy=96.09%\n", - "k=27, accuracy=96.04%\n", - "k=29, accuracy=95.93%\n" + "train_sz= 30, k= 1, accuracy=56.71%\n", + "train_sz= 30, k= 3, accuracy=44.19%\n", + "train_sz= 30, k= 5, accuracy=42.65%\n", + "train_sz= 30, k= 7, accuracy=36.24%\n", + "train_sz= 30, k= 9, accuracy=31.79%\n", + "train_sz= 30, k=11, accuracy=27.58%\n", + "train_sz= 30, k=13, accuracy=22.59%\n", + "train_sz= 30, k=15, accuracy=18.50%\n", + "train_sz= 30, k=17, accuracy=15.21%\n", + "train_sz= 30, k=19, accuracy=13.23%\n", + "train_sz= 30, k=21, accuracy=12.14%\n", + "train_sz= 30, k=23, accuracy=11.60%\n", + "train_sz= 30, k=25, accuracy=11.36%\n", + "train_sz= 30, k=27, accuracy=11.26%\n", + "train_sz= 30, k=29, accuracy=11.25%\n", + "train_sz=10030, k= 1, accuracy=94.64%\n", + "train_sz=10030, k= 3, accuracy=94.60%\n", + "train_sz=10030, k= 5, accuracy=94.53%\n", + "train_sz=10030, k= 7, accuracy=94.33%\n", + "train_sz=10030, k= 9, accuracy=94.06%\n", + "train_sz=10030, k=11, accuracy=93.84%\n", + "train_sz=10030, k=13, accuracy=93.60%\n", + "train_sz=10030, k=15, accuracy=93.42%\n", + "train_sz=10030, k=17, accuracy=93.22%\n", + "train_sz=10030, k=19, accuracy=93.09%\n", + "train_sz=10030, k=21, accuracy=92.91%\n", + "train_sz=10030, k=23, accuracy=92.74%\n", + "train_sz=10030, k=25, accuracy=92.53%\n", + "train_sz=10030, k=27, accuracy=92.39%\n", + "train_sz=10030, k=29, accuracy=92.22%\n", + "train_sz=20030, k= 1, accuracy=95.70%\n", + "train_sz=20030, k= 3, accuracy=95.76%\n", + "train_sz=20030, k= 5, accuracy=95.68%\n", + "train_sz=20030, k= 7, accuracy=95.54%\n", + "train_sz=20030, k= 9, accuracy=95.39%\n", + "train_sz=20030, k=11, accuracy=95.18%\n", + "train_sz=20030, k=13, accuracy=95.00%\n", + "train_sz=20030, k=15, accuracy=94.86%\n", + "train_sz=20030, k=17, accuracy=94.68%\n", + "train_sz=20030, k=19, accuracy=94.53%\n", + "train_sz=20030, k=21, accuracy=94.43%\n", + "train_sz=20030, k=23, accuracy=94.28%\n", + "train_sz=20030, k=25, accuracy=94.17%\n", + "train_sz=20030, k=27, accuracy=94.07%\n", + "train_sz=20030, k=29, accuracy=93.96%\n", + "train_sz=30030, k= 1, accuracy=96.33%\n", + "train_sz=30030, k= 3, accuracy=96.39%\n", + "train_sz=30030, k= 5, accuracy=96.34%\n", + "train_sz=30030, k= 7, accuracy=96.22%\n", + "train_sz=30030, k= 9, accuracy=96.00%\n", + "train_sz=30030, k=11, accuracy=95.91%\n", + "train_sz=30030, k=13, accuracy=95.73%\n", + "train_sz=30030, k=15, accuracy=95.58%\n", + "train_sz=30030, k=17, accuracy=95.44%\n", + "train_sz=30030, k=19, accuracy=95.34%\n", + "train_sz=30030, k=21, accuracy=95.16%\n", + "train_sz=30030, k=23, accuracy=95.05%\n", + "train_sz=30030, k=25, accuracy=94.99%\n", + "train_sz=30030, k=27, accuracy=94.84%\n", + "train_sz=30030, k=29, accuracy=94.77%\n", + "train_sz=40030, k= 1, accuracy=96.63%\n", + "train_sz=40030, k= 3, accuracy=96.70%\n", + "train_sz=40030, k= 5, accuracy=96.66%\n", + "train_sz=40030, k= 7, accuracy=96.54%\n", + "train_sz=40030, k= 9, accuracy=96.42%\n", + "train_sz=40030, k=11, accuracy=96.29%\n", + "train_sz=40030, k=13, accuracy=96.22%\n", + "train_sz=40030, k=15, accuracy=96.11%\n", + "train_sz=40030, k=17, accuracy=95.97%\n", + "train_sz=40030, k=19, accuracy=95.92%\n", + "train_sz=40030, k=21, accuracy=95.74%\n", + "train_sz=40030, k=23, accuracy=95.66%\n", + "train_sz=40030, k=25, accuracy=95.53%\n", + "train_sz=40030, k=27, accuracy=95.42%\n", + "train_sz=40030, k=29, accuracy=95.29%\n", + "train_sz=50030, k= 1, accuracy=96.89%\n", + "train_sz=50030, k= 3, accuracy=97.01%\n", + "train_sz=50030, k= 5, accuracy=96.91%\n", + "train_sz=50030, k= 7, accuracy=96.87%\n", + "train_sz=50030, k= 9, accuracy=96.78%\n", + "train_sz=50030, k=11, accuracy=96.73%\n", + "train_sz=50030, k=13, accuracy=96.54%\n", + "train_sz=50030, k=15, accuracy=96.48%\n", + "train_sz=50030, k=17, accuracy=96.38%\n", + "train_sz=50030, k=19, accuracy=96.35%\n", + "train_sz=50030, k=21, accuracy=96.30%\n", + "train_sz=50030, k=23, accuracy=96.15%\n", + "train_sz=50030, k=25, accuracy=96.06%\n", + "train_sz=50030, k=27, accuracy=95.98%\n", + "train_sz=50030, k=29, accuracy=95.92%\n", + "train_sz=60030, k= 1, accuracy=96.90%\n", + "train_sz=60030, k= 3, accuracy=97.04%\n", + "train_sz=60030, k= 5, accuracy=96.87%\n", + "train_sz=60030, k= 7, accuracy=96.93%\n", + "train_sz=60030, k= 9, accuracy=96.58%\n", + "train_sz=60030, k=11, accuracy=96.67%\n", + "train_sz=60030, k=13, accuracy=96.52%\n", + "train_sz=60030, k=15, accuracy=96.32%\n", + "train_sz=60030, k=17, accuracy=96.29%\n", + "train_sz=60030, k=19, accuracy=96.31%\n", + "train_sz=60030, k=21, accuracy=96.29%\n", + "train_sz=60030, k=23, accuracy=96.18%\n", + "train_sz=60030, k=25, accuracy=96.08%\n", + "train_sz=60030, k=27, accuracy=96.03%\n", + "train_sz=60030, k=29, accuracy=95.94%\n" ] } ], "source": [ + "from sklearn.neighbors import KNeighborsClassifier\n", + "\n", + "max_k = 30\n", + "train_ranges = range(max_k, 70000, 10000)\n", + "kVals = range(1, max_k, 2)\n", + "accuracies = []\n", + "classifier = KNeighborsClassifier()\n", + "\n", + "for train_sz in train_ranges:\n", + " # we use the first train_sz for training and test with the other images\n", + " X_train, X_test, y_train, y_test = X[:train_sz], X[train_sz:], y[:train_sz], y[train_sz:]\n", + " for k in kVals:\n", + " # train the k-Nearest Neighbor classifier with the current value of `k`\n", + " classifier = KNeighborsClassifier(n_neighbors=k)\n", + " classifier.fit(X_train, y_train)\n", + " # evaluate the model and update the accuracies list\n", + " score = classifier.score(X_test, y_test)\n", + " print(f\"train_sz={train_sz:5d}, k={k:2d}, accuracy={score*100:.2f}%\")\n", + " accuracies.append(score)\n", + "\n", "# import support vector machine\n", "# import sklearn.svm\n", "\n", - "from sklearn.neighbors import KNeighborsClassifier\n", - "\n", "# specify the parameter of the SVM\n", - "# classifier = sklearn.svm.SVC(C=10, gamma=\"scale\", kernel=\"poly\") #gamma=0.1 degree=3\n", - "kVals = range(1, 30, 2)\n", - "accuracies = []\n", - "classifier = KNeighborsClassifier()\n", - "for k in range(1, 30, 2):\n", - " # train the k-Nearest Neighbor classifier with the current value of `k`\n", - " classifier = KNeighborsClassifier(n_neighbors=k)\n", - " classifier.fit(X_train, y_train)\n", - " # evaluate the model and update the accuracies list\n", - " score = classifier.score(X_test, y_test)\n", - " print(\"k=%2d, accuracy=%.2f%%\" % (k, score * 100))\n", - " accuracies.append(score)" + "# classifier = sklearn.svm.SVC(C=10, gamma=\"scale\", kernel=\"poly\") #gamma=0.1 degree=3" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "5bda0ee0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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PyWYP38+Ho+HGTNmsHr1ajZs2EC/fv0UTQ1fFmaw8Ywduflt1ayjDZkxOmLEiIBkMLlFfsWKFXz22Weo1Wree++9k3Zz/uIXv+Drr79WFLuXLFnC119/3Rkx3GjjtK96nFTCVds5B8Eabe666y4uuOACfvGLX/htJ/+sXLkSQNnuggsu4MILL1Tk9N99912/7c4UmEwmZXgMeCsB27ZtY/Xq1Xz++ed0795d0dTwpYY7HA6laU3mPeTk5Ph1e5aVlWE0GhkxYkSXGAm59yRUl6kQgjfeeIOPP/6Yq6++mk8++YT777+fn//851Ff0xmE095QnFI+bHV1tWK9c3Nzqa6uBgJXTcrLyzt83beFW379TENbAV+VSsWYMWMYM2YMTz75JDt37uT999/nyiuvJCsri6lTpzJlyhTS09PJz88nPz9f6XQ9cOCAMp7R4/HQ1NR0yo0EeDkn69at46OPPiI+Pp4777wz6uuJIfo4baoekiT9FKi6nYYkSQwbNoylS5eyadMmnn32WUWBeurUqfz5z3/GaDSi0Wjo1q0bI0eOZMyYMVitViorK3E4HBw+fJiGhoao5m8iMRJ///vfee+991i7dm2XNJudLJSWlv7kchmn1FDk5OQoyaTKykplqG2wqklHr5eVlbV7/ccKSZIYNGgQixYt4vvvv2fFihW0tLRw4403MmXKFF599VUqKytZtWoVFouFc889l3HjxpGSksLRo0f5/vvv2bdvH/X19SdkNGQNzXBEiD/44APeeust1q1bF3XB4ltvvTXsRHkMncMpNRRXXXWVUrl46623mDp1qvL622+/jRCC77//npSUFPLy8hg6dChvv/02AwYMYODAgaxevZpLLrkEnU5HZWUl3bt3Z9KkSfz5z39m6tSpP4nqiSRJ9O3bl4cffphvvvmGN954AyEEkydPZtWqVXz77beUl5crpdVhw4YxYcIE0tPTKS8v5/vvv2fv3r2YzeaIPqs8AjGcVvePP/6YV199lXXr1kV91CPAr3/9az7//HO/137/+99z8cUXc+DAAS6++GJ+//vfR/28AIcPH2bUqFFs2rSpS45/2kAI0dFP1HDDDTeI3NxcodFoRH5+vli1apWoqakRF110kejbt6+4+OKLRW1trRBCCI/HI+655x7Rp08fMXToULFp0yYhhBAVFRVi8eLForCwUPTu3Vvk5OSIXbt2iYceekjMnDlTDBkyRKSnp4tRo0YJj8cj1q9fLy699FLh8XjEd999J8aPHy+EEKK2tlb07t1b1NbWCrPZLHr37i3MZrMQQohx48aJ7777Tng8HnHppZeKTz/9NJpfw0nBW2+9JX7xi1+I0tJS8fzzz4sLLrhATJw4UTz++OOiuLhYNDc3i5aWFtHS0iKamprE0aNHxebNm8WXX34pNm3aJI4ePSqampqUbdr+mEwm8eWXX4qqqqqg28g/a9asERMnTlT+tl2FkpISMWTIEOX3/v37i4qKCiGE97rp379/1M+1d+9eMXLkSLF9+/YTPWSo+/CU/5w0Q9EVuOqqq8Q//vGPoBfFnXfeKf72t78p28vb/e1vfxN33nmn8rq8XUVFhRgwYIDyetvtzhQ0NTUJl8ul/O7xeERVVZVYsWKFmDRpkhg3bpx47LHHxNatW/2MRnNzsygrKxNbtmwRX375pfjhhx9EaWmpn9GIxEh89NFHYvz48cJkMnX5Z25rKFJSUvw+v+/v0ThXdna2GDBggNi1a1c0DnnKDUGonzNWBaS0tJRt27YxYcKEWPWkDdqGApIkkZOTw913383dd99NbW0ta9euZcGCBVRXVyuaGoMGDSItLY20tDSl09VoNHLw4EESExNJTU2lrKws5FwP8HZqLlmyRFE9P5XoikR5SkoKPXr04H//+9+PttnRF2ekoWhububqq6/mueeea6cXGauehEZGRga33XYbt912G/X19Xz00Uc8/vjjHD16lEmTJjFt2jSGDx/uR8uuqalh9+7daDQaSkpKOhzP+M033/Doo4/yySefdImocDiQE+UyR0dOlEcLWq2WDz/8UCHCnYwZI6cSp015NFw4nU6uvvpqfvnLXzJjxgwgVj05EaSmpnLzzTezbt06/v3vfzNq1CieffZZzjnnHBYsWMCmTZs4cOAAa9euZeTIkZx99tkUFhZisVjYsmUL27Zto6KiAqfTCXglBubNm8e6devo1q3bKftcwRLl0URCQgKffPIJy5cv56OPPor68U8rhIhNTit4PB5x0003iVmzZvm9PnfuXPHUU08JIYR46qmnxEMPPSSEEOKTTz7xS2aOGzdOCCFEeXm50Gq1YsiQIWLAgAEiJSVF1NbWisOHD4uEhASRn58vrrvuOjF58mSxfv16YbPZxHXXXScKCwvF+PHjRUlJiXLuJ598UhQWFor+/fuLzz//XHn9s88+E/379xeFhYXK2s4ktLS0iPfff19cddVVIiMjQ9x8881iw4YNorGx0S8PYTQaxc6dO8WTTz4pRo8eLXr16iU2b958UtcaSaL8NMUpz0GE+jmjDMV///tfAYhhw4aJESNGiBEjRoj169dHXD3xeDzi5ZdfFoWFhaJPnz6id+/e4rvvvhPXXnuteOKJJ8SQIUNEUlKS+NnPfqZse9dddwkhhHj33XfFddddJ4QQYteuXWL48OHCZrOJw4cPiz59+giXyyVcLpfo06ePOHTokLDb7WL48OHRSnqdVFitVjFmzBjx1VdfiY8++kjcdNNNYvDgweLOO+8Un332mWhoaFAMhmyI58+fL84991zxyiuvnOrln0k45YYg1M8ZZSi6Ai0tLWLUqFHi+++/FxkZGcLpdAohhPj222/F5MmThRBCTJ48WXz77bdCCCGcTqfIyMgQHo9HPPnkk+LJJ59UjiVv57uvEKLddmcSjEaj3+92u1189tln4rbbbhODBw8Wt956q3jxxRfF0KFDxd69e5Xt3G73yV7qmYxTbghC/ZxxOYpowe12M3LkSLKzs5k0aRKFhYWkpqYqyTnfiodvlUSj0ZCSkkJtbW3EVZUzEW37T7RaLZdeeimrVq1ix44d3Hjjjbz77rs8//zzDBgwQNnuZKtUxdC1OCOrHtGAWq1m+/bt1NfXM336dKXzNIbwodFouPjii7n44ou7/Fy9evUiKSkJtVqNRqNh8+bNXX7OGI7jJ2soZKSmpnLhhRfy3XffUV9frwyZ8a14yFWSgoICXC4XDQ0NZGRkdKjkFVP4ij6++uqrU87J+KnijPUPm5qaOr2vyWRSJlNbrVY2bNjAoEGDuPDCC1m9ejXQvvdELrWtXr2aiy66CEmSuOqqq3j33XcZOXIkF110EQcOHCArK4tZs2bxr3/9iylTptDc3Mzf//53Lr30Uq6//nr69u3LhAkT/NSgn3rqKfr27cuAAQP44osvlNc///xzBgwYQN++fbusVyGGGMJCiCTGaQmXyyWuuOIKccEFF4jnnntOlJWVRbT/jh07xMiRI8WwYcPEkCFDxJIlS4QQQhw6dEiMGzdOFBYWimuuuUbYbDYhhDf7f80114jCwkIxbtw4cejQIeVYl112mUhISBAJCQni008/Fddee6149913xfr160VycrLIzMwUjz/++E+2chIt9OrVS4waNUqMHj1arFy58lQvJ9o45cnKUD9npKGQ8cUXX4gBAwaI3NxccdFFF4klS5YIh8Nx0s5/7NgxcdFFF4l//vOf4oorrhAejydWOekiyA+D6upqMXz4cPHvf//7FK8oqjjlhiDUzxkZerjdbgD69u3LjTfeyKpVq1i5cqUyldvj8ZyUdcyePZtnnnlGyfDX1tbGKiddBDnHk52dzfTp09m4ceMpXtFPC2ekoZBvzK+++gq1Ws2//vUvdu7cyahRo2hubvYrzXk8ni4xHPIMyzFjxkT92DH4o6WlRclJtbS08I9//OMnpzB1qnFGVj0kScLhcHDs2DGSkpJobGzk6aefpmfPnmg0GubPn09VVRXjx4/3E6G1Wq18++23DB48+ISVlr/55hs++ugjPv30U2w2G42NjcyaNStWOekCVFdXM336dABcLhc33ngjl1566Sle1U8MIWKT0w4ej0cIIcT27dvFggULxNKlS8Vtt90mXn31VSGEEA6HQ5SWloo5c+aIMWPGiBkzZoj6+npl3w0bNoitW7cKIYSSSzhRfPXVV+KKK64QQghxzTXXiHfffVcIIcRdd90lXn75ZSGEEC+99JJfMvPaa68VQgixc+dOMXz4cNGjRw/Rv39/odVqxZgxY4TT6RQ9evQQ55xzjigsLBSJiYnim2++UT7HfffdJwoLC8WwYcPEli1blLW8+eabom/fvqJv377izTffVF7fvHmzGDp0qCgsLBT33Xef8j3GcFrglOcgQv2csYbinXfeEU899ZSYPXu2eOyxx/wqEYcPHxYlJSXCbreLP/zhD+LLL78UQnhvlu+++y7gMU+EcuxrKDpTOXn88ceFRqMRhYWFfopaV199tcjIyBB9+vQRkyZNEvPmzRNCiJ+sctePGKfcEIT6OeNCD0mScLvd7Nixg5SUFMxmM8OHD1day19++WV27NhBcXExLpcLq9VKXFwcF198Me+99x4Wi4VRo0bxyiuvMHz4cAYNGkS3bt1OSMNCni0C0KdPn4CJNr1ez/vvvx9w/wULFvD666/z/fff+xGKiouLKS4u9pt78vTTT7Nu3TpuvvlmJEli4sSJ1NfXU1lZyddff82kSZNIT08HYNKkSXz++edccMEFNDY2MnHiRABuvvlm1q5de8YNSIrh1OGMTGaq1WruvPNOhg4dqgjvJiYmYrPZWLduHdOnT+e7775j3bp1tLS0cOmll1JbW0tJSQk33ngjBw4c4N133+W1117jiiuu4Oabbz7lKs2SJDF58mTGjBnDa6+9Bvz4557ECGVnDs44j0KGrKA9bdo0Zf6mRqNhwoQJfPzxx/Tq1YvXX3+djIwMBgwYwJdffonFYmH8+PG88sorDBo0iGeffZaMjAwmTJjA7t27Oeecczo8p9vtRpKkLml4+t///kd+fj5Go5FJkyYxcOBAv/d/bMpdbrebmTNnsmHDBgoKChg3bhxXXXXVT0JW7ozEqY59OvuDdwybKsDrg4G/An8E9gDLW19fCCwDtMBy4Netr+uAY0B2oHO0/psa4L3hwMQu+my/A+YC+4C81tfygH2t/18J/MJn+32t7/8CWOnz+srW1/KAvT6v+213iv5+ZwFf+Pz+CPDIqb6uYj+Bf87I0ANAeNGOICGE2C2E+JUQYi5wI/AnSZKSgPOAfwMjADVwuHWXK4GdQE2gc0iSNBh4Q5KkbyRJelaSJFnfzQ5kSpKkBpAkqdPfpSRJCa1rRJKkBGBy65o+Am5p3ewWYF3r/z8Cbpa8mAg0CCEqgS+ASyVJWidJ0n7gN0Bt61rzJEk6JknSBuBWYF3r/i9IknRQkqQiSZJG+6zpFkmSDrT+3OLz+hhJkopb93lB6rybk4/XQMsoa30thtMQZ6yhCAZJklTyTSuE2CaEKBNCNAEzgX8BQwAXcLB1l2nAhkBGp/U4VwJ7W7erB4a13hyj8D4R3a3n8rTu05lwLgf4nyRJO4CNwHohxOfA74FJkiQdAH7e+jvAp3gN3UHgdeCe1jWY8d5wZ+H9297TeryHgbeBBmA0kA58BlwG9Gv9uRNY0foZ0oHHgAnAeOAxSZLSWs+9ArjDZ78YoeGngFPt0nTlD62hQ4DX01v/VQNHgFEdHGMm8B0w1Oe1i4FvgD54n84vAWcF2FdFgPCoCz9vClDS9nNzGoYwxEKPM+rnR+dR+EK0XoEBXjdLkqQSXm/gPGBHoO0kSdILIV4GlgKPS5J0YetblwGf4zUynwOHgN+3uuP3+JzHIwJ4Kl2I3oAJb6i0TZKkVa2hTI7whiYAVXg9GAju/nf0elmA1zuDTUA/SZJ6S5KkBW7AG1LFcBriR20oOoJ8AwshjorjYYPKJ+cQD0yTJOkCIcRnwA/A9a27j8TrUXiEEBVCiOXA18Au4AdJklIlSVogSdIbkiRd3Hq8k1Gy0OANLVYIIUYBLXjDDgWtxvOUD1QVQriAe/HmVfYA7wkhdp3aVcUQDD9ZQyFDkiStJEnXSJKU3OoBuFvfcgJu4MnW3EEfYENrctMOFLXuf64kSf8C0oCb8F70/8SbOH0PeECSpIuDeTdRRhlQJoT4ofX31XgNR7UkSXmt680DjK3vlwPdffYvaH2to9cLArzeKQghPhVC9BdCFAohnujscWLoevzkDQXeMmsf4DNJkj6QJOlWSZLShBAuIcT7QoizgSnAU0KINXgTebta93sS+CXwtBDifiFEI3AtMBBvzN0db+JxyolURcKFEKIKOCZJkqxyezGwm85VTyZLkpTWmsScjDefUAk0SpI0sdVDutnnWDH8mHGqkySn0w/eZN0s4NXW3zW0TwymAd3wxtQVeG+q84G41vf/0nqMnnj5Gt8AL5zEzzAS2IzX41nbut4MvF7OAeBLjidzJeBlvDmWYmCsz3FuxVtVOQj8xuf1sXhLt4fwJnEDJoxjPz+uH5lQFEMn0FpGvBpvCVWPt1S4AtgohPizz3bxQgjrqVllDDGcOGKGopOQJEkSPl+eJEkGIYRFkqR+wP/DW6b8FNguhAhYVYkhhjMFsRxFJyEbCUmS1K2lVkvrvweAi/AaiQl4Xf8YYjijEfMoooy2nkYMMfwYEPMoogxfT+NUryWGGKKFmEcRQwwxhETMo4ghhhhCImYoYoghhpCIGYoYYoghJGKGIoYYYgiJmKGIIYYYQiJmKGKIIYaQ+P/UO1TvopU2ygAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(projection='3d')\n", + "\n", + "plot_train = np.array([i for i in train_ranges for _ in kVals])\n", + "plot_kVals = np.array([i for _ in train_ranges for i in kVals])\n", + "\n", + "for i in range(n):\n", + " ax.plot(plot_train, plot_kVals, np.array(accuracies))\n", + "\n", + "ax.set_xlabel(\"Train_size\")\n", + "ax.set_ylabel(\"k\")\n", + "ax.set_zlabel(\"accuracy\")\n", + "fig.show()" ] }, { "cell_type": "code", "execution_count": 60, - "id": "a995d4a5", + "id": "67e23852", "metadata": {}, "outputs": [ { @@ -594,7 +701,7 @@ { "cell_type": "code", "execution_count": 61, - "id": "55c56efd", + "id": "5663042f", "metadata": {}, "outputs": [ { @@ -613,7 +720,7 @@ { "cell_type": "code", "execution_count": 62, - "id": "ee560bbd", + "id": "8c8872c9", "metadata": {}, "outputs": [ { @@ -632,7 +739,7 @@ { "cell_type": "code", "execution_count": 63, - "id": "f3d1816b", + "id": "d5d660ce", "metadata": {}, "outputs": [ { @@ -655,7 +762,7 @@ { "cell_type": "code", "execution_count": 64, - "id": "c648efeb", + "id": "8475697c", "metadata": {}, "outputs": [ { @@ -676,7 +783,7 @@ }, { "cell_type": "markdown", - "id": "b485f1d7", + "id": "6c75e0e9", "metadata": {}, "source": [ "### Evaluation" @@ -685,7 +792,7 @@ { "cell_type": "code", "execution_count": 65, - "id": "c1e3c0d2", + "id": "44afe895", "metadata": {}, "outputs": [ { @@ -706,7 +813,7 @@ { "cell_type": "code", "execution_count": 32, - "id": "1d0fc80a", + "id": "7ca14fcd", "metadata": {}, "outputs": [ { @@ -726,7 +833,7 @@ }, { "cell_type": "markdown", - "id": "30b842c8", + "id": "48176383", "metadata": {}, "source": [ "Accuracy is strongly influenced by the distribution of the classes in the test data." @@ -734,7 +841,7 @@ }, { "cell_type": "markdown", - "id": "58f6d89b", + "id": "c6de5b7f", "metadata": {}, "source": [ "#### Cross Validation\n", @@ -744,7 +851,7 @@ { "cell_type": "code", "execution_count": 33, - "id": "5653ad42", + "id": "a44e4077", "metadata": {}, "outputs": [ { @@ -765,7 +872,7 @@ { "cell_type": "code", "execution_count": 34, - "id": "f04e82f3", + "id": "53e0618a", "metadata": {}, "outputs": [ { @@ -788,7 +895,7 @@ }, { "cell_type": "markdown", - "id": "5c5138cd", + "id": "2cb9460c", "metadata": {}, "source": [ "#### Precision" @@ -797,7 +904,7 @@ { "cell_type": "code", "execution_count": 35, - "id": "5f413bb6", + "id": "81103895", "metadata": {}, "outputs": [ { @@ -819,7 +926,7 @@ }, { "cell_type": "markdown", - "id": "0480fefa", + "id": "2c262acc", "metadata": {}, "source": [ "#### Recall" @@ -828,7 +935,7 @@ { "cell_type": "code", "execution_count": 36, - "id": "0570f38f", + "id": "cec0a2d6", "metadata": {}, "outputs": [ { @@ -850,7 +957,7 @@ }, { "cell_type": "markdown", - "id": "c18ece3a", + "id": "6da80f22", "metadata": {}, "source": [ "#### F1 Score" @@ -859,7 +966,7 @@ { "cell_type": "code", "execution_count": 37, - "id": "10a0c61c", + "id": "4ccd91b5", "metadata": {}, "outputs": [ { @@ -881,7 +988,7 @@ }, { "cell_type": "markdown", - "id": "174ce273", + "id": "829a2f80", "metadata": {}, "source": [ "#### Confusion Matrix" @@ -890,7 +997,7 @@ { "cell_type": "code", "execution_count": 38, - "id": "9ac93dc4", + "id": "e23fc6af", "metadata": {}, "outputs": [ { @@ -920,7 +1027,7 @@ { "cell_type": "code", "execution_count": 39, - "id": "29f842f6", + "id": "cbfaa4c8", "metadata": {}, "outputs": [ { @@ -958,7 +1065,7 @@ { "cell_type": "code", "execution_count": 40, - "id": "8ae98717", + "id": "a1bd37f7", "metadata": {}, "outputs": [], "source": [ @@ -969,7 +1076,7 @@ { "cell_type": "code", "execution_count": 41, - "id": "e6d7b928", + "id": "bf5b4a57", "metadata": {}, "outputs": [ { @@ -999,7 +1106,7 @@ { "cell_type": "code", "execution_count": null, - "id": "19c5de75", + "id": "c7056a40", "metadata": {}, "outputs": [], "source": [] @@ -1007,14 +1114,14 @@ { "cell_type": "code", "execution_count": null, - "id": "5e4d754b", + "id": "f1e96198", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", - "id": "351fc479", + "id": "ed4cade6", "metadata": {}, "source": [ "## Train kNN Classifer\n", @@ -1024,7 +1131,7 @@ { "cell_type": "code", "execution_count": null, - "id": "71ea8725", + "id": "d611976e", "metadata": {}, "outputs": [], "source": []