{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Approximate KNN classifiers\n", "\n", "One may have noticed in the previous exercise, prediction is very slow with a KNN classifier. Thus, there exists approximation methods. One in particular is [FLANN](http://people.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN). To install, we use Homebrew.\n", "\n", "```\n", "$ brew install flann --with-python\n", "$ /usr/local/Cellar/flann/1.8.4_1/share/python\n", "$ sudo python setup.py install\n", "```\n", "\n", "Let's give it a whirl." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import idx2numpy\n", "import pyflann\n", "import mnist\n", "import matplotlib.pyplot as plt\n", "\n", "train_image_labels = idx2numpy.convert_from_file('train-labels-idx1-ubyte')\n", "train_images = idx2numpy.convert_from_file('train-images-idx3-ubyte')\n", "test_image_labels = idx2numpy.convert_from_file('t10k-labels-idx1-ubyte')\n", "test_images = idx2numpy.convert_from_file('t10k-images-idx3-ubyte')\n", "\n", "flattened_train_images = train_images.reshape((train_images.shape[0],\n", " train_images.shape[1]*train_images.shape[2]), \n", " order='C')\n", "flattened_test_images = test_images.reshape((test_images.shape[0], \n", " test_images.shape[1]*test_images.shape[2]), \n", " order='C')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first step is to build the index." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "{'algorithm': 'kdtree',\n", " 'branching': 32,\n", " 'build_weight': 0.009999999776482582,\n", " 'cb_index': 0.5,\n", " 'centers_init': 'default',\n", " 'checks': 32,\n", " 'cores': 0,\n", " 'eps': 0.0,\n", " 'iterations': 5,\n", " 'key_size_': 20,\n", " 'leaf_max_size': 4,\n", " 'log_level': 'info',\n", " 'max_neighbors': -1,\n", " 'memory_weight': 0.0,\n", " 'multi_probe_level_': 2,\n", " 'random_seed': 478661584,\n", " 'sample_fraction': 0.10000000149011612,\n", " 'sorted': 1,\n", " 'speedup': 0.0,\n", " 'table_number_': 12,\n", " 'target_precision': 0.8999999761581421,\n", " 'trees': 10}" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pyflann.set_distance_type('minkowski', order=2)\n", "flann = pyflann.FLANN()\n", "index_params = flann.build_index(flattened_train_images, log_level='info', \n", " algorithm='kdtree', trees=10)\n", "index_params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's take a look at our test data. Plotting routines can be found on [GitHub](https://github.com/ppham27/MLaPP-solutions/blob/master/chap01/mnist.py)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\npGMom83i4x//OB5++GF897vfxV133YV8Pn+on8OiaYAol8v47ne/i8985jO455571Oc/8YlP4IYb\nbsBNN92Ej370o7j//vvxyCOP4Od+7udw8803o1ar4cyZM8hkMgCARx99FG9961sBAA8//DDe9KY3\n4XWvex3e/OY34+LFiz2fz1e+8hW87W1vg9Pp7O8vyhwZgxBD586dw7XXXgsAmJ2dxdTUFJLJ5BH9\nxsxRMAhxBABvfetb4fF4juaXZI6UQYihb33rW7jtttvg9/sRCARw22234Zvf/Oahfq9j8WlieuNr\nX/sabr/9diwuLmJqagqPP/44EokEvvGNb+Dhhx+Gw+FALpdDIBDAZz7zGXzyk5/ETTfdBGC7yqaP\nX/3qV+PBBx/ExMQE/uqv/gq/+Zu/ia985SuGxz766KP4/d//fXz2s581fP6ee+7Br//6rx/hbzxa\nSCnRarUMh177QO9LKdFut5WRWrvdRrvdRqvVQrvd3va8QghMTEzAYrHAYrFgYmICExMT6vP61++/\n/37cdtttAxND3/ve99BoNJSIYoaDQVuLmOFjEGJobW0Ni4uL6mvz8/OHzmixaBog7r77bvzqr/4q\nAOC9730v/viP/xhSSvzCL/wCHA4HACAQCADANufSnQoTc7kc7rjjDly8eBFCCDSbzW2Ped3rXrdt\nkYrH43jmmWdw++239+V3GweklKjX66hWq+rQxREdzWYTzWYTrVYLzWYT9Xodm5ub6q1ZOFksFjid\nTsNhs9lgtVrVW7vdDqfTibvvvhsf+tCHAJx8DMViMdxxxx348pe/fPA/KnMiDNJaxAwnoxpDLJoG\nhGw2i29/+9t45plnIIRAq9WCEALvfe9797R1BwCr1aoutrVaTX3+Yx/7GH70R38UX/3qV7G8vKzS\nnHtx33334d3vfjcsFsvBfqExpV6vo1gsIp/PI5/Po9FoGARTq9XC5uamOur1OsrlMiqVCkqlEsrl\nMlqtluE5bTYbfD4fvF4vfD4ffD4fHA4HnE6neut2u9FqtfCd73wH3//+9zExMXGiMVQsFvH2t78d\nv/3bv43Xv/71+/wrMifJoK1FzPAxKDE0Pz9vcPpeXV09dNxxTdOA8Cd/8ie44447cPnyZVy6dAnL\ny8s4c+YMfD4fvvCFL6BarQLYCkYA8Pl8huLaM2fO4NFHHwUA3H///erz+Xwe8/Nb45M+//nP93w+\n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\nOQOBgKqFooTAIDP0/wk2mw1erxfRaBSnTp0yFDqSiZe5BgjYPoenmwLXA1EIoQIDgDLs0i9W+uP3\n68SsB5tXJ1VhAAAgAElEQVTZWNP8DzExMYFqtaou6pVKZVtLp96d4Ha7+/tHH1P0Ymt6TXSzU11k\n72dR0tPl9Xod8XgcqVRKFWpSRoAubgC2CTUa+ksHeTSN+ER6pkdoDE8+n0cqlcLa2hrS6bRyfqZs\ngMvlwuTkpDrIpJBjaLBpNBoGH6ZcLofl5WVsbGygVCqpdYOuC/T2IOxkFq3foNE1kK5ZVE9H55DL\n5RCLxZT5ZTabVf52VqsVk5OT/fnDHAFDL5roghGJRLC4uAgAqFarhoMyLnrnHPnckAcPpal3ektC\nir6H0o76hcs8ZZ4CdTe6tZ+b3VPNwk43VaRRB5T6pIN+Z/LDYA4P/d1pwaEaJ7NT/H5FE/mpkH8K\niaZcLmdwADeLJt0gjoQSiSfyaKILHjPeUEaeuql00dRsNlVGmgp1STTR1hzH0GDTbDZRKBSQSqWU\nhcTy8jKSySRKpZLyXdIF00F2Rcym0ObEgX69Ildx+lgXVGSA2Wg01HiqRqMBm82GQCDQ7z9PXxl6\n0aRnmhqNBux2u7IPoOnzVMhNB7D97p6yUnTQ99JbfdghqWddiFGhsG6E2Iurqlmh6xkLEkVmV2r6\nPgpSc5aJLqSTk5NqG4k5PHo9nC6edrvj6gXqlEun00in04jH40in08jn80o06W7kdC76hU7PNFFN\nFcUBX/AYc6ZpfX1dZTLNmSY928QxNBw0Gg11w7WysoKrV69iZWVFiaZumaaDQuufnlnXD6qPIrFk\nvnZOTEwgn88rV/qNjQ0Ui0XYbDb4/X7Mzc315W9yVAy9aKJMUzQaVfb/ut9SpVLZVo8EbM9GmYvH\nyaRLCKEEC2WaKPuk79FSYFBHwn6s6M11KHphMalxOmgKOfBydoq8ecyCye/3H7qdlHkZWix26+7Y\nb8pbd+4l9+9EIqEyTbQ9p6e7gZczTbpgMmeazEOAmfGl3W4r7y/KNOkjM3TRpGea9Gw6M7hQpimR\nSODy5cu4ePEi0uk0UqmUEsbEYbbmCPNoMX13hIQSZZf0uidic3MTxWJRCa1KpaIEE3XiDSp7iiYh\nxOcAvB1AQkp5Q+dzQQD3AjgN4AqA90kp80d4njtC21Mej0dlf3QxVKvV1B25bkq5W2ZJn2pPR6VS\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=(10,5))\n", "for i in range (8):\n", " fig.add_subplot(2,4,i + 1)\n", " mnist.plot_image(test_images[i], test_image_labels[i])\n", "fig.suptitle(\"Sample Test MNIST Digits\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us try and make predictions now." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.047" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neighbor, dist = flann.nn_index(flattened_test_images[:1000], num_neigbors=1, checks=index_params['checks'])\n", "test_image_predictions = train_image_labels[neighbor]\n", "sum(test_image_predictions != test_image_labels[:1000])/1000" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the error rate increases only slightly, and the the algorithm runs faster." ] } ], "metadata": { "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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }