{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%load_ext autoreload\n", "%autoreload 2\n", "%pylab inline\n", "%aimport numpy\n", "np=numpy\n", "import time\n", "import matplotlib.cm as cm" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n", "Populating the interactive namespace from numpy and matplotlib" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n" ] } ], "prompt_number": 62 }, { "cell_type": "raw", "metadata": {}, "source": [ "Compl\u00e9tez tout d'abord les fonctions 'backward' et 'forward' de la classe PCA." ] }, { "cell_type": "code", "collapsed": false, "input": [ "class PCA(object):\n", " \n", " def __init__(self, data):\n", "\n", " # data : n x d\n", " \n", " # Centrer les donn\u00e9es\n", " self.offset = np.mean(data, axis=0)\n", " self.c_data = data - self.offset\n", " \n", " # Calculer la matrice de covariance\n", " self.cov = (1./len(data)) * np.dot(self.c_data.T, self.c_data)\n", " \n", " #Calculer les valeurs et vecteurs propres\n", " # Chaque colonne de eigvec est un vecteur propre\n", " # eigval : d\n", " # eigvec : d x d\n", " eigval, eigvec = np.linalg.eigh(self.cov) # Each column is an eigenvector\n", " \n", " #Order eigenvectors\n", " order = np.argsort(-eigval)\n", " self.eigval = eigval[order]\n", " self.eigvec = eigvec[:,order]\n", "\n", " def backward(self, data=None, M=None, is_centered=True):\n", " if data == None:\n", " data = self.c_data\n", " if M == None:\n", " M = len(self.eigval)\n", " self.U = self.eigvec[:,:M]\n", " return (np.dot(self.U.T, (data - (1-is_centered)*self.offset).T)).T\n", " \n", " def forward(self, data=None, M=None, is_centered=True):\n", " Z = self.backward(data, M, is_centered)\n", " return (np.dot(self.U, Z.T)).T + (1-is_centered)*self.offset\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 63 }, { "cell_type": "raw", "metadata": {}, "source": [ "Visualiser maintenant 'Iris', disponible sur le site web du cours." ] }, { "cell_type": "code", "collapsed": false, "input": [ "iris = np.loadtxt('iris.txt')\n", "data = iris[:,:4]\n", "labels = iris[:,4]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "iris_PCA = PCA(data)\n", "Z = iris_PCA.backward()\n", "pylab.scatter(Z[:,0], Z[:,1], c = labels, marker = '.', s=50)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nc+fmOEfFipXQag8ACej1sVSvXjUPzi6PFcA3i2wpRFGUB7h+/brMnDlTZs2a9cCFv1etWiU2IIPu\n/WMDcuxM7yiJAAAgAElEQVTYMZk8caLobW3FwdZWenXvni9zfh89elSealRXfCqWl4mTJxbZecWV\nx1O6tI/Ay/cmKWsuPXv2ERGRK1euSLVqoaLVWkm5cv5ZnhITEbGxsRMYcW/fhjJq1N3J+0wmk8yb\nN0/efXeU7Ny5M1s54uLipF69Z8Td3UsGDhxc4GseZKd2Fprqqgp90ffKoEFiq9WKnZWVfDhxoly8\neFEcbG3lTZBRIGUMhnx5rM2vsp+0+KK5vLy/v5SpXFp+++23PO9DKXwqVw4W6CgwTqytw2To0Psn\nI/v3Ijz/1LNnH9Hr/QQaiF7vJFFRUSIi8tprQ0Wv97k3o6WzbNmyJV/PIS9kp3aqoRsl106ePEnL\nxo35cf58XGxssLexISU5GaPRiLVWiz1gDRi0WpKSkvK0b7PZzOljp6k5KJRSIZ74tPEhJiYmT/tQ\nCqeFC2fj7LwVW9tP8PNLZcyYUfdt/989pgeZP382X3wxktGjG7F9+2Zq1KgBwA8//IjR2J67T+aE\nsWjRz/l5CgUnt58ma9askUqVKom/v79MmTLlgW1ef/118ff3l+rVqz/wRRYRdUVfVJnNZvH19pZq\nGo343Htp6m0QO2truXHjhjzburX4ODhIoIODBFWqJEajMc8zPNPiGQnuXl1azmwuzh7Osnv37sc+\nRmpqqkRGRsrx48fzPJ+Sf9LS0iQ+Pl5MJlO22qempv7n0ErVqjVEo2kl8I7Y2VWWKVOm5lXUfJOd\n2pmr6pqRkSF+fn5y+vRpSUtLk+DgYImJibmvzapVq6RVq1YiIhIZGSl16tTJcVil8Ll165bY6nTS\nEaTCvwr9rVu3JCMjQ1asWCFLlix54Nh+XmV4Z9Q70qNvD9m4ceNj75+UlCShtUPEq6qXOHk4yZRp\nD75gUYous9ksb7zxluh01mJjYy+zZ895YLsjR46In19lsba2k2ef7ZxlGo3CKN8L/c6dO6VFixaZ\nP0+ePFkmT558X5uBAwfKzz//nPlzpUqV5PLly1mDqEJfILZv3y6TJ09+6GLKj8tsNktlPz952spK\n3EGcQZxsbWXMqFF5cvyCMHv2bKnSprK8Z35Xhl14XWzsbIrE/8GV7Nu2bZsYDJ73bsC+Jra2hhyv\n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\nFyc6PteRQwcP8eWsmTiWKMGxY8cw+Wfw5rZhHPo5hn6v9OPgvodPjuXq6srnHxeP+VSKmrNnzzJ/\n/k8YjW04dy6BZ55pxsWL5x74LSw6OporV65Qv359HBwcLJA2d1ShVwodGxsbtt6bhArg868/p8nk\n6lR9oQrbP9jBhEkTWDhnYZ71d+PGDaZ9Oo3EG4kM7D+Q4ODgB7YbOHAgv6/+nc9cp6OzsqJReCPK\n+nlzLfE6rb5piZjNLBu0jLrv1kGj1eBe1Y19iVF5llPJW3/99RfgD/ghUoGbN7dx/fp13N3d72s3\nbtz7fPzxdKysSuLsnMH+/XuK3KLiauhGsTgRITY2lgsXLmT+Tq/X06tXL3r16oXZbMbGwQYAawdr\n0jPSc9zX3r17WbBgASdPnszsu0mrJqw5u5qjnjGENw3P3PZv9vb2bF63mXOnzjFs2BscTz5Om+Wt\nqfxCIEeWHqFa16ronfXs/Wgfa/v/yR8dVzD0tcdfvOLSpUsMGT6EAa8O4PDhwzk+V+W/Pf3008Bx\nIBqdbiNlynhlKeAZGRlMmvQhRmMfbt/uztWrTixatMgieXNDFXrFosxmM53at6d29eoE+vnxwbhx\nWdpMHDORNb3XsbTZMvZNiWLk8JE56mv23Nm0fK4l0//8gpp1a7J3714SEhI4dvQYbea3ov7oevi1\nrsDmzZsfegyNRkPJkiU5dPQQlXpUwqOqOzUH1eDC7otsGbsNW40t2zZto19Yf36e/fNjL0qSlpZG\n/Wfqs9e8h1jvEzRs3JCLFy/m6HyV/1atWjVWrPiVli2ha1d/tm/flGU2U61Wi1ZrBaQBgkaThrW1\ntUXy5kp+Pt/5OApRFKUArV27Vso5OMh7IG+BGGxt5fLly1nanTp1SlavXi2XLl3KcV/+Vf2lz45e\nMkZGSbNPm0rPfj0lLS1NXD1cpdOS52TA3y+Jh6+7REREPPJY8xbME88AT2k3p41UaFhBygeUl6Yt\nmkpMTEyO84mIHDlyRDwreMgYGSVjZJQEtasmv/76a66OqeTON9/MEjs7RzEYPKV69ZqSlJRk6Uj3\nyU7tVGP0ikXduXMHW+7OQmkL6DQaUlNTgbs3y06dOkVISAi+vr65fiKiRIkSJJ66gfdTXtw6dYtK\nJQKxtrZm5e8r6T2gNwlXE2jdvDX16tV75LH69OqDVqtlzfo1uJvdOSNnOJN8hhd6PM+urZE5vmFX\n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\n", "text": [ "" ] } ], "prompt_number": 65 }, { "cell_type": "raw", "metadata": {}, "source": [ "On va maintenant regarder des sous-ensembles de 2 (ou plus) classes de mini_mnist (entra\u00eenement)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "train_x = np.loadtxt(\"train_images.txt\", delimiter=\",\")\n", "train_y = np.loadtxt(\"train_labels.txt\", delimiter=\",\").argmax(1)\n", "test_x = np.loadtxt(\"test_images.txt\", delimiter=\",\")\n", "test_y = np.loadtxt(\"test_labels.txt\", delimiter=\",\").argmax(1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 66 }, { "cell_type": "code", "collapsed": false, "input": [ "which_classes = [0, 1] # On utilise seulement les classes 0 et 1, pas mini-mnist au complet\n", "which_indices = np.nonzero(np.in1d(train_y, which_classes))\n", "mnist_data = train_x[which_indices]\n", "mnist_labels = train_y[which_indices]\n", "\n", "mnist_pca = PCA(mnist_data)\n", "mnist_Z = mnist_pca.backward()\n", "\n", "pylab.scatter(mnist_Z[:,0], mnist_Z[:,1], c = mnist_labels, marker = '.', s=200)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 67, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 67 }, { "cell_type": "raw", "metadata": {}, "source": [ "Maintenant, on va utiliser toutes les classes de mini-mnist. Affichez une image." ] }, { "cell_type": "code", "collapsed": false, "input": [ "pylab.imshow(train_x[10].reshape(28,28), cmap=cm.gray)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 68, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nKHhCHMT/A3RfZBzJbrMlAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 68 }, { "cell_type": "raw", "metadata": {}, "source": [ "En variant le nombre de vecteurs propres utilis\u00e9s, reconstruisez la m\u00eame image,\n", "sans oublier de d\u00e9centrer les donn\u00e9es.\n", "Combien en faut-il environ pour reconna\u00eetre le chiffre?\n", "Essayez pour plusieurs images." ] }, { "cell_type": "code", "collapsed": false, "input": [ "new_mnist_pca = PCA(train_x)\n", "pylab.imshow(((new_mnist_pca.forward(train_x[10], 25, False))).reshape(28,28) , cmap=cm.gray)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 69, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n3Fy6dGm3kzHSv/zLvzT/+q//2rzrXe8a7fujP/qj5umnn26apmlOnjzZfPrTn96t5NH0PfXUU80X\nvsBTfT8AAALpSURBVPCFXUtT0fnz55uXX365aZqm+fGPf9zceeedzauvvjo1+Welb6fyb+IW/qWX\nXpK3v/3tcvjwYVlZWZFHH31UvvGNb0z6ttVqpmjs8v7775e3vvWtW/Y999xzcuLECREROXHihHz9\n61/fjaSJCE+fyHTk4YEDB+TYsWMisvUPUKcl/6z0iexM/k0c+HPnzsmtt9462j506NDoAadFg8FA\nPvjBD8p9990nf/M3f7PbyaG6cOGCrK2tiYjI2tqaXLhwYZdTtF3T9gej5Q9Q3/ve905l/u3GH7RO\nHPhZ+BHBF198UV5++WX51re+JX/9138t3/ve93Y7Sa5q5+HvhD7xiU/I66+/Lq+88oocPHhQPvWp\nT+1qei5fviyPPPKIPPPMM3LLLbdsOTYN+Xf58mX5zd/8TXnmmWfk5ptv3rH8mzjwb3vb2+Ts2bOj\n7bNnz8qhQ4cmfdsqlf/J27dvnzz88MPy0ksv7XKKtmttbU3eeOMNEfnpf/vt379/l1O0Vfv37x+B\n9PGPf3xX83B9fV0eeeQReeyxx+Shhx4SkenKv5K+3/md3xmlb6fyb+LA33ffffLv//7vcubMGbl2\n7Zr84z/+ozz44IOTvm1aV69elR//+Mci8tMPQL797W+bf465m3rwwQfl9OnTIiJy+vTpUUWZFp0/\nf34U9v5gdNJqGv4HqNOSf1b6diz/Jj4s2DTNN7/5zebOO+9sbr/99uZzn/vcTtwyrf/4j/9ojh49\n2hw9erR55zvfORXpe/TRR5uDBw82KysrzaFDh5q/+7u/ay5dutR84AMfaO64447m+PHjzX/9139N\nTfpOnTrVPPbYY83dd9/d3HPPPc1v/MZvNG+88caupO173/teMxgMmqNHjzbHjh1rjh071nzrW9+a\nmvxj6fvmN7+5Y/nXT63t1WuB1M+069VrgdQD36vXAqkHvlevBVIPfK9eC6Qe+F69Fkg98L16LZB6\n4Hv1WiD1wPfqtUD6X3MAXNtanTbiAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 69 }, { "cell_type": "code", "collapsed": false, "input": [ "reconstruction = new_mnist_pca.forward(train_x[10], 784, False)\n", "pylab.imshow(reconstruction.reshape(28,28) , cmap=cm.gray)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 70, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nKHhCHMT/A3RfZBzJbrMlAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 70 }, { "cell_type": "code", "collapsed": false, "input": [ "print sum((train_x[10] - reconstruction)**2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "3.45626049663e-28\n" ] } ], "prompt_number": 71 } ], "metadata": {} } ] }