{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import print_function" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### k-NN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following example is taken from the [scikit-learn](http://www.scikit-learn.org). The original is available [here](http://scikit-learn.org/stable/auto_examples/neighbors/plot_classification.html#example-neighbors-plot-classification-py). In the code below identify the *training* and *usage* of the k-NN classifier." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import ListedColormap\n", "from sklearn import neighbors, datasets" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n_neighbors = 15\n", "\n", "# import some data to play with\n", "iris = datasets.load_iris()\n", "X = iris.data[:, :2] # we only take the first two features. We could\n", " # avoid this ugly slicing by using a two-dim dataset\n", "y = iris.target\n", "\n", "h = .02 # step size in the mesh\n", "\n", "# Create color maps\n", "cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])\n", "cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for weights in ['uniform', 'distance']:\n", " # we create an instance of Neighbours Classifier and fit the data.\n", " clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)\n", " clf.fit(X, y)\n", "\n", " # Plot the decision boundary. For that, we will assign a color to each\n", " # point in the mesh [x_min, x_max]x[y_min, y_max].\n", " x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", " y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", "\n", " # Put the result into a color plot\n", " Z = Z.reshape(xx.shape)\n", " plt.figure()\n", " plt.pcolormesh(xx, yy, Z, cmap=cmap_light)\n", "\n", " # Plot also the training points\n", " plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold)\n", " plt.xlim(xx.min(), xx.max())\n", " plt.ylim(yy.min(), yy.max())\n", " plt.title(\"3-Class classification (k = %i, weights = '%s')\"\n", " % (n_neighbors, weights))\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Questions\n", "- What does the **uniform** weight mean? And the **distance** option? (Hint: see the [documentation](http://scikit-learn.org/stable/modules/neighbors.html).)\n", "- Try different values for n_neighbors and compare the separation boundaries obtained.\n", "- Select the samples corresponding to classes '0' and '1' and use k-fold cross validation to estimate the error rate of k-NN with different number of neighbors (try 1,3,5,7,9). Which one gives the best estimated error?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Face recognition system\n", "Build a \"face recognition system\": given a number of individuals, each being represented by several frontal images, use k-NN to assign new images to one of then known identities.\n", "\n", "To do:\n", "- download the file olivetti.pkz from IS and save it to some folder \n", "- Read the [description](http://scikit-learn.org/stable/datasets/index.html#the-olivetti-faces-dataset) and some more [info](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_olivetti_faces.html#sklearn.datasets.fetch_olivetti_faces).\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.datasets import fetch_olivetti_faces" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "downloading Olivetti faces from https://ndownloader.figshare.com/files/5976027 to .\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "d = fetch_olivetti_faces(data_home=\".\") # put the folder where you saved the olivetti.pkz file\n", "## d['data'] is a matrix 400x4096\n", "## To see one image, try\n", "plt.gray() # grey scale images\n", "plt.imshow(d['data'][0,:].reshape(64,64))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(d['images'][0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build a training set using 5 images/identity. For example, assuming the images are still ordered by identity, with 0...9 for the first identity, 10,...,19 for the second, etc." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "idx = [10*id+j for id in np.arange(40) for j in np.arange(5)]\n", "Xtrain = d['data'][idx,:]\n", "ytrain = d['target'][idx]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Build the corresponding test set, where all images not in the training set are included." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "Xtest = ...\n", "ytest = ..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Train a classifier, considering Euclidean distance between points. Use **weights='uniform'** and set **n_neighbors** to some value (say 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**To do:**\n", "- Predict the identities of the images in the test set, for the model built.\n", "- Change the number of neighbors, see how performance varies.\n", "- Change the distance: look [here](http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html)\n", "- Write your own distance function. For example use a \"distance\"(better called similarity) based on correlation or cosine \n", "distance and see how the face recognition works..." ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 1 }