Skip to content

Instantly share code, notes, and snippets.

@kingjr
Last active August 2, 2017 16:10
Show Gist options
  • Save kingjr/cee98281d6259fc501840ea8371d5e55 to your computer and use it in GitHub Desktop.
Save kingjr/cee98281d6259fc501840ea8371d5e55 to your computer and use it in GitHub Desktop.
This illustrate that LDA, Ridge and PCA+GNB are equivalent for binary y
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jrking/anaconda2/lib/python2.7/site-packages/ipykernel_launcher.py:18: RuntimeWarning: covariance is not positive-semidefinite.\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f9546c9b810>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvXucFPWZ7/95uqcHenAPA0KiDKIkh59ujFxWgkbYc4LX\nqBFHTDCa6+bCenJxJTnqmHgUjbuCHKNxc3HR5JXkeAlkxRFFAxpNDOxiBLlJIqvGCwxoUBgSmJbp\nmX5+f1RXT1X191v1re6u7uru5/168WK6uqb6W1U936e+z+XzEDNDEARBEGwStR6AIAiCEC/EMAiC\nIAguxDAIgiAILsQwCIIgCC7EMAiCIAguxDAIgiAILsQwCIIgCC7EMAiCIAguxDAIgiAILlpqPYBS\nGDNmDB933HG1HoYgCEJdsXHjxreZeWzQfnVpGI477jhs2LCh1sMQBEGoK4jodZP9xJUkCIIguBDD\nIAiCILgQwyAIgiC4iNQwENHxRLTZ8e8vRHSlZ5+PENEBxz7XRzkmQRAEwZ9Ig8/MvAPAVAAgoiSA\nHgAPKXb9HTN/LMqxCIIgCGZUMyvpDACvMLNRVFwQhHjSvakHS1bvwO7eDMa1p3HVOcejc1pHrYcl\nVJBqxhg+CeABzXunEdFWInqciE6s4pgEQQhB96YeXLtiG3p6M2AAPb0ZXLtiG7o39dR6aEIFqYph\nIKJWAHMA/FLx9vMAJjDzZAD/CqBbc4z5RLSBiDbs3bs3usEKgqBlyeodyGQHXdsy2UEsWb2jRiMS\noqBaK4ZzATzPzG9532DmvzDzwfzPjwFIEdEYxX5LmXk6M08fOzawcE8QhAjY3ZsJtV2oT6plGC6F\nxo1EREcREeV/npEf0ztVGpcgCCEY154OtV2oTyI3DEQ0AsBZAFY4tl1ORJfnX34cwAtEtAXAnQA+\nycwc9bgEQQjPVeccj3Qq6dqWTiVx1TnHB/5u96YezFz0FCZ2rcLMRU9JXCLGRJ6VxMyHABzp2XaX\n4+fvA/h+1OMQBKF87OyjsFlJdtDajk/YQWvnMYX4UJcieoJQz9R7umfntI7Q4/ULWtfTuTcLYhgE\noYo065OzBK3rC9FKEoQq0qzpnhK0ri/EMAhCFWnWJ+dygtZC9RFXkiBUkXHtafQojEA9PjmHiZWU\nGrQWaoMYBkEokzAT5FXnHO+KMQDxe3I2OZ9SYiXeoLWdvlqOoaj3QH5cEcMgCGUQdoKM+5Oz6fmU\nm2VUiSB8swbyq4EYBkFA6U+epUyQpaR7VgvT8yk3VlKJ9NWgY8hqonTEMAhNTzlPno0WTNaN2xsX\nKTdW4vc5pu4lv2svq4nykKwkoekpJ4W0HtIww0hR6MZN+ePYlJtl5Pc5ppLefte+WdOCK4UYBqHp\nKeepvxJpmFFqCIXtn3DVOceDFNsZcE2qndM6cMvck9DRngYB6GhP45a5Jxk/jauuG+U/x4nfZO53\n7RttJVdtxJUkND3luEXKDSZX2uXh9asfOjwQypffOa0DVy7brDx2T28GE7tWuc5RN0bvOGafMBZP\nv7jXdY1umXtSYZ+R6RR6M1nlsXSTud+1X7J6R8OkBdcCqkch0+nTp/OGDRtqPQyhQfBOzoD15Bnm\nCbhUZi56SjmBAcCnT52AmztPMj6W6jx0EIBXF50fekzO3/+UZnwm43Be36D9O9rTWNd1uu94TMZQ\nrXsaZ4hoIzNPD9pPVgxC01PLFFI/18a9698AAGPjoPKr6xjXntZm7ahqLbwwgPvWv4Hpx44uuk4m\n48hkB/HN5VuwYNlmJIgwqHlALbXGI+5pwXFHDINQt1QyHTGqFNKgMercWDYPPLvT1zA4j2+69k+n\nkjjuyDQWLNtc+B2VC+vGR7Zjf5/avQMMxR28183Uj28bA51RABD6CV9SVCuDBJ+F2BAmCFsPTelN\nxqgKoDrxmzS9xzchSYSLT+7Af7yyzzfQ2zmtA22twc+NKiNQST/+ktU7jO9pPXwn6gUxDEIsCPtH\nXQ/piCZjtLN7/DiuaxWm3bSm6FqEcR3Z5Jjx9It7tYbEOdGbPPkPTyWKDPrsE8b6GrswhJnc6+E7\nUS+IK0mIBWErYWuZjuh0V7S3pcAMHMhki1wXpmPsnNaBDa/vK8QUVOzvy+Kqf99S2N/v+H4kiHxd\nV86n/SA3FwBksjl8Y9lm5PKve3ozeHBjDy4+ucOVhWRnJQUdT/0ZZtXMQddb3EzmiGEQYkHYib5W\nKqXebBenD97rpzcZo3Oyak0S+gf1TqHsILsmSL+grY5BZmW9gPMc7Kf+Q4cHjI6Z87zOZAfx6JY9\nGDFsaHqZfuxoAPA1fn6YVDP7Xe/rurfhvvVv+MZUhCHElSTUHHuSU6Gb6Gul7x/kvnG6LoLG6HWf\n+RkFG+cEGdYo2AT9Vk9vBveuf0NbV2BCbyZb5Ba8/9nSjALgX838zeVbMLFrFfr6B5BKuL9H6VQS\ns08Y6zIKzt8N42aKshAxbkS+YiCi1wD8FcAggAFvDi0REYDvATgPQB+AzzPz81GPS4gHfpOc30Rf\nrXREr/vBxBVir3KCxlhKjEA3QcadoPF2+Fxb+3uwQFN4Z3939vdlkUoS2tMpl2tvyeodRjEVFfb9\n7+nNuFZajb7iqJYraTYzv61571wAk/L/TgHwo/z/QhOgm+SSRIGpimEqb0vV+ve6LvzcMDbOVY7f\nGMPGCFJJ8p0g6xUidZ8KABjVlsL5k4/2ndydZAcZI4a1YPMNZxe2+V0vP9ej9/7rVhyNaBji4Eq6\nEMDP2WI9gHYiOrrWgxKqg25yzDGX/AdXqbRFldFiQKklZFMJITkVo9pSWPLxKQVfeiXwO49qYo/D\nq710xyVTccMFJ+LBjT2hgtbO75Sfm5IA33tlsjJrVO2laqwYGMCTRDQI4N+Yeann/Q4AOx2vd+W3\n7XHuRETzAcwHgAkTJkQ3WqGqRBFENslw8ltRON0HKhjWimaQGaN8spKCPieowlgn4WBSmWyC8zxq\nSY6Bby7fgtvmTSmSvpi56CnteerGniDCxK5VGJlO4VD/gHIfW9LD7+HDZNJvVO2lahiGWczcQ0Tv\nAfAEEb3IzM+EPUjeoCwFLK2kSg9SqA1RtLo0SVvUZbcAMJp0B5mRTiVxwwUnKieX7k09RZXDXr+0\nX4UxAbj4ZLUbyhmjKCX90yZJhNvmTamIkSmXQWalz95vcr70lGPw4MaeorHbhkAXPLfPW9Wu1L6m\nSaJA11XcWrJWkqqK6BHRQgAHmfn/Orb9G4DfMPMD+dc7AHyEmfeojyIieo1GpfPLdSJwthib3/tA\ncVMaE0a1pQpGwkREriOf2//olj3aCcxEPM5E8M6P1xadX3T9+/oHfKUwosR7zn7nl04lcfHJHVi1\ndU/o8Xa0p13fN8DsgcCOMXXUaR2EqYhepIaBiEYASDDzX/M/PwHgJmb+lWOf8wF8DVZW0ikA7mTm\nGX7HFcMg+BGkrDmxa5XyadD2RJfzF9GeToEIFZlY/RRQbbo39bg0j8Ie//ZLphq70KqFc9INMrKj\n2lJ4N5sLteLxJhCkU0kMTyUC71m9GgMncVFXfS+Ah6yMVLQAuJ+Zf0VElwMAM98F4DFYRuFlWOmq\n/xDxmIQGJyhNNCiuUc7EWE7uvxd7PH4rKr/+CUE4RfDCSHZHjSoVVHeOpRhgVXaRyUohrPR3PSP9\nGISmw29FAZi5FKpFOpVAJpvzbHMHpct1JxFQUhV11DjdSlNvXFNRoxuWJBFyzHUvpRGXFYMgVIUw\ncQqT4rhSn8IrjdcoWNsGce2KrS69plSCkM2VXgkdN6MAuAPPmozTqmFfn7CFbfWqzySGQah7SmmP\n6Vd41jmtw9dvP6otVbPgrE0mmyusEuyxpBKAwo7ULc5U0N6Q13vm+0fj+TcOhF752Smw3v+dmBa2\nVbptazURwyDUPWGVWU3we36utVHQMZCz2oGWKlQXJ7ypoKZyJDavvZNx9ZQ2dZXlmPGaI+A/sWuV\ncj9VGq0qu6vS38tqEYfKZ0EoC92EUa2q1FFtqULFbrKGPg8GsGrrnpqOoRIQFXduUwkS+p3l7t4M\nOqd1YF3X6Xh10fm4bd4Uo8nOW7CmK2DzbldV2+seIOqhWloMg1CX2EqXx2me6IDyqlJHtaWM9+3t\ny7omoFSydhPz/r5sLOMFYWAu7txmNzSya02CCtC8937D6/uK5MG9qArWdB32Dh0ecI0vbL/tuCOG\nQag7nE9nOoJ0cIK44YITjSd4r2jeko9PQVtK/rTKQaVv1TmtozBR+xk/1QT/wLM7NXujoM2kkh+x\nDZL3QaE3k8VVv9xSGJ/pKqBeqqXl2yvEgjBa9yZPZ4zyAnz2BB8EYai5jXPMHBuJuvolkx3EwpXb\nXdv81Hh1E3z3ph5fQ3L7JVMBWCqszvtofycXLNusTJXN5rgwPt0qoD2dcgkDBikGxwUJPgs1J2z2\nhsnTWYfPct00hbBzWge+uXyLdlLR6fPXY7+EuNKbyaJ7U09g+84cs7JKvHtTT6ElqgoiFH33rvrl\nFnxrxVb0OVO8NHbFNhg6za+Fc9RaWnFHVgxCzQnbxD3IR+u3XL+uexsWLNtsLMnt96SpqqD95vIt\nNZeUiBvlrp2c3wPTYLDNjY9sR9anM166JVH03cvm2G0UDHDGQOptdaBCVgxCzQnb73n2CWO1KZl+\nejbdm3oCWzw61TV1eex+1Hvg15R0Kmm0KqqErLfzexBWjdcvtfjTp07AfWWm9jpjD87aGHtVumDZ\n5roqbLMRwyDUnLA9GZ5+ca9ye5AaqV8XMHvlYE849mSmm9QSZPURaCa8yqJBgnuEyhhKb3AfqExL\n15s7T8LTL+4teYWXShJuuODEou3lFrbFoVpaXElCzVGlBPo9BYZdYZi8nyQKFReohVGodTjbNgrr\nuk4vZAj5jSmo250JqQShr3+gkJRwXfe2UJNme1qddmxv16WjqkjQkDRHkgiXfOgY5WeHdY06qVT3\nwXIRwyDUnLD+2bB+5qD3K/VkGyXpVBKnvX90rYfhMq6d0zrwqVMnRGYc0qkEkJcwtyfJe9e/EWrS\nXDjnRKQS7hGkEoSFc04snIPzu9eeTinTlNtSCSQTBPtrMsiMBzf2KD+71AcXoDyjUknEMAixwFml\naj+R6gi7wvD7PbvFo18WUy2445KphcnK8mMz1r2yr9bDwkjPE/j0Y0ejPaAY0F5p6EgS4dP5e+Ds\n9zx6xDDfwDEQPGl2TuvAkk9McR17ySfc3duc373NN5yNJR+fUjSWUYqx6D671AcXoDyjUkkkxiDU\nHaX6mf1+r3tTT2wUVQFg4crthVTIOGkzOdU2THs42O6noAZKXhYY3g9VjKAcP71KYFE3FtWEXU67\n2ih6oJeCGAah6lQiuOanjlrK73VO63BNxmHoCCnwZkItew/4sb8vi2k3rTE2VskEuSbEYY70UGc7\nVBXtIVRsr+vehps7rX4aUaiahpmwywmQ64zK7BPGYuaip6oWkBZXklBV4hJcU2H7ncNgPw2/tuh8\nbaCz0QizghnMR+nt++40eO/61Ap0b+rBwXcHjD/HKXkRhZ8+rPsyjGvU+3veeNvFJ3fgwY09Vf2b\nkQ5uQlXRdRszaXxfDcI8DdvxCeeTaqn9l5sVXWe0Ujq2dbSnsTs/eaow6aHtR63SSCv5NyMd3IRY\nEpfgmo4bLjgRV/1yi1E3NAaw7LmdmH7s6IKLasPr+5RFdIIaZ2c0p3RFKa60IHdeuX76Ut2X5VKL\nv5lIXUlEdAwRPU1EfyCi7UT0T4p9PkJEB4hoc/7f9VGOSagt5WRsVI0Q+ZXZQcaNjwwJvd3ceVIs\n0krrEfta+rl8SlWtJVgV8/VILf5moo4xDAD4JjN/AMCpAL5KRB9Q7Pc7Zp6a/3dTxGMSakipqabV\nYsnqHYEpkl6crqdP3f2fsUgrrVf292V9n4T/Ze5kfPrUCaF7QDOgrTuIO7X4m4nUlcTMewDsyf/8\nVyL6I4AOAH+I8nOF+FJJSYMoKHV5PrFrFUamU7HNJqondBlAo9pSBXdOKVIW9dJW00st/maqFmMg\nouMATAPwrOLt04hoK4AeAP+bmbcr9hEahFr5anU4g4qmvYG9MOKbYlpPpBLAngPFE346lXTpEpVq\nwOMSywpLtf9mqpKuSkRHAHgQwJXM/BfP288DmMDMkwH8K4BuzTHmE9EGItqwd69aRE0QwuJNn427\nNEajk80V61ClU4miIrhS/euximXFmMgNAxGlYBmF+5h5hfd9Zv4LMx/M//wYgBQRjVHst5SZpzPz\n9LFj6zOIJMQPaaoTD9KpBBKauEH/ABc9LYcRvxv6jPjEsuJOpK4kIiIAPwbwR2b+rmafowC8xcxM\nRDNgGat3ohyX0PiY5pxLU514kPEpdlOt4ux7GSRj4pUKj5MLM85EHWOYCeAzALYRkX0HvwVgAgAw\n810APg7gfxHRAIAMgE9yPVbdCbHBVBKhe1OPqz2nEE/sDCSVsfdDjEHpSOWz0HCYVorq9hPiRYKA\ny06ZgAc39hRpCB0eGFT2xkgS4ZVbzqviKOsD08pn0UoSGg5d5klPb6bQ8KV7U0/dZqg0GzkG7l3/\nhlL/aFiLegobnkrUZc1CXBDDIDQcfpkntgjZlcs2hy6SEuLHu9mcVfDm2X6ofzA24oz1iBgGoeEw\nzVhptp7Njci49jRu7jxJ+TBQi85njYIYBqHh8EoXB5EkKrR1FOoHZ/pp3MUZ6w1RVxUaEmelaFCQ\nOcdckGM+rmtVVcYnlM9wh6BeXDqfNQqyYhAaniDXUntbCjMXPYWJXauQlMBDzUklrR7QQe7A/X3Z\nQhwh7uKM9YasGISGx145qFp3ppKEg+8OFBRSw0pi2M167l3/RkXGWkvmJNbi6pblGEdvYzePwa0D\n87AyNyvSz0wlCYODDFd5W/4WONuA6shkB3Hlss2FTmdPv7i3JKG5WjXhiStSxyA0Fd4J4NDhgbLE\n7+zaiOu6t9V1g545ibVYlLoHbdRf2NbHrejKfiky49CWSqC1Jam8/qUUHqZTySJNJT/s70JPb6bo\n88Ieq14wrWMQwyAAW5cDv74JOLALGDkeOON6YPK8Wo+qKkzsWlXyZK5q7Rkk0RBX1rZegfGJt4u2\n78qNwaz+O0Mdy3RST6eSFdepsg110ArAWx3vd6xGQlp7CmZsXQ48cgWQzQfuDuy0XgNNYRx0Qcv2\ndAojhrX4Bq3t5i+F1p7JdTh1+LfwHt5bNVdMpRhHxUbB2l4sWzaqLeXbF/tTp07AA8/uDHTLZbKD\nSIaUOQ8yOrt7M1pJlA2v7yu4mkzk1Zs5o0mCz83Or28aMgo22Yy1vQnQBS0XzjnR9bQ4J7EWa1uv\nwJ+GXYa1rVdgTmItAEeufN7AHoW9SBAwPvE2FqXuKexXLXTjDGI3Fwka57cf6Xrd0Z529UVQcXPn\nSbht3hSjWpJB5qL9dOH/jvY0br9kKjp8Mo3GtaeVirmZ7CDuW/9GKHn1Zs5oEsPQ7BzYFW57pdm6\nHLj9g8DCduv/rcsj/8juTT2FLKQlq3fg4pM7CjUPHe3pgm/5um5LeM/2v49PvK2c9Hf3ZpQGto36\ncXVL9OdjEzROFSNakyAAtw7MQx+3ut7r41bcOuBeNToFCVXYk7ZdSxJUG2Jfb+f1/5QiI8mZYXTo\n8IDyWKkk4apzjtc+6YdxGTZ7RpO4kkqlUfzyI8db7iPV9qgxdGNVMmNE5WZ4cGNPUaCxe1MP7stn\nGl3dstwVlAWGJv2V/bOsJ0uNIVW5YqIiaJxeUglC/2AODFguryzyWUnvYDcfqXSFJYm0fnnvZGrX\nknRv6sG3H9qGQ/3Fvzf7hLFFrSuffnGvMsMIgG9cYERrCzqndRQCyqWSJGrIwHMYxDCUQiP55c+4\n3n0uAJBKW9ujxs+Nlb+OphLapujcDN5ewEtW7yg8Yfr53wuT4W/UBtbriomSMHECAMh6NEFW5mYp\nDYgTPxeMnTp64yPbcf7ko10Te2tLQmkYnn5xr/Ie37v+DYxqS+H2S6a6ChX9gsUH8tlNV51zfJEB\nCZPllOPixkDNhriSSqGR/PKT5wEX3AmMPAYAWf9fcGd1DJyBG8tvIi8FU+kE52ud//1NOhLDUwks\nWLYZCw9djIHkcNf7KldMGHQdzXSYxgmiZn9fFvc6/Pk9vRltsHp3b0bbRc9ZwGbv68c4HzdWOpVA\nKum+oLrL28yxBRsxDKVQa798pZk8D1jwArCw1/q/WqsenbvKsb3SGji6P3rvdudrlf+9n4Zhcf88\n7O/LggH89OAMdGW/hL700QAIuzHGtwbAJEgcVuTPNE4QJ8a1p33vpfMhwG/CVsUEDg8Mlc31ZXMA\nWxlVprGMZkYMQykYTGiCAWdcb7mtnHjcWKYTuSmm0gnO/VbmZqEr+yXsyo0Bg9CXPhpXHf4iHvZM\n+v/efxpuzV6CvvRROArv4OqW5coJv5QgsQnOceaYsCvnb5xUpBKEpMFSxRYeLJfZJ4wNvJe24Zh9\ngr7X+8UndxS5Ar2rkGyO0dbaglcXnY91Xafj5s6TigLfzR5bsJECt1LwxhgAa0Kbchnw0pr6CkjX\nOoge8PmqQqRyq1JNg9m6/XSifKbVw5UsJvOjoz2N2SeMLep85iVJhByzK8hrUqgXtgZBN0ZVTMC7\nz7qu033FEFMJwhHDW9Dbl9XWpgCW+8gWTGxGpPI5arwT2qSzgS33FxuLavnrS0Fn4GI25rjp2Oiq\npU0n/D8Nu0wZP8gx4X2H7zMeRypBRQFkG+cE6JR+CNrXZuqNa8qSCglDR34iVwWI7W0dPpO9Cl2w\nuRGrmcMQm8pnIvoogO8BSAK4h5kXed6n/PvnAegD8Hlmfj7qcZXN5HnuyfP2DwZm2MQOg6ygOOCU\n0I4DWolnw6yg3TwG4xX7mgSJnRPl7BPGaiuMne4Z+/rpnri9rpzuTT041K+uFYgCe0yMoSf//X1Z\n1+SuMxw6GMXGQeIH5kQaYyCiJIAfADgXwAcAXEpEH/Dsdi6ASfl/8wH8KMoxRUY9BqTrccwxQBWn\nIAAHWt+r3N874ZcTJGZYE5ztIlIZBd0EaBpfWbJ6B7KD6inYr+q4EthxgI72dJERsCd7U2wDKvGD\n8ES9YpgB4GVm/hMAENEvAFwI4A+OfS4E8HO2fFrriaidiI5m5j0Rj62y1LJQrFTqccwxwFuQZbu3\nRiVvxsDDX0fL4LuFfVUTvreYLNE+Hl17LzAOEmeyg9qVgl9xlm7c3n11WUIEYF3X6Xj/tY+VHVvw\nI0ifKkiryabZ3UblELVh6ADgnHl2ATjFYJ8OAPVlGGpZKFYq9TjmmKB2b81DC4C+x6/H8Myb2J07\nEj9IXIbH6cPwOkHsYrKO9jTWLTgdGxc9BYTwoesm5qDiLBO3XFA3tEtPOaZm/SdU6qkj0ykc6h9w\nrXKcK6G4xajqgbqpfCai+bBcTZgwYUKNR6PA9snXk0xGPY65XCqRheV3jMnz0Jb/eTyAWwCcsqkH\nNz6yvegp1zl5qTJz0qkkhrUklEFgXUZQJYqzZp8wtqi3hHOstsx4tY2DcwxeA6eb/FVV1Vcu24yF\nK7dj4ZwTxUBoiNow9AA4xvF6fH5b2H3AzEsBLAWsrKTKDjMkuonBG5CuB+pxzKWikjLp/grw+DVA\nZr+ZoShBDsWpGaR7ctW5eYBifaB0KomLT+4oSkMtNbiqevp2/oERiusEbu48CdOPHR3Y06ASEFDy\nk76uqro3k9VKq8gKI+J0VSJqAfBfAM6ANdk/B+AyZt7u2Od8AF+DlZV0CoA7mXmG33Frmq5aJyme\nRdS6XiEO3P5BdUzFSdC91B1j5DFW1XgE+D0NlzuBmTSsAfT++m7NaqhSEODSS3J+rp8ryW6iFNRV\nz3teUdTNxInY1DEQ0XkA7oCVrvoTZv5nIrocAJj5rny66vcBfBRWuuo/MLPvrF9Tw1CDiaFs6tWY\nmRDG4C1sh1HCIyUBzqmPpz0GWZIidYZf0ZgTv8Iw02OUisnkrYIAtAcEqr3npTuXRglkmxqGyCUx\nmPkxZv7/mPn9zPzP+W13MfNd+Z+Zmb+af/+kIKNQc+oxxbNSon816J3g+7m2wTuwEwBb/6/4MrB4\nonps6VFmn8eDQ8d75Ar3sRpMDsVUc8ovdhF1p7OefFc2G517yAsDYIZvwyDveVVam6teqZvgc2yo\nxxTPShizWkmNP/oNYMNPUHhKP7ATePir+bjAPvXvZPZVbmzegr8YZ3KV4lryk4+wsWMXuuObHEMF\nkTVxm7Bg2WZcuWwz2tOpUBXZvZks2tMpJAhFst+qmExQRlazICJ6YTEQfosdlXjKrYXU+NblbqNg\nM9ivNwo2qrFl9pc2DqcBraVMuQ+2e8Upde2UrNahKnpLJcilQnrLXCsLSXX867q3aTuq6Uinkrjj\nkqm4fd7UwA5vNvY3oBSZjt5MFjkGPn3qhMCCN9MiwEZHVgxhqccUz0o85Za76ggTCyjsGxAoDsI7\nNt1qz44pUCLvRkLx7zmJYSaXrm/FN5dvwYJlm7UriM5pHdjw+r5CwVySCJfMOKaQkmqz8OYb8ATd\ni3HD3sZuHmN1d8vOCgzuerEL8AD/bmyVJpMdxNMv7g2ME5gWATY6YhhKIYYTgy+VMGbluNDCuKFU\ngfJS8Y5NZyDtJ35dkD7Oq0FYqwWdK8euddB1vuve1OOS1hhkxn3r38C9698oKJ92Jtfh6uwP0Zaw\nVGPHkyUTjixCSXoDVnGcrdtULaNgYxoniJs2Vy0QV1KzUG4znnJcaGHcUKp9S+XATncg2uUGgrVS\nsMexdXls3UR+2C4kE1Sd71QrDadw3bUrtqHv8eu1vaTD8ugWS9CgFsHcZosTlIOsGMqhFrUBtapH\nKGfVYeKGqpT7yEtmH7BivvWzc6Xnt4KJsSHwoprY5yTW5nWYHG6f3Cxre99yYOE7hfu3u3eE7/Ez\n2UEMz7ypfE/XS9qP3kwWU29cE8r9VAmaMU5QDtKPoVSqXRuwdbk6E6fSnxmF4dHVflASuOgu6+fu\nrwC5CPX/UyOAb+/2H0+ca1HyeDODvC6kOYm1WJL6NwyjIWNxmJP4xeBsfCL5jPvJP5XGQv5H/PSg\nbz2pts+7tKxxAAAgAElEQVTE/tR7cdq7d1bdJRSWJBEuPaU4btKMxKbALQpiYRiqObkE+d0r9ZmV\nMnYmTYycx0cCyB4qe/iBjDzGMnQr5qOsIrUardpUhV3engMbW+fjyMTBot8dZCCp0Kzu4TGYedi/\na9ylw9fjltTdrvuXwTC88HffwcO500IHoGtJsxuJ2DTqaViqWegW5Hev1GeW2rjHOVGmRwHvHhjK\n7jmwE3j+58DffRbY+NPirJ9KxRNMsAvgdIwcHzzp16qeA/p4gNM4jKZiowBA2TEOAI5GsDvo3/s/\njGkT2jHz9R/iaLyD3Xwkbh2Yh0f+YzzSqV11YxQAK7hui/81q3EwQQxDqVSz0C1o4jeZ0Mr5HL/P\n906UqvqCXBbY/pCVEhpXUmlrZRM06Vey613Ie6YL2NoNaXb3ZrSdbHQNbky6xmVzjGtf+lsMcvHK\noi8b43vqwwPP7hTD4INkJZVKNQvd/IyNc0JzSkN4pRzK+Rx7u0qawjSLKLMvvtXhdvbRS2uCs6cq\nVUW+eKK1eglxz3RZNbaOz6uLzgelR6t/uXVE0ffVtGscoO//UK8MMmPmoqcCCwCbFTEMpVLN1EaV\nEQKA9GjzCa3Uz7GN3dblVoDYq0sUJotIdx61xk7fNZn0y60it1dYqpVVwD0zqso9dzGQdLcNRbIV\n+Ngdru/rmxiLruyXQtchNBKm1eHNiLiSyqFaqY1BqaJ2OqaXsLEHv89ZPLG8rKH0aM/xK5yWWg52\nDYOJe7DcKvIy4kVGVblB35X8/+s39eDxX26BNwifTBASsNxH1cS0XWelsWs7mr2gzYtkJTUCUWZI\nVaK+INkKXPgDtxFdPDFY76iajDxGnT2lysoqJ54TJP1dxZTZ7k09WLhyu0t/qD2dwsemHK3tKR0V\nYcXxKomfpHijERvZbaEKlBLvMJHQdslalwglgWmfGZo47c+Nk1EArHPccj8w5bJg92A5VeRB8aIq\nym90TuvAwjknIuVIWerNZLHs95UxCnMSa/Gfw6/An4ZdhrWtV2BOYq1232oYhSSpQ/AMSLzBg6wY\nGoWwInUm9QomHc9MSKSAYX+TNwbezPuYkR4NXPNqdMfX1aSkR1vxgVJck2WsYKbeuEY5KYeRxFYx\nJ7EWi1L3uArq+ri1ZnENXTtU7z6N0qlNh6wYmo0wT7Gm2kWVqo/IZR0rhBgbBcAaZ5QNiFRJC3Pv\ntoxRqUahjIw03ZO6qsGNLuVVxdUtyyumr1Quds/qmztPwi1zT8KoNrXUt0pLqlkRw9CMmKZchkov\nDTNtxJwoe0wAwUY8TKe8CPtk3DL3JFf/gtPer0mFVTCOiiU0rO3h9ZXKhQE8/eLewut3fWovmq1T\nmw7JSmpGTIvzVBk4Wth6+o1TtlGplLJSqpRMRtjK6hB1FaoObH545adnLnpKuV+SCKe+bxT+45V9\nhfXgbh6D8QrjYFJQFwU9vRm8/9rHAmMnosBqISuGalKrnsleTIPVKreHroDKzqaZe3dxHn29EbYQ\nr0x3jouwKwDDugpVh7cFyzZrh6HqrObX8+G+L3/YtaK4dWAe+tj9PQhTUBcFQUZBFFiHiGzFQERL\nAFwAoB/AKwD+gZmLFMqI6DUAfwUwCGDAJDBSl9RQY0dJS3poLOnRwIkXWZPPivnuJ15vrYZJM5s6\nTGgoUEpmUCVlMsJWVgfUVdirBNWk7neXiICJXatctRJJIu3kel33NvzHK0OZZitzs4As8vLfQ/pK\n1Qg8pxIUug7D7izXyIHnMES5YngCwAeZeTKA/wJwrc++s5l5asMaBaA2PZNVqCpv+w9aQnemT7wt\njtWGXX3tLKyKUj47SkqtXtdO5jvNV4b2alI3XetkSQBtBb5zlRCW/X3Zot7Rfk/cDzy7s2jkK3Oz\nMKv/Trzv8H2Y1X9n1bKRWlvCTWvpVBK3zZsiRsFBZCsGZl7jeLkewMej+qy6oJpqrH48fk2xgRrs\nL97P+cTrKnLzpJsOeI5V7fOpJAd2Ao9caf1cibanhWMGrAyDZNWdsiSqVecFdyqL4lRqrKVgZ+v4\nVSfHSUvpUL/5OXc0aU/nIKoVY/gCgMc17zGAJ4loIxFptB0AIppPRBuIaMPevXt1u8WXcjV2KsHW\n5eEKyw7ssn7n4a86Jj7PBJDNWMbGJvB8Yp69lD0ErPhH4NFvmMeDgjSgglaGfjIZzlVMyFVnJTNs\ndvdm8K6PkdEVj8WVdCqJOy6ZinVdp4tRUFCWYSCiJ4noBcW/Cx37fBvAAID7NIeZxcxTAZwL4KtE\n9D9UOzHzUmaezszTx44dW86wa4Nu8ug/VL0gtHMCN2HkeOt3VCsKJ87cf+V55ieNkccA07+A2BsH\n5IANP3G71rq/AvzLOGDhSOufXy9pFX4rKe175E5nDbnq9MuwCXsHRqZTOGvwGaxtVVcyt7YQUqpO\nQDUgFTCrdbSnJZ4QQFmuJGY+0+99Ivo8gI8BOIM1JdbM3JP//89E9BCAGQCeKWdcscT+4/a258zs\nq04QOmi1kEi5YwO2+8KvsY0T2+1k2ht6w4/Djb/qeL6uuSzQ77g+mX2WsQDcQXpttThb7zmvhe2i\n84krOFNM/3P4GBwFxWpZs0q76pzjizq+2dW9AApBaZNa9P9x+GlXJfN4ehuLUvcAWSuWkIlRX4YB\nzcnY8uRCMJFJYhDRRwF8F8D/ZGal74eIRgBIMPNf8z8/AeAmZv6V37HrThLDmeNOieIuZkD04ml+\n8hZ2VpLdYY2SwMmfBz72Xevp2AiDtpjO6xD3CmhTvPfNJF5wQb7hjd9+iRSem/rP+OxzxxYm9jmJ\ntVicugdpT99mv4C5qnbB+6R8Xfe2wPacur7Pu3JjMKvfvzVoXGgmsTwdcWjt+X0AwwA8QZb/cT0z\nX05E4wDcw8znAXgvgIfy77cAuD/IKNQd3olCZRSA6IO2fsc/8SJLQM4eGw9aryecahkNk7hEUGwh\naMKsV7zXdfI84I316jamgDsm4Hstcli1dTcy2fGYk1ibT/t8G704AocxDO04aFRIVyhS27oc+PU1\nwMO7gN+4f+/pF/cGmuk4VTIHoUurLad4zcTANhJRZiX9d8323QDOy//8JwBTohpDLDDtcBYmCF1K\nla0ucyY92r/Rz7mLLZdJUArqpLP93ze9DvVGepT79dblbiOrwuQhIDeILw3ci32JfpcLZzQOWoVj\nFy81dz0G1NCYpLPGrZJZh04sz1u8Fmait9N+7ePZKbwAGtY4SOVz1JhMAmGKqkqtstVVO5+72D+o\nOXke0PnDoTx5Sqr3fWmNf2V3PaexhsHEAI4cb/QgMI7e0YrRhap/qUANTaUqmVNJwqdPnVAk0FcJ\n7KCyLZbn1Hn6+YdeR+dvzgEWtqNv8QlY+9APi6rAr+vepjyuKu230QX3RCspanRP6pQEOBdeV6fU\nKlu/oLCuEY89eTmDygvb1ce3W306XzuD6n65/vWM180WZACdDwEBrjUCo0PjwgllaMuooUmnkshk\nB30rmZ2urt08xrfCecnHrUKy6ceOxpU+khxhec0TO3DpPG1dDjxyQ+Fat2X24CZaiv5ErjBOBnDf\n+jcw/djRRasAXdpvIwvuiWGIGp1kQan9ocsplNO1Ij3jeqtWwZmWmmxVr2LCTPDOp9L+Q2a/U294\nV1C+14esRkDOe+DNUnPu7Zv9qchyAtRuxgDRRJ1PnshSWLVdLqv477Gy3z3he/sueLOVnHS0pwuT\nbue0jiKpDm8shRkYRQcDjQ3Bcvdo3TqKhylbAtx5Pgwo23yOa08r3W2NLLgnrqSo8QrRpUdbkhIr\n5pcmpBdVoZx3YtBlqwUVc3mxVw5x69hWKbyxBN/rw5bLzWbyPKsPw9y7C+KEoXK1vG5EnZtx0tm+\noomXnqKuv7Dt0rqu0/HqovNx2zwrHDgnsbZQz/Dd1F1GfRdUAnVXnXN8waVkG5jxibeRIGA0HcSR\niYNIEDA+YRkbXQc4BnDjI9sLr7s39WDmoqcwsWsVZi56Cqyr81AEzlWrAOc4/c6nkRDDUA1s/f25\nSy0Jicw+lKzCaaqMGlbT3xtczmXVPmivoTOhEYPOTpzX2L4+OlSTlG0gFh6A7ppqDYZzVaZzM760\nRqunBAA3d56ENkVVWI5R5Ee/MOmewFtIXb8wjt7BqLZUwcevKijrnNZRiAWoYilOgpr87O/LontT\nj1JFVhcgV21XrQKc4/Q7n0ZCXEnVpBIqnCYFZBFq+heOYR+nUu0/C8S89acSHoqxPH6NFdDX9aZQ\nZTE57iWlRylXVzTyGH39h32fgpIIfL5jugK13b0ZdG/qwY2PbMf+vizWtvpP4IWPbH0PNn3bylSz\nM4AWLNtclAFk/z/u4eC016DUWNuIeQPFi7PzsLj1x0jjcGFbPw3DEk/g3G8V4O1N0ejIiqGaVEpI\nL6gDWESa/krCupaCmP4Ff2mJuJPZZ7kJdcby8F/9XT+H/1rcz8JeEQbdpzD30bmiXDwRm4b/o1Lq\nor0thWtXbCuI5+nqGZz0cSu+x5cCUPeBsNVane/vzgWnvQalxu7uzShdQStzs9DV/0XXiqn1ou9j\n9ie+1lSrgDDIiqGamHZO02Fav+AnA227O5wEaPprx/LIlZbonOtcyujilh5tVVvbLJ5Yp7EJnxVP\nLmutLFZ8OZ+ZNlj8fno00DpCfZ/97pPpffSuKDP70A4A5A4eP5H8n2B2P4Hr6hkGOIEEuJCt9Mjh\nGVgIYOHK7dpUTzsAnckO4tbEPFcQ24tJauy49jT6+geUCrDPDJ8NLLjFta0TjVuHUC6yYqgmpvEB\nFWHqF/wMjep3VJ3aplxmGSFVjGLrcuChy4uNAhBc6DbyGGD6F9VCeyde5N507uLi/RKp+u8QZ6Mr\ngsvsV68IVffJmd0W9L5NQK1FG/XjmtRyZLKD6M24J1ldPcM3spe7+i6Ma0+je1MPejNZV7DaXpHY\nT/b2/ytzs9CV/RJ25cYgx4R9fATeyR2BHBN25cagK/sl334OthtIlzMRI1XwuiAyraQoqTutJCel\n9gbW+fJVGktB8hNBuky6Lm32JOMXV6AkMHyk+kk/PdoKsgLAz+YAr/7W/X4iBQz7G2titK8NUHy9\nAN80z7onjG5WyO9T96YezHn4RCQC4jjMwMTD9yvfG0orVXdms4X6lqzegZP/8kTRSqCPW3Fr6iuY\nev58fHP5lrJ7ObSnU1g450R0TuvAxK5VyjMTnSSLOGglCSoCgoBawsQn7OPrlFGDYhpBQXK/3+dB\n60lfVRdx7mLr563LgVcVArq57NBkr2pC42oY1KCUUgVvmGRg+/On05FKQTwngz7OhJW5WUX1DG2p\nBDLZnCu4vGDZZixTBKvbqB//RA/gtBUfxvn0O1ydMiuO03F4YChwrqs5GKnoYS3oEVdSOYRJCS2X\nsAHiyfP0QdygmEaQETKJiVz4A7dLY9pnhlxTD10Oo8wjZ8B863JLs6kUo5AaMVSIRklgzAmIZU+I\n9Gh/F56XkEkGS1bvwFmDv0Ua7wa6VhIozlKyg7Qz3z+66L3sIONTp04AACxYthkzFz2F9raUNlg9\nMvtnnDX4W1fq6/jE27gj9UPc2PIT/8F5cMpTXHXO8Ugliu/tof6BQsBbCEYMQ6mUqllUKqXEJ0qN\naegmfkpYE1ZQFbO9srD95GdcbwnL2dfKT2DOi20IHr+mtF7SqTRwwR3ADfusOoEb9uVjIzF0ob57\nIFzv7ZBZbtPzbp0jEwcLVdU6A7Gbx7hed7Sn8eqi87Gu63RseqNYXj2bY9y7/g1X9tHBdwewB2OK\n9gWA3bkjlbULCQI+k3xSW8ymw45VdE7rwBHDix0h2UFuaG2jSiOGIQjdqqACwmShMA0slvs7gD4F\nlQcBcLBv3zsxlaOsaj/plxJPoKT7fO17GVdXFA8WG79y04wd39/bWourlIlQtDbIeDKAUknCocMD\nmNi1CtNuWoM+w6Y82Rzjd3RykQlmBn6dm6pdTSQIvsVsKpyFab2avtSNrG1UaSTG4IefD7dSNQlh\nKCU+UervAMHNhXR4J6xyrgkPlrYK8+pR1XM/iAM71bpIQempnnNu0aySCMinGVsB7Bfe/3Vs/MMk\nUG8G7W0pHHx3oJCdpEoF9WNWbiPI8/hJBJyR2KxNfQWsYraO9jRmnzAWT7+4tyCPPfuEsYGS2s2o\nbVRpxDD44bcqKLcmIe6YKKqqSKSKXVXlKqs+coWV1x/kwvJTrK33fhCqwHJQFbzhOb+FsfjwW4ut\nwPFHrMDxujnWezMXPRXaGDgZl1BXK4+jd3Bl9n/hjtQPoQgJINE+HusWFLfh7N7Ug0e37CkYhkuH\nr8f/Sf8SbQ+/CfxmPJ57/9fR1z+x6PdSSWpobaNKI64kP/xWBeXUJNQbOmOXHl0Qfyu87vyhuoBO\nG+w1CAJnM0ByWHD9Auf01eCN0A9C5Vbyq4I3OOcMt+Jf+j+hrEoG/N0vqvoEJ6kE4d30Ucrf3c1H\nYmVuFv7f4JnIeRcymr8jO6vKXr3MSazF9XwX2jJ7YMdkPrjxOvz9u08Xf2AMQ0pxRgyDH34+3FL9\n97Wg3OwpvyY/tvjbwgPWz6rznzwPvn+Z9u/PvVu/T2a/I9NJg99qrUFWcrkDu/BP37oWby787+Cg\n+6lNIkgCILyJsbjGUzjmbUCjc7941VBVCqitLQm0nXuTb4OfGwa+gCuzXykUtvXwGDx30o3K75G3\nYc7VLcvd/a8BpDVie9mcBJ/DIIbBj6BVQZBmUZSYTvaVyJ6qhBE0SZ0NSrEtqNTeHX61NulsxDJF\nNSR93IpbUvfgKOwFBd1P3ff3oruAhb348LvfU9YMOFcJKsnpi1rW4buKQLZXAfVQ/yC6B2fi1tTQ\nxK+qYl6Zm4VZ/XfifYfvw8zDd+LKP0xyHdeW0fbGDcL2oZbgszmRxRiIaCGALwPYm9/0LWZ+TLHf\nRwF8D0ASwD3MvCiqMYXGRMm0FoQpbKqEoqt93KD9/apwTXV8TPYLe1/sPsxFq5b6U3IdgcPFDXyc\n9/PRbwAbf2oF7SkJHDkJeOelodeORkEmQVpbS8hu1vO5I36P6/jHaBnUy207WbJ6B2Z/8OOYtX6G\n8Tk6J3Bvv2XXfiH7UEvw2ZzIJDHyhuEgM/9fn32SAP4LwFkAdgF4DsClzPwHv2PXtSRGJQgjj7Gw\nHerJj6yVjopSZDuCZDTCHDfs5wftH1aML5W2JtDtD9WR7AZZyrQbfuy/m+OeqCZdW85CKy4XkO67\nKzcGs/qH+lEQhgyQaQvQjvY01nWdju5NPb6SGXMSa7E4dY/LnZTh1iL3mNF5NQn1IokxA8DLzPwn\nACCiXwC4EICvYWh6wqTKmmRPOSfW9ChL+tnOpw/q5WBjsjIJWnV4J/i5S4v39+4z6WxrNaBbPW1d\nHm5yd9Y+fOy7dZTmysFGAbDO4/FrgMnzilYD3l4JSnwC2ioFVKdRMGkBmk4lMfuEsZh645oiAT8v\nG//bWXjhA8fhQ6/8a1GqLXozhZalHSbnJbiI2jB8nYg+C2ADgG8y837P+x0AnLPWLgCnRDym+idM\nqqzKNQNYqZ+2X9ojwVyEzvXknKR1LhnnROL3ZG/iHlPts+EnxZ/tHG/YgkPOuc/T5bbaiXp0PxWR\n2VeQXw/dgEbz3ctRAtfn5mNl7rTCNnuSv2/9G8oq5zbqR1frcmwcfpZvnYIKe1UBnA7gHwvbPwQU\nUm2F0inLMBDRkwBU+WjfBvAjAN+B9Vf0HQC3AfhCGZ81H8B8AJgwYUKph2kMwvRPsCc2rxppZp91\njJa02dOw90nR9Ek6Pcra1/v5B3ZaDW3eWG89mZusOJR5+QEGKWyaqsq46noh1DOGMSa7+5o9cd/x\nga/jQ9tuKPruJS64E7MGZ+I/PauPJat3gKEPFB+Nd/ITvMXMRU8FGgUAmH3C2MB9hNIpKyuJmc9k\n5g8q/j3MzG8x8yAz5wDcDctt5KUHgDMNZXx+m+qzljLzdGaePnZsk38pwmYJTZ5nFYh5yWbM3Sze\nCdO0YOzwAUv8Tvk5bD3xP/oNvd/aObGHmeRtXSdv2a1NakS4zKZ6L5DzEnQtty5H3+ITMKf7RCzr\n+zIuSKxFT28Gn33uWCud1PHde+6kGzHzsTFYsGwzAOD2S6ZiXdfp6JzWMdR3gdWaSeT5XplmDj3w\n7E4RxYuQKLOSjmbmPfmXFwFQCcw/B2ASEU2EZRA+CeCyqMbUUISVuiinwEs1YZoeLzcIwO8JMG8c\ndDgnDm0FtcK9Y0t4qKQ8bGE9wDzIHfr6xcDlREnrX07RFS09Kh9I1rv12rKZoq5uK7OzcOUfJmFd\nl/XnPBTAtiZ0u0gOsDKa7BjDrQOKDm2e71X3ph4k8nGBIAaZXZ8jVJYo6xhuJaJtRLQVwGwACwCA\niMYR0WMAwMwDAL4GYDWAPwJYzszbIxxT8xKmwCvZmq9o9lmNVLRgTDMReA2SLi+/0CeahkT3vOSL\nulznE6YOxeh883mkI4+xxlQLUmmrzsNWku38gboLXv9BfW2LYnXkrFFwPtV7i84Aq0juyrz09uwT\nxiKdShZ1aOtLH+36XtkGJkzTHm8xnlA5IlsxMPNnNNt3AzjP8foxAEX1DUKF0QWhvYw8xiw91fR4\n5eA1SKr6hUlnAy+tGXqtc0nxoDVZlorR+bI7ZdgkS8iJiR5UEBfkU0Wdq4Epl7mvUf+hYteeQSMm\nu0bBWQ/g5/rp6c1g2XM7C/0RVuZm4Znk7EK3NRu/tFQioCVByA6qDYYUrUVDrdNVhWpRlF2jgsxb\nSuqC2l6SrZbOctheCpTUy2v4ZSn5uXAWjjQzfH7ZU2GysCgZTpWWzeSsfXljfXH67pb73UZWJ4ro\nbMSk+I7s5iONlUxtsoPsmtTPHPwtzl5zBfDwm8BIS/Tu2ueO1a8UGFjy8SlawyFFa9EgkhjNhO06\nCZKnMJXbmDzP0keae/eQK6cgrJd321z4A0tYz0/jSIXJhBomS8kmSBLET0LE6Xoykfg4LkSLSkpW\nZvW18afBfUK0bjG27veks4vcT33cintaP11UJKaSzNAxJ7EWN9HSItG7swZ/q/2dce1pdE7rwG3z\npig/p086s0VCZJXPUdL0lc8qwlQL+1UpA8EVzOWM0dT9ZD/Z+52TtqrbgPRoy6h5Ma0qN6n01lYJ\ne1Y1qaCUYbKCxWVVYTsq3YPug1357XQ/+Xyf7JRWv5UDAKxtvULZa9pbLe0YMW6/ZGrBEHVv6sHC\nlduLCt+kqtkc08pnWTE0AmGF8vzSXaPsTOf9XF2gGGQ9tQadk696aAB2kZcX06pyk5RhbSYTu+XK\nW9Lu105GHmNN6Kp0YxW6c/eKFRbGriCbsYyCYWC+c1oH1nWdjjsumeq7eggresdwZxx1TuvAiGHF\n3m8JQlceiTE0AqUI5enSXaPuTOcXIwBQ0Px5aU3wOU06Wx3gPW4W8KrePVHAeSx7xaVbgegK34Iy\nmVQrhvRoYMBxbpl9VqZQshUY1KRzmlz/VBoYPwN49RkUrUi86cb22HWrrhLut1NiQ7V6CCt616GI\nH+iCzX5BaG+RnshjBCMrhkagkpO5SR/hSqF66p671KqENjmnl9ao99n3J/0TuOpYrhWXglIbMOnS\na4Fio5fLAq1H6FcgAb0VMPIYy/2z6/dwT/TkUlQtosL32149qCb1Wwfm+fZmcOINctvogs267XYa\nbE9vRtuMSChGDEMjUMk/7mp3ptPVEpick5/xOHdx8XmojrV1OfDQ5Xp/ezkNmHTupoxXMixPZr/e\nfRPQWwELXlCvssB6A+p33DLvt+oJ3lvLoOrNAACj2lLamIEq2K0zIoC+zkJcT/6IK0lFKbLTtSSM\ndlIQcelBYXJOfmKCQeJ3qfRQHEObARUifVeHyt2kSxn2M+Qm96WUlaP3uOlR1usV861t9vUO+X3Q\npbE+M2w2fkezC32k21IJtA9L4kAma+TmCasIW4rrSRDDUEyYJjjVGk/QH2WlJ/OwchvlYlI34Nxe\n2F8z4Ts77Ol6QUw6e6ihjY6o2oEqi+XyAXc/So1pBJ2HfVzVd7/78rysCYa2Gfw9XHXO8cpeDx+b\ncjQe3DjkxunL5sAgV/ZREGEUYU2aEQnFSLqqlzBNcKLGJCWy3gl7jrqAtV11bNpU6OGvugO9XqK+\nzo9+o1gyPMxnqowpoE5DTY+2XGtBxw1owuPC4O9BFfTVBaZHtaWw6foAw1gCJTUjamAkXbVUos7K\nCUOUqaNxIew56ora7InKZFJ9/Bp/o+Bs1hMVL62Bto9EELr0ZMAatzfwbkusB/X5DvMdP7Az8Hh2\nIPrVRef7GgUA2N+XjSQg3DmtA7fMPQkd7WkQrEynZjUKYRBXkpdSl+NRYGqk6i0m4iSsIa6E4fYr\nFKvWiqyc8/AzpgtesP7300LS4ac1pcLQxerXt9nJktU7zCfsEN/50M2IhCZcMQTJPVQ7K8cPk8yc\nsMVtUWMqp2ETNqMq6nTaarnpyjmPIKNSqtFRfff9MFzhqDKDVJgEhLs39WDhzTeg78Gvxuc734A0\nl2EwmUTDNsGJEhMjFSd3UylGKqwhroTh1tU4pEdbInQ3jrYE924cbcUCoqCc8wgyKqUaHe93Pz3a\nKrzzw2CFY5oBFBQQtlceX+q/t6hNaMO5WGtMcxkG00k0jE5/lJQju1AvMZFSutGVa7jPXaye8Ea8\nx6qkdjb52fDjyhoHe0W1Yr5DCiPkeQQZlXKMzuR56P7IaswcvgIT938fCxNftXon6DBY4ZhkAPnV\nItjYKw+dtEZNvvMNSnPFGOI0iZoSVYpiFPhdXz+fcNj02HLTaSfPs1YG3qygt19U77/hx8CEU/1F\nCU383d6Mqsy+fGOdpeHPH/C/nn7v++CNB/z04AwsS30YP//Q68pezybGRpW6mkoQjhjegt4+s/oF\nAK42oSppjZp85xuU5kpXjVMqaqWIU0qr7vra2kClplFGQZjUTEB/TcNc/zr4/s1c9JQ2nfTCxDp8\nqXdUHr4AAAxKSURBVP9ejEu8g3fTR6Ht3IBgtoNK6BXZY5uTWKtuE9pIadwRYZqu2lwrhkpWCMeF\nuFQqA/rrC6glJ+w0SqD64w27StRl9YQRMAyzYq1RppkuHrC/L4ufYgZ+ihkAgPRgErcMnoROw+NW\nIjPIXnmszM4CssDVLcsxjt7Bu23hjJQQTHMZhjhNopWk2pXKfuMAhqqS7eYzfr0GVJNoNSbFsKmZ\nwFDufqkxHlO3Xw2r74M6stnYekPVTAN1ymE80jsLG9vOEqXUiIjMMBDRMgB2NKkdQC8zT1Xs9xqA\nvwIYBDBgsswpi7hMoo2KfW3D9IN2TqLVmhR1q5vxM/wlu71jCRPjMV2xBgXxIzSaqniAjlroDUlN\nQnWILCuJmS9h5ql5Y/AggBU+u8/O7xutURCqg7I62QfnJFqt9FtddtPnVlqtSnX5/N6xhMkAMs2o\n0q5CdkZes6KqFG5Pq1NWS9Ub6t7Ug5mLnsLErlWYuegpkcCOIZG7koiIAMwDcHrUnyXEhDD+e+8k\nWo3MMa+rypsVZP+84svBY9G5J4F8sNnzZG+yYtWtQlR9oU0qmkPifSrX6Q0FpZeq8B7L7o9gf64Q\nD6pRx/D3AN5i5pc07zOAJ4loIxHNr8J4hKjRFlgdYz2NOwuoWtJWTr9dJR11ZbNpEd7kefrWl0Fj\n2XSvdU6lPtnrViE6JdiI060rqTck/RHqg7LSVYnoSQBHKd76NjM/nN/nRwBeZubbNMfoYOYeInoP\ngCcAfJ2Zn1HsNx/AfACYMGHCya+//nrJ424KaqmfZJLCqdtnymXAlvujS78NkzJa6nnoCJOWqrp/\n2j4O8Ul3DWJi1ypl81QC8Oqi842OIa06S6cq6arMfGbAIFoAzAVwss8xevL//5mIHgIwA0CRYWDm\npQCWAlYdQxnDbnxq3VPCJPtLF0t4aY018VbSqDknWV1PZ9VTt4mbiBL+PR2CPkOHzuVU5+nW5fZH\nEFdUdYg6xnAmgBeZWfkXQUQjACSY+a/5n88GIIIn5RImtz4qgnzpfrGESmaOmT7R69xD3rF4j2dq\nFPw+wz5utRsy1QBdAx/TeIWfK0oMQ+WI2jB8EsADzg1ENA7APcx8HoD3AnjIik+jBcD9zPyriMfU\n+NSD9Ee1pDxMMqTCPHWHzbgqQPrPCLPCq/N067CtOb1Iq87qEKlhYObPK7btBnBe/uc/AZgS5Ria\nkjjpJ+moVhW6rzGk8E/dJRlXAqZ/Qf8ZcVjhVZFyahGkVWd1aC511WYhTj0ldFRL3twvQ6oU9Vzd\n8SiJwnlM/6L7vOYuBT72Xf0x/eoWpMeAi6vOOR7pVNK1rdTUWUFPc0liNAsmvug4dH2rhluk0isT\n3fHKMWp+8hy10pKKKeW6ogQzmktdVbCIWpE1DkZHN570KGtbZn/pY6v0+QUFyOsoHVWIN6bpqmIY\nmpEo5Z9Nc/9rYTjiPjZdpTUALDwQ/RiEhsfUMEiMoRmJMmspSOuolj2q4zy2yfPycQoFuu2CEBFi\nGJqRKGUngoxOLXtUx3lsgL4mIkythCBUADEMzUiUWUtBRqeWNRZxHhvgo82k2S4IESGGoRmJMlX0\njOuBZKt7W7J1yOhELZLnR5BBrOXYgPpIMxaaAklXbVYqlSrqDdZOOhvwJjQ4X9eyvWpQGm+tW782\ngOSF0BhIVpJQOso0S4JSqM6Z8RS3dFYncR6bIJSJpKsK0aNLe1VCVqWxIAg1Q9JVhegJE5SNk06T\nIAi+iGEQSkc72ZP7ZVR++q3LrVXLwvahDnCCIJSNGAahdHRZNNO/EL04Xi2L0QShwZGsJKF0aplF\n02RS1YJQTcQwCOVRq8YxtS5GE4QGRlxJQn1S62I0QWhgxDAI9YlUCQtCZIhhEKIniuyhanWAE4Qm\npKwYAxF9AsBCAH8LYAYzb3C8dy2ALwIYBHAFM69W/P5oAMsAHAfgNQDzmHl/OWMSYkaYRvdhqVV8\nQxAanHJXDC8AmAvgGedGIvoAgE8COBHARwH8kEgpKt8F4NfMPAnAr/OvhUai1lLWgiCEpizDwMx/\nZOYdircuBPALZj7MzK8CeBnADM1+P8v//DMAneWMR4ghkj0kCHVHVDGGDgBOEZ1d+W1e3svMe/I/\nvwngvRGNR6gVkj0kCHVHoGEgoieJ6AXFvwsrORC21Py0in5ENJ+INhDRhr1791byo4UokewhQag7\nAoPPzHxmCcftAeBsOzU+v83LW0R0NDPvIaKjAfzZZxxLASwFLHXVEsYk1ALpMSAIdUdUlc8rAdxP\nRN8FMA7AJAC/1+z3OQCL8v8/HNF4hFoi2UOCUFeUFWMgoouIaBeADwNYRUSrAYCZtwNYDuAPAH4F\n4KvMVkdzIrqHiGw98EUAziKilwCcmX8tCIIg1BBp1CMIgtAkSKMeQRAEoSTEMAiCIAguxDAIgiAI\nLsQwCIIgCC7EMAiCIAguxDAIgiAILuoyXZWI9gJ4vcofOwbA21X+zLDIGCtDPYwRqI9xyhgrQ6XG\neCwzjw3aqS4NQy0gog0m+b+1RMZYGephjEB9jFPGWBmqPUZxJQmCIAguxDAIgiAILsQwmLO01gMw\nQMZYGephjEB9jFPGWBmqOkaJMQiCIAguZMUgCIIguBDD4ICIPkFE24ko55AGt9+7loheJqIdRHSO\n5vdHE9ETRPRS/v9REY93GRFtzv97jYg2a/Z7jYi25ferqiwtES0koh7HOM/T7PfR/LV9mYi6qjzG\nJUT0IhFtJaKHiKhds1/Vr2PQdSGLO/PvbyWiv6vGuDxjOIaIniaiP+T/fv5Jsc9HiOiA43tQ9RZ+\nQfev1teSiI53XJ/NRPQXIrrSs091riMzy7/8PwB/C+B4AL8BMN2x/QMAtgAYBmAigFcAJBW/fyuA\nrvzPXQAWV3HstwG4XvPeawDG1OiaLgTwvwP2Seav6fsAtOav9QeqOMazAbTkf16su2/Vvo4m1wXA\neQAeB0AATgXwbA3u8dEA/i7/898A+C/FOD8C4NFqjy3M/YvDtfTc+zdh1R1U/TrKisEBM/+RmXco\n3roQwC+Y+TAzvwrgZQAzNPv9LP/zzwB0RjNSN0REAOYBeKAanxcBMwC8zMx/YuZ+AL+AdS2rAjOv\nYeaB/Mv1sFrRxgGT63IhgJ+zxXoA7fk2uVWDmfcw8/P5n/8K4I8AOqo5hgpR82vp4AwArzBztQt5\nAYgryZQOADsdr3dB/cV/LzPvyf/8JoD3Rj2wPH8P4C1mfknzPgN4kog2EtH8Ko3JydfzS/OfaNxr\npte3GnwB1lOjimpfR5PrEqdrByI6DsA0AM8q3j4t/z14nIhOrOrALILuX5yu5Sehf9CL/DpG1fM5\nthDRkwCOUrz1bWauWM9pZmYiKjvly3C8l8J/tTCLmXuI6D0AniCiF5n5mXLHZjJGAD8C8B1Yf5Tf\ngeXy+kKlPtsUk+tIRN8GMADgPs1hIr2O9Q4RHQHgQQBXMvNfPG8/D2ACMx/Mx5m6YfWCryZ1cf+I\nqBXAHADXKt6uynVsOsPAzGeW8Gs9AI5xvB6f3+blLSI6mpn35Jegfy5ljE6CxktELQDmAjjZ5xg9\n+f//TEQPwXJRVOwPwvSaEtHdAB5VvGV6fUvG4Dp+HsDHAJzBeWeu4hiRXkcFJtcl8mtnAhGlYBmF\n+5h5hfd9p6Fg5seI6IdENIaZq6ZRZHD/YnEtAZwL4Hlmfsv7RrWuo7iSzFgJ4JNENIyIJsKy0L/X\n7Pe5/M+fA1CxFYgPZwJ4kZl3qd4kohFE9Df2z7ACrS9UYVz25zt9tBdpPvs5AJOIaGL+aemTsK5l\nVSCijwK4GsAcZu7T7FOL62hyXVYC+Gw+o+ZUAAcc7syqkI9x/RjAH5n5u5p9jsrvByKaAWvueaeK\nYzS5fzW/lnm0HoCqXcdaRd3j+A/WxLULwGEAbwFY7Xjv27AyRHYAONex/R7kM5gAHAng1wBeAvAk\ngNFVGPNPAVzu2TYOwGP5n98HK5tlC4DtsFwn1bym/w/ANgBbYf3hHe0dY/71ebCyWV6pwRhfhuVb\n3pz/d1dcrqPqugC43L7nsDJofpB/fxsc2XRVvH6zYLkKtzqu4XmecX4tf922wArwn1blMSrvXwyv\n5QhYE/1Ix7aqX0epfBYEQRBciCtJEARBcCGGQRAEQXAhhkEQBEFwIYZBEARBcCGGQRAEQXAhhkEQ\nBEFwIYZBEARBcCGGQRAEQXDx/wOJJCScGAVw6QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f954a952510>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nufsa73QkticAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f9558183cd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\"\"\"This illustrates that LDA, Ridge and PCA+GNB are equivalent when y is binary\"\"\"\n",
"%matplotlib inline\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import RidgeClassifier\n",
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
"n_samples = 1000\n",
"\n",
"np.random.seed(0)\n",
"def complex_distribution(means):\n",
" \"\"\"Generate multimodal distribution from gaussian mixture\"\"\"\n",
" X = list()\n",
" for mean in means:\n",
" n_features = len(mean)\n",
" cov = np.eye(n_features) * np.random.rand(n_features)\n",
" cov += np.random.randn(n_features, n_features)\n",
" cov *= cov.T\n",
" peak = np.random.multivariate_normal(mean, cov, n_samples // len(means))\n",
" X.append(peak)\n",
" return np.vstack(X)\n",
"\n",
"X_a = complex_distribution([[1, 4., 1., .4], [3., -2, 0., .2], [0, 2., 3., .3]])\n",
"X_b = complex_distribution([[-4, -2, -1., .4], [-3, -4, -2., .2], [-2, -4, 0., .3]])\n",
"\n",
"plt.scatter(X_a[:, 0], X_a[:, 1])\n",
"plt.scatter(X_b[:, 0], X_b[:, 1])\n",
"\n",
"X = np.r_[X_a, X_b]\n",
"y = np.r_[-np.ones(len(X_a)), np.ones(len(X_b))]\n",
"\n",
"\n",
"ridge = RidgeClassifier(alpha=0)\n",
"ridge.fit(X, y)\n",
"\n",
"lda = LinearDiscriminantAnalysis()\n",
"lda.fit(X, y)\n",
"\n",
"plt.figure()\n",
"plt.scatter(lda.coef_, ridge.coef_)\n",
"plt.xlabel('lda coefs')\n",
"plt.ylabel('ridge coefs')\n",
"plt.plot(plt.gca().get_xlim(), plt.gca().get_ylim())\n",
"plt.title('LDA and Ridge find the same coefficients')"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f9546436810>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f954658db50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"from sklearn.naive_bayes import GaussianNB\n",
"pca = PCA(n_components=X.shape[1])\n",
"gnb = GaussianNB()\n",
"X_pca = pca.fit_transform(X)\n",
"gnb.fit(X_pca, y)\n",
"coef = pca.inverse_transform([gnb.theta_])[0]\n",
"\n",
"\n",
"plt.figure()\n",
"plt.scatter(lda.means_[0], coef[0])\n",
"plt.scatter(lda.means_[1], coef[1])\n",
"plt.xlabel('lda coefs')\n",
"plt.ylabel('pca gnb coefs')\n",
"plt.plot(plt.gca().get_xlim(), plt.gca().get_ylim())\n",
"plt.title('LDA and PCA+GNB find the same coefficients')"
]
}
],
"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": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment