{ "metadata": { "name": "BASIC_UFLDL_pca-zca-whitening" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## resources\n", "\n", "- http://ufldl.stanford.edu/wiki/index.php/Implementing_PCA/Whitening\n", "- http://ufldl.stanford.edu/wiki/index.php/Exercise:PCA_in_2D\n", "- http://ufldl.stanford.edu/wiki/index.php/Exercise:PCA_and_Whitening\n", "\n", "Try to use scipy svd and sklearn pca to see if there is any difference" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DISCUSSION ON PCA on Images and PCA on general data\n", "\n", "- http://ufldl.stanford.edu/wiki/index.php/PCA\n", "- for natural image / signal / text data - (1) removing DC is usually done per example (rowwise) instead of per feature (colwise). (2) variance normalization is NOT always necessary as the pixels (features) in the **stationary** images are usually based on the same statistics" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import theano\n", "import theano.tensor as T\n", "from sklearn import decomposition\n", "import numpy as np\n", "from numpy import linalg\n", "import pandas as pd" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 162 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PCA & ZCA in SVD way - 2D data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "## load data\n", "data2d = np.loadtxt('data/pca_2d/pcaData.txt').T\n", "print data2d.shape\n", "plot(data2d[:, 0], data2d[:, 1], 'bo')\n", "title('Raw data')\n", "print data2d.mean(axis = 0)\n", "print data2d.var(axis = 0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(45, 2)\n", "[ 0.01851256 0.03179579]" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "[ 0.088 0.088]\n" ] }, { "output_type": "display_data", "png": "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\nQmCC\n" } ], "prompt_number": 163 }, { "cell_type": "code", "collapsed": false, "input": [ "normalized_data = data2d - data2d.mean(axis = 0) # featurewise/columnwise DC removal\n", "print normalized_data.shape\n", "plot(normalized_data[:, 0], normalized_data[:, 1], 'bo')\n", "title('Normalized (feature-wise) data')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(45, 2)\n" ] }, { "output_type": "pyout", "prompt_number": 164, "text": [ "" ] }, { "output_type": "display_data", "png": "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\nYqMvkjr+BIsAAAAASUVORK5CYII=\n" } ], "prompt_number": 164 }, { "cell_type": "raw", "metadata": {}, "source": [ "## remove DC - instance-wise NOT NCESSARY IN THIS EXAMPLE\n", "data2d = data2d - np.mean(data2d, axis = 1).reshape(-1, 1)\n", "plot(data2d[:, 0], data2d[:, 1], 'bo')" ] }, { "cell_type": "code", "collapsed": false, "input": [ "## find PCA basis \n", "## SVD == Eigen-decomposition for sysmetric & positive definite matrices (covariance matrix)\n", "## The PC directions will be the columns of U\n", "## The PC vectors will be the PC directions from the CENTER of the normalized data\n", "U, S, V = linalg.svd(np.dot(normalized_data.T, normalized_data) / normalized_data.shape[0])\n", "print U.shape, S.shape, V.shape\n", "center = data2d.mean(axis = 0)\n", "pc1, pc2 = U.T\n", "print pc1\n", "plot(normalized_data[:, 0], normalized_data[:, 1], 'g.')\n", "plot([center[0], pc1[0]], [center[1], pc1[1]], 'b->')\n", "plot([center[0], pc2[0]], [center[1], pc2[1]], 'b->')\n", "title('PC of normalized data')\n", "print np.dot(pc1, pc2), ' dot product == 0 means they are othogonal!!'" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(2, 2) (2,) (2, 2)\n", "[-0.70710678 -0.70710678]\n", "0.0" ] }, { "output_type": "stream", "stream": "stdout", "text": [ " dot product == 0 means they are othogonal!!\n" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEICAYAAAC3Y/QeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVPX+x/HXGHSLlHBFBRUVFVBxCTP1Xhsj1CzNQowW\n98C66k1bzH5t2k3FbHG7mba43NQ06+YK7kOZCiWm5RJkoohgKiAqIdv398e5zhUBxZlhzszweT4e\nPh4sh3PeoH74zvd8z+drUEophBBCVCs19A4ghBDC/qT4CyFENSTFXwghqiEp/kIIUQ1J8RdCiGpI\nir8QQlRDUvyFw5g/fz7e3t54enqSnZ2td5xKM5lMNGnSxPx+u3bt+Pbbb216jeHDh/P6669X6tjU\n1FRq1KhBSUmJTTMI1yLFX1yXn58fHh4e1KpVi4YNGzJixAguXbpk/vymTZvo2bMnnp6eNGjQAKPR\nyLp16276OoWFhbzwwgts27aN3Nxcateubctvw65++eUXevbsadNzGgwGDAaDTc8JZX9xiepDir+4\nLoPBwPr167lw4QJJSUn8+OOPvP322wCsXr2awYMHM3z4cNLT0/njjz946623LCr+mZmZ5OfnExgY\naOtvoYyioqIqv0ZVkOcxhS1J8ReV1rhxY/r27cvBgwcBeP7553njjTcYOXIktWrVAqBnz54sXLiw\n3K+/fPky48ePx8fHBx8fHyZMmEBBQQHJycnmou/l5cX9999f5muvTGUsXbqUZs2aUb9+faZNm3bD\nc4M2uvX19eWdd96hUaNGjBw5kilTphAREcGQIUPw9PQkODiYlJQUpk+fjre3N82aNWPLli3m8y9a\ntIigoCA8PT1p2bJlhd8jaK+Wtm/fbv5+atWqRa1atahZsyY1atTgxIkTAKxfv56OHTtSu3ZtevTo\nwc8//2w+x759++jcuTOenp5ERkaSn59f4fVKSkp48cUXqV+/Pi1btmTDhg2lPl9R9kuXLvHAAw9w\n6tQpatWqhaenJ5mZmSQmJtKtWzdq165N48aNGTduHIWFhRVeXzgpJcR1+Pn5qa1btyqllDpx4oRq\n27ateuONN9Thw4eVwWBQqamplT7X66+/rrp166bOnDmjzpw5o7p3765ef/11pZRSqampymAwqOLi\n4nK/9tixY8pgMKjo6GiVn5+v9u/fr/7yl7+oI0eO3PDcO3bsUG5ubmrSpEmqoKBA/fnnn+rNN99U\nt912m9q8ebMqKipSQ4cOVc2aNVPTpk1TRUVF6uOPP1bNmzc3X3/Dhg3q999/V0opFR8frzw8PFRS\nUpL5/L6+vqV+Ztu2bSvzPbzyyivq3nvvVUVFRSopKUk1aNBAJSYmqpKSErVkyRLl5+enCgoK1OXL\nl1XTpk3VrFmzVFFRkVq9erVyd3c3fz/Xmj9/vgoICFAnT55UWVlZymg0qho1aph/ltfLbjKZSmVX\nSqm9e/eqhIQEVVxcrFJTU1VgYKCaNWvW9f5qhROS4i+uq1mzZqpmzZrKy8tLNWvWTI0ZM0bl5+er\nnTt3KoPBoC5fvlzpc7Vs2VLFxsaa39+0aZPy8/NTSv2vuN+o+Kenp5s/dvfdd6uVK1fe8Nw7duxQ\nt956a6msb775purdu7f5/bVr16qaNWuqkpISpZRSubm5ymAwqPPnz5ebZ+DAgWr27Nnm89+o+H/x\nxRfKz89PnT17Viml1DPPPFOmmLdp00bFx8er+Ph41bhx41Kfu/qX2bV69eqlFixYYH5/8+bN1/1Z\nXi97eT744AP1yCOPXPcY4Xzc9H7lIRybwWBgzZo13HfffaU+XrduXQAyMjJo1qxZpc516tSpUsc2\nbdqUU6dO3VSehg0bmt/28PDg4sWLlTp3/fr1ufXWW0udq0GDBua3b7/9durVq2e+qXr77bcDcPHi\nRTw9PYmNjWXKlCmkpKRQUlJCXl4ewcHBlcq8b98+xo0bx5YtW8w/t+PHj7N06VLmzp1rPq6wsJCM\njAyUUvj4+JQ6R7NmzSqc88/IyCh107Zp06alPn+z2ZOTk3n++efZu3cveXl5FBUVERISUqnvVTgP\nmfMXFmnTpg1NmjRh9erVlf6axo0bk5qaan7/xIkTNG7c2CZ5bnTua1fK3MzKmcuXLxMeHs7EiRP5\n448/yM7Opl+/fpW6AfvHH3/wyCOP8OGHH9KhQwfzx5s2bcqrr75Kdna2+c/Fixd57LHHaNSoEenp\n6aXOc/z48QozN2rUyHwfASj19o2yl3fOZ599lqCgIH777TfOnz/P1KlTZdmoC5LiLyxiMBh4//33\n+ec//8nixYvJzc2lpKSEnTt3Mnr06HK/5vHHH+ftt9/m7NmznD17lrfeeoshQ4bYJM/NnrsyhfuK\ngoICCgoKqFevHjVq1CA2NpbNmzff8OuKiooYNGgQTz31FIMGDSr1uaioKD766CMSExNRSnHp0iU2\n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\n" } ], "prompt_number": 165 }, { "cell_type": "code", "collapsed": false, "input": [ "## calcualte xRot - X projection on the PC\n", "xRot = np.dot(normalized_data, U)\n", "print xRot.shape\n", "plot(xRot[:, 0], xRot[:, 1], 'bo')\n", "title('xRot')\n", "ylim(-0.3, 0.5)\n", "xlim(-1, 1.1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(45, 2)\n" ] }, { "output_type": "pyout", "prompt_number": 166, "text": [ "(-1, 1.1)" ] }, { "output_type": "display_data", "png": "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\nRK5CYII=\n" } ], "prompt_number": 166 }, { "cell_type": "code", "collapsed": false, "input": [ "## dimension reduction by PCA\n", "## by selecting only the first pc\n", "#xRot_pc1 = xRot[:, 1] = 0 # ignore the second PC ????\n", "xRot_pc1 = xRot.copy() ## deep copy\n", "xRot_pc1[:, 1] = 0\n", "#print xRot\n", "#print xRot_pc1\n", "xHat = np.dot(xRot_pc1, U.T)\n", "print xHat.shape\n", "plot(xHat[:, 0], xHat[:, 1], 'bo')\n", "title('xHat')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(45, 2)\n" ] }, { "output_type": "pyout", "prompt_number": 172, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n/ImIZOj/AaiezyeyRRsOAAAAAElFTkSuQmCC\n" } ], "prompt_number": 172 }, { "cell_type": "code", "collapsed": false, "input": [ "## PCA WHITENING - NORMALIZE U by S matrix diagonal elements\n", "whitened_pcs = U / np.sqrt(S)\n", "print whitened_pcs\n", "print U\n", "whitened_X = np.dot(normalized_data, whitened_pcs)\n", "#whitened_X = np.dot(np.dot(normalized_data, whitened_pcs), U.T)\n", "print whitened_X.shape\n", "plot(whitened_X[:, 0], whitened_X[:, 1], 'bo')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[-1.7638156 -5.71992455]\n", " [-1.7638156 5.71992455]]\n", "[[-0.70710678 -0.70710678]\n", " [-0.70710678 0.70710678]]\n", "(45, 2)\n" ] }, { "output_type": "pyout", "prompt_number": 173, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\nlC699FJJ0rXXXquHH37Y1eIAAHMreRLz2LFj+tvf/qbh4WENDw/PG967d+9Wc3OzYrGYbrjhBo2N\njZV6WOMEvR/+6aef1po1a1RdXa2jR4/6XY5rBgYGtHr1al1zzTX6xje+4Xc5rrrrrrtUU1OjpqYm\nv0upiLGxMbW1tWnNmjVau3atksmk3yW5JpvNqrW1VbFYTI2Njbr//vvnf4Hjgbfeemvm82Qy6Wzd\nutWLw3picHDQyeVyjuM4zo4dO5wdO3b4XJG7XnnlFecvf/mLE4/Hnd///vd+l+OK6elpJxqNOseP\nH3empqac5uZm5+WXX/a7LNdkMhnn6NGjztq1a/0upSJOnz7tDA8PO47jOG+//bZTX18fqJ/fP//5\nT8dxHOfMmTNOa2ur8/zzz8/5XE+W0l988cUzn09MTOiDH/ygF4f1RND74VevXq36+nq/y3DViy++\nqFWrVmnlypV63/vep82bN+vgwYN+l+Wa66+/XpdcconfZVTM8uXLFYvFJEnLli1TQ0ODTp065XNV\n7lm6dKkkaWpqSrlcbmaYOh/P9kLp7u7WVVddpccff1xf/epXvTqsp+iHt8PJkydVV1c38+/a2lqd\nPHnSx4pQqtHRUQ0PD6u1tdXvUlxz9uxZxWIx1dTUqK2tTY2NjXM+17UAb29vV1NT0wUfP//5zyWd\n6xf/+9//rjvvvFP33XefW4f1xELvTTr3/i666CLdeuutPlZamkLeX5CwNiEYJiYm9IUvfEG9vb1a\ntmyZ3+W4ZtGiRXrppZd04sQJZTKZebcMcO2WakNDhd1c9dZbb7XuLHWh9/bYY4/p0KFDOnz4sEcV\nuavQn11QrFixYtZE+tjYmGpra32sCMU6c+aMNm3apNtuu0033nij3+VUxAc+8AF1dnbqd7/7neLx\neN7neDKEcuzYsZnPDx48qJaWFi8O64n/9MMfPHgw8P3wTkBuzPHxj39cx44d0+joqKampvTUU0/p\nc5/7nN9loUCO42jr1q1qbGzUvffe63c5rnrttdf0xhtvSJLeeecdDQ0NzZ+XXsyqbtq0yVm7dq3T\n3Nzs3Hzzzc4//vEPLw7riVWrVjlXXXWVE4vFnFgs5tx9991+l+Sqn/70p05tba0TiUScmpoaZ8OG\nDX6X5IpDhw459fX1TjQadfbt2+d3Oa7avHmzc8UVVzgXXXSRU1tb6zz66KN+l+Sq559/3qmqqnKa\nm5tnfu9+8Ytf+F2WK/74xz86LS0tTnNzs9PU1OR885vfnPf5Fb+lGgCgMrgjDwBYigAHAEsR4ABg\nKQIcACxFgAOApQhwALDU/wNoXj4o+nKwEgAAAABJRU5ErkJggg==\n" } ], "prompt_number": 173 }, { "cell_type": "code", "collapsed": false, "input": [ "## ZCA WHITENING - NORMALIZE U by S matrix diagonal elements\n", "whitened_pcs = U / np.sqrt(S)\n", "print whitened_pcs\n", "print U\n", "whitened_Z = np.dot(np.dot(normalized_data, whitened_pcs), U.T)\n", "print whitened_Z.shape\n", "plot(whitened_Z[:, 0], whitened_Z[:, 1], 'bo')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[[-1.7638156 -5.71992455]\n", " [-1.7638156 5.71992455]]\n", "[[-0.70710678 -0.70710678]\n", " [-0.70710678 0.70710678]]\n", "(45, 2)\n" ] }, { "output_type": "pyout", "prompt_number": 174, "text": [ "[]" ] }, { "output_type": "display_data", "png": "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\n1bPPPquVK1dq7ty5OnLkSNjlWNPT06MVK1Zo2bJleuKJJ8Iux6p7771XlZWVqq2tDbuUkhgeHlZD\nQ4NWrlypVatWqbOzM+ySrBkdHVV9fb3S6bRqamq0c+fOmV9gAvD3v/994vfOzk6zbdu2IHYbiN7e\nXjM+Pm6MMeahhx4yDz30UMgV2XX8+HFz4sQJk8lkzGuvvRZ2OVZcunTJpFIp8/bbb5uxsTFTV1dn\n3nrrrbDLsmZgYMAcOXLErFq1KuxSSuLdd981R48eNcYY849//MMsX748Vp/fP//5T2OMMRcvXjT1\n9fXmxRdfnPa5gQylj3Of8cbGRs2Zc+VtrK+v1+nTp0OuyK4VK1Zo+fLlYZdh1eHDh7V06VLdeOON\nuuaaa7RlyxYdPHgw7LKsufnmm/XJT34y7DJK5vrrr1c6nZYkVVRUqLq6Wu+8807IVdmzcOFCSdLY\n2JjGx8e1aNGiaZ8b2Fwora2tuuGGG/STn/xE3/72t4PabaAOHDigDRs2hF0GZnHmzBktWbJk4u+q\nqiqdOXMmxIpQrKGhIR09elT19fVhl2LN5cuXlU6nVVlZqYaGBtXU1Ez7XGsB3tjYqNra2ik/v/3t\nbyVJe/bs0alTp3T33XfrW9/6lq3dBmK2Y5OuHN/8+fO1devWECstjpfjixPGJsTDuXPntHnzZnV0\ndKiioiLscqyZM2eOjh07ptOnT2tgYGDGKQN8jcS8Wl9fn6fnbd261bmr1NmO7ZlnntFzzz2nF154\nIaCK7PL62cXF4sWLJ91IHx4eVlVVVYgVoVAXL17UHXfcoTvvvFO33XZb2OWUxHXXXafm5ma9+uqr\nymQyeZ8TSBNKnPuM9/T0aN++fTp48KDKy8vDLqekjP8xX5Hw5S9/WSdPntTQ0JDGxsb085//XLfe\nemvYZcEjY4y2bdummpoa3X///WGXY9V7772nDz74QJJ0/vx59fX1zZyXQdxVveOOO8yqVatMXV2d\n2bRpk/nLX/4SxG4DsXTpUnPDDTeYdDpt0um0ue+++8Iuyapf/epXpqqqypSXl5vKykqzbt26sEuy\n4rnnnjPLly83qVTK7N27N+xyrNqyZYv53Oc+Z+bPn2+qqqrMgQMHwi7JqhdffNGUlZWZurq6iX93\nv/vd78Iuy4o33njDrF692tTV1Zna2lrz5JNPzvh8K0PpAQDBY0UeAHAUAQ4AjiLAAcBRBDgAOIoA\nBwBHEeAA4Kj/ByJn2poJ5SN+AAAAAElFTkSuQmCC\n" } ], "prompt_number": 174 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PCA/ZCA Whitening - natural image data" ] }, { "cell_type": "code", "collapsed": false, "input": [ "## load data\n", "from scipy import io\n", "images = io.loadmat('data/pca_exercise/IMAGES_RAW.mat')['IMAGESr']\n", "print images.shape\n", "gray()\n", "\"\"\"\n", "fig, axes = subplots(nrows = 5, ncols = 2, figsize = (1 *2, 1 * 5))\n", "axes = axes.flatten()\n", "for i in range(images.shape[2]):\n", " axes[i].imshow(images[:,:,i])\n", "\"\"\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(512, 512, 10)\n" ] }, { "output_type": "pyout", "prompt_number": 178, "text": [ "'\\nfig, axes = subplots(nrows = 5, ncols = 2, figsize = (1 *2, 1 * 5))\\naxes = axes.flatten()\\nfor i in range(images.shape[2]):\\n axes[i].imshow(images[:,:,i])\\n'" ] } ], "prompt_number": 178 }, { "cell_type": "code", "collapsed": false, "input": [ "## get random patches of 10000 x 12 x 12\n", "patches = np.zeros((10000, 12, 12))\n", "im_index = np.random.randint(low = 0, high = 10, size = 10000)\n", "x_index = np.random.randint(low = 0, high = 512 - 12, size = 10000)\n", "y_index = np.random.randint(low = 0, high = 512 - 12, size = 10000)\n", "for i, (im, x, y) in enumerate(zip(im_index, x_index, y_index)):\n", " patches[i] = images[x:x+12, y:y+12, im]\n", "print patches.shape\n", "feats = patches.reshape(10000, -1)\n", "print feats.shape" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(10000, 12, 12)\n", "(10000, 144)\n" ] } ], "prompt_number": 179 }, { "cell_type": "code", "collapsed": false, "input": [ "## patchwise zero-mean of the data\n", "print feats.mean(axis = 1)\n", "normalized_feats = feats - feats.mean(axis = 1).reshape(-1, 1)\n", "print normalized_feats.shape\n", "print normalized_feats.mean(axis = 1)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-0.66657157 -0.43762508 -0.40810873 ..., -0.44826995 -0.06041566\n", " -0.59098646]\n", "(10000, 144)\n", "[ -2.46716228e-17 -1.18732185e-16 2.39006346e-17 ..., -3.55040071e-16\n", " 7.95659834e-16 9.86864911e-17]\n" ] } ], "prompt_number": 180 }, { "cell_type": "code", "collapsed": false, "input": [ "## PCA\n", "cov_mat = np.dot(normalized_feats.T, normalized_feats) / normalized_feats.shape[0]\n", "U, S, V = linalg.svd(cov_mat)\n", "print U.shape, S.shape, V.shape\n", "\n", "rot_feats = np.dot(normalized_feats, U)\n", "rot_mat = np.dot(rot_feats.T, rot_feats) / rot_feats.shape[0]\n", "fig, axes = subplots(nrows = 1, ncols = 2, figsize = (3 * 2, 3 * 1))\n", "axes[0].imshow(cov_mat, cmap = cm.jet)\n", "axes[0].set_title('cov before PC rotation')\n", "axes[1].imshow(rot_mat, cmap = cm.jet)\n", "axes[1].set_title('cov after PC rotation (diagonal)')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(144, 144) (144,) (144, 144)\n" ] }, { "output_type": "pyout", "prompt_number": 210, "text": [ "" ] }, { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 210 }, { "cell_type": "code", "collapsed": false, "input": [ "## find k to retain 90% and 99% variance\n", "explained_variance = S.cumsum() / S.sum()\n", "print explained_variance\n", "k90 = np.argwhere(explained_variance >= 0.9)[0][0] + 1\n", "k99 = np.argwhere(explained_variance >= 0.99)[0][0] + 1\n", "print k90, k99" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0.18922609 0.31745002 0.39037621 0.45891456 0.50817309 0.54564181\n", " 0.57887362 0.60912939 0.63324278 0.65456544 0.67494109 0.69293414\n", " 0.70860297 0.72233561 0.73520842 0.74790019 0.75879333 0.76937143\n", " 0.77864098 0.78742064 0.79599283 0.80394317 0.81182299 0.81876492\n", " 0.82534819 0.8317731 0.83756571 0.84298248 0.84825989 0.85336287\n", " 0.85826534 0.86265742 0.86691114 0.87100746 0.87495375 0.87880224\n", " 0.88253274 0.885964 0.88916345 0.89229671 0.89541402 0.89842408\n", " 0.90135338 0.90427612 0.90715755 0.90973173 0.91215753 0.91453486\n", " 0.91680731 0.91901338 0.92116872 0.92324489 0.92524687 0.92724079\n", " 0.92913019 0.93097005 0.93275465 0.93452772 0.93626262 0.93795901\n", " 0.93957299 0.94115693 0.94270027 0.94422658 0.94570366 0.94710458\n", " 0.94846121 0.94978767 0.95109665 0.95236435 0.95362702 0.95487126\n", " 0.95609081 0.95727432 0.95842701 0.95955849 0.96066878 0.96174807\n", " 0.96279999 0.96382532 0.96484326 0.9658365 0.96681719 0.96777379\n", " 0.96872401 0.96965618 0.97057545 0.97148587 0.97236718 0.97321796\n", " 0.97405449 0.97488447 0.9757015 0.97649948 0.97726663 0.97802884\n", " 0.97877904 0.97950508 0.98021825 0.98090933 0.98158483 0.98225344\n", " 0.98290628 0.9835344 0.98414539 0.98475011 0.98534357 0.9859317\n", " 0.98650866 0.98706454 0.98761174 0.9881546 0.98869003 0.98921436\n", " 0.9897265 0.99023258 0.99072464 0.9912082 0.99168285 0.9921432\n", " 0.99259544 0.99303836 0.99346938 0.99388292 0.99429051 0.99469465\n", " 0.99508083 0.99546251 0.9958355 0.99620615 0.99656296 0.99691107\n", " 0.99724847 0.99757465 0.99788021 0.99817963 0.99847502 0.99875527\n", " 0.99902271 0.99928279 0.99953345 0.99977377 1. 1. ]\n", "43 116\n" ] } ], "prompt_number": 182 }, { "cell_type": "code", "collapsed": false, "input": [ "## get the ZCA\n", "rot_feats90 = rot_feats.copy()\n", "rot_feats90[:, k90:] = 0\n", "rot_feats99 = rot_feats.copy()\n", "rot_feats99[:, k99:] = 0\n", "#feats90 = np.dot(rot_feats90, U.T)\n", "#feats99 = np.dot(rot_feats99, U.T)\n", "print feats90.shape, feats99.shape\n", "\n", "## plotting - the first 25 patches\n", "## original\n", "figure()\n", "fig, axes = subplots(nrows = 3, ncols = 3, figsize=(1 * 3, 1 * 3))\n", "axes = axes.flatten()\n", "fig.suptitle('original')\n", "for i in xrange(9):\n", " axes[i].imshow(feats[i].reshape(12, 12), interpolation='none')\n", " axes[i].get_xaxis().set_visible(False)\n", " axes[i].get_yaxis().set_visible(False)\n", "## 99% variation\n", "figure()\n", "fig, axes = subplots(nrows = 3, ncols = 3, figsize=(1 * 3, 1 * 3))\n", "axes = axes.flatten()\n", "fig.suptitle('99%')\n", "for i in xrange(9):\n", " axes[i].imshow(feats99[i].reshape(12, 12), interpolation='none')\n", " axes[i].get_xaxis().set_visible(False)\n", " axes[i].get_yaxis().set_visible(False)\n", "## 90% variation\n", "figure()\n", "fig, axes = subplots(nrows = 3, ncols = 3, figsize=(1 * 3, 1 * 3))\n", "axes = axes.flatten()\n", "fig.suptitle('90%')\n", "for i in xrange(9):\n", " axes[i].imshow(feats90[i].reshape(12, 12), interpolation='none')\n", " axes[i].get_xaxis().set_visible(False)\n", " axes[i].get_yaxis().set_visible(False)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(10000, 144) (10000, 144)\n" ] }, { "output_type": "display_data", "png": "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\nYNRbbI6TAAAAAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "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\nNmRtJ+taiER1YNpnUyey/hx15y233KJs5kcwrs2c5yR8TRyXK04NnbYek3U9GLNnrgh9ibnjvJ75\n1nF1HOuwN7URHObURnCYUxvBYU5tBEfqQNGfPEnbiEckWqycifFcsPnYY48pe9GiRcrm4IsbI5WV\nlSk7l4IuxE+G4iRO3CCQfZk3b56yt23bpmxOJHHCggM9LjLmoJgTHH93kBy3jyK/W96bAzf2hQlR\nHPBz0QAnorhwgRsfcX9NH3tTG8FhTm0Ehzm1ERypmtrXcYMHD1bn4iYk0oocUiey4Dc3rKEWKygo\nUPasWbOUzc1Hc8FPsmeCf5xW52dRF3IiKU1Dc1ExNTt1PhP1eX0S/vcUt7CCRc5ZZIg6PK2QDidn\neH/ej+MFfu/NmjXL+ln2pjaCw5zaCI5U+VFUVJQ5vuGGG9S5uL2wmQ/C0E3aPof8mWM+BHMSunbt\nqmyGzSoqKhI/zyc/Pz9znFYfWSQadmIYjD/J7Dv7llb3g/KGP9lJP8nEb2tcDjrbHtf/pLaknef9\n086zjXF78GTu5ZjtnUNDzxcSupghlL6KpPc39L4mOrVhnI+YpjaCw5zaCA5zaiM4zKmN4DCnNoLj\nP87/5C7jfd0IAAAAAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "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\nH/GFB3zFwffIAAAAAElFTkSuQmCC\n" } ], "prompt_number": 203 }, { "cell_type": "code", "collapsed": false, "input": [ "## ZCA whitening\n", "epsilon = 0.1\n", "white_U = U / (np.sqrt(S) + epsilon)\n", "feats_zca = np.dot(np.dot(feats, white_U), U.T)\n", "print feats_zca.shape\n", "## plotting - the first 25 patches\n", "## original\n", "figure()\n", "fig, axes = subplots(nrows = 3, ncols = 3, figsize=(1 * 3, 1 * 3))\n", "axes = axes.flatten()\n", "fig.suptitle('original')\n", "for i in xrange(9):\n", " axes[i].imshow(feats[i].reshape(12, 12), interpolation='none')\n", " axes[i].get_xaxis().set_visible(False)\n", " axes[i].get_yaxis().set_visible(False)\n", "## ZCA\n", "figure()\n", "fig, axes = subplots(nrows = 3, ncols = 3, figsize=(1 * 3, 1 * 3))\n", "axes = axes.flatten()\n", "fig.suptitle('ZCA whitening -- enhanced edges')\n", "for i in xrange(9):\n", " axes[i].imshow(feats_zca[i].reshape(12, 12), interpolation='none')\n", " axes[i].get_xaxis().set_visible(False)\n", " axes[i].get_yaxis().set_visible(False)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(10000, 144)\n" ] }, { "output_type": "display_data", "png": "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\nYNRbbI6TAAAAAElFTkSuQmCC\n" }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAALkAAADHCAYAAABFhfLtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH/tJREFUeJztnXt0jlf2x79pRJSaTkcJI6YuI20kJISEIOISRWQuZkRN\nmUFr6lIdyrRagwxGdZWOak1dqqyMVoupjktFUJeKy4w0U4MSd60WQVCkE5fz+8N6n3XO93kvedrf\n/ObnzP6sZa3n63nf5/K+O8+7zz777B2mlFIQBIu56z99AYLw70aMXLAeMXLBesTIBesRIxesR4xc\nsJ6gRr5ixQo0b97c+BceHo5169YBAIqLi9GjRw/ExMQgKSkJffr0wdmzZ533jxw5EtHR0fimUcrN\nmzcjKyvL777BgwfjwIEDAICpU6d+o+P7mDt3Lv785z9/q2P8X3DPPff8py8BAFC/fn1cuHDhG703\n2Hf6b0N5YO7cuSo9PV0ppVRZWZlq3LixWr16tbN/8+bNau/evUoppW7evKkaNGigMjIy1KZNm7yc\nxmHTpk2qZ8+eIV93zz33fKPj32n8f7nP+vXrq/Pnz3+j91b0O/3fpMLuSnFxMSZPnuw88d5++22k\npqYiMzPTeU2HDh0QFxcH4PZfbEJCAgYNGoQlS5b4PWbPnj3xz3/+EwDQvHlzTJ48GQAwYcIEvPHG\nGwgLC8OVK1fQu3dvxMbGol+/fs5709PTUVhYiLFjx6KsrAzNmzdH//79AQCLFy9GSkoKmjdvjiFD\nhuDWrVsAbj8Jf/e73yExMRFt2rRxfnVycnIwY8YM57hjx45FSkoKHnzwQWzbtg0AcO3aNWRnZyMu\nLg69evVC69atUVhYWNGPz8XVq1cxaNAgpKSkoEWLFli5ciUAYNGiRejVqxe6d++OmJgYPPvss8b7\n/F3/qlWr0Lp1a7Ro0QIZGRnGfQ0aNAgdO3ZEo0aN8OqrrzrHyc3NRUJCAhITE/HLX/4SAFBSUoKf\n//znSE5ORnJyMrZv3w4AOH/+PLp27Yr4+HgMHjw44C9zfn4+UlNTkZSUhOzsbFy9ehUAkJeXh9jY\nWCQlJWHFihXO60tKSpCRkeEcV/+F8Pcd3rx5EwMGDEDTpk3RrFkzzJw5s2IfdkX+EsrLy1VSUpJa\nunSp839PP/20mjVrVsD3PP7442rJkiXqypUrKjo6Wt24ccP1mmnTpqnZs2erS5cuqVatWqlu3bop\npZTq2LGjKi4uVps2bVL33nuvOnXqlLp165Zq06aNKigoUEoplZ6ergoLC5VS5hNu//79Kisryznf\n0KFDVW5urlJKqbCwMOeX55lnnlFTpkxRSimVk5OjZsyY4Rx3zJgxSimlPvjgA9WlSxellFIvvfSS\nGjJkiFJKqb1796pKlSo55/8mPPfcc2rx4sVKKaVKS0tVTEyMunr1qlq4cKFq2LChunz5svr666/V\nAw88oD7//POg119aWuocd/78+Wr06NFKKaUmTpyo2rZtq8rLy9W5c+dUjRo11I0bN9TevXtVTEyM\n8zT2vb9v375q27ZtSimlTpw4oWJjY5VSSo0YMUJNnjxZKaXUmjVrVFhYmOtJXlJSotLS0tS1a9eU\nUre/20mTJqmysjJVr149dfjwYaWUUtnZ2SorK0sppdTw4cPVtGnTlFJK5eXlOcfl73DYsGEqNzdX\nFRYWqoyMDOecFy9erNBnXakifwjjx49H06ZN0bt3b/4D8fv68vJyrF27FjNnzkS1atWQkpKCvLw8\n46kPAO3bt8esWbPQoEEDZGZmYsOGDSgrK8OxY8fQuHFjnDp1CsnJyfj+978PAEhMTMTx48eRmpoa\n8Fo3btyIwsJCtGzZEgBQVlaG2rVrAwAqV67sXENSUhLWr1/v9xi9evUCALRo0QLHjx8HABQUFGDk\nyJEAgLi4ODRr1izgNVSE/Px8rFq1CtOnTwcA/Otf/8LJkycRFhaGzp07o3r16gCAJk2a4MSJE6hb\nt27A6//ss8+QnZ2N06dPo7y8HA0bNgQAhIWFITMzExEREahRowZq1aqF06dP48MPP0R2dja+973v\nAQC++93vAgA2bNiATz/91LnGr776ClevXsVHH33kPIF79OiB++67z3U/O3fuxP79+53vpry8HKmp\nqTh48CAaNGiARo0aAQD69euHefPmOZ/p+++/DwB4+OGHneP6+w6joqKQlZWFo0eP4qmnnkJmZia6\ndu1aoc86pJFv3rwZK1aswMcff2z8f1xcHLZs2eL3PevWrcPFixcRHx8P4PZPfZUqVVxG3qpVK+ze\nvRsNGzZERkYGzp07h3nz5jk3BwCRkZHOdnh4OG7cuBHypn71q1/5HYxGREQ423fddVfAY/nOyecL\n9Eft429/+xueeOIJAMCkSZOwa9curFmzBmFhYa7PDwDee+89NG7c2Pi/Xbt2BbznQNc/YsQIjBkz\n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\n0QX+1wAAAABJRU5ErkJggg==\n" } ], "prompt_number": 222 }, { "cell_type": "code", "collapsed": false, "input": [ "## covariance of pca whitening (with/without reguarlization)\n", "epsilon = 0.\n", "white_U = U / (np.sqrt(S) + epsilon)\n", "feats_pca = np.dot(feats, white_U)\n", "figure(figsize = (4, 4))\n", "imshow(np.dot(feats_pca.T, feats_pca) / feats_pca.shape[0], cmap = cm.jet)\n", "\n", "epsilon = 1.\n", "white_U = U / (np.sqrt(S) + epsilon)\n", "feats_pca = np.dot(feats, white_U)\n", "figure(figsize = (4, 4))\n", "imshow(np.dot(feats_pca.T, feats_pca) / feats_pca.shape[0], cmap = cm.jet)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 221, "text": [ "" ] }, { "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAQYAAAD8CAYAAACVSwr3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEz5JREFUeJzt3X9M1fe9x/HXMWC6dN20TTmsHNwhAsJBRFp/zcRdW3Ig\nawpjykhhUYJ2S8Y/a9eYmv7TuETAmWbabP6zaCXtUvCPRUjDTpAZ2RZ/pcG5RbpA7Dnx8OsklWHr\nbIvi5/5RPddzP8IOx+/52t37fCQngS/nnPdHIk/4nh/5eIwxRgBwj0UPewEAvnoIAwALYQBgIQwA\nLIQBgIUwALA4HoZQKKSioiIVFBRo3759Tt89ABd4nHwdw+zsrFasWKH+/n7l5ORo7dq1eu+991Rc\nXOzUCAAucPQvhvPnzys/P19+v1+ZmZl68cUX1d3d7eQIAC7IcPLOxsbGlJubG//c5/Pp3LlzCdfx\neDxOjgSwQMmcJDgahuR/6P9L0mYnRy/AKWYz+//x7D1J3drRU4mcnBxFo9H459FoVD6fz8kRAFzg\naBjWrFmjkZERRSIRzczMqKurSzU1NU6OAOACR08lMjIy9Otf/1pVVVWanZ3Vzp0753hGwu/k2AVi\nNrOZ/e84+nRlUgM9HklvuDkSQNyepB585JWPACyEAYCFMACwEAYAFsIAwEIYAFgIAwALYQBgIQwA\nLIQBgIUwALAQBgAWwgDAQhgAWAgDAAthAGAhDAAshAGAhTAAsBAGABbCAMBCGABYUgpDNBrVs88+\nq5KSEq1cuVJvvfWWJGlqakrBYFCFhYWqrKzU9PS0o4sF4I6UwpCZmalf/epXunTpks6ePavf/OY3\n+vDDD9Xe3q5gMKjh4WFVVFSovb3d6fUCcEFKYcjOztbq1aslSV//+tdVXFyssbEx9fT0qKmpSZLU\n1NSk48ePO7dSAK554C3qIpGILly4oPXr1ysWi8nr9UqSvF6vYrHYHLc6dc/Hfj3crbyA/8sidy4L\n80BhuH79urZu3aqDBw/qscceS/iax+O5sx3d/Wx+kLEAkuZX4i/egaRulfKzEjdv3tTWrVu1bds2\n1dbWSvryr4TJyUlJ0sTEhLKyslK9ewAPUUphMMZo586dCgQCevnll+PHa2pq1NHRIUnq6OiIBwPA\nf5aUdrv+y1/+ou9+97tatWpV/HShra1N69atU319va5cuSK/369jx45pyZIliQPZ7Rp4iJLb7Tql\nMDwIwgA8TMmFgVc+ArAQBgAWwgDAQhgAWAgDAAthAGAhDAAshAGAhTAAsBAGABbCAMBCGABYCAMA\nC2EAYCEMACyEAYCFMACwEAYAFsIAwEIYAFgIAwALYQBgeaAwzM7Oqry8XNXV1ZKkqakpBYNBFRYW\nqrKyUtPT044sEoC7HigMBw8eVCAQiG86097ermAwqOHhYVVUVKi9vd2RRQJwV8phGB0dVW9vr156\n6aX4BhY9PT1qamqSJDU1Nen48ePOrBKAq1Le7fqVV17R/v379cknn8SPxWIxeb1eSV9ucBuLxea4\n9al7PvYrcTdeAM6J3LksTEpheP/995WVlaXy8nKdOnXqvtfxeDzxUwzb5lTGAlgwvxJ/8Q4kdauU\nwnD69Gn19PSot7dXn3/+uT755BNt27ZNXq9Xk5OTys7O1sTEhLKyslK5ewAPWUqPMbS2tioajSoc\nDquzs1PPPfec3nnnHdXU1Kijo0OS1NHRodraWkcXC8AdjryO4e4pw+7du3XixAkVFhbq5MmT2r17\ntxN3D8BlHpPMnthODvR4JL3h5kgAcXuUzI88r3wEYCEMACyEAYCFMACwEAYAFsIAwEIYAFgIAwAL\nYQBgIQwALIQBgIUwALAQBgAWwgDAQhgAWAgDAAthAGAhDAAshAGAhTAAsBAGABbCAMCSchimp6dV\nV1en4uJiBQIBnTt3TlNTUwoGgyosLFRlZaWmp6edXCsAl6Qchp/97Gd6/vnn9eGHH+pvf/ubioqK\n1N7ermAwqOHhYVVUVKi9vd3JtQJwSUobzly7dk3l5eX66KOPEo4XFRVpYGAgvofl5s2b9Y9//CNx\nIBvOAA9RchvOpLSpbTgc1pNPPqnm5mZdvHhRzzzzjA4cOKBYLCav1ytJ8nq9isVic9zDqXs+9itx\nN14AzoncuSxMSqcSt27d0uDgoFpaWjQ4OKhHH33UOm3weDzxPS1tm++5+FNZAoCk+JX485aclMLg\n8/nk8/m0du1aSVJdXZ0GBweVnZ2tyclJSdLExISysrJSuXsAD1lKYcjOzlZubq6Gh4clSf39/Sop\nKVF1dbU6OjokSR0dHaqtrXVupQBck/Ju1xcvXtRLL72kmZkZLV++XG+//bZmZ2dVX1+vK1euyO/3\n69ixY1qyZEniQB58BB6i5B58TDkMqSIMwMOUXBh45SMAC2EAYCEMACyEAYCFMACwEAYAFsIAwEIY\nAFgIAwALYQBgIQwALIQBgIUwALAQBgAWwgDAQhgAWAgDAAthAGAhDAAshAGAhTAAsBAGAJaUw9DW\n1qaSkhKVlpaqsbFRX3zxhaamphQMBlVYWKjKykpNT087uVYALkkpDJFIRL/97W81ODiov//975qd\nnVVnZ6fa29sVDAY1PDysiooKaz9LAP8ZUgrDN77xDWVmZurGjRu6deuWbty4oaeeeko9PT1qamqS\nJDU1Nen48eOOLhaAOzJSudHjjz+uV199VcuWLdPXvvY1VVVVKRgMKhaLyev1SpK8Xq9isdgc93Dq\nno/9YsdrIF0idy4Lk1IYLl++rAMHDigSieib3/ymfvjDH+rdd99NuI7H47mzHd39bE5lLIAF8yvx\nF+9AUrdK6VTigw8+0MaNG/XEE08oIyNDW7Zs0ZkzZ5Sdna3JyUlJ0sTEhLKyslK5ewAPWUphKCoq\n0tmzZ/XZZ5/JGKP+/n4FAgFVV1ero6NDktTR0aHa2lpHFwvAHSmdSpSVlWn79u1as2aNFi1apKef\nflo/+clP9Omnn6q+vl6HDx+W3+/XsWPHnF4vABd4TDJ7Yjs50OOR9IabIwHE7VEyP/K88hGAhTAA\nsBAGABbCAMBCGABYCAMAC2EAYCEMACyEAYCFMACwEAYAFsIAwEIYAFgIAwALYQBgIQwALIQBgIUw\nALAQBgAWwgDAQhgAWAgDAMu8YdixY4e8Xq9KS0vjx+bb6r6trU0FBQUqKipSX19f+lYNIK3mDUNz\nc7NCoVDCsbm2uh8aGlJXV5eGhoYUCoXU0tKi27dvp2/lANJm3jBs2rRJS5cuTTg211b33d3damho\nUGZmpvx+v/Lz83X+/Pk0LRtAOi14i7q5trofHx/Xhg0b4tfz+XwaGxub415O3fOxX4m78QJwTuTO\nZWFS2rvyrvm3utc8X9v8IGMBJM2vxF+8A0ndasHPSni93vtudZ+Tk6NoNBq/3ujoqHJychZ69wC+\nAhYchpqamvtudV9TU6POzk7NzMwoHA5rZGRE69atc3a1AFwx76lEQ0ODBgYG9PHHHys3N1e/+MUv\ntHv37vtudR8IBFRfX69AIKCMjAwdOnRo3tMMAF9dHpPMnthODvR4JL3h5kgAcXuUzI88r3wEYCEM\nACyEAYCFMACwEAYAFsIAwEIYAFgIAwALYQBgIQwALIQBgIUwALAQBgAWwgDAQhgAWAgDAAthAGAh\nDAAshAGAhTAAsBAGABbCAMAybxh27Nghr9er0tLS+LFdu3apuLhYZWVl2rJli65duxb/WltbmwoK\nClRUVKS+vr70rRpAWs0bhubmZoVCoYRjlZWVunTpki5evKjCwkK1tbVJkoaGhtTV1aWhoSGFQiG1\ntLTo9u3b6Vs5gLSZNwybNm3S0qVLE44Fg0EtWvTlzdavX6/R0VFJUnd3txoaGpSZmSm/36/8/Hyd\nP38+TcsGkE4PtNv1kSNH1NDQIEkaHx/Xhg0b4l/z+XwaGxub45an7vnYr8TdeAE4J3LnsjAph2Hv\n3r1avHixGhsb57zO3HtXbk51LIAF8SvxF+9AUrdKKQxHjx5Vb2+v/vjHP8aP5eTkKBqNxj8fHR1V\nTk5OKncP4CFb8NOVoVBI+/fvV3d3tx555JH48ZqaGnV2dmpmZkbhcFgjIyNat26do4sF4I55/2Jo\naGjQwMCAPv74Y+Xm5mrPnj1qa2vTzMyMgsGgJOk73/mODh06pEAgoPr6egUCAWVkZOjQoUPznEoA\n+CrzmGT2xHZyoMcj6Q03RwKI26NkfuR55SMAC2EAYCEMACyEAYCFMACwEAYAFsIAwEIYAFgIAwAL\nYQBgIQwALIQBgIUwALAQBgAWwgDAQhgAWAgDAAthAGAhDAAshAGAhTAAsBAGAJZ5w7Bjxw55vV6V\nlpZaX3vzzTe1aNEiTU1NxY+1tbWpoKBARUVF6uvrc361AFwxbxiam5sVCoWs49FoVCdOnNC3v/3t\n+LGhoSF1dXVpaGhIoVBILS0tun37tvMrBpB284Zh06ZNWrp0qXX85z//uX75y18mHOvu7lZDQ4My\nMzPl9/uVn5+v8+fPO7taAK5Y8Ka23d3d8vl8WrVqVcLx8fFxbdiwIf65z+fT2NjYHPdy6p6P/Urc\njReAcyJ3LguzoDDcuHFDra2tOnHiRPzYfNtdzb135eaFjAWQMr8Sf/EOJHWrBT0rcfnyZUUiEZWV\nlSkvL0+jo6N65plnFIvFlJOTo2g0Gr/u6OiocnJy5rinyELGOozZzGb2v7OgMJSWlioWiykcDisc\nDsvn82lwcFBer1c1NTXq7OzUzMyMwuGwRkZGtG7durQs+sEwm9nM/nfmDUNDQ4M2btyo4eFh5ebm\n6u233074+r2nCoFAQPX19QoEAvre976nQ4cOzXMqAcBtBRpJ+rrzPsbw3nvvzXvjjz76KOHz119/\nXa+//nrSwwG4x69I0mnwmPkePUwD/ooAHq5kfuQX/HTlg3K5QwBSwHslAFgIAwALYQBgcT0MoVBI\nRUVFKigo0L59+9I6KxqN6tlnn1VJSYlWrlypt956S5I0NTWlYDCowsJCVVZWanp6Oi3zZ2dnVV5e\nrurqalfnStL09LTq6upUXFysQCCgc+fOuTa/ra1NJSUlKi0tVWNjo7744ou0zb7fO4Dnm+XkO4Dv\nN3vXrl0qLi5WWVmZtmzZomvXrrk2+y5H3vlsXHTr1i2zfPlyEw6HzczMjCkrKzNDQ0NpmzcxMWEu\nXLhgjDHm008/NYWFhWZoaMjs2rXL7Nu3zxhjTHt7u3nttdfSMv/NN980jY2Nprq62hhjXJtrjDHb\nt283hw8fNsYYc/PmTTM9Pe3K/HA4bPLy8sznn39ujDGmvr7eHD16NG2z//SnP5nBwUGzcuXK+LG5\nZl26dMmUlZWZmZkZEw6HzfLly83s7Kyjs/v6+uL3+dprr7k62xhjrly5Yqqqqozf7zdXr15Nebar\nYTh9+rSpqqqKf97W1mba2tpcm//973/fnDhxwqxYscJMTk4aY76Mx4oVKxyfFY1GTUVFhTl58qR5\n4YUXjDHGlbnGGDM9PW3y8vKs427Mv3r1qiksLDRTU1Pm5s2b5oUXXjB9fX1pnR0OhxN+QOaa1dra\natrb2+PXq6qqMmfOnHF09r1+//vfmx/96Eeuzq6rqzMXL15MCEMqs109lRgbG1Nubm788/nfgems\nSCSiCxcuaP369YrFYvJ6vZIkr9erWCzm+LxXXnlF+/fv16JF//MtdmOuJIXDYT355JNqbm7W008/\nrR//+Mf617/+5cr8xx9/XK+++qqWLVump556SkuWLFEwGHTt3y7N/X0eHx+Xz+eLXy/d//+OHDmi\n559/3rXZ873zeaGzXQ3Dw3px0/Xr17V161YdPHhQjz32mLUmp9f1/vvvKysrS+Xl5XO+biMdc++6\ndeuWBgcH1dLSosHBQT366KNqb293Zf7ly5d14MABRSIRjY+P6/r163r33XddmX0//25Wutaxd+9e\nLV68WI2Nja7MvvvO5z179sSPzfV/L5nZrobhf78DMxqNJpQsHW7evKmtW7dq27Ztqq2tlfTlb5HJ\nyUlJ0sTEhLKyshydefr0afX09CgvL08NDQ06efKktm3blva5d/l8Pvl8Pq1du1aSVFdXp8HBQWVn\nZ6d9/gcffKCNGzfqiSeeUEZGhrZs2aIzZ864Mvuuub7PC3sHcOqOHj2q3t5e/e53v4sfS/ds5975\n/CVXw7BmzRqNjIwoEoloZmZGXV1dqqmpSds8Y4x27typQCCgl19+OX68pqZGHR0dkqSOjo54MJzS\n2tqqaDSqcDiszs5OPffcc3rnnXfSPveu7Oxs5ebmanh4WJLU39+vkpISVVdXp31+UVGRzp49q88+\n+0zGGPX39ysQCLgy+665vs8LewdwakKhkPbv36/u7m498sgjCWtK52zn3vl8xwM9+pGC3t5eU1hY\naJYvX25aW1vTOuvPf/6z8Xg8pqyszKxevdqsXr3a/OEPfzBXr141FRUVpqCgwASDQfPPf/4zbWs4\ndepU/FkJN+f+9a9/NWvWrDGrVq0yP/jBD8z09LRr8/ft22cCgYBZuXKl2b59u5mZmUnb7BdffNF8\n61vfMpmZmcbn85kjR47MO2vv3r1m+fLlZsWKFSYUCjk6+/DhwyY/P98sW7Ys/v/tpz/9aVpnL168\nOP7vvldeXl78wcdUZrv+JioAX3288hGAhTAAsBAGABbCAMBCGABY/huU6Imzq+kolAAAAABJRU5E\nrkJggg==\n" }, { "output_type": "display_data", "png": "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\nD2VRsA6Hk89HAAAAAElFTkSuQmCC\n" } ], "prompt_number": 221 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }