Files
udacity/python/Unsupervised Learning/Dimensionality Reduction and PCA/.ipynb_checkpoints/Interpret_PCA_Results-checkpoint.ipynb
2019-08-03 22:32:03 +01:00

272 lines
68 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Your Turn!\n",
"\n",
"In the last video, you saw two of the main aspects of principal components:\n",
"\n",
"1. **The amount of variability captured by the component.**\n",
"2. **The components themselves.**\n",
"\n",
"In this notebook, you will get a chance to explore these a bit more yourself. First, let's read in the necessary libraries, as well as the data."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/workspace/helper_functions.py:44: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n",
" mat_data = X.iloc[digit_num].as_matrix().reshape(28,28) #reshape images\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7acd55ba20>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from sklearn.decomposition import PCA\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import confusion_matrix, accuracy_score\n",
"from helper_functions import show_images, do_pca, scree_plot, plot_component\n",
"import test_code as t\n",
"\n",
"import matplotlib.image as mpimg\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"%matplotlib inline\n",
"\n",
"#read in our dataset\n",
"train = pd.read_csv('./data/train.csv')\n",
"train.fillna(0, inplace=True)\n",
"\n",
"# save the labels to a Pandas series target\n",
"y = train['label']\n",
"# Drop the label feature\n",
"X = train.drop(\"label\",axis=1)\n",
"\n",
"show_images(30)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`1.` Perform PCA on the **X** matrix using on your own or using the **do_pca** function from the **helper_functions** module. Reduce the original more than 700 features to only 10 principal components."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# Make sure to keep track of the resulting components and the pca object\n",
"do_pca?\n",
"pca, X_pca = do_pca(10, X)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"`2.` Now use the **scree_plot** function from the **helper_functions** module to take a closer look at the results of your analysis."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnMAAAGDCAYAAABAypaKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xd8leX5x/HPlQAJEPaGgOwNCoRhVVwgVEHUOnHPal2to466qrauttqf4qxarYNVtYgDQVGxViHI3mElYYUwwwgZ5/r9cQ72SEM4gZycjO/79TqvnPOscz3Pyfjmfp77fszdEREREZGKKS7WBYiIiIjI4VOYExEREanAFOZEREREKjCFOREREZEKTGFOREREpAJTmBMRERGpwBTmRMoJM/u7mT0a4bKfmNnlUaihrZm5mVUr7W0f5P3amNkuM4svi/eraMzsYjP7rBS2s8jMTiqF7VxhZt8c6XZEpHQpzImUkJmtMbO9oRCy//FcWdbg7j939zfK8j3NbIqZPVzE9FFmtvFwAqC7p7t7krsXlk6VR+6Az3eTmb1uZkmltO2HzCw/tO3tZvatmR17sOXd/W13P+1I39fde7j7l0e6nUMxsxqhfVxhZrtDx/I1M2sb7fcuD8zsJDPLjHUdUvUozIkcnpGhELL/cVOsCyoDfwcuNTM7YPqlwNvuXlCSjZVV699hGunuSUBfoD9wX0k3UMz+jQttuwnwDfBeEce0vB+fg5kInAmMBuoBRwOzgVNjWZRIZacwJ1KKzOwFM5sY9voJM/vcgk4ys0wzu9fMskOtFhcfZDsNzGyymW02s22h58lh8780s2tCz68ws2/M7E+hZVeb2c/Dlq1nZq+a2QYzW2dmj+4/rWlm8aH1ss1sFXBGMbv3AdAQOCG8TmAE8Gbo9RlmNsfMdppZhpk9FLbs/lO4V5tZOvDFgad1zexKM1tiZjlmtsrMfhm2/v7jd7uZZYX258qw+TXN7M9mttbMdoSOSc3QvEGhVrDtZjYv0lOO7r4O+AToGcGxvMLM/m1mT5vZVuChg28Z3D0feANoDjQqan074LRm6FhdH2r52mZmY8KDoJldG3b8FptZ39D0NWY2JPT8ITObaGbjQsv9YGZHh23jbjNbGbaNsyM5VqHtDwVGufssdy9w9x3uPsbdXw0t09LMJpnZVjNLM7Nrw9Z/yMwmmNlbofdeYGadzeye0OedYWanhS3/pZk9ZmYzQ5/3v8ysYdj8My14enl7aNluYfPWmNkdZjY/tO44M0sMmz/CzObaf1tPex9qXTOrTfB7paX9t8W+ZSTHTuRIKcyJlK7bgd6hP8InAFcDl/t/75vXHGgMtAIuB142sy5FbCcOeB04CmgD7AWKO5U7EFgW2vaTwKthf+TfAAqAjkAf4DTgmtC8awmGsT5ACnDuwd7A3fcC44HLwiafDyx193mh17tD8+sTDIY3mNlZB2zqRKAbMKyIt8kK1VMXuBJ4en8gCWlOsMWnFcFjO8aCgRLgT0A/4GcEQ+dvgYCZtQI+Ah4NTb8D+KeZNTnYvu5nZq2B04E5oUnFHUsIfg6rgKbAHw6x7QTgCiDT3bNLsP4Igq2FRxM8/sNC2zuPYIC8jODxOxPYcpBtjAImEDwe7wAfmFn10LyVBAN7PeD3wFtm1qK4fQkZAsx094xilnkXyARaEvxe+6OZhbfajQT+ATQgeMynEPxZaAU8DLx0wPYuA64Kba8A+D8AM+sceq9fE2wB/Rj40MxqhK17PjAcaAf0JvhZEPp+ew34JdAo9J6TQp/XQdd1993Az4H1YS3264s5FiKlx9310EOPEjyANcAuYHvY49qw+QOArcBa4KKw6ScR/INTO2zaeOD+0PO/A48e5D2PAbaFvf4SuCb0/AogLWxeLcAJBp9mwD6gZtj8i4DpoedfANeHzTsttG61g9RxPLBj//aAfwO/KeZYPQM8HXreNrTt9mHz2x7i/T4Abg07fnvDlyUY/gYR/IO/Fzi6iG3cBfzjgGlTCIbsQ32+a4HngZoRHMsrgPRDfO88BOSFtp0VOv79DrZ+aNo3Ya8dOP6A75+7w/bp1mL2aUhYDd+FzYsDNgAnHGTduQRb2/6nngOWewUYW8y+twYKgTph0x4D/h5W19SweSNDn0N86HWd0P7XD/sZeDxs+e6hYxsP3A+MP2Af1wEnhR2PS8LmPwm8GHr+AvDIAbUvA06MYN2TCIbzmP+e0qNqPSriNRki5cFZ7j6tqBnuPtOCpyybEvxjG26bB/+D328twVaFnzCzWsDTBP/739/yVMfM4r3ozgIbw95/T6hRLolgy0t1YEPY2bg4YH/rScuw5/vrOSh3/8bMNgOjzGwmwRaic8LqHgg8TvC0ZA0ggWALULiDttxY8PTwg0DnUJ21gAVhi2zxn16btye0n42BRIKtSgc6CjjPzEaGTasOTD/4nv7v52tmvSj+WEIx+xZmvLtfcpB5kay/Mez5/v2HYFgqav+LfR93D1jwov2WAGZ2GXAbwaAN/z2+h7KF4Od2MC2Bre6eEzZtLcEW4f02hT3fC2SHfb/vDatn+4H7EdpW9VCtLQn7Xg7tYwbBFr79DjyO+38OjwIuN7Obw+bX4Kc/pwdbVyQmdJpVpJSZ2Y0EQ8x6gqf6wjUIXVuzX5vQcge6HegCDHT3usDg/ZsvYTkZBFuTGrt7/dCjrrv3CM3fQDAEhNdzKG8SPL11KfCZu4f/AX4HmAS0dvd6wItF1OwUIXQa658ET5c2c/f6BE+PRbLP2UAu0KGIeRkEW+bqhz1qu/vjEWz3wO0UdyzhIPtWAkeyfgZF739RfvzMzSwOSAbWm9lRBFvYbgIahT6DhUT2GUwDBljYtZ0HWA80NLM6YdPaEGwxO1wHfu/mE/xeWE8wlAEQuuSgdYTvlQH84YDvl1ru/m4E6x7p5y9yWBTmREpR6FqdR4FLCIad35rZMQcs9nsLDuFwAsHrnw5suYLgKaW9wPbQRd0PHk497r4B+Az4s5nVNbM4M+tgZieGFhkP3GJmyaFrz+6OYLNvErw+6lqC15AdWPdWd881swEEezVGan9L3magINRKF9GwHO4eIHid019CF9nHm9mxoYD4FjDSzIaFpidasDPFwULHwd7jUMcy1v4G3GFm/SyoYyicFaWfmZ1jwY4nvyYYUr8DahMMJJsh2CGFUOePQwm1ZE4F3g/VUM3M6liww8ZVHryW7lvgsdBn0JvgdY9vH8E+X2Jm3UMt2Q8DE0MteeOBM8zs1NC1gLeH9vHbCLb5CnC9mQ0MHcfaFuzYU+eQawZbFhuZWb3D3B+Rw6IwJ3J4PrSfjjP3fugP41vAE+4+z91XAPcC/wi7eHojsI1gy8HbBK9XW1rE9p8heJ1WNsE/sp8eQa2XEQxKi0PvPRHYf0H7KwSvtZoH/AC8d6iNufsagn8UaxNshQv3K+BhM8sBHuB/TzMXt90c4JbQOtsIBsEDt1+cOwiekp1F8JrFJ4C4UIgYRfCz2Eyw5eVODu/3X3HHMqbcfQLBThPvADn8t/dxUf4FXEBwHy4FznH3fHdfDPwZ+A/BYNKL4HWRkTqXYGvqOILXVi4keBp1/ynriwievl0PvA886O5TS7D9A/2D4LWmGwmeZr8FwN2XEfyH6lmCP0MjCQ43k3eoDbp7KsF/VJ4jeHzSCHWOiGDdpQQ7XqwK9YTV6VcpE+auVmGRsmDB4TDecvcStQiJlCYLDhfTsZjr9ioEM/uS4M/T32Jdi0isqWVOREREpAJTmBMRERGpwHSaVURERKQCU8uciIiISAWmMCciIiJSgVWpO0A0btzY27ZtG+syRERERA5p9uzZ2e5+yPtIV6kw17ZtW1JTU2NdhoiIiMghmVmxt1jcT6dZRURERCowhTkRERGRCkxhTkRERKQCU5gTERERqcAU5kREREQqMIU5ERERkQpMYU5ERESkAlOYExEREanAFOZEREREKjCFOREREZEKLKphzsyGm9kyM0szs7uLmH+9mS0ws7lm9o2ZdQ+bd09ovWVmNiyadYqIiIhUVFELc2YWD4wBfg50By4KD2sh77h7L3c/BngS+Eto3e7AhUAPYDjwfGh7IiIiIhImmi1zA4A0d1/l7nnAWGBU+ALuvjPsZW3AQ89HAWPdfZ+7rwbSQtsTEREROSR3Z+G6HTw9dTnvz8mMdTlRVS2K224FZIS9zgQGHriQmd0I3AbUAE4JW/e7A9ZtVcS6fuC04vTr168ki4uIiEgFsq+gkO9WbWXq4o18viSLDTtyiTO4ZNBRnN0nOdblRU00w5wVMe1/wpe7jwHGmNlo4D7g8kjXFRERkapt2+48pi/LYtqSTXy1bDO78wqpVSOewZ2acPtpzTi5SxMaJSXEusyoimaYywRah71OBtYXs/xY4IWSrOvuRYW+g0pJSVEgFBERqeBWZ+9m2uJNTF2yidQ1Wwk4NK2TwKg+rRjarRnHdmhEYvWqc6l9NMPcLKCTmbUD1hHs0DA6fAEz6+TuK0IvzwD2P58EvGNmfwFaAp2AmVGsVURERMqpwoAzN2MbUxcHW+DSsnYB0K1FXW46uSNDujejZ8t6xMWVqI2n0ohamHP3AjO7CZgCxAOvufsiM3sYSHX3ScBNZjYEyAe2ETzFSmi58cBioAC40d0Lo1WriIiIlC978gqYsSKbaYs38cXSLLbszqNanDGofSMuHXQUp3ZrSnKDWrEus1ww96pz5jElJcVTU1NjXYaIiIgUIWtnLp8vzWLq4k18k5ZNXkGAuonVOLlrU4Z0a8aJXZpQN7F6rMssM2Y2291TDrVcNE+zioiIiByUu7NsU07o+rcs5mVsB6B1w5pcPLANQ7s3o3/bhlSP1w2riqMwJyIiImUmvzDArNVb+WzxJqYt2UTmtr0AHNO6PncO68KQbs3o3CwJs6p5/dvhUJgTERGRqNqxN5+vlm9m2uJNTF+WRU5uAQnV4jihU2NuOrkjp3RtStO6ibEus8JSmBMREZFSl7F1D9OWBFvfvl+1lYKA06h2DX7eszlDujXjhE5NqFmj6gwfEk0KcyIiInLEAgFnwbodTFuyiamLN7F0Yw4AnZomce3g9gzp1oxjWtcnvooOHxJNCnMiIiJyWHLzC/l2ZTZTF2fx+ZJNZOXsIz7O6N+2Afed0Y0h3ZrRtnHtWJdZ6SnMiYiISMS27NrHF0uDg/d+vTybvfmFJCVU48TOTRjSvSkndW5Kg9o1Yl1mlaIwJyIiIgfl7qzcvDt4/dviTcxO34Y7tKyXyHkpyQzp1oyB7RuSUE3Xv8WKwpyIiIj8REFhgNlrt4U6MGSxOns3AD1b1eXWUzsxtHszureoq+FDygmFORERESG/MMC3K7cwed56pi3ZxLY9+dSIj+PYDo246vh2nNq1KS3r14x1mVIEhTkREZEqqqAwwPertzJ5/no+XbiRbXvyqZNQjSHdmzG0ezMGd25CUoKiQnmnT0hERKQKKQw4s9Zs5aP5G/hk4Qayd+VRu0Y8Q7o3Y0Tvlgzu3FjXv1UwCnMiIiKVXCDgzMnYxofzNvDxgg1k5ewjsXocp3ZrxoheLTi5a1MSqyvAVVQKcyIiIpWQuzM/cweT56/no/kbWL8jlxrV4ji5SxNG9G7Jqd2aUquGYkBloE9RRESkknB3Fq3fyeT5G/howXoytu6lerwxuFMT7hwevIl9ncTqsS5TSpnCnIiISAXm7izblMNH8zcwef4GVmfvplqccVzHxtxySidO69GcejUV4CozhTkREZEKKC1rF5Pnr2fy/A2kZe0izuDYDo24bnB7hvdorrswVCEKcyIiIhXEmuzdPwa4pRtzMIMBbRty+Vk9Gd6jOU3qJMS6RIkBhTkREZFyLGPrHj5asIHJ89ezcN1OAPod1YAHR3bn9F4taFY3McYVSqwpzImIiJQz67fv5eMFG/hw/gbmZWwH4OjW9bnvjG6c3quF7sQgP6EwJyIiUg5k7czl4wXBTgypa7cB0KNlXe4a3pURvVvQumGtGFco5ZXCnIiISIxk79rHJws3Mnneemau2Yo7dG1ehztO68wZvVvSrnHtWJcoFYDCnIiISBnatjuPKYs2Mnn+Br5dmU3AoUOT2txySidGHt2Cjk3rxLpEqWAU5kRERKJsx958PgsFuH+nZVMQcNo2qsWvTurIGb1b0LV5Hcws1mVKBaUwJyIiEgU5ufl8viSLyfPX8/XybPIKAyQ3qMnVJ7RjZO+W9GhZVwFOSoXCnIiISCnZk1fwY4CbvmwzeQUBmtdN5NJjj2JE7xYc07q+ApyUOoU5ERGRI5CbX8j0pVlMXrCBL5ZksTe/kCZ1Ehg9oA0jeregb5sGxMUpwEn0KMyJiIiUkLuzcN1OJszO4F9z17Njbz6NatfgF/1acUavlgxo15B4BTgpIwpzIiIiEdqyax8fzF3PhNQMlm7MoUa1OIb1aM65/ZI5rkMjqsXHxbpEqYIU5kRERIpRUBjgq+WbmZCayedLN5Ff6PROrscjZ/XkzN4tqVereqxLlCpOYU5ERKQIaVm7mDA7g/d+WMfmnH00ql2Dy49ty3kprenSXGPBSfmhMCciIhKSk5vP5PkbmJCawQ/p24mPM07u0pTzUpI5uUtTalTTaVQpfxTmRESkSgsEnO9Wb2FiaiYfL9xAbn6Ajk2TuPf0rpzVpxVN6yTGukSRYinMiYhIlZS5bQ//nL2OiT9kkLF1L3USqnFO32TO65es8eCkQlGYExGRKiM3v5ApizYyITWTf6/Mxh2O69iI24d2YViP5tSsER/rEkVKTGFOREQqNXdnXuYOJqRmMGneenJyC0huUJNbT+3EL/om07phrViXKHJEFOZERKRS2pyzjw/mrGN8agYrsnaRWD2On/dswXn9khnUvpHuyiCVhsKciIhUGvmFAaYvzWJ8aiZfLsuiIOD0aVOfP57dixFHt6BuosaEk8pHYU5ERCq85ZtymJCawftz1pG9K48mdRK4+vh2nJeSTMemGhNOKjeFORERqZB27M3nw3nBW2vNy9xBtTjj1G5NOT+lNSd2bqJba0mVoTAnIiIVRiDgfLtyC+NTM5iyaCP7CgJ0bV6H+0d056xjWtIoKSHWJYqUOYU5EREp9zK27mHC7Ez+OTuTddv3UjexGuentOb8lNb0bFVXY8JJlaYwJyIi5dLevEI+WbiB8akZfLdqK2ZwQqcm3P3zrgzt3ozE6hoTTgSiHObMbDjwVyAe+Ju7P37A/NuAa4ACYDNwlbuvDc0rBBaEFk139zOjWauIiMSeu/ND+nYmzs7gw3kb2LWvgKMa1eKO0zpzTt9kWtavGesSRcqdqIU5M4sHxgBDgUxglplNcvfFYYvNAVLcfY+Z3QA8CVwQmrfX3Y+JVn0iIlJ+ZO3M5b0565iQmsHKzbupWT2eM3oHx4Qb0K6hTqOKFCOaLXMDgDR3XwVgZmOBUcCPYc7dp4ct/x1wSRTrERGRciSvIMAXSzcxPjWTr5ZvpjDg9G/bgF8O7sDpvVuQlKArgUQiEc2flFZARtjrTGBgMctfDXwS9jrRzFIJnoJ93N0/OHAFM/OSFNSvX7+SLC4iIlGwYlMO787M4IO569i6O49mdRP45eD2nNsvmfZNkmJdnkiFE80wV1SbeJHhy8wuAVKAE8Mmt3H39WbWHvjCzBa4+8oo1CkiIlGWm1/Ipws38s736cxcs5Xq8cZp3Ztzbkoygzs1IV631hI5bNEMc5lA67DXycD6AxcysyHA74AT3X3f/unuvj70dZWZfQn0AX4S5ty9RD/9KSkpJWrJExGRI7Ny8y7e/T6df/6QybY9+bRtVIt7ft6Vc/sla0w4kVISzTA3C+hkZu2AdcCFwOjwBcysD/ASMNzds8KmNwD2uPs+M2sMHEewc4SIiJRzeQUBpiwKtsL9Z9UWqsUZw3o0Z/TANhyrG9yLlLqohTl3LzCzm4ApBIcmec3dF5nZw0Cqu08CngKSgAmhnkr7hyDpBrxkZgEgjuA1c4uLfCMRESkX1m7ZzTsz05mYmsmW3XkkN6jJncO6cF5KMk3rJMa6PJFKy9yrzpnHlJQUT01NjXUZIiKVRn5hgGmLN/HOzHRmrMgmPs4Y0q0powcexQkdG6sVTuQImNlsd0851HLq9y0iIiWWsXUPY2elMz41k805+2hZL5Hbhnbmgv6taVZXrXAiZUlhTkREIlJQGODzpVm88306X6/YjAGndG3K6IFtOLFzU/VIFYkRhTkRESnW+u17GTsrg/GzMti4M5dmdRO4+ZROXNi/tW6vJVIOKMyJiMj/KAw4Xy3P4u3v0pm+LAsHTuzchIdH9eCUrk2pFh8X6xJFJERhTkREfrRpZy7jZmUwblYG67bvpUmdBG44qQMX9m9D64a1Yl2eiBRBYU5EpIoLBJwZadm8/d1aPl+aRWHAOaFTY+47oxtDujejulrhRMo1hTkRkSoqKyeXCamZjJ2VTsbWvTSqXYNrTmjHRf3b0LZx7ViXJyIRUpgTEalCAgHn25VbeGfmWj5btImCgHNs+0b8dlhXTuvRjIRq8bEuUURKSGFORKQK2LJrHxNnZ/LuzHTWbNlD/VrVueJnbbloYBs6NEmKdXkicgQU5kREKil357tVW3lnZjpTFm4krzDAgLYN+fWQzgzv2ZzE6mqFE6kMFOZERCqZ7XvymDg7k3dmprNq827qJlbj4kFtGD2gDZ2a1Yl1eSJSyhTmREQqAXcnde023vk+nY8WbCCvIEDfNvX503lHM6J3C7XCiVRiCnMiIhXYjj35vDcneC3c8k27qJNQjQv7t2b0wDZ0bV431uWJSBlQmBMRqWDcnTkZ23nn+3Qmz19Pbn6Ao5Pr8cQvejHy6JbUqqFf7SJViX7iRUQqiJzcfD6Ys463v09n6cYcateI55y+yYwe0IaererFujwRiRGFORGRcm7tlt289PUqPpizjj15hfRoWZc/nN2TUce0IilBv8ZFqjr9FhARKafSsnIYM30l/5q7jmrxcZx1TEsuHngUvZPrYWaxLk9EygmFORGRcmbR+h2MmZ7GJws3klgtnquPb8e1J7Snad3EWJcmIuWQwpyISDkxJ30bz32RxudLs6iTUI0bT+rIVce3o2HtGrEuTUTKMYU5EZEYcne+X72V575I45u0bOrXqs7tQztz2c/aUq9m9ViXJyIVgMKciEgMuDtfr8jmuS9WMGvNNhonJXDv6V25eOBR1FanBhEpAf3GEBEpQ4GAM23JJp6bnsb8zB20rJfIw6N6cH5Ka92lQUQOi8KciEgZKAw4Hy3YwJgv0li2KYejGtXiiV/04uw+ydSoFhfr8kSkAlOYExGJovzCAB/MWccLX65kVfZuOjZN4pkLjmFE7xZUi1eIE5EjpzAnIhIFufmFTJydyQtfrmTd9r10b1GXFy7uy7AezYmL0xhxIlJ6FOZERErRnrwC3p2Zwctfr2TTzn0c07o+j5zVg5O7NNVAvyISFQpzIiKlICc3n398t5ZXZ6xmy+48BrVvyF/OP4afdWikECciUaUwJyJyBLbvyeP1f6/h9X+vZmduASd1acJNJ3ckpW3DWJcmIlWEwpyIyGHYnLOPv32zirf+s5bdeYUM69GMm07uRK/kerEuTUSqGIU5EZES2LBjLy99tYp3Z6aTXxhgRO+W3HhyR7o0rxPr0kSkilKYExGJQPqWPbzw1Uomzs7AHc7u04obTupA+yZJsS5NRKo4hTkRkWKkZe3i+S/T+Nfc9cSbcUH/1vxycAdaN6wV69JERACFORGRIi1ev5MxX6bx8YINJFSL44qfteW6we1pVjcx1qWJiPyEwpyISJi5Gdt57osVTFuSRVJCNW44sQNXH9+ORkkJsS5NRKRIxYY5M0sGLgROAFoCe4GFwEfAJ+4eiHqFIiJl4PtVW3huehozVmRTv1Z1bhvamcuPbUu9WtVjXZqISLEOGubM7HWgFTAZeALIAhKBzsBw4Hdmdre7f10WhYqIlDZ3Z8aKbJ77Io2Za7bSOKkG9/y8KxcPOoqkBJ24EJGKobjfVn9294VFTF8IvGdmNYA20SlLRCR63J1pS7J47osVzMvcQYt6iTw0sjsXDmhDYvX4WJcnIlIiBw1zRQU5M+sA1HL3Be6eB6RFszgRkdJUGHA+WbiB575IY+nGHFo3rMlj5/TinL6tSKimECciFVPE5xHM7F6gFxAws4C7Xxq9skRESk9+YYBJc9cz5ss0Vm3eTYcmtfnL+Udz5tEtqRYfF+vyRESOSHHXzN0MPO/uhaFJR7v7BaF588uiOBGRI7GvoJCJszN54cuVZG7bS9fmdRgzui/DezYnPs5iXZ6ISKkormVuG/Cpmf2fu38IfGZmXwFxwJQyqU5E5DDkFwYYOzOdMdNXsnFnLke3rs9DI3twaremmCnEiUjlUtw1c2+Z2UTgTjO7BngAeBeo7u47yqpAEZFIuTufLNzIU1OWsTp7NwPaNuRP5x3NcR0bKcSJSKV1qGvmOgDjgFeARwAnGOoU5kSkXJm5eiuPfbKEOenb6dwsidev6M9JXZooxIlIpVfcNXN/D82vCax092vNrA/wipnNdPdHDrVxMxsO/BWIB/7m7o8fMP824BqgANgMXOXua0PzLgfuCy36qLu/UdKdE5HKLy1rF098upSpizfRrG4CT/6iN7/ol6xr4kSkyiiuZa6Pux8NYGZzANx9DjDSzEYdasNmFg+MAYYCmcAsM5vk7ovDFpsDpLj7HjO7AXgSuMDMGgIPAikEWwNnh9bdVvJdFJHKKGtnLs98voJxszKoWT2eO4d14arj2lGzhoYYEZGqpbgw92mow0MN4J3wGe7+rwi2PQBIc/dVAGY2FhgF/Bjm3H162PLfAZeEng8Dprr71tC6UwnedeLd8DcwM4+gjh/169evJIuLSDm0a18BL3+9ile+XkV+YYBLBx3Fzad01L1TRaTKKq4DxF1mVhcIuPuuw9h2KyAj7HUmMLCY5a8GPilm3VaHUYOIVBL5hQHGzsrgr9OWk70rjzN6t+DO07rQtnHtWJcmIhJTxV0zdwnwjrsHDjK/A9DC3b852CaKmFZkS1rovVKAE0uyrruX6KKYlJSUErXkiUjsuTtTFm3kyU99/UrRAAAgAElEQVSXsSp7NwPaNeSVy7rSp02DWJcmIlIuFHeatREwx8xmA7MJdlBIBDoSDF3ZwN3FrJ8JtA57nQysP3AhMxsC/A440d33ha170gHrflnMe4lIJZS6Zit//HgJP6Rvp2PTJP52WYrGihMROYC5H7yxKtSJ4RTgOKAFsBdYAnzi7unFbtisGrAcOBVYB8wCRrv7orBl+gATgeHuviJsekOCAbJvaNIPQL/919AdrpSUFE9NTT2STYhIGVi5eRdPfrqUKYs20bROArcN7cy5/ZJ16y0RqVLMbLa7pxxquWLHmQvdymtq6FEi7l5gZjcRvFtEPPCauy8ys4eBVHefBDwFJAETQv9pp7v7me6+1cweIRgAAR4+0iAnIuVfVk4uf522grGhHqq3D+3M1Se0o1aNiG8jLSJS5RTbMlfZqGVOpHzava+AV2as4uWvV5FXEODigW24+dRONFYPVRGpwkqlZU5EJJoKCgOMS83g6akryN61j9N7NefOYV1ppx6qIiIRU5gTkTLn7ny2eBNPfLqUVZt3079tA16+rB991UNVRKTEihua5LbiVnT3v5R+OSJS2c1eu43HPl5C6tptdGhSm1cuS2GIeqiKiBy24lrm6oS+dgH6A5NCr0cCX0ezKBGpfFZt3sWTny7j00UbaVIngT+e3YvzU9RDVUTkSBV3B4jfA5jZZ0Bfd88JvX4ImFAm1YlIhbc5Zx//9/kK3pmZTmK1OG4b2plr1ENVRKTURPLbtA2QF/Y6D2gblWpEpNLYk1fA32as5qWvVpJbEGD0gDbccmonmtRRD1URkdIUSZj7BzDTzN4neEuts4E3o1qViFRYBYUBxqdm8vS05WzO2cfwHs25c3gXOjRJinVpIiKV0iHDnLv/wcw+AU4ITbrS3edEtywRqWjcnWlLsnj8kyWs3LyblKMa8OIlfel3VMNYlyYiUqlFetFKLWCnu79uZk3MrJ27r45mYSJSccxJ38ZjHy9l5pqttG9cm5cu7cdp3Zuph6qISBk4ZJgzsweBFIK9Wl8HqgNvEbxfq4hUYauzd/PUlKV8vGAjjZMSePSsnlzQvzXV1UNVRKTMRNIydzbQh+DN7nH39WZWp/hVRKQyy961j2c/X8Hb36dTo1ocvx7SiWtPaE/tBPVQFREpa5H85s1zdzczBzAz3WdHpIrak1fAa9+s5sWvVrE3v5AL+7fm1iGdaFonMdaliYhUWZGEufFm9hJQ38yuBa4CXoluWSJSnhQUBpg4O5O/TF1OVs4+TuvejN8O70rHpuqhKiISa5H0Zv2TmQ0FdhK8bu4Bd58a9cpEJObcnS+WZvH4J0tZkbWLvm3q8/zFfUlpqx6qIiLlRUQXuITCmwKcSBUyN2M7j328hO9Xb6Vd49q8eElfhvVorh6qIiLlTCS9Wc8BngCaAhZ6uLvXjXJtIhIDa7fs5skpy/ho/gYaJ9XgkVE9uHBAG/VQFREppyJpmXsSGOnuS6JdjIjEzvY9eTwzbQVvf7+WanFx3HJqJ64b3J4k9VAVESnXIvktvUlBTqTycnc+nL+Bhz9cxNbdeVzQvw2/GdKJpnXVQ1VEpCKIJMylmtk44ANg3/6J7v5e1KoSkTKxbvte7v9gIV8szaJ3cj3evGog3VvqCgoRkYokkjBXF9gDnBY2zQGFOZEKqjDgvPXdWp78dCkBh/vO6MaVx7UjPk6dG0REKppIhia5siwKEZGysXxTDnf/cz4/pG9ncOcm/OGsnrRuWCvWZYmIyGE6aJgzs9+6+5Nm9izBlrifcPdbolqZiJSqfQWFjJm+khe+TCMpoRpPX3A0Zx3TSkONiIhUcMW1zO3v9JBaFoWISPSkrtnK3e8tIC1rF2f3acV9Z3SjUVJCrMsSEZFScNAw5+4fhr6+UXbliEhpysnN54lPl/LWd+m0ql+Tv1/Zn5O6NI11WSIiUooiGTS4CXAX0B34cawCdz8linWJyBGaungT93+wkKycXK46rh23n9aZ2hozTkSk0onkN/vbwDjgDOB64HJgczSLEpHDl5WTy+8nLeajBRvo2rwOL17aj2Na1491WSIiEiWRhLlG7v6qmd3q7l8BX5nZV9EuTERKxt2ZkJrJox8tJrcgwJ3DunDd4Pa6DZeISCUXSZjLD33dYGZnAOuB5OiVJCIltSZ7N/e8t4D/rNrCgHYNeeycXnRokhTrskREpAxEEuYeNbN6wO3AswQHEf5NVKsSkYjkFwZ4ZcYq/jptBTWqxfHYOb24IKU1cRr8V0Skyohk0ODJoac7gJOjW46IRGp+5nbu+ucClmzYyfAezfn9qB400/1URUSqnOIGDS5ysOD9NGiwSGzsySvg6anLefWb1TROSuDFS/oxvGfzWJclIiIxUlzLnAYLFilnZqzYzL3vLyBj615GD2zDXcO7Uq9m9ViXJSIiMVTcoME/GSzYzOoGJ3tO1KsSkZ/YtjuPRz5azHs/rKN949qMu24QA9s3inVZIiJSDkQyaHAK8DpQJ/jStgNXufvsaBcnUtW5O5PmrefhDxezY28+N5/SkRtP7khi9fhYlyYiIuVEJL1ZXwN+5e4zAMzseILhrnc0CxOp6tZt38t97y9g+rLNHN26Pm//ohddm9eNdVkiIlLORBLmcvYHOQB3/8bMdKpVJEoKA86b/1nDU1OWAfDgyO5cdmxb4jXciIiIFCGSMDfTzF4C3iXYu/UC4Esz6wvg7j9EsT6RKmXZxhzu+ud85mZs56QuTXj0rJ4kN6gV67JERKQciyTMHRP6+uAB039GMNydUqoViVRBufmFPD89jee/XEndmtX564XHcObRLTFTa5yIiBQvkkGDNVCwSBTNXL2Vu9+bz6rNuzmnTyvuG9GdhrVrxLosERGpICLpzfoP4CZ33xF6fRTwmrufGu3iRCqznbn5PPHJUt7+Pp3kBjV586oBDO7cJNZliYhIBRPJadZvgO/N7DagFXAnwfu0ishh+mzRRu7/10I25+zj2hPa8ZuhnalVI5IfRxERkZ+K5DTrS2a2CJgOZAN93H1j1CsTqYSyduby4KRFfLJwI91a1OWVy1LonVw/1mWJiEgFFneoBczsUoJjzV0G/B342MyOjmTjZjbczJaZWZqZ3V3E/MFm9oOZFZjZuQfMKzSzuaHHpIj2RqSccnfGzkzn1L98xedLs/jt8C5Muuk4BTkRETlikZzX+QVwvLtnAe+a2fvAG/y3l2uRzCweGAMMBTKBWWY2yd0Xhy2WDlwB3FHEJva6e7HvIVIRrNq8i3veW8D3q7cyqH1DHjunN+0a1451WSIiUklEcpr1rANezzSzARFsewCQ5u6rAMxsLDAK+DHMufua0LxACWoWqRDyCwO8/PUq/vr5ChKqxfHEL3pxfkprDTciIiKl6qCnWc1sfNjzJw6YPTmCbbcCMsJeZ4amRSrRzFLN7DszO6uoBczMS/IowXuLHJF5GdsZ+ew3PDVlGUO6NeXz207kgv5tFORERKTUFdcy1yns+VDgrrDXkYyfUNRfrZIEqjbuvt7M2gNfmNkCd19ZgvVFytyevAL+8tlyXvv3aprUSeDlS/txWo/msS5LREQqseLCXHHBK5JQlgm0DnudDKyPpCgAd18f+rrKzL4E+gArD1imRM0cKSkpap2TqPlq+WZ+9/4CMrft5ZJBbfjt8K7UTawe67JERKSSKy7M1TKzPgRPxdYMPbfQo2YE254FdDKzdsA64EJgdCRFmVkDYI+77zOzxsBxwJORrCtS1rbuzuPRyYt5b846OjSpzYTrj6V/24axLktERKqI4sLcBuAvoecbw57vf10sdy8ws5uAKUA8wbtGLDKzh4FUd59kZv2B94EGwEgz+7279wC6AS+FOkbEAY8f0AtWJObcnX/NXc/DkxeTk5vPLad05FcndySxenysSxMRkSrE3KvOmceUlBRPTU2NdRlSCeQVBHjgXwsZOyuDPm3q8/g5venSvE6syxIRkUrEzGa7e8qhltP9g0RKKHvXPm54azaz1mzjppM78puhnYmPUy9VERGJDYU5kRJYvH4n176ZSvaufTx7UR9GHt0y1iWJiEgVpzAnEqFPF27gN+PmUa9mdSZe/zN6JdeLdUkiIiKHDnMWHOX0YqC9uz9sZm2A5u4+M+rViZQD7s7/fZ7G09OW06dNfV66tB9N6yTGuiwREREgspa554EAcArwMJAD/BPoH8W6RMqFPXkF3DlhPh8t2MA5fVvxx7N7qbeqiIiUK5GEuYHu3tfM5gC4+zYzqxHlukRibt32vVz3ZipLNuzkd6d345oT2ul2XCIiUu5EEubyzSye0F0fzKwJwZY6kUordc1Wrn9rNvvyA7x6RX9O7tI01iWJiIgUKZIw938EB/ZtamZ/AM4F7otqVSIxND41g9+9v4DkBrUYe10KHZsmxbokERGRgzpkmHP3t81sNnAqwVt5neXuS6JemUgZKygM8NgnS3n1m9Wc0Kkxz13Ul3q1dG9VEREp3yLpzToIWOTuY0Kv65jZQHf/PurViZSRHXvzufndOXy9fDNXHteW353ejWrxcbEuS0RE5JAiOc36AtA37PXuIqaJVFgrN+/i2jdSydi2hyd+0YsL+reJdUkiIiIRiyTMmYfdwNXdA2amwYalUvhq+WZueucHasTH8c61g+jftmGsSxIRESmRSM4jrTKzW8yseuhxK7Aq2oWJRJO787cZq7jy9ZkkN6jFpJuPV5ATEZEKKZIwdz3wM2AdkAkMBK6LZlEi0bSvoJA7J87n0Y+WMKxHc/55w7G0ql8z1mWJiIgclkh6s2YBF5ZBLSJRl5WTy/X/mM0P6dv59ZBO3HJKJ+LiNBCwiIhUXJH0Zm0CXAu0DV/e3a+KXlkipW/huh1c+2Yq2/fk8/zFfTm9V4tYlyQiInLEIunI8C9gBjANKIxuOSLRMXn+eu6YMI9GtROYeMOx9GhZL9YliYiIlIpIwlwtd78r6pWIREEg4DwzbTn/90UaKUc14MVL+9E4KSHWZYmIiJSaSMLcZDM73d0/jno1IqVo974Cbhs/lymLNnF+SjKPnNWThGrxsS5LRESkVEUS5m4F7jWzfUA+wVt6ubvXjWplIkcgY+sern0zleWbcnhgRHeuPK4tZuroICIilU8kvVnrlEUhIqXl+1VbuOHtHygoDPD3KwcwuHOTWJckIiISNRHdycHMGgCdgMT909z962gVJXK43p2Zzv0fLKRNo1r87bIU2jdJinVJIiIiURXJ0CTXEDzVmgzMBQYB/wFOiW5pIpErKAzwyOTFvPGftZzYuQnPju5D3cTqsS5LREQk6iK5A8StQH9grbufDPQBNke1KpES2L4nj8tfn8kb/1nLtSe047Ur+ivIiYhIlRHJadZcd881M8wswd2XmlmXqFcmEoEVm3K45s1UNmzP5U/nHc25/ZJjXZKIiEiZiiTMZZpZfeADYKqZbQPWR7cskUP7Yukmbnl3LonV43n3ukH0O6pBrEsSEREpc5H0Zj079PQhM5sO1AM+jWpVIsVwd176ehVPfLqUHi3r8vKlKbSsXzPWZYmIiMTEQcOcmdV1951m1jBs8oLQ1yRga1QrEylCbn4h9763gPfmrGNE7xY8de7R1KyhgYBFRKTqKq5l7h1gBDAbcEKDBYd9bR/16kTCZO3M5dp/zGZexnbuOK0zN57cUQMBi4hIlXfQMOfuIyz4l/JEd08vw5pE/se8jO1c949UcnILeOnSfgzr0TzWJYmIiJQLxQ5N4u4OvF9GtYgU6V9z13H+S/+henwc7/3qZwpyIiIiYSLpzfqdmfV391lRr0YkTCDg/OmzZTz/5UoGtGvICxf3pVFSQqzLEhERKVciCXMnA780s7XAbkLXzLl776hWJlXarn0F/HrsHKYtyWL0wDY8NLIHNapFMsa1iIhI1RJJmPt51KsQCZO+ZQ/XvDmLlZt38/CoHlw66Ch1dBARETmISMaZWwtgZk2BxKhXJFXatyuz+dXbP+AOb141gOM6No51SSIiIuXaIc9bmdmZZrYCWA18BawBPolyXVIF/eO7tVz26kyaJCUw6abjFOREREQiEMlp1keAQcA0d+9jZicDF0W3LKlK8gsDPDRpEW9/n86pXZvyzIXHUCexeqzLEhERqRAiCXP57r7FzOLMLM7dp5vZE1GvTKqErbvz+NXbs/lu1VauP7EDdw7rQnycro8TERGJVCRhbruZJQFfA2+bWRZQEN2ypCpYtjGHa96cxaad+3jmgmM4q0+rWJckIiJS4UQS5kYBucBvgIuBesDD0SxKKr/PFm3kN+PmUjuhGuN/eSzHtK4f65JEREQqpIOGOTN7DnjH3b8Nm/xG9EuSyszdef7Llfzps2X0blWPly5NoXk9dZIWERE5XMW1zK0A/mxmLYBxwLvuPrdsypLKKDe/kN9OnM+keesZdUxLnvhFbxKrx8e6LBERkQrtoGHO3f8K/NXMjgIuBF43s0TgXWCsuy8voxqlEtiyax/XvpnKD+nb+e3wLtxwYgcNBCwiIlIKDjnOnLuvdfcn3L0PMBo4G1gSycbNbLiZLTOzNDO7u4j5g83sBzMrMLNzD5h3uZmtCD0uj3B/pBxKy9rF2c9/y6L1O3nh4r786qSOCnIiIiKl5JAdIMysOjCcYOvcqQQHDv59BOvFA2OAoUAmMMvMJrn74rDF0oErgDsOWLch8CCQAjgwO7Tutgj2ScqRb9Oyuf6t2dSoFs84dXQQEREpdcV1gBhKcHDgM4CZwFjgOnffHeG2BwBp7r4qtL2xBHvG/hjm3H1NaF7ggHWHAVPdfWto/lSCgfLdCN9byoHxqRnc+94C2jepzWtX9Ce5Qa1YlyQiIlLpFHea9V7gP0A3dx/p7m+XIMgBtAIywl5nhqaV2rpm5iV5lKB2OQKBgPPkp0v57cT5HNuhERNv+JmCnIiISJQU1wHi5CPcdlEXRUUaqI5kXYmh3PxCbp8wj4/mb+CiAW14eFQPqscf8tJMEREROUzR/CubCbQOe50MrC/Ndd3dSvI47D2RiGTv2sdFr3zHxws2cO/pXfnj2T0V5ERERKIsmn9pZwGdzKydmdUg2IFiUoTrTgFOM7MGZtYAOC00TcqptKwczn7+3yzZEOyxet1gDT0iIiJSFqIW5ty9ALiJYAhbAox390Vm9rCZnQlgZv3NLBM4D3jJzBaF1t0KPEIwEM4CHt7fGULKn2/Tsjn7+W/Zmxdg3HXHMrxni1iXJCIiUmWYe9W5FC0lJcVTU1NjXUalMn5WBve+v4AOTZJ49YoUdXQQEREpJWY2291TDrXcIceZEylKIOD86bNlPP/lSk7o1JgxF/elbmL1WJclIiJS5SjMSYnl5hdy+/h5fLRgA6MHtuH3Z6rHqoiISKwozEmJZIfusTo3Yzu/O70b15zQTh0dREREYkhhTiK2YlMOV/59Ftm79vHCxf0Y3rN5rEsSERGp8hTmJCLfrMjmhrdnk1g9nnHXHcvRuseqiIhIuaAwJ4c0dmY6932wkA5Nknjtyv60ql8z1iWJiIhIiMKcHFQg4Dw5ZRkvfrWSwZ2bMGZ0H+qox6qIiEi5ojAnRcrNL+S28XP5eMFGLg71WK2mHqsiIiLljsKc/I/NOcEeq/Myt3PfGd24+nj1WBURESmvFObkJ8J7rL54ST+G9VCPVRERkfJMYU5+9M2KbG54azaJNeIZ/8tj6Z2sHqsiIiLlncKcAP/tsdqxaRKvXqEeqyIiIhWFwlwVFwg4T0xZyktfreLEzk14Tj1WRUREKhSFuSpsb16wx+onCzdyyaA2PDRSPVZFREQqGoW5KiorJ5dr35zNfPVYFRERqdAU5qqg5ZtyuPL1WWzdncdLl/TjNPVYFRERqbAU5qqYGSs286u3fvixx2qv5HqxLklERESOgMJcFfJuqMdqJ/VYFRERqTQU5qqAQMB54tOlvPS1eqyKiIhUNgpzldzevEJ+M24uny7ayKWDjuLBkd3VY1VERKQSUZirxLJycrn2jVTmr9vB/SO6c9VxbdVjVUREpJJRmKuklm3M4aq/B3usvnxpCkO7N4t1SSIiIhIFCnOV0NfLN3Pj2z9QUz1WRUREKj1dPFWOjB07lm7dulG7dm06dOjAjBkz/meZhQsXMmzYMBo3blzkKdPjhp/NKX27sOSJc8h+/Qa+/3TCj/MyMjIYNGgQDRs25Pbbb//JesOHDyc1NbX0d0pERESiSmGunJg6dSp33XUXr7/+Ojk5OXz99de0b9/+f5arXr06559/Pq+++upPpgcCzh8+WszqVkO56C+T2L5jBx9P/pD77ruP2bNnA/DYY49x+eWXs3r1aj744IMfw9u4ceNo3749KSkp0d9RERERKVU6zVpOPPjggzzwwAMMGjQIgFatWhW5XJcuXejSpQtpaWk/TtubV8ivx81hyqJNXHPmYB4YEeyxamaYGStXrqRfv36sXr2aW2+9lXr16tG/f39WrVpF586defzxx5k+fXqZ7KeIiIiULrXMlQOFhYWkpqayefNmOnbsSHJyMjfddBN79+495LpZOblc8PJ/+GzxJh4Y0Z3fn9mDW26+iVq1atG1a1datGjB6aefDkDPnj2ZOnUq27dvJzU1le7du3P//ffz61//mvr160d7N0VERCQKFObKgU2bNpGfn8/EiROZMWMGc+fOZc6cOTz66KOHXPfsMd+yYtMuXr40hauOb4eZ8fzzz5OTk8OMGTM455xzSEhIAOCee+5hxowZnHjiidx4443k5+czf/58Ro4cyejRoxk8eDDPPfdctHdXRERESpHCXDlQs2bwtlo333wzLVq0oHHjxtx22218/PHHB13n+9VbACgIBJhw/bH/M/RIfHw8xx9/PJmZmbzwwgsANGzYkHHjxjFv3jxuvfVWbr75Zp599lkef/xxevbsybRp03jxxRdZvHhxlPZURERESpvCXDnQoEEDkpOTIx7Q963v1nLPPxcA8MGNx9Gz1cGHHikoKGDlypX/M/3ll19m0KBB9OzZkwULFpCSkkKNGjXo1asXCxcuPLwdERERkTKnMFdOXHnllTz77LNkZWWxbds2nnnmGUaMGPGTZQoDzqOTF/G7iT/QLzkJgAYJxr59+wDIyspi7Nix7Nq1i8LCQqZMmcK7777LKaec8pPtZGVlMWbMGB566CEA2rVrx/Tp09m1axepqalF9qIVERGR8klhrpy4//776d+/P507d6Zbt2706dOH3/3ud6Snp5OUlMSytFXc8NZsXvzoe9L/fA4f3H8REDxF26VLFwDMjBdeeIHk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MSQkJFemUSmllLKRvKsFf8tCQkJMYqJzR2oDX/+nU+9fWlJiw1zdBbdx5coV0tNvTNd0zDT6+/vnapuTk0NmZiYJCQkMHjyYw4cPc9ddd1GxYkWysrLo2bMnHh4erFq1igoVCk6MHzhwgAEDBrBjxw48PDzo2rUr3bt357nnniMoKIjk5OTbDlCVUkqVfyKy2xgTUlw7rQChVDFuJtO4bds2PD096dq1KydOnMDT05OnnnoKsOyb9+WXX7J+/XqqVKliz0Ru37491/OcnWlUSin126KZuVL2W8vMucP7aJbx5r300kts2rSJy5cvExAQwNixY3n11VfztVu0aBEzZ87kyJEj3HffffTt25e3337bnlVMS0sjKiqK9evX4+fnxzvvvEPfvpapsXv37qVv376cOXOGN954w769SlZWFu3bt2fVqlW6d55SShVBM3NKqUKNGzeOlJQU0tPTWbt2LRMmTGD37t352l25coUPPviA//3vf+zatYtNmzYRFxdnPz9s2DAqVqzImTNnWLZsGUOGDGH//v32Z+gmyEop5XzOXM2qVLmjmUYLW5UNABFBRDh27BgtW7bM1W7IkCH272vWrEm/fv1ISEgA4PLly8THx5OcnIy3tzft27ene/fuLFmyhNjYWPsmyJUqVbJvgpyZmUl8fLx95bFSSqnbp5k5pe5QQ4cO5d5776Vx48ZUr16drl27FnvNtm3b7IHgjz/+iIeHB40aNbKfb9asmT0z54pya0opdSfSYE6pO9Ts2bP59ddf2b59Oz179rRX3ijMp59+SmJiImPGjAEsm0HbNjy28fHx4ddffwXKvtyaUkrdqTSYU+oO5uHhQfv27UlNTS1wU2eb1atX8/rrr/P111/j5+cHgLe3d64tW8BS2aJy5crAjU2Qv//+e8LDw4mOjiYuLo4xY8bQp08f1q5dy+jRo0lLu/UtJK9du0ZUVBR169alcuXKNG/enK+//rrAtoMHD7avIPb29qZSpUr2voJlUUj16tW57777aNSoEfPnz7efO3nyJG3atMHX1zdfBZJnnnkGZy+sUkqpomgwp5QiOzubY8eOFXjum2++YeDAgXzxxRc8/PDD9uONGjUiOzubI0eO2I/t3bs313w8G2dtgpydnU3t2rXZunUrFy9eZMqUKfTu3ZuUlJR8befOnculS5fsXxEREblKoxW1KOSd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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7a94dc1198>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"scree_plot?\n",
"scree_plot(pca)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`3.` Using the results of your scree plot, match each letter as the value to the correct key in the **solution_three** dictionary. Once you are confident in your solution run the next cell to see if your solution matches ours."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"a = True\n",
"b = False\n",
"c = 6.13\n",
"d = 'The total amount of variability in the data explained by the first two principal components'\n",
"e = None\n",
"\n",
"solution_three = {\n",
" '10.42' : d,\n",
" 'The first component will ALWAYS have the most amount of variability explained.': a,\n",
" 'The total amount of variability in the data explained by the first component': c,\n",
" 'The sum of the variability explained by all the components can be greater than 100%': b\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Looks good! The amount of variability explained by each principal component gives us an idea of how much of the original variability in the original data is retained by each component. Nice job matching these up!\n"
]
}
],
"source": [
"#Run this cell to see if your solution matches ours\n",
"t.question_3_check(solution_three)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`4.` Use the **plot_component** function from the **helper_functions** module to look at each of the components (remember they are 0 indexed). Use the results to assist with question 5."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f7a99d90dd8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Use the images of the component weights to answer the next question\n",
"plot_component?\n",
"plot_component(pca, 3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`5.` Using the results from viewing each of your principal component weights in question 4, change the following values of the **solution_five** dictionary to the **number of the index** for the principal component that best matches the description. Once you are confident in your solution run the next cell to see if your solution matches ours."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"solution_five = {\n",
" 'This component looks like it will assist in identifying zero': 0,\n",
" 'This component looks like it will assist in identifying three': 3\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Nice job! That matches our solution as well! The index of the first principal component appears to have really high weights where a zero would appear. Alternatively, the fourth (third indexed component) appears to downweight where a three would appear to make it stand out.\n"
]
}
],
"source": [
"#Run this cell to see if your solution matches ours\n",
"t.question_5_check(solution_five)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From this notebook, you have had an opportunity to look at the two major parts of PCA:\n",
"\n",
"`I.` The amount of **variance explained by each component**. This is called an **eigenvalue**.\n",
"\n",
"`II.` The principal components themselves, each component is a vector of weights. In this case, the principal components help us understand which pixels of the image are most helpful in identifying the difference between between digits. **Principal components** are also known as **eigenvectors**."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}