tahamajs's picture
download
raw
124 kB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A. Read Dataset"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.preprocessing import StandardScaler"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [],
"source": [
"data_train = pd.read_csv('fashion_mnist/fashion-mnist_train.csv')\n",
"\n",
"X = np.array(data_train.iloc[:, 1:])\n",
"y = np.array(data_train.iloc[:, 0])"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"def plot_image(img, img_rows=28, img_cols=28):\n",
" img = img.reshape(img_rows, img_cols)\n",
" plt.imshow(img,cmap='gray')\n",
" plt.colorbar()\n",
" plt.grid(False)"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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rFP8pk2blJCQEAWAAkBp1aqV8sQTTygbN26sMa68vFwpKytTxo8fr/zxj390ewyAYjKZlKKiIte69evXKwCUe++9V7l27Zpr/YIFCxQAyqFDh1zr+vbtqwBQNmzY4Pa8EyZMUJo1a6acOnXKbV+zZ892/fz8888rgYGBbtsoiqL87W9/UwAoR48erfY1HTt2TAGgTJw40W39d999pwBQZs6c6Vo3e/ZsBYBy7ty5ap/v5m1vXtq0aVPl9uXl5UpRUZESEBCg/P3vf3etj4qKUkaMGFHjvsaNG6cAUP7xj3+4rX/ooYeUjh07uq27+diNHj1a0ev1yunTp922i4uLU/z9/ZVLly4piqIoO3fuVAAoDz30kNt2//jHPxQAyt69e2sc4+LFixUASlZWluu5jhw5oiiKovTo0UNJSEhQFEVROnfurPTt27fSmBMTExVFUZRZs2YpzZo1U3788cdKz1uhqvfp+++/V9q1a+d6HwwGgzJ06FBl2bJlbufmjSrG+eWXX9b42ogaGytwiaWlpcHPzw+jR48GAAQGBuKJJ57At99+i+zs7FrjH3roIZw+fRrr1q3D1KlT0blzZ6xfvx7Dhw/HpEmT3Lb98ssvcf/99yMwMBBeXl7w9vZGWloajh07Vul5+/Xrh4CAANfPnTp1AgDExcVBp9NVWn/zVKjBYMDw4cPd1o0dOxbXrl3Drl27qn09X331Ffr16weLxeJW7cbFxQG4foFUdXbu3AkAla4svu+++9CpUyd888031cbWxfbt25GVleVaNm/eDAAoKirC9OnTceedd8LLywteXl4IDAxEcXGx27G977778PXXX+OVV15BRkYGSkpKqtyPTqfDsGHD3Nbdc889tU4379ixAwMGDEB4eLjb+oSEBFy+fBl79+51W3/z+3PPPfcAqPxe1qRv375o3749Pv/8cxw+fBhZWVk1Tp/faNq0aQgODsb06dPrvD8A6NGjB06cOIEtW7Zg5syZ6N27N7755hs89dRTGD58OCtykgoTuKROnDiBXbt24eGHH4aiKLh06RIuXbqExx9/HADcpiZr4ufnhxEjRuC9995DZmYmTpw4gbvvvhsffvghjh49CgBYu3YtRo4ciTZt2mDFihXYu3ev6z/bigt8bnTz1cE+Pj41rr/5OcLCwio9p8lkAoBKU8Y3Onv2LP71r3/B29vbbenc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",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_image(X[41])\n",
"plt.title('A Sample of Fashion MNIST')\n",
"plt.savefig('assets/Q5_sample.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## B. Standardization"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"scaler = StandardScaler()\n",
"X = scaler.fit_transform(X)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## C. Covariance Matrix"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Covariance matrix shape: (784, 784)\n"
]
}
],
"source": [
"cov = np.cov(X.T)\n",
"print(\"Covariance matrix shape:\", cov.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## D. Eigenvalues & Eigenvectors"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"eig_values, eig_vectors = np.linalg.eig(cov)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"def plot_eigen_values(eig_values, number_of_eig=None):\n",
" if number_of_eig == None:\n",
" number_of_eig = len(eig_values)\n",
" sorted_eig_values = -np.sort(-eig_values)\n",
" plt.plot(sorted_eig_values[:number_of_eig])\n",
" plt.grid()\n",
" plt.ylabel('Eigen value')\n",
" plt.xlabel('k-th eigen value')\n",
" plt.title('Sorted Eigen Values')"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAHFCAYAAAD2eiPWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABQuklEQVR4nO3de1xUdf4/8NcBhuGOAnJTRDTNzLtUihWYgaJpZmWmJa7Wflu7eF3Nyh9YeclW07UyawszI+2ma+mmeNcuaqjrrVVUFFOQvHGVYWA+vz9wjo5ch+bMGc68no/HrJxzPnPm8x7Z9bWf8/mcIwkhBIiIiIg0zEXtDhAREREpjYGHiIiINI+Bh4iIiDSPgYeIiIg0j4GHiIiINI+Bh4iIiDSPgYeIiIg0j4GHiIiINI+Bh4iIiDSPgYfIwe3evRuPPPIIWrZsCb1ej5CQEPTq1QuTJ0+2+We9//77WLZsmc3PCwCSJCElJaXWNqdPn4YkSTW+bn7/6NGj0apVK0X6aguPPPIIPD09cfXq1RrbjBw5EjqdDhcuXKj3eevzPRJRVQw8RA5s3bp1iImJQUFBAebNm4eNGzdi0aJF6N27N1atWmXzz1My8FjjxRdfxM8//1zl9cwzz8htZsyYgdWrV6vYy9qNHTsWpaWlSEtLq/Z4fn4+Vq9ejYceegghISF27h2R83FTuwNEVLN58+YhKioKGzZsgJvbjf+6Dh8+HPPmzbPZ55SUlMDLy8tm5/uzWrZsiZ49e9bapk2bNnbqTcMkJiYiPDwcn3zyCcaNG1fl+BdffIFr165h7NixKvSOyPlwhIfIgV26dAlBQUEWYcfMxcXyv74mkwnz5s1D+/btodfrERwcjFGjRuH333+3aBcXF4eOHTtix44diImJgZeXF8aMGYNWrVrhyJEj2L59u3wJ6eZLRgUFBZgyZQqioqLg7u6O5s2bY8KECSguLrY4f0FBAZ599lkEBgbCx8cH/fv3x/Hjx233pVxX3SWtq1evYuzYsQgICICPjw8GDhyIU6dOVXsZKDMzEyNGjEBwcDD0ej3uuOMOvPfeexZttm3bBkmS8MUXX+DVV19FeHg4/Pz88OCDD+LYsWO19s/V1RVJSUnIyMjAoUOHqhxPTU1FWFgYEhMT8ccff2DcuHHo0KEDfHx8EBwcjAceeAA7d+6s83tISUmBJElV9i9btgySJOH06dMW+1etWoVevXrB29sbPj4+6NevH/bv32/R5tSpUxg+fDjCw8Ply6h9+/bFgQMH6uwPkaNi4CFyYL169cLu3bvx0ksvYffu3TAajTW2/dvf/oZp06YhPj4ea9euxRtvvIEffvgBMTExuHjxokXbnJwcPPXUUxgxYgTWr1+PcePGYfXq1WjdujW6desmX0IyXzIqKSlBbGwsPv30U7z00kv4z3/+g2nTpmHZsmUYPHgwhBAAACEEhgwZgs8++wyTJ0/G6tWr0bNnTyQmJlpVt8lkQnl5eZVXXe8ZNGgQ0tLSMG3aNKxevRr33HMP+vfvX6Xt0aNHcdddd+Hw4cOYP38+vv/+ewwcOBAvvfQSZs6cWaX9K6+8gjNnzuBf//oXPvzwQ2RmZmLQoEGoqKiotU9jxoyBJEn45JNPqnz+nj17kJSUBFdXV1y+fBkAkJycjHXr1iE1NRWtW7dGXFwctm3bVse3VX+zZ8/Gk08+iQ4dOuDLL7/EZ599hsLCQtx33304evSo3G7AgAHIyMjAvHnzkJ6ejiVLlqBbt261zkcicniCiBzWxYsXxb333isACABCp9OJmJgYMWfOHFFYWCi3++233wQAMW7cOIv37969WwAQr7zyirwvNjZWABCbN2+u8nl33nmniI2NrbJ/zpw5wsXFRezdu9di/9dffy0AiPXr1wshhPjPf/4jAIhFixZZtJs1a5YAIJKTk2utNysrS661utfOnTvltklJSSIyMlLeXrdunQAglixZUqXvt352v379RIsWLUR+fr5F2xdeeEF4eHiIy5cvCyGE2Lp1qwAgBgwYYNHuyy+/FADEzz//XGs9QlR+30FBQaKsrEzeN3nyZAFAHD9+vNr3lJeXC6PRKPr27SseeeQRi2O31pKcnCyq+5/y1NRUAUBkZWUJIYTIzs4Wbm5u4sUXX7RoV1hYKEJDQ8WwYcOEEJW/cwDEwoUL66yNqDHhCA+RAwsMDMTOnTuxd+9ezJ07Fw8//DCOHz+O6dOno1OnTvLIzdatWwFUXua52d1334077rgDmzdvttjftGlTPPDAA/Xux/fff4+OHTuia9euFiMu/fr1gyRJ8iiEuR8jR460eP+IESOsKRvjx4/H3r17q7y6du1a43u2b98OABg2bJjF/ieffNJiu7S0FJs3b8YjjzwCLy8vi3oGDBiA0tJS/PLLLxbvGTx4sMV2586dAQBnzpyps5axY8fi4sWLWLt2LQCgvLwcK1aswH333Ye2bdvK7T744AN0794dHh4ecHNzg06nw+bNm/Hbb7/V+Rn1sWHDBpSXl2PUqFEWNXt4eCA2Nlb+OwwICECbNm3w9ttvY8GCBdi/fz9MJpNN+kCkJgYeokYgOjoa06ZNw1dffYXz589j4sSJOH36tDxx+dKlSwCAsLCwKu8NDw+Xj5tV1642Fy5cwMGDB6HT6Sxevr6+EELIwevSpUtwc3NDYGCgxftDQ0Ot+rwWLVogOjq6ysvHx6fG95g/OyAgwGL/rSugLl26hPLycixevLhKPQMGDACAKpcAb61Hr9cDAK5du1ZnLY899hj8/f2RmpoKAFi/fj0uXLhgMVl5wYIF+Nvf/oZ77rkH33zzDX755Rfs3bsX/fv3r9dn1Id56ftdd91Vpe5Vq1bJNUuShM2bN6Nfv36YN28eunfvjmbNmuGll15CYWGhTfpCpAau0iJqZHQ6HZKTk/HOO+/g8OHDAG78g5yTk4MWLVpYtD9//jyCgoIs9lU3ybU2QUFB8PT0rDIX5ebj5n6Ul5fj0qVLFiEhNzfXqs9rCPNnX7582SL03PrZTZs2haurK55++mk8//zz1Z4rKirKZv3y9PTEk08+iY8++gg5OTn45JNP4Ovri8cff1xus2LFCsTFxWHJkiUW761PwPDw8AAAGAwGOYgBVUOb+e/o66+/RmRkZK3njIyMxMcffwwAOH78OL788kukpKSgrKwMH3zwQZ19InJEHOEhcmA5OTnV7jdf5ggPDwcA+fLUihUrLNrt3bsXv/32G/r27Vuvz9Pr9dWOKDz00EM4efIkAgMDqx15Ma+W6tOnDwDg888/t3h/TfeisaXY2FgAqHJ/opUrV1pse3l5oU+fPti/fz86d+5cbT23juj8WWPHjkVFRQXefvttrF+/HsOHD7e4DYAkSRZhBQAOHjyIn3/+uc5zm7/7gwcPWuz/7rvvLLb79esHNzc3nDx5stqao6Ojqz1/u3bt8Nprr6FTp07Yt29ffcolckgc4SFyYP369UOLFi0waNAgtG/fHiaTCQcOHMD8+fPh4+OD8ePHAwBuv/12/PWvf8XixYvh4uKCxMREnD59GjNmzEBERAQmTpxYr8/r1KkTVq5ciVWrVqF169bw8PBAp06dMGHCBHzzzTe4//77MXHiRHTu3BkmkwnZ2dnYuHEjJk+ejHvuuQcJCQm4//77MXXqVBQXFyM6Oho//vgjPvvsM6vqzs7OrjKPBgCaNWtW4/13+vfvj969e2Py5MkoKChAjx498PPPP2P58uUALJfxL1q0CPfeey/uu+8+/O1vf0OrVq1QWFiIEydO4LvvvsOWLVus6m9doqOj0blzZyxcuBBCiCr33nnooYfwxhtvIDk5GbGxsTh27Bhef/11REVF1bk6bcCAAQgICMDYsWPx+uuvw83NDcuWLcPZs2ct2rVq1Qqvv/46Xn31VZw6dQr9+/dH06ZNceHCBezZswfe3t6YOXMmDh48iBdeeAGPP/442rZtC3d3d2zZsgUHDx7Eyy+/bNPvhciu1J41TUQ1W7VqlRgxYoRo27at8PHxETqdTrRs2VI8/fTT4ujRoxZtKyoqxFtvvSXatWsndDqdCAoKEk899ZQ4e/asRbvY2Fhx5513Vvt5p0+fFgkJCcLX11cAsFgFVVRUJF577TVx++23C3d3d+Hv7y86deokJk6cKHJzc+V2V69eFWPGjBFNmjQRXl5eIj4+Xvzvf/+zySqtkSNHym1vXaUlhBCXL18Wf/nLXyw++5dffql25VhWVpYYM2aMaN68udDpdKJZs2YiJiZGvPnmm3Ib8yqtr776qtp+pqam1lrPzRYtWiQAiA4dOlQ5ZjAYxJQpU0Tz5s2Fh4eH6N69u1izZk21NVb3Pe7Zs0fExMQIb29v0bx5c5GcnCz+9a9/WazSMluzZo3o06eP8PPzE3q9XkRGRorHHntMbNq0SQghxIULF8To0aNF+/bthbe3t/Dx8RGdO3cW77zzjigvL693vUSORhLi+g00iIg0KC0tDSNHjsSPP/6ImJgYtbtDRCph4CEizfjiiy9w7tw5dOrUCS4uLvjll1/w9ttvo1u3bvKydSJyTpzDQ0Sa4evri5UrV+LNN99EcXExwsLCMHr0aLz55ptqd42IVMYRHiIiItI8LksnIiIizWPgISIiIs1j4CEiIiLN46RlACaTCefPn4evr6/Vt9wnIiIidQghUFhYiPDwcIubi1aHgQeVzxqKiIhQuxtERETUAGfPnq3yHMFbMfCgcikrUPmF+fn52ey8RqMRGzduREJCAnQ6nc3O62hYp3Y4Q42Ac9TpDDUCrFNLGlJjQUEBIiIi5H/Ha8PAgxtPjvbz87N54PHy8oKfn59mf0EB1qklzlAj4Bx1OkONAOvUkj9TY32mo3DSMhEREWkeAw8RERFpHgMPERERaR4DDxEREWkeAw8RERFpHgMPERERaZ6qgWfHjh0YNGgQwsPDIUkS1qxZY3FckqRqX2+//bbcJi4ursrx4cOH27kSIiIicmSqBp7i4mJ06dIF7777brXHc3JyLF6ffPIJJEnCo48+atHu2WeftWi3dOlSe3SfiIiIGglVbzyYmJiIxMTEGo+HhoZabP/73/9Gnz590Lp1a4v9Xl5eVdoSERERmTWaOy1fuHAB69atw6efflrl2Oeff44VK1YgJCQEiYmJSE5OrvU20waDAQaDQd4uKCgAUHmXR6PRaLM+m89ly3M6ItapHc5QI+AcdTpDjQDr1JKG1GhNW0kIIazulQIkScLq1asxZMiQao/PmzcPc+fOxfnz5+Hh4SHv/+ijjxAVFYXQ0FAcPnwY06dPx2233Yb09PQaPyslJQUzZ86ssj8tLQ1eXl5/uhYiIiJSXklJCUaMGIH8/Pw6Hw3VaAJP+/btER8fj8WLF9d6noyMDERHRyMjIwPdu3evtk11IzwRERG4ePGizZ+llZ6ejvj4eM0++wRgnVriDDUCzlGnM9QIsE4taUiNBQUFCAoKqlfgaRSXtHbu3Iljx45h1apVdbbt3r07dDodMjMzaww8er0eer2+yn6dTmfTX6SrJUZcNgDXygEvL23+gt7M1t+fo3KGOp2hRsA56nSGGgHWqSXW1GjNd9Eo7sPz8ccfo0ePHujSpUudbY8cOQKj0YiwsDA79Kx2/0jPxMx9blj+S7baXSEiInJqqo7wFBUV4cSJE/J2VlYWDhw4gICAALRs2RJA5XDVV199hfnz51d5/8mTJ/H5559jwIABCAoKwtGjRzF58mR069YNvXv3tlsdNTE/rd4hrhkSERE5MVUDz6+//oo+ffrI25MmTQIAJCUlYdmyZQCAlStXQgiBJ598ssr73d3dsXnzZixatAhFRUWIiIjAwIEDkZycDFdXV7vUUBvJ/AMTDxERkapUDTxxcXGoa870X//6V/z1r3+t9lhERAS2b9+uRNds4sYIDxMPERGRmhrFHJ7GSro+xuMY6+CIiIicFwOPglw4h4eIiMghMPAo6fo1LROHeIiIiFTFwKMgTlomIiJyDAw8CuKydCIiIsfAwKMg8wgPr2gRERGpi4FHQdL1IR4uSyciIlIXA4+C5FVazDtERESqYuCxA67SIiIiUhcDj4LMl7SIiIhIXQw8CuKkZSIiIsfAwKMgLksnIiJyDAw8CrrxLC1GHiIiIjUx8CiIz9IiIiJyDAw8SroeeExMPERERKpi4FGQ+ZIWZy0TERGpi4FHQZy0TERE5BgYeBTEZelERESOgYFHQTdGeJh4iIiI1MTAoyD54aHMO0RERKpi4FGQ+ZIWV2kRERGpi4FHQTeepcXEQ0REpCYGHgVx0jIREZFjYOBREJelExEROQYGHgVxhIeIiMgxMPAoSF6lxTEeIiIiVTHwKEjis7SIiIgcAgOPgiRe0yIiInIIDDwKMj88lHmHiIhIXQw8CuIqLSIiIsfAwKMgXtEiIiJyDAw8CuIqLSIiIsfAwKMgrtIiIiJyDAw8CjJf0uIADxERkboYeBTES1pERESOgYFHQZy0TERE5BgYeBTEZelERESOQdXAs2PHDgwaNAjh4eGQJAlr1qyxOD569GhIkmTx6tmzp0Ubg8GAF198EUFBQfD29sbgwYPx+++/27GKmsmXtDjEQ0REpCpVA09xcTG6dOmCd999t8Y2/fv3R05Ojvxav369xfEJEyZg9erVWLlyJXbt2oWioiI89NBDqKioULr7dTJf0uIqLSIiInW5qfnhiYmJSExMrLWNXq9HaGhotcfy8/Px8ccf47PPPsODDz4IAFixYgUiIiKwadMm9OvXz+Z9tob8LC0iIiJSlaqBpz62bduG4OBgNGnSBLGxsZg1axaCg4MBABkZGTAajUhISJDbh4eHo2PHjvjpp59qDDwGgwEGg0HeLigoAAAYjUYYjUab9d1UYQIAVJhMNj2vozHXpuUaAeeo0xlqBJyjTmeoEWCdWtKQGq1pKwkHmWAiSRJWr16NIUOGyPtWrVoFHx8fREZGIisrCzNmzEB5eTkyMjKg1+uRlpaGv/zlLxbhBQASEhIQFRWFpUuXVvtZKSkpmDlzZpX9aWlp8PLysllNP12QsOqUKzo2NeHZ9iabnZeIiIiAkpISjBgxAvn5+fDz86u1rUOP8DzxxBPyzx07dkR0dDQiIyOxbt06DB06tMb3CSHkCcPVmT59OiZNmiRvFxQUICIiAgkJCXV+YdbI330GOHUMzZo1w4ABPWx2XkdjNBqRnp6O+Ph46HQ6tbujGGeo0xlqBJyjTmeoEWCdWtKQGs1XaOrDoQPPrcLCwhAZGYnMzEwAQGhoKMrKynDlyhU0bdpUbpeXl4eYmJgaz6PX66HX66vs1+l0Nv1FcnO7/vVKkmZ/QW9m6+/PUTlDnc5QI+AcdTpDjQDr1BJrarTmu2hU9+G5dOkSzp49i7CwMABAjx49oNPpkJ6eLrfJycnB4cOHaw089sJnaRERETkGVUd4ioqKcOLECXk7KysLBw4cQEBAAAICApCSkoJHH30UYWFhOH36NF555RUEBQXhkUceAQD4+/tj7NixmDx5MgIDAxEQEIApU6agU6dO8qotNfFZWkRERI5B1cDz66+/ok+fPvK2eV5NUlISlixZgkOHDmH58uW4evUqwsLC0KdPH6xatQq+vr7ye9555x24ublh2LBhuHbtGvr27Ytly5bB1dXV7vXc6sadlpl4iIiI1KRq4ImLi6v1LsQbNmyo8xweHh5YvHgxFi9ebMuu2YQE852WVe4IERGRk2tUc3gaGz5Li4iIyDEw8CjoxrO0VO4IERGRk2PgUZB50rKD3NuRiIjIaTHwKIiXtIiIiBwDA4+COMJDRETkGBh4FCTP4VG5H0RERM6OgUdBN0Z4VO0GERGR02PgURDn8BARETkGBh4F3ViWzshDRESkJgYeBfGSFhERkWNg4FEQL2kRERE5BgYeBd14lhYjDxERkZoYeBTEER4iIiLHwMCjIDnwMPEQERGpioFHQVylRURE5BgYeBQkr9JStRdERETEwKMgXtIiIiJyDAw8CroxwsPEQ0REpCYGHgXdmMOjckeIiIicHAOPgnhJi4iIyDEw8CiINx4kIiJyDAw8CuKNB4mIiBwDA4+C+PBQIiIix8DAo6AbIzxMPERERGpi4FHQjTk8KneEiIjIyTHwKIhzeIiIiBwDA4+CbixLZ+QhIiJSEwOPgnhJi4iIyDEw8CiIl7SIiIgcAwOPgrgsnYiIyDEw8ChIfpYWx3iIiIhUxcCjID5Li4iIyDEw8CjoxiUtJh4iIiI1MfAo6MYlLSIiIlITA4+COGmZiIjIMTDwKIjL0omIiBwDA4+Cbtx4kJGHiIhITQw8CuIIDxERkWNQNfDs2LEDgwYNQnh4OCRJwpo1a+RjRqMR06ZNQ6dOneDt7Y3w8HCMGjUK58+ftzhHXFwcJEmyeA0fPtzOlVSPy9KJiIgcg6qBp7i4GF26dMG7775b5VhJSQn27duHGTNmYN++ffj2229x/PhxDB48uErbZ599Fjk5OfJr6dKl9uh+nXhJi4iIyDG4qfnhiYmJSExMrPaYv78/0tPTLfYtXrwYd999N7Kzs9GyZUt5v5eXF0JDQxXta0PwkhYREZFjUDXwWCs/Px+SJKFJkyYW+z///HOsWLECISEhSExMRHJyMnx9fWs8j8FggMFgkLcLCgoAVF5GMxqNNutvRXk5gMoRHlue19GYa9NyjYBz1OkMNQLOUacz1AiwTi1pSI3WtJWEg1xvkSQJq1evxpAhQ6o9XlpainvvvRft27fHihUr5P0fffQRoqKiEBoaisOHD2P69Om47bbbqowO3SwlJQUzZ86ssj8tLQ1eXl5/uhaz8yXAW/91g4+bwKy7Kmx2XiIiIqqc/jJixAjk5+fDz8+v1raNIvAYjUY8/vjjyM7OxrZt22otKiMjA9HR0cjIyED37t2rbVPdCE9ERAQuXrxY5xdmjd/OX8XgJXvQ1EuHPdP72Oy8jsZoNCI9PR3x8fHQ6XRqd0cxzlCnM9QIOEedzlAjwDq1pCE1FhQUICgoqF6Bx+EvaRmNRgwbNgxZWVnYsmVLnQV1794dOp0OmZmZNQYevV4PvV5fZb9Op7PpL5LOrfLrFQKa/QW9ma2/P0flDHU6Q42Ac9TpDDUCrFNLrKnRmu/CoQOPOexkZmZi69atCAwMrPM9R44cgdFoRFhYmB16WLsbz9JyiEE0IiIip6Vq4CkqKsKJEyfk7aysLBw4cAABAQEIDw/HY489hn379uH7779HRUUFcnNzAQABAQFwd3fHyZMn8fnnn2PAgAEICgrC0aNHMXnyZHTr1g29e/dWqywZn6VFRETkGFQNPL/++iv69Lkxt2XSpEkAgKSkJKSkpGDt2rUAgK5du1q8b+vWrYiLi4O7uzs2b96MRYsWoaioCBERERg4cCCSk5Ph6upqtzpqwmXpREREjkHVwBMXF1frTfnqmk8dERGB7du327pbNsM7LRMRETkGPktLQZzDQ0RE5BgYeBTEOTxERESOgYFHQTcuaTHxEBERqYmBR0Hyw0NV7gcREZGzY+BRECctExEROQYGHgXJc3hU7QUREREx8ChIXqXFIR4iIiJVMfAoiJe0iIiIHAMDj4J4SYuIiMgxMPAoiJe0iIiIHAMDj4I4wkNEROQYGHgUxDk8REREjoGBR0HmS1oAL2sRERGpiYFHQdJNPzPvEBERqYeBR0E3DfBwHg8REZGKGHgUJIGXtIiIiBwBA4+COMJDRETkGBh4FMQ5PERERI6BgUdBFqu0OMZDRESkGgYeBVlc0mLeISIiUg0Dj4J4SYuIiMgxMPAoyHLSMhMPERGRWhh4FGS5LF3FjhARETk5Bh4FcVk6ERGRY2DgURCfpUVEROQYGHgUdPOkZRPzDhERkWoYeBQkWSzTUq0bRERETo+BR0GWeYeJh4iISC0MPAqynMOjYkeIiIicXIMCT3l5OTZt2oSlS5eisLAQAHD+/HkUFRXZtHONHa9oEREROQY3a99w5swZ9O/fH9nZ2TAYDIiPj4evry/mzZuH0tJSfPDBB0r0s1GyfLQEIw8REZFarB7hGT9+PKKjo3HlyhV4enrK+x955BFs3rzZpp1r7G6+pMVVWkREROqxeoRn165d+PHHH+Hu7m6xPzIyEufOnbNZx7RCgoC4/p9ERESkDqtHeEwmEyoqKqrs//333+Hr62uTTmkS8w4REZFqrA488fHxWLhwobwtSRKKioqQnJyMAQMG2LJvmmC+qMW8Q0REpB6rL2m988476NOnDzp06IDS0lKMGDECmZmZCAoKwhdffKFEHxs3CYDgsnQiIiI1WR14wsPDceDAAXzxxRfYt28fTCYTxo4di5EjR1pMYqZKN0Z4mHiIiIjU0qD78Hh6emLMmDF499138f777+OZZ55pUNjZsWMHBg0ahPDwcEiShDVr1lgcF0IgJSUF4eHh8PT0RFxcHI4cOWLRxmAw4MUXX0RQUBC8vb0xePBg/P777w0pSxHmwMNVWkREROqxeoRn+fLltR4fNWpUvc9VXFyMLl264C9/+QseffTRKsfnzZuHBQsWYNmyZWjXrh3efPNNxMfH49ixY/IE6QkTJuC7777DypUrERgYiMmTJ+Ohhx5CRkYGXF1drStOAfIID69pERERqcbqwDN+/HiLbaPRiJKSEri7u8PLy8uqwJOYmIjExMRqjwkhsHDhQrz66qsYOnQoAODTTz9FSEgI0tLS8H//93/Iz8/Hxx9/jM8++wwPPvggAGDFihWIiIjApk2b0K9fP2vLsz3O4SEiIlKd1Ze0rly5YvEqKirCsWPHcO+999p00nJWVhZyc3ORkJAg79Pr9YiNjcVPP/0EAMjIyIDRaLRoEx4ejo4dO8pt1CbV3YSIiIgUZvUIT3Xatm2LuXPn4qmnnsL//vc/W5wSubm5AICQkBCL/SEhIThz5ozcxt3dHU2bNq3Sxvz+6hgMBhgMBnm7oKAAQOVoldFotEn/zeczK7PxuR2JuS6t1mfmDHU6Q42Ac9TpDDUCrFNLGlKjNW1tEngAwNXVFefPn7fV6WQ3P54BqLzUdeu+W9XVZs6cOZg5c2aV/Rs3boSXl1fDOloDSaqcR7Rt2zYEedj01A4nPT1d7S7YhTPU6Qw1As5RpzPUCLBOLbGmxpKSknq3tTrwrF271mJbCIGcnBy8++676N27t7Wnq1FoaCiAylGcsLAweX9eXp486hMaGoqysjJcuXLFYpQnLy8PMTExNZ57+vTpmDRpkrxdUFCAiIgIJCQkwM/Pz2Y1GI1GSHu2AADuj41Fq0Bvm53bkRiNRqSnpyM+Ph46nU7t7ijGGep0hhoB56jTGWoEWKeWNKRG8xWa+rA68AwZMsRiW5IkNGvWDA888ADmz59v7elqFBUVhdDQUKSnp6Nbt24AgLKyMmzfvh1vvfUWAKBHjx7Q6XRIT0/HsGHDAAA5OTk4fPgw5s2bV+O59Xo99Hp9lf06nc7mv0jmcSZXVzfN/pKaKfH9OSJnqNMZagSco05nqBFgnVpiTY3WfBdWBx6TyWTtW2pUVFSEEydOyNtZWVk4cOAAAgIC0LJlS0yYMAGzZ89G27Zt0bZtW8yePRteXl4YMWIEAMDf3x9jx47F5MmTERgYiICAAEyZMgWdOnWSV205Ci7SIiIiUo/N5vA0xK+//oo+ffrI2+bLTElJSVi2bBmmTp2Ka9euYdy4cbhy5QruuecebNy40eIhpe+88w7c3NwwbNgwXLt2DX379sWyZcsc4h48wM334VG1G0RERE6tXoHn5vkudVmwYEG928bFxdV6Qz5JkpCSkoKUlJQa23h4eGDx4sVYvHhxvT/XruS500w8REREaqlX4Nm/f3+9TlbX6ilnxBEeIiIi9dUr8GzdulXpfmgWn6VFRESkvgY9PJSscD3x8GnpRERE6mnQpOW9e/fiq6++QnZ2NsrKyiyOffvttzbpmFbwkhYREZH6rB7hWblyJXr37o2jR49i9erVMBqNOHr0KLZs2QJ/f38l+tioMfAQERGpz+rAM3v2bLzzzjv4/vvv4e7ujkWLFuG3337DsGHD0LJlSyX6qAm8pEVERKQeqwPPyZMnMXDgQACVdywuLi6GJEmYOHEiPvzwQ5t3sLEzL1zjCA8REZF6rA48AQEBKCwsBAA0b94chw8fBgBcvXrVqod4OQte0iIiIlKf1ZOW77vvPqSnp6NTp04YNmwYxo8fjy1btiA9PR19+/ZVoo+awEtaRERE6rE68Lz77rsoLS0FUPnUcZ1Oh127dmHo0KGYMWOGzTvY2HGEh4iISH1WB56AgAD5ZxcXF0ydOhVTp061aae0RJ7Do243iIiInJrVc3j69OmDjz/+GPn5+Ur0R7Nqe2YYERERKcvqwNOpUye89tprCA0NxaOPPoo1a9ZUufkg3SBf0lK1F0RERM7N6sDzz3/+E+fOncO///1v+Pr6IikpCaGhofjrX/+K7du3K9HHRu3GHB5GHiIiIrU06FlaLi4uSEhIwLJly3DhwgUsXboUe/bswQMPPGDr/jV+vA8PERGR6hr0LC2z3NxcrFy5EitWrMDBgwdx11132apfmsFLWkREROqzeoSnoKAAqampiI+PR0REBJYsWYJBgwbh+PHj2L17txJ9bNS4LJ2IiEh9Vo/whISEoGnTphg2bBhmz57NUZ164hweIiIi9VgdeP7973/jwQcfhItLg6b/OB3eh4eIiEh9VgeehIQEJfqhWeZLWiaO8BAREamGwzT2wrxDRESkGgYehXGVFhERkfoYeJTG+/AQERGpjoFHYTdGeJh4iIiI1NKgGw9u3rwZmzdvRl5eHkwmk8WxTz75xCYd0wreh4eIiEh9VgeemTNn4vXXX0d0dDTCwsIgmdddU7XMXw9XaREREanH6sDzwQcfYNmyZXj66aeV6I9mMe4QERGpx+o5PGVlZYiJiVGiL5okj38x8RAREanG6sDzzDPPIC0tTYm+aBonLRMREanH6ktapaWl+PDDD7Fp0yZ07twZOp3O4viCBQts1jkt4KRlIiIi9VkdeA4ePIiuXbsCAA4fPmxxjBOYq5J4Hx4iIiLVWR14tm7dqkQ/NIvP0iIiIlJfg288eOLECWzYsAHXrl0DAAj+g14rfjtERETqsTrwXLp0CX379kW7du0wYMAA5OTkAKiczDx58mSbd7Cx4yUtIiIi9VkdeCZOnAidTofs7Gx4eXnJ+5944gn88MMPNu2ctjDxEBERqcXqOTwbN27Ehg0b0KJFC4v9bdu2xZkzZ2zWMa3gKi0iIiL1WT3CU1xcbDGyY3bx4kXo9XqbdEpLbjw8lIiIiNRideC5//77sXz5cnlbkiSYTCa8/fbb6NOnj007pwV8lhYREZH6rA48b7/9NpYuXYrExESUlZVh6tSp6NixI3bs2IG33nrL5h1s1aoVJEmq8nr++ecBAKNHj65yrGfPnjbvR8NVBh3mHSIiIvVYPYenQ4cOOHjwIJYsWQJXV1cUFxdj6NCheP755xEWFmbzDu7duxcVFRXy9uHDhxEfH4/HH39c3te/f3+kpqbK2+7u7jbvR0PxkhYREZH6rA48ABAaGoqZM2faui/VatasmcX23Llz0aZNG8TGxsr79Ho9QkND7dKfhuJ9ioiIiNTToEdLVEeSJHh4eKBly5aKTV4uKyvDihUrMGnSJIvHWGzbtg3BwcFo0qQJYmNjMWvWLAQHB9d4HoPBAIPBIG8XFBQAAIxGI4xGo836azQa5Tk85eUVNj23IzHXpdX6zJyhTmeoEXCOOp2hRoB1aklDarSmrSSsHHpwcXGRw4b5rTeHD51OhyeeeAJLly6Fh4eHNaeu05dffokRI0YgOzsb4eHhAIBVq1bBx8cHkZGRyMrKwowZM1BeXo6MjIwag1dKSkq1I1RpaWnVrkD7M9476oLj+S54+rYKRDfjKA8REZGtlJSUYMSIEcjPz4efn1+tba0OPP/+978xbdo0/P3vf8fdd98NIQT27t2L+fPnIzk5GeXl5Xj55ZfxxBNP4B//+MefKuRW/fr1g7u7O7777rsa2+Tk5CAyMhIrV67E0KFDq21T3QhPREQELl68WOcXZg2j0Yihizbjf/kuePvRjhjSNdxm53YkRqMR6enpiI+Ph06nU7s7inGGOp2hRsA56nSGGgHWqSUNqbGgoABBQUH1CjxWX9KaNWsWFi1ahH79+sn7OnfujBYtWmDGjBnYs2cPvL29MXnyZJsGnjNnzmDTpk349ttva20XFhaGyMhIZGZm1thGr9dXO/qj0+kU+0VycXHV7C+pmZLfnyNxhjqdoUbAOep0hhoB1qkl1tRozXdh9bL0Q4cOITIyssr+yMhIHDp0CADQtWtX+RlbtpKamorg4GAMHDiw1naXLl3C2bNnFVkx1hDys7TU7QYREZFTszrwtG/fHnPnzkVZWZm8z2g0Yu7cuWjfvj0A4Ny5cwgJCbFZJ00mE1JTU5GUlAQ3txuDUkVFRZgyZQp+/vlnnD59Gtu2bcOgQYMQFBSERx55xGafbwtcpUVERKQeqy9pvffeexg8eDBatGiBzp07Q5IkHDx4EBUVFfj+++8BAKdOncK4ceNs1slNmzYhOzsbY8aMsdjv6uqKQ4cOYfny5bh69SrCwsLQp08frFq1Cr6+vjb7/D+D9+EhIiJSn9WBJyYmBqdPn8aKFStw/PhxCCHw2GOPYcSIEXLIePrpp23ayYSEhGpHSDw9PbFhwwabfpZimHiIiIhU06AbD/r4+OC5556zdV80yYXP0iIiIlJdvQLP2rVrkZiYCJ1Oh7Vr19badvDgwTbpmNYw7hAREamnXoFnyJAhyM3NRXBwMIYMGVJjO0mSLJ57RTfN4WHiISIiUk29Ao/JZKr2Z6o/wTEeIiIi1Vi9LJ2sI9+Hh3mHiIhINfUOPAMGDEB+fr68PWvWLFy9elXevnTpEjp06GDTzmkJ8w4REZF66h14NmzYYPH8qbfeeguXL1+Wt8vLy3Hs2DHb9k4DzF8wbzxIRESknnoHnlv/weY/4PXES1pERESq4xwehd1YpcXEQ0REpJZ6Bx5JkiCZZ+DetI/qh3GHiIhIPfW+07IQAqNHj4ZerwcAlJaW4rnnnoO3tzcAWMzvoRt4Hx4iIiL11TvwJCUlWWw/9dRTVdqMGjXqz/dIo5h3iIiI1FPvwJOamqpkPzTrxn14GHmIiIjUwknLCuMlLSIiIvUx8ChMDjy8qEVERKQaBh6l8T48REREqmPgUdiNER4iIiJSCwOPnXCEh4iISD0MPAozj/CYmHiIiIhUw8CjMN6MmoiISH0MPArjs7SIiIjUx8BjJ8w7RERE6mHgURhXaREREamPgUdpvA8PERGR6hh4FMZVWkREROpj4FEYL2kRERGpj4FHYfKqdI7wEBERqYaBR2nmOTzq9oKIiMipMfAo7MZ9eFTtBhERkVNj4LETwTEeIiIi1TDwKMz8aAkT8w4REZFqGHgUxktaRERE6mPgsRNe0iIiIlIPA4/CbixLV7MXREREzo2BR2G88SAREZH6GHiUJj9Li5GHiIhILQw8CrvxLC1Vu0FEROTUHDrwpKSkQJIki1doaKh8XAiBlJQUhIeHw9PTE3FxcThy5IiKPa6Kq7SIiIjU59CBBwDuvPNO5OTkyK9Dhw7Jx+bNm4cFCxbg3Xffxd69exEaGor4+HgUFhaq2ONbyI+WYOIhIiJSi8MHHjc3N4SGhsqvZs2aAagc3Vm4cCFeffVVDB06FB07dsSnn36KkpISpKWlqdzrGzjCQ0REpD6HDzyZmZkIDw9HVFQUhg8fjlOnTgEAsrKykJubi4SEBLmtXq9HbGwsfvrpJ7W6W4VUdxMiIiJSmJvaHajNPffcg+XLl6Ndu3a4cOEC3nzzTcTExODIkSPIzc0FAISEhFi8JyQkBGfOnKn1vAaDAQaDQd4uKCgAABiNRhiNRpv1/+ZzVVRU2PTcjsRcl1brM3OGOp2hRsA56nSGGgHWqSUNqdGatpJoROuli4uL0aZNG0ydOhU9e/ZE7969cf78eYSFhcltnn32WZw9exY//PBDjedJSUnBzJkzq+xPS0uDl5eXTfu8/qwLNvzugntDTHi8tcmm5yYiInJmJSUlGDFiBPLz8+Hn51drW4ce4bmVt7c3OnXqhMzMTAwZMgQAkJubaxF48vLyqoz63Gr69OmYNGmSvF1QUICIiAgkJCTU+YVZw2g04j+fbAYAtIxsiQEDOtjs3I7EaDQiPT0d8fHx0Ol0andHMc5QpzPUCDhHnc5QI8A6taQhNZqv0NRHowo8BoMBv/32G+677z5ERUUhNDQU6enp6NatGwCgrKwM27dvx1tvvVXrefR6PfR6fZX9Op1OgV+kygE0SXLR7C+pmTLfn+NxhjqdoUbAOep0hhoB1qkl1tRozXfh0IFnypQpGDRoEFq2bIm8vDy8+eabKCgoQFJSEiRJwoQJEzB79my0bdsWbdu2xezZs+Hl5YURI0ao3XUZHy1BRESkPocOPL///juefPJJXLx4Ec2aNUPPnj3xyy+/IDIyEgAwdepUXLt2DePGjcOVK1dwzz33YOPGjfD19VW55zdI8qMl1O0HERGRM3PowLNy5cpaj0uShJSUFKSkpNinQ38KEw8REZFaHP4+PI2d/CwtLtAiIiJSDQOPwiQ+WoKIiEh1DDx2wjk8RERE6mHgURhXaREREamPgUdhfHgoERGR+hh47IRzeIiIiNTDwKMw3oeHiIhIfQw8CpOXpTPxEBERqYaBR2He1x/zcbm4TN2OEBEROTEGHoU1ca/8Mye/VN2OEBEROTEGHoU1ca+8lJXLwENERKQaBh6F+V8f4SkylKOg1KhuZ4iIiJwUA4/C9K6Av2flM1pzrnKUh4iISA0MPHbQ1KtymIcjPEREROpg4LEDD7fKr7nUWKFyT4iIiJwTA48d6HWuAIBrZQw8REREamDgsQNP3fURnnKTyj0hIiJyTgw8dmAe4eElLSIiInUw8NiBeQ6PgYGHiIhIFQw8duBhnsPDwENERKQKBh478DDP4TFyDg8REZEaGHjswINzeIiIiFTFwGMHHm7mwMMRHiIiIjUw8NiBXl6WzhEeIiIiNTDw2IE8h4c3HiQiIlIFA48dyJe0OMJDRESkCgYeO+AqLSIiInUx8NgBV2kRERGpi4HHDm6s0mLgISIiUgMDjx2YL2ld4yUtIiIiVTDw2IF5WTqfpUVERKQOBh474CUtIiIidTHw2IGnedJyOS9pERERqYGBxw7kOy1zhIeIiEgVDDx2YF6Wfs1YASGEyr0hIiJyPgw8duDhVvk1CwGUVfCyFhERkb0x8NiB/voID8C7LRMREamBgccO3F0lSFLlz1yaTkREZH8OHXjmzJmDu+66C76+vggODsaQIUNw7NgxizajR4+GJEkWr549e6rU4+pJknRjpRZHeIiIiOzOoQPP9u3b8fzzz+OXX35Beno6ysvLkZCQgOLiYot2/fv3R05Ojvxav369Sj2u2c0Tl4mIiMi+3NTuQG1++OEHi+3U1FQEBwcjIyMD999/v7xfr9cjNDTU3t2zinniMpemExER2Z9DB55b5efnAwACAgIs9m/btg3BwcFo0qQJYmNjMWvWLAQHB9d4HoPBAIPBIG8XFBQAAIxGI4xGo836az6X0WiE/nrgKSo12PQzHMHNdWqZM9TpDDUCzlGnM9QIsE4taUiN1rSVRCO5MYwQAg8//DCuXLmCnTt3yvtXrVoFHx8fREZGIisrCzNmzEB5eTkyMjKg1+urPVdKSgpmzpxZZX9aWhq8vLwU6f+8/7riXImE5+6owB1NGsVXTkRE5NBKSkowYsQI5Ofnw8/Pr9a2jSbwPP/881i3bh127dqFFi1a1NguJycHkZGRWLlyJYYOHVptm+pGeCIiInDx4sU6vzBrGI1GpKenIz4+HiNT92H/2Xy892QXJHQIsdlnOIKb69TpdGp3RzHOUKcz1Ag4R53OUCPAOrWkITUWFBQgKCioXoGnUVzSevHFF7F27Vrs2LGj1rADAGFhYYiMjERmZmaNbfR6fbWjPzqdTpFfJJ1OB0/3yq+6XEia/WVV6vtzNM5QpzPUCDhHnc5QI8A6tcSaGq35Lhw68Agh8OKLL2L16tXYtm0boqKi6nzPpUuXcPbsWYSFhdmhh/XX1NsdAPBHoaGOlkRERGRrDr0s/fnnn8eKFSuQlpYGX19f5ObmIjc3F9euXQMAFBUVYcqUKfj5559x+vRpbNu2DYMGDUJQUBAeeeQRlXtvqVVg5dygrIvFdbQkIiIiW3PoEZ4lS5YAAOLi4iz2p6amYvTo0XB1dcWhQ4ewfPlyXL16FWFhYejTpw9WrVoFX19fFXpcs1aB3gCA05cYeIiIiOzNoQNPXfOpPT09sWHDBjv15s+JCroeeC6WqNwTIiIi5+PQl7S0pEXTyktauQWlMJkaxcI4IiIizWDgsZNAn8pJyxUmgavXtHvjKCIiIkfEwGMnOlcXNPGqXD53sYgrtYiIiOyJgceOgnwq7/1zkUvTiYiI7IqBx46Crl/W+oMjPERERHbFwGNHgeYRnqIylXtCRETkXBh47KjZ9cBziSM8REREdsXAY0d+HpW3PSosLVe5J0RERM6FgceO/DwrV2kVlHJZOhERkT0x8NiRL0d4iIiIVMHAY0e+HpUjPIUc4SEiIrIrBh47Mo/wFFzjCA8REZE9MfDYkR9HeIiIiFTBwGNHnMNDRESkDgYeOzLP4SkqK+cT04mIiOyIgceOzCM8QgCFBo7yEBER2QsDjx156FzhqXMFAFwp5uMliIiI7IWBx86C/SofL5HHJ6YTERHZDQOPnQX7mgNPqco9ISIich4MPHYW7OsBAMgr4AgPERGRvTDw2FkzX17SIiIisjcGHjsL8TOP8PCSFhERkb0w8NhZ62beAID//n5V3Y4QERE5EQYeO+sZFQhJAk7+UcxRHiIiIjth4LEzfy8d2of6AQD2ZV9VtzNEREROgoFHBR3DKwPP0fP5KveEiIjIOTDwqODO64HnyPkClXtCRETkHBh4VNCtZVMAwM7Mi8i6WKxyb4iIiLSPgUcFnVv4o2frAJRVmDB22V4+OZ2IiEhhDDwqkCQJ7zzRFV7urjh1sRjrD+eo3SUiIiJNY+BRSZi/JxI7hgEAJn35X5y9XKJyj4iIiLSLgUdFLye2R/MmnigrN2F06h5s/V+e2l0iIiLSJAYeFTXz1eOjUdHw1bvh5B/FeGb5r9iTdVntbhEREWkOA4/KOoT7YdPkWPS5vRkqTALDlv6MrzN+V7tbREREmsLA4wBC/DzwzhNdERnoBQCY8tV/MfJfv+CnkxdhKK9QuXdERESNn5vaHaBKTbzcsWHC/fjHhmP49OfT+PHEJfx44hJ89G64I8wXd0cFIL5DKNo084avh07t7hIRETUqDDwOxEPnitce6oCkmFZ4d8sJfHfwPIoM5dh7+gr2nr6C97aehItUeRns7laBuKd1AO5qFYAAb3e1u05EROTQGHgcUESAF956rDPmDO2EozkFOJZbiI1Hc/HzyUsoKC3H4XMFOHyuAJ/8mAUACPB2R3gTD7QN9kXbEB9ENPVCM189gnzcEeSjh7+nDpIkqVwVERGRejQTeN5//328/fbbyMnJwZ133omFCxfivvvuU7tbf4qLi4SOzf3Rsbk/Hu3RAgBwoaAUu7MuY0/WJew+dRmZeUW4XFyGy8VlOHyu+mdzublICPRxR6C3HoE+7mjmU/lnkI8egT56BHq7w1vvBi93V/jo3eDnqYOvhxt0rpziRURE2qCJwLNq1SpMmDAB77//Pnr37o2lS5ciMTERR48eRcuWLdXunk2F+HlgcJdwDO4SDgAoKDXi/NVryL5UgmO5hTh1sRjnrlzDxSIDLhYZUFBajnKTwIUCAy4UGKz6LHc3F3i4uUCvc4XezQV6Nxd4yD+7wkNX+afOFfgj1wV7v/8Nnu5uFsf0Ohd4XP/T3dUFLi4S3Fwk+U9XSYKrSw2vmo5JEtxcXODiAvlPc1uOZBERUXU0EXgWLFiAsWPH4plnngEALFy4EBs2bMCSJUswZ84clXunLD8PHfxCdWgf6oeEO0OrHDeUV+BycRkuFZXhjyIDLhWV4dL1MGTed6WkDCWGChSXlaOotBzFZZUrw8rKTSgrNwGl5fXoiQt+yTtr4+qs5yLBMgxJgJurC1wkCa4u1RxzqT6EmdtIUuWjQCQAEAJ//OGC1Zf2wfX6MVQeqWwn/yldf1/lz5CPXW9r0f76uW9+3/Vabj0Xbjoun/uWc1V5n3n7ps++9bNubm8ymXAi2wWZm0/A1dW11nPV+FnXt3FzfbfWbK7z+vHq66n6/Zn33/rZuOV4dd/ljS2goqIcBy9L0B3Ng6ubKyyP3nBrgL61za35urq8Ld36rto3G/a51ZyloqIcx/IlNDl5CW5ublVb1KOvVT+nHn2t4z3V/3+Shn9ueXk5zhQCB3/Ph5ub203Hbz1H1bPU9f+P6vP3WdfvQH0+tz7fUXl5BS5cA07+UVz591lt36rZV03D6ttVd77qv6D6/v/KW9s18XKHj1692NHoA09ZWRkyMjLw8ssvW+xPSEjATz/9VO17DAYDDIYbox0FBZWXgoxGI4xGo836Zj6XLc9pLRcAQV5uCPJyw+3BXvV6T3mFCUXXA5DBaIKh3ARDecX1P00wGE0ovWm7pLQMR/53HC1btUaZqTIoGcpNKDVavq+s3IQKIVBhqnyZTALlJgGTuP6nvA25zc3tzduilmetmgRQVmECKgDAZIuv8BYuOHr1ogLndSQu2HDulNqdsANXfHzsgNqdUJgr3j+aoXYn7MANCw7vVrsTduCG2Qd+VLsTDfbG4A4YfleLGo835N9Ma9o2+sBz8eJFVFRUICQkxGJ/SEgIcnNzq33PnDlzMHPmzCr7N27cCC+v+oUCa6Snp9v8nGpzBeB1/dUUQPMWAMpPVh50AeB+/aUAkwCEqIwzJnHT69btW/YJABXX3yv/CanyXDWcQ6DyhZt/BuTQdXP2EtXsv3nbom092t0c7G7eV/mzZNEviz7csr/a/t/0hjrb3drX6vpf3bnqaFfr91Hdvlu+j+o/Q6r+M29RW2i++TNqPX5Lg3qcsn5t6mh06+FqmyvQt4Z8Z1XeUs056vzcuj/WNn8XNjiHYvU2oG91ta3xHDUcsMVnHjl8COv/OFjn+635N7OkpP7PoWz0gcfs1mE7IUSN8zmmT5+OSZMmydsFBQWIiIhAQkIC/Pz8bNYno9GI9PR0xMfHQ6fT7r1zWKd2OEONgHPU6Qw1AqxTSxpSo/kKTX00+sATFBQEV1fXKqM5eXl5VUZ9zPR6PfR6fZX9Op1OkV8kpc7raFindjhDjYBz1OkMNQKsU0usqdGa76LRrzt2d3dHjx49qgyBpaenIyYmRqVeERERkSNp9CM8ADBp0iQ8/fTTiI6ORq9evfDhhx8iOzsbzz33nNpdIyIiIgegicDzxBNP4NKlS3j99deRk5ODjh07Yv369YiMjFS7a0REROQANBF4AGDcuHEYN26c2t0gIiIiB9To5/AQERER1YWBh4iIiDSPgYeIiIg0j4GHiIiINI+Bh4iIiDSPgYeIiIg0j4GHiIiINI+Bh4iIiDSPgYeIiIg0TzN3Wv4zhBAArHvMfH0YjUaUlJSgoKBA00+3ZZ3a4Qw1As5RpzPUCLBOLWlIjeZ/t83/jteGgQdAYWEhACAiIkLlnhAREZG1CgsL4e/vX2sbSdQnFmmcyWTC+fPn4evrC0mSbHbegoICRERE4OzZs/Dz87PZeR0N69QOZ6gRcI46naFGgHVqSUNqFEKgsLAQ4eHhcHGpfZYOR3gAuLi4oEWLFoqd38/PT7O/oDdjndrhDDUCzlGnM9QIsE4tsbbGukZ2zDhpmYiIiDSPgYeIiIg0j4FHQXq9HsnJydDr9Wp3RVGsUzucoUbAOep0hhoB1qklStfISctERESkeRzhISIiIs1j4CEiIiLNY+AhIiIizWPgISIiIs1j4FHQ+++/j6ioKHh4eKBHjx7YuXOn2l2qtx07dmDQoEEIDw+HJElYs2aNxXEhBFJSUhAeHg5PT0/ExcXhyJEjFm0MBgNefPFFBAUFwdvbG4MHD8bvv/9uxypqN2fOHNx1113w9fVFcHAwhgwZgmPHjlm00UKdS5YsQefOneWbefXq1Qv/+c9/5ONaqPFWc+bMgSRJmDBhgrxPC3WmpKRAkiSLV2hoqHxcCzWanTt3Dk899RQCAwPh5eWFrl27IiMjQz7e2Gtt1apVlb9LSZLw/PPPA2j89ZmVl5fjtddeQ1RUFDw9PdG6dWu8/vrrMJlMchu71SpIEStXrhQ6nU589NFH4ujRo2L8+PHC29tbnDlzRu2u1cv69evFq6++Kr755hsBQKxevdri+Ny5c4Wvr6/45ptvxKFDh8QTTzwhwsLCREFBgdzmueeeE82bNxfp6eli3759ok+fPqJLly6ivLzcztVUr1+/fiI1NVUcPnxYHDhwQAwcOFC0bNlSFBUVyW20UOfatWvFunXrxLFjx8SxY8fEK6+8InQ6nTh8+LAQQhs13mzPnj2iVatWonPnzmL8+PHyfi3UmZycLO68806Rk5Mjv/Ly8uTjWqhRCCEuX74sIiMjxejRo8Xu3btFVlaW2LRpkzhx4oTcprHXmpeXZ/H3mJ6eLgCIrVu3CiEaf31mb775pggMDBTff/+9yMrKEl999ZXw8fERCxculNvYq1YGHoXcfffd4rnnnrPY1759e/Hyyy+r1KOGuzXwmEwmERoaKubOnSvvKy0tFf7+/uKDDz4QQghx9epVodPpxMqVK+U2586dEy4uLuKHH36wW9+tkZeXJwCI7du3CyG0W6cQQjRt2lT861//0lyNhYWFom3btiI9PV3ExsbKgUcrdSYnJ4suXbpUe0wrNQohxLRp08S9995b43Et1Wo2fvx40aZNG2EymTRV38CBA8WYMWMs9g0dOlQ89dRTQgj7/l3ykpYCysrKkJGRgYSEBIv9CQkJ+Omnn1Tqle1kZWUhNzfXoj69Xo/Y2Fi5voyMDBiNRos24eHh6Nixo8N+B/n5+QCAgIAAANqss6KiAitXrkRxcTF69eqluRqff/55DBw4EA8++KDFfi3VmZmZifDwcERFRWH48OE4deoUAG3VuHbtWkRHR+Pxxx9HcHAwunXrho8++kg+rqVagcp/M1asWIExY8ZAkiRN1Xfvvfdi8+bNOH78OADgv//9L3bt2oUBAwYAsO/fJR8eqoCLFy+ioqICISEhFvtDQkKQm5urUq9sx1xDdfWdOXNGbuPu7o6mTZtWaeOI34EQApMmTcK9996Ljh07AtBWnYcOHUKvXr1QWloKHx8frF69Gh06dJD/x0ILNa5cuRL79u3D3r17qxzTyt/lPffcg+XLl6Ndu3a4cOEC3nzzTcTExODIkSOaqREATp06hSVLlmDSpEl45ZVXsGfPHrz00kvQ6/UYNWqUpmoFgDVr1uDq1asYPXo0AO38vgLAtGnTkJ+fj/bt28PV1RUVFRWYNWsWnnzySQD2rZWBR0GSJFlsCyGq7GvMGlKfo34HL7zwAg4ePIhdu3ZVOaaFOm+//XYcOHAAV69exTfffIOkpCRs375dPt7Yazx79izGjx+PjRs3wsPDo8Z2jb3OxMRE+edOnTqhV69eaNOmDT799FP07NkTQOOvEQBMJhOio6Mxe/ZsAEC3bt1w5MgRLFmyBKNGjZLbaaFWAPj444+RmJiI8PBwi/1aqG/VqlVYsWIF0tLScOedd+LAgQOYMGECwsPDkZSUJLezR628pKWAoKAguLq6VkmeeXl5VVJsY2ReFVJbfaGhoSgrK8OVK1dqbOMoXnzxRaxduxZbt25FixYt5P1aqtPd3R233XYboqOjMWfOHHTp0gWLFi3STI0ZGRnIy8tDjx494ObmBjc3N2zfvh3//Oc/4ebmJvezsdd5K29vb3Tq1AmZmZma+bsEgLCwMHTo0MFi3x133IHs7GwA2vrv5pkzZ7Bp0yY888wz8j4t1ff3v/8dL7/8MoYPH45OnTrh6aefxsSJEzFnzhwA9q2VgUcB7u7u6NGjB9LT0y32p6enIyYmRqVe2U5UVBRCQ0Mt6isrK8P27dvl+nr06AGdTmfRJicnB4cPH3aY70AIgRdeeAHffvsttmzZgqioKIvjWqmzOkIIGAwGzdTYt29fHDp0CAcOHJBf0dHRGDlyJA4cOIDWrVtros5bGQwG/PbbbwgLC9PM3yUA9O7du8otIo4fP47IyEgA2vrvZmpqKoKDgzFw4EB5n5bqKykpgYuLZdRwdXWVl6XbtdZ6T28mq5iXpX/88cfi6NGjYsKECcLb21ucPn1a7a7VS2Fhodi/f7/Yv3+/ACAWLFgg9u/fLy+rnzt3rvD39xfffvutOHTokHjyySerXUbYokULsWnTJrFv3z7xwAMPONSSyb/97W/C399fbNu2zWJ5aElJidxGC3VOnz5d7NixQ2RlZYmDBw+KV155Rbi4uIiNGzcKIbRRY3VuXqUlhDbqnDx5sti2bZs4deqU+OWXX8RDDz0kfH195f9d0UKNQlTeWsDNzU3MmjVLZGZmis8//1x4eXmJFStWyG20UGtFRYVo2bKlmDZtWpVjWqhPCCGSkpJE8+bN5WXp3377rQgKChJTp06V29irVgYeBb333nsiMjJSuLu7i+7du8vLnRuDrVu3CgBVXklJSUKIyqWEycnJIjQ0VOj1enH//feLQ4cOWZzj2rVr4oUXXhABAQHC09NTPPTQQyI7O1uFaqpXXX0ARGpqqtxGC3WOGTNG/j1s1qyZ6Nu3rxx2hNBGjdW5NfBooU7z/Ul0Op0IDw8XQ4cOFUeOHJGPa6FGs++++0507NhR6PV60b59e/Hhhx9aHNdCrRs2bBAAxLFjx6oc00J9QghRUFAgxo8fL1q2bCk8PDxE69atxauvvioMBoPcxl61SkIIYd0AFREREVHjwjk8REREpHkMPERERKR5DDxERESkeQw8REREpHkMPERERKR5DDxERESkeQw8REREpHkMPEQEAIiLi8OECRP+9Hm2bdsGSZJw9erVP32um40ePRpDhgyx6TnVsmzZMjRp0kTtbhA5FT4tnYgaLC4uDl27dsXChQsV/6xFixaB90klooZi4CGiRsHf31/tLhBRI8ZLWkRUrR9++AH+/v5Yvnx5tcdHjx6N7du3Y9GiRZAkCZIk4fTp0/LxjIwMREdHw8vLCzExMVWefn2rc+fO4YknnkDTpk0RGBiIhx9+2OJ8t17SKiwsxMiRI+Ht7Y2wsDC88847VS7LlZWVYerUqWjevDm8vb1xzz33YNu2bfJx86WlDRs24I477oCPjw/69++PnJycavtoMpnQokULfPDBBxb79+3bB0mScOrUKQDAggUL0KlTJ3h7eyMiIgLjxo1DUVFRjbVXd7luwoQJiIuLk7eFEJg3bx5at24NT09PdOnSBV9//XWN5yQiSww8RFTFypUrMWzYMCxfvhyjRo2qts2iRYvQq1cvPPvss8jJyUFOTg4iIiLk46+++irmz5+PX3/9FW5ubhgzZkyNn1dSUoI+ffrAx8cHO3bswK5du+TwUVZWVu17Jk2ahB9//BFr165Feno6du7ciX379lm0+ctf/oIff/wRK1euxMGDB/H444+jf//+yMzMtPjsf/zjH/jss8+wY8cOZGdnY8qUKdV+pouLC4YPH47PP//cYn9aWhp69eqF1q1by+3++c9/4vDhw/j000+xZcsWTJ06tcb66+O1115DamoqlixZgiNHjmDixIl46qmnsH379j91XiKn8acfhUpEmmB+uvh7770n/P39xZYtW+r9nptt3bpVABCbNm2S961bt04AENeuXav2PB9//LG4/fbbhclkkvcZDAbh6ekpNmzYIIQQIikpSTz88MNCiMonMOt0OvHVV1/J7a9evSq8vLzk/pw4cUJIkiTOnTtn8Vl9+/YV06dPF0IIkZqaKgCIEydOyMffe+89ERISUmPN+/btE5IkidOnTwshhKioqBDNmzcX7733Xo3v+fLLL0VgYKC8nZqaKvz9/eXtm2szGz9+vIiNjRVCCFFUVCQ8PDzETz/9ZNFm7Nix4sknn6zxc4noBs7hISLZN998gwsXLmDXrl24++675f07d+5EYmKivL106VKMHDmy1nN17txZ/jksLAwAkJeXh5YtW1Zpm5GRgRMnTsDX19dif2lpKU6ePFml/alTp2A0Gi366O/vj9tvv13e3rdvH4QQaNeuncV7DQYDAgMD5W0vLy+0adPGoq95eXk11tWtWze0b98eX3zxBV5++WVs374deXl5GDZsmNxm69atmD17No4ePYqCggKUl5ejtLQUxcXF8Pb2rvHcNTl69ChKS0sRHx9vsb+srAzdunWz+nxEzoiBh4hkXbt2xb59+5Camoq77roLkiQBAKKjo3HgwAG5XUhISJ3n0ul08s/m85hMpmrbmkwm9OjRo8qlIgBo1qxZlX3i+mot83lv3W8+p6urKzIyMuDq6mrRzsfHp9p+ms8p6lgNNnLkSKSlpeHll19GWloa+vXrh6CgIADAmTNnMGDAADz33HN44403EBAQgF27dmHs2LEwGo3Vns/FxaXKZ97c1vy9rVu3Ds2bN7dop9fra+0rEVVi4CEiWZs2bTB//nzExcXB1dUV7777LgDA09MTt912W5X27u7uqKio+NOf2717d6xatQrBwcHw8/OrVz91Oh327NkjzxsqKChAZmYmYmNjAVSOxFRUVCAvLw/33Xffn+7jzUaMGIHXXnsNGRkZ+Prrr7FkyRL52K+//ory8nLMnz8fLi6V0yS//PLLWs/XrFkzHD582GLfgQMH5DDWoUMH6PV6ZGdny/URkXU4aZmILLRr1w5bt27FN998U+eNCFu1aoXdu3fj9OnTuHjxYo0jOHUZOXIkgoKC8PDDD2Pnzp3IysrC9u3bMX78ePz+++9V2vv6+iIpKQl///vfsXXrVhw5cgRjxoyBi4uLPOrTrl07jBw5EqNGjcK3336LrKws7N27F2+99RbWr1/foH6aRUVFISYmBmPHjkV5eTkefvhh+VibNm1QXl6OxYsX49SpU/jss8+qrOq61QMPPIBff/0Vy5cvR2ZmJpKTky0CkK+vL6ZMmYKJEyfi008/xcmTJ7F//3689957+PTTT/9ULUTOgoGHiKq4/fbbsWXLFnzxxReYPHlyje2mTJkCV1dXdOjQAc2aNUN2dnaDPs/Lyws7duxAy5YtMXToUNxxxx0YM2YMrl27VuOIz4IFC9CrVy889NBDePDBB9G7d2/ccccd8PDwkNukpqZi1KhRmDx5Mm6//XYMHjwYu3fvtlhN1lAjR47Ef//7XwwdOhSenp7y/q5du2LBggV466230LFjR3z++eeYM2dOrefq168fZsyYgalTp+Kuu+5CYWFhldVxb7zxBv7f//t/mDNnDu644w7069cP3333HaKiov50LUTOQBJ1XawmImoEiouL0bx5c8yfPx9jx45VuztE5GA4h4eIGqX9+/fjf//7H+6++27k5+fj9ddfBwCLy0tERGYMPETUaP3jH//AsWPH4O7ujh49emDnzp3yaikiopvxkhYRERFpHictExERkeYx8BAREZHmMfAQERGR5jHwEBERkeYx8BAREZHmMfAQERGR5jHwEBERkeYx8BAREZHmMfAQERGR5v1/pmNUHFNFDXUAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_eigen_values(eig_values)\n",
"plt.savefig('assets/Q5_eigen_values_784.png')"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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yAgiIiKbYtixMT4ygoiIyLYYdmzM3SX/kRG5HMYiIiKyBYYdG2PPDhERkW0x7NiY6flYDDtEREQ2wbBjY6aeHQ5jERER2QTDjo258z47RERENsWwY2NqF/bsEBER2RLDjo1xgjIREZFtMezYGCcoExER2RbDjo3dm6DMsENERGQLDDs2ZrqpIJ+NRUREZBMMOzZmGsZizw4REZFNMOzYmLFnJ0erR55Ob+fWEBEROT+GHRszztkBgCwth7KIiIisjWHHxlwUMijlEgBekUVERGQLDDt2cO9eO+zZISIisjaGHTswztthzw4REZH1MezYgavS8LFnc84OERGR1THs2IHx+VjZfD4WERGR1THs2IFb/pPP2bNDRERkfQw7duCmNISdLPbsEBERWR3Djh2ojT07vIsyERGR1THs2AGHsYiIiGyHYccOOIxFRERkOww7dnBvGIthh4iIyNoYduzAzXjpOYexiIiIrI5hxw44jEVERGQ7DDt2wGEsIiIi23mgsJOXl4dt27bhiy++QEZGBgDg2rVruHv3rkUb56x4NRYREZHtKMp7wOXLl9GzZ08kJSVBo9EgIiICnp6emDdvHnJycvD5559bo51O5d4wFu+zQ0REZG3l7tkZN24cwsLCcPv2bbi5uZnW9+/fH9u3b7do45wVh7GIiIhsp9w9O/v27cP+/fvh4uJitj4kJARXr161WMOcGYexiIiIbKfcPTt6vR46XeF/pP/55x94enpapFHOjldjERER2U65w05ERAQWLlxoWpYkCXfv3sXMmTPRq1cvS7bNaamN99lh2CEiIrK6cg9jffLJJ+jatSsaN26MnJwcDB06FOfOnYOvry/Wrl1rjTY6HeOcHfbsEBERWV+5w05QUBASEhKwdu1aHD16FHq9HmPGjMGwYcPMJixT8VyV9+bsCCEgSZKdW0REROS8yh12AMDNzQ2jR4/G6NGjLd2eSsHYswMAOVq9acIyERERWV65w86KFStK3D5ixIgyn2vPnj346KOPEB8fj+TkZKxfvx79+vUzbRdCYNasWfjyyy9x+/ZttGvXDp9++imaNGli2kej0WDSpElYu3YtsrOz0a1bN3z22WeoWbNmeUuzGeMEZcBwrx2GHSIiIuspd9gZN26c2bJWq0VWVhZcXFygVqvLFXYyMzPRvHlz/Oc//8HTTz9daPu8efOwYMECLFu2DA0aNMD777+PiIgInDlzxnTl1/jx4/Hzzz8jNjYW1apVw8SJE9GnTx/Ex8dDLnfMECGTSVApZNDk6Xn5ORERkZWVO+zcvn270Lpz587hlVdewVtvvVWuc0VFRSEqKqrIbUIILFy4ENOnT8eAAQMAAMuXL4e/vz/WrFmDl156CWlpafjmm2+wcuVKdO/eHQCwatUqBAcHY9u2bejRo0c5q7MdtYvcEHY4SZmIiMiqHmjOzv3q16+PuXPnYvjw4fj7778tcUokJiYiJSUFkZGRpnUqlQpdunTBgQMH8NJLLyE+Ph5ardZsn6CgIDRt2hQHDhwoNuxoNBpoNBrTcnp6OgBDL5VWq7VI+43nK/i1IDelHLehRXqWBlqtq8Xe0x5KqtNZsEbnwBqdA2t0DpaosazHWiTsAIBcLse1a9csdTqkpKQAAPz9/c3W+/v74/Lly6Z9XFxcULVq1UL7GI8vypw5czBr1qxC67du3Qq1Wv2wTS8kLi6u0DpdrhyAhF179+Mfb4u/pV0UVaezYY3OgTU6B9boHB6mxqysrDLtV+6ws3HjRrNlIQSSk5OxZMkSdOrUqbynK9X9l2WX5VLt0vaZNm0aJkyYYFpOT09HcHAwIiMj4eXl9XANLkCr1SIuLg4RERFQKpVm2766fBDXs9PRrHUbhDeobrH3tIeS6nQWrNE5sEbnwBqdgyVqNI7MlKbcYafg1VKAIYxUr14dTzzxBObPn1/e0xUrICAAgKH3JjAw0LQ+NTXV1NsTEBCA3Nxc3L5926x3JzU1FR07diz23CqVCiqVqtB6pVJplV+qos6rVhk++lyd5DS/yNb6/BwJa3QOrNE5sEbn8DA1lvW4B3o2VsGXTqdDSkoK1qxZYxZKHladOnUQEBBg1r2Vm5uL3bt3m4JM69atoVQqzfZJTk7GyZMnSww7jsBNyYeBEhER2YLF5uw8iLt37+L8+fOm5cTERCQkJMDHxwe1atXC+PHjMXv2bNSvXx/169fH7NmzoVarMXToUACAt7c3xowZg4kTJ6JatWrw8fHBpEmTEBoaaro6y1EZbyyYnZtn55YQERE5tzKFnYLzW0qzYMGCMu975MgRdO3atdD7jBw5EsuWLcPkyZORnZ2NsWPHmm4quHXrVrOnq3/yySdQKBQYOHCg6aaCy5Ytc9h77Bi58flYRERENlGmsHPs2LEynay8z3gKDw+HEKLE80VHRyM6OrrYfVxdXbF48WIsXry4XO9tbxzGIiIiso0yhZ2dO3daux2Vzr1hLIYdIiIiayr3BGWyDDcXQ87kMBYREZF1PdAE5cOHD+P7779HUlIScnNzzbb9+OOPFmmYs+MwFhERkW2Uu2cnNjYWnTp1wunTp7F+/XpotVqcPn0aO3bsgLe3k9wK2AY4jEVERGQb5Q47s2fPxieffIJffvkFLi4uWLRoEf766y8MHDgQtWrVskYbndK9q7F46TkREZE1lTvsXLhwAb179wZguBNxZmYmJEnCm2++iS+//NLiDXRWHMYiIiKyjXKHHR8fH2RkZAAAatSogZMnTwIA7ty5U+YHchGHsYiIiGyl3BOUO3fujLi4OISGhmLgwIEYN24cduzYgbi4OHTr1s0abXRKvKkgERGRbZQ77CxZsgQ5OTkADE8PVyqV2LdvHwYMGIAZM2ZYvIHOisNYREREtlHusOPj42P6XiaTYfLkyZg8ebJFG1UZqPPvs8NhLCIiIusq95ydrl274ptvvkFaWpo12lNpqDmMRUREZBPlDjuhoaF45513EBAQgKeffhobNmwodGNBKp1rgWGskp4PRkRERA+n3GHnv//9L65evYqffvoJnp6eGDlyJAICAvDiiy9i9+7d1mijUzL27ABAjlZvx5YQERE5twd6NpZMJkNkZCSWLVuG69ev44svvsChQ4fwxBNPWLp9Tss4QRngjQWJiIis6YGejWWUkpKC2NhYrFq1CsePH0ebNm0s1S6nJ5NJcFXKkKPV84osIiIiKyp3z056ejpiYmIQERGB4OBgLF26FH379sXZs2fxxx9/WKONTst0+TknKRMREVlNuXt2/P39UbVqVQwcOBCzZ89mb85DULsocDtLyyuyiIiIrKjcYeenn35C9+7dIZM90HQfKsB4F2UOYxEREVlPucNOZGSkNdpRKXEYi4iIyPrYPWNHfD4WERGR9THs2JGaw1hERERWx7BjR/eGsXifHSIiImth2LEjDmMRERFZ3wPdVHD79u3Yvn07UlNTodebP+rg22+/tUjDKgMOYxEREVlfucPOrFmz8O677yIsLAyBgYGQJMka7aoUeDUWERGR9ZU77Hz++edYtmwZnnvuOWu0p1JxczF8/BzGIiIisp5yz9nJzc1Fx44drdGWSofDWERERNZX7rDz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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_eigen_values(eig_values, 80)\n",
"plt.arrow(23, 38, -10, -20, head_width=3, head_length=5, fc='r', ec='r')\n",
"plt.text(33, 48, \"This is an Elbow!\", ha=\"right\", bbox=dict(boxstyle=\"square\", ec=(1., 0.5, 0.5), fc=(1., 0.8, 0.8)))\n",
"plt.savefig('assets/Q5_eigen_values_80.png')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## E. Compressing"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"W = eig_vectors[0:10,:].T\n",
"X_pca = np.matmul(X, W)"
]
},
{
"cell_type": "code",
"execution_count": 129,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9AAAAGdCAYAAAD695tzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABnBklEQVR4nO3dfVxUdf7//+fINQoYEleJSG1eJGYGpWgpaqKYlheV1a5pn7JcL8rIj7vabqFbUq2Zu5qafUwyM93fx2wrLaU1tFZtlbRMzbVNAw1SUUG8AMX5/eGX+TTC4LxhcGB43G+3c7s5Z17nnPeZEV68zvt93sditVqtAgAAAAAA1Wri7gYAAAAAANAQUEADAAAAAOAECmgAAAAAAJxAAQ0AAAAAgBMooAEAAAAAcAIFNAAAAAAATqCABgAAAADACRTQAAAAAAA4wdvdDQAANBxnz55VWVmZS/bl6+srf39/l+wLAAC4Brm+ehTQAACnnD17VnFxcSooKHDJ/iIjI7V//36PS6wAADRU5PrLo4AGADilrKxMBQUFys3NVXBwcK32VVxcrFatWqmsrMyjkioAAA0Zuf7yKKABAEaCg4NrnVQBAED9Ra53jEnE4FJbtmzRvffeq6ioKPn6+ioyMlL33HOPNm/ebLSf9PR0WSyWGrUhOztbFotF2dnZNdreWcnJyUpOTnYqLj4+vk7bAlxJVqvVJYuJjIwM3XLLLQoKClJ4eLgGDx6svXv32sWMGjVKFovFbunatatdTGlpqSZMmKCwsDA1bdpUd911lw4ePFjrzwQAAE/ijlzfUFBAw2XmzJmj7t276+DBg3r55Zf16aefaubMmTp06JBuu+02zZ071+l9Pfroo8ZFd4Wbb75Zmzdv1s0331yj7QFUzx1JdcOGDRo3bpy2bNmirKwsnT9/XikpKTp16pRdXP/+/ZWfn29b1qxZY/f+xIkTtWrVKi1fvlxffPGFSkpKNHDgQJWXl9f6cwEAwFNQQDvGEG64xD//+U9NnDhRAwYM0KpVq+Tt/X//te6//34NGTJETz75pDp37qzu3bs73M/p06cVGBioli1bqmXLljVqS3BwcKVeJwAN2yeffGL3evHixQoPD1dOTo569OhhW+/n56fIyMgq91FUVKRFixbp7bff1h133CFJWrp0qWJiYvTpp5+qX79+dXcCAADAI9ADDZfIyMiQxWLR/Pnz7YpnSfL29ta8efNksVj04osv2tZXDNP+6quvdM899+iqq67SddddZ/feL5WWlurpp59WZGSkAgMD1aNHD+Xk5Kh169YaNWqULa6qIdyjRo1Ss2bN9P3332vAgAFq1qyZYmJi9PTTT6u0tNTuONOmTVOXLl0UGhqq4OBg3XzzzVq0aJFLr6JZLBaNHz9eixcvVtu2bRUQEKDExERt2bJFVqtVf/7znxUXF6dmzZqpd+/e+v777+22z8rK0t13362WLVvK399fv/rVr/T444/r6NGjlY7197//XTfeeKP8/Px07bXX6i9/+UuVn6/VatW8efN00003KSAgQFdddZXuuece/fDDDy47b3gGV16VLi4utlsu/Xl0pKioSJIUGhpqtz47O1vh4eFq06aNRo8ercOHD9vey8nJ0blz55SSkmJbFx0drfj4eG3atKm2HwsAAB6DHmjH6IFGrZWXl+uzzz5TYmKiw17jmJgYJSQkaP369SovL5eXl5ftvaFDh+r+++/XmDFjKg3H/KWHH35YK1as0OTJk9W7d2/t3r1bQ4YMUXFxsVPtPHfunO666y498sgjevrpp7Vx40b96U9/UkhIiJ599llb3IEDB/T444+rVatWki7e1z1hwgQdOnTILq62PvroI23fvl0vvviiLBaLfve73+nOO+/UyJEj9cMPP2ju3LkqKipSWlqahg0bph07dtiK3v/85z9KSkrSo48+qpCQEB04cECzZs3Sbbfdpp07d8rHx0fSxV67oUOHqkePHlqxYoXOnz+vmTNn6ueff67Unscff1yZmZl64okn9NJLL+nYsWOaPn26unXrpq+//loREREuO3c0bK5IihXbx8TE2K1/7rnnlJ6eftlt09LSdNttt9nNL5Camqp7771XsbGx2r9/v/74xz+qd+/eysnJkZ+fnwoKCuTr66urrrrKbn8REREue1wHAACewJW53tNQQKPWjh49qtOnTysuLq7auLi4OP3rX/9SYWGhwsPDbetHjhypadOmVbvt7t279e677+p3v/udMjIyJEl9+/ZVRESEHnjgAafaWVZWpmnTpunee++VJPXp00fbtm3TsmXL7ArjxYsX2/594cIFJScny2q16i9/+Yv++Mc/1nhys0uVlpZq3bp1atq0qaSLvdKDBw/WZ599pq+++sp2nCNHjmjixIn6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8f/93/9tFP/kk08axZteaTf9zmrC9OfAtE3l5eVG8fXx/x2A+m3z5s367W9/q759++r999+Xn5+f7b2+ffvq6aef1ieffOLGFtbMmTNnFBAQ4O5mAGiEGMINADDCsC6g4ZgxY4YsFosWLlxoVzxX8PX11V133WV7feHCBb388stq166d/Pz8FB4eroceekgHDx602y45OVnx8fHavHmzunXrpoCAALVu3VqLFy+WJK1evVo333yzAgMD1bFjx0pFesUw5e3bt2vo0KEKDg5WSEiIfvOb3+jIkSN2sa1bt9bAgQP13nvvqXPnzvL399e0adMkSQUFBXr88cfVsmVL+fr6Ki4uTtOmTdP58+ft9jF//nx16tRJzZo1U1BQkNq1a6epU6fa3j99+rQmTZpkG+IeGhqqxMREvfvuu3b72bZtm+666y6FhobK399fnTt31t/+9rdKn+uWLVvUvXt3+fv7Kzo6WlOmTNG5c+ccfk+XU9vP+/vvv9fDDz+s66+/XoGBgbrmmms0aNAg7dy5s9Kxdu3apZSUFAUGBurqq6/WuHHjtHr1alksFmVnZ9vFfvrpp+rTp4+Cg4MVGBio7t276x//+EeNzxP1B7neMXqgAQDGPDUpAp6kvLxc69evV0JCgmJiYpza5re//a0WLlyo8ePHa+DAgTpw4ID++Mc/Kjs7W1999ZXCwsJssQUFBXr44Yc1efJktWzZUnPmzNF//dd/KS8vT//7v/+rqVOnKiQkRNOnT9fgwYP1ww8/KDo62u54Q4YM0X333acxY8Zo165d+uMf/6jdu3fryy+/lI+Pjy3uq6++0p49e/SHP/xBcXFxatq0qQoKCnTrrbeqSZMmevbZZ3Xddddp8+bNev7553XgwAFbcbl8+XKNHTtWEyZM0MyZM9WkSRN9//332r17t23/aWlpevvtt/X888+rc+fOOnXqlL799lsVFhbaYj777DP1799fXbp00YIFCxQSEqLly5dr+PDhOn36tEaNGiVJ2r17t/r06aPWrVsrMzNTgYGBmjdvnpYtW2b8Hf5SbT7vn376SS1atNCLL76oq6++WseOHdNbb72lLl26aPv27Wrbtq0kKT8/Xz179lTTpk01f/58hYeH691339X48eMrtWfp0qV66KGHdPfdd+utt96Sj4+PXn/9dfXr109r165Vnz59anW+cD9yfdUooAEAADzQ0aNHdfr0acXFxTkV/91332nhwoUaO3as5syZY1vfuXNndenSRa+++qpeeOEF2/rCwkKtXbtWCQkJkqTExESFh4frxRdf1Pfff28r3qKjo3XTTTdp5cqVmjBhgt0xhw4dqpdfflmSlJKSooiICP3617/W3/72N/3617+2xR0+fFi7d+9WmzZtbOvGjBmj48ePa9euXWrVqpUkqU+fPgoICNCkSZNs93v/85//VPPmzfXXv/7Vtu2lxd0///lPpaSk6KmnnrKtu/POO+1ixo4dqw4dOmj9+vXy9r74J3S/fv109OhRTZ06VQ899JCaNGmi6dOny2q1av369YqIiLDtKz4+3qnvwZHafN49evRQjx49bPsqLy/XnXfeqQ4dOuj111/XrFmzJEmvvvqqjh07po0bN+qGG26QJKWmpqp///52k5+dPn1aTz75pAYOHGh3//yAAQN08803a+rUqfryyy9rdb5AfcUQbgCAEYZ1AZ7ps88+kyRbT2qFW2+9Ve3bt680NDcqKspWzElSaGiowsPDddNNN9n1NLdv316S9OOPP1Y65i+LZEm677775O3tbWtLhRtvvNGueJakjz76SL169VJ0dLTOnz9vW1JTUyVJGzZssLX/xIkTeuCBB/T3v/+9yjk3br31Vn388cf6/e9/r+zsbJ05c8bu/e+//17fffedrb2/PN6AAQOUn5+vvXv3Srr4Ofbp08dWPEuSl5eXhg8fXum4JmrzeZ8/f14zZszQDTfcIF9fX3l7e8vX11f79u3Tnj17bHEbNmxQfHy8rXiu8MADD9i93rRpk44dO6aRI0fafRYXLlxQ//79tXXrVp06dapW5wv3Itc7Rg80AMAIM3MCDUNYWJgCAwO1f/9+p+IrhitHRUVVei86OrpSARwaGlopztfXt9J6X19fSdLZs2crxUdGRtq99vb2VosWLeyGTjtq088//6wPP/zQbqj3L1UUyiNGjND58+f1xhtvaNiwYbpw4YJuueUWPf/88+rbt68k6a9//atatmypFStW6KWXXpK/v7/69eunP//5z7r++uv1888/S5ImTZqkSZMmVXu8wsLCSudV1bmaqs3nnZaWptdee02/+93v1LNnT1111VVq0qSJHn30UbuLBYWFhVWOWPjlxQBJts/jnnvucdjeY8eOqWnTpk6cGeojcr1jFNAAAAAeyMvLS3369NHHH3+sgwcPqmXLltXGt2jRQtLF+2Avjf3pp5/s7n92lYKCAl1zzTW21+fPn1dhYaGtLRWqespBWFiYbrzxRrth5b/0y17Zhx9+WA8//LBOnTqljRs36rnnntPAgQP173//W7GxsWratKmmTZumadOm6eeff7b1Rg8aNEjfffed7dynTJmioUOHVnm8ivuIW7RooYKCgirP1V0q7leeMWOG3fqjR4+qefPmttctWrSwFce/dGnbKz6POXPmqGvXrlUe89KiG/AUFNAAACNclQYajilTpmjNmjUaPXq0/v73v9t6JyucO3dOn3zyiQYNGqTevXtLulhs3XLLLbaYrVu3as+ePXrmmWdc3r533nnHbljy3/72N50/f17JycmX3XbgwIFas2aNrrvuOl111VVOHa9p06ZKTU1VWVmZBg8erF27dik2NtYuJiIiQqNGjdLXX3+t2bNn6/Tp02rbtq2uv/56ff3115WK0Ev16tVLH3zwgX7++WdbEVleXq4VK1Y41ca6YLFYKs3Cvnr1ah06dEi/+tWvbOt69uypmTNnavfu3XbDuJcvX263bffu3dW8eXPt3r27ygnG0PCR6x2jgAYAGCGpAg1HUlKS5s+fr7FjxyohIUG//e1v1aFDB507d07bt2/XwoULFR8fr0GDBqlt27Z67LHHNGfOHDVp0kSpqam2WbhjYmLsJthylffee0/e3t7q27evbRbuTp066b777rvsttOnT1dWVpa6deumJ554Qm3bttXZs2d14MABrVmzRgsWLFDLli01evRoBQQEqHv37oqKilJBQYEyMjIUEhJiu1DQpUsXDRw4UDfeeKOuuuoq7dmzR2+//baSkpIUGBgoSXr99deVmpqqfv36adSoUbrmmmt07Ngx7dmzR1999ZX+v//v/5Mk/eEPf9AHH3yg3r1769lnn1VgYKBee+01t94TPHDgQGVmZqpdu3a68cYblZOToz//+c+VRhpMnDhRb775plJTUzV9+nRFRERo2bJl+u677yRJTZpcnD6pWbNmmjNnjkaOHKljx47pnnvuUXh4uI4cOaKvv/5aR44c0fz586/4ecJ1yPWOUUADAAB4sNGjR+vWW2/Vq6++qpdeekkFBQXy8fFRmzZt9OCDD9r1IM6fP1/XXXedFi1apNdee00hISHq37+/MjIyKg2rdoX33ntP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IEVHR8tisej999+3e3/UqFGyWCx2S9euXe1iSktLNWHCBIWFhalp06a66667dPDgwdp+HB5j3rx5iouLk7+/vxISEvT5559XG79hwwYlJCTI399f1157rRYsWHCFWgoAqGvuvF1r7NixOnDggEpLS5WTk6MePXrY3svMzFR2drZdfM+ePfXVV1+ptLRU+/fvt/VW1xXjHuht27apV69ettdpaWmSpJEjRyozM1OTJ0/WmTNnNHbsWB0/flxdunTRunXrFBQU5LpWo86Z/oc3neWuvvU+3XDDDUbx//u//2t8jH/84x9G8abPTj927JhRfHx8vFG86UQMpoXJoEGDjOIfe+wxo/j//Oc/RvGStG/fPqP4vXv3GsWfPXvWKL4xO3XqlDp16qSHH37Y4VXl/v37a/HixbbXvr6+du9PnDhRH374oZYvX64WLVro6aef1sCBA5WTkyMvL686bX99t2LFCk2cOFHz5s1T9+7d9frrrys1NVW7d+9Wq1atKsXv379fAwYM0OjRo7V06VL985//1NixY3X11VfX6VV/AADczbiATk5Orrb4sVgsSk9PV3p6em3aBQCop9wxrCs1NVWpqanVxvj5+dnm4rhUUVGRFi1apLffflt33HGHJGnp0qWKiYnRp59+qn79+hm1x9PMmjVLjzzyiB599FFJ0uzZs7V27VrNnz+/yud1LliwQK1atdLs2bMlSe3bt9e2bds0c+ZMCmgA8ADcruVYnczCDQDwXK4c1lVcXGy3lJaW1rhd2dnZCg8PV5s2bTR69GgdPnzY9l5OTo7OnTunlJQU27ro6GjFx8dr06ZNNf8wPEBZWZlycnLsPhtJSklJcfjZbN68uVJ8v379tG3bNp07d67KbUpLSyt93wCA+oknbjhGAQ0AcJuYmBiFhITYlqp6O52Rmpqqd955R+vXr9crr7yirVu3qnfv3raCvKCgQL6+vrrqqqvstouIiKj05IjG5ujRoyovL6/0tIzqPpuCgoIq48+fP6+jR49WuU1GRobddx0TE+OaEwAA4Apy6SzcAADP58phXXl5eXaPL/Tz86vR/oYPH277d3x8vBITExUbG6vVq1dr6NCh1bbDdA4HT3Xp53C5z6aq+KrWV5gyZYpt3hTp4ugDimgAqJ8Ywu0YBTQAwIgrk2pwcLBdAe0qUVFRio2NtU0EFxkZqbKyMh0/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JCTo888/d3eT6kx6erosFovdEhkZ6e5muczGjRs1aNAgRUdHy2Kx6P3337d732q1Kj09XdHR0QoICFBycrJ27drlnsa6wOXOd9SoUZW+765du7qnsS6QkZGhW265RUFBQQoPD9fgwYO1d+9euxhP+46dOWdP+p6tVqtLFgAAUD/V91x/4MABPfLII4qLi1NAQICuu+46PffccyorK7vsedX2b9AGUUCvWLFCEydO1DPPPKPt27fr9ttvV2pqqnJzc93dtDrToUMH5efn25adO3e6u0kuc+rUKXXq1Elz586t8v2XX35Zs2bN0ty5c7V161ZFRkaqb9++Onny5BVuqWtc7nwlqX///nbf95o1a65gC11rw4YNGjdunLZs2aKsrCydP39eKSkpOnXqlC3G075jZ85Z8qzvGQAAwF2+++47XbhwQa+//rp27dqlV199VQsWLNDUqVOr3c4lf4NaG4Bbb73VOmbMGLt17dq1s/7+9793U4vq1nPPPWft1KmTu5txRUiyrlq1yvb6woUL1sjISOuLL75oW3f27FlrSEiIdcGCBW5ooWtder5Wq9U6cuRI69133+2W9lwJhw8ftkqybtiwwWq1ev53bLVWPmer1TO+56KiIqskq4+Pj9XX17dWi4+Pj1WStaioyN2nBQAA/p+GnOtffvlla1xcnMP3XfU3aL3vgS4rK1NOTo5SUlLs1qekpGjTpk1ualXd27dvn6KjoxUXF6f7779fP/zwg7ubdEXs379fBQUFdt+3n5+fevbs6dHfd3Z2tsLDw9WmTRuNHj1ahw8fdneTXKaoqEiSFBoaKqlxfMeXnnMFT/merfV8WBcAAKgdV+b64uJiu6W0tLRO2lxUVFTpb69fctXfoPW+gD569KjKy8sVERFhtz4iIkIFBQVualXd6tKli5YsWaK1a9fqjTfeUEFBgbp166bCwkJ3N63OVXynjen7Tk1N1TvvvKP169frlVde0datW9W7d+86++VyJVmtVqWlpem2225TfHy8JM//jqs6Z8mzv2cAAABHYmJiFBISYlsyMjJcfoz//Oc/mjNnjsaMGeMwxlV/gzaYWbgtFovda6vVWmmdp0hNTbX9u2PHjkpKStJ1112nt956S2lpaW5s2ZXTmL7v4cOH2/4dHx+vxMRExcbGavXq1Ro6dKgbW1Z748eP1zfffKMvvvii0nue+h07OmdP+p5d0XtMDzQAAPWXK3N9Xl6egoODbev9/PwcbpOenq5p06ZVu9+tW7cqMTHR9vqnn35S//79de+99+rRRx+9bLtq+zdovS+gw8LC5OXlVemqwOHDhytdPfBUTZs2VceOHbVv3z53N6XOVcw2XlBQoKioKNv6xvR9R0VFKTY2tsF/3xMmTNAHH3ygjRs3qmXLlrb1nvwdOzrnqjTk75kCGgAAz+bKXB8cHGxXQFdn/Pjxuv/++6uNad26te3fP/30k3r16qWkpCQtXLiw2u1c9TdovR/C7evrq4SEBGVlZdmtz8rKUrdu3dzUqiurtLRUe/bssfuiPVVcXJwiIyPtvu+ysjJt2LCh0XzfhYWFysvLa7Dft9Vq1fjx4/Xee+9p/fr1iouLs3vfE7/jy51zVRr69wwAAOBqYWFhateuXbWLv7+/JOnQoUNKTk7WzTffrMWLF6tJk+pLW1f9DVrvC2hJSktL0//8z//ozTff1J49e/TUU08pNze32jHuDdmkSZO0YcMG7d+/X19++aXuueceFRcXa+TIke5umkuUlJRox44d2rFjh6SLN/Tv2LFDubm5slgsmjhxombMmKFVq1bp22+/1ahRoxQYGKgHH3zQvQ2voerOt6SkRJMmTdLmzZt14MABZWdna9CgQQoLC9OQIUPc2/AaGjdunJYuXaply5YpKChIBQUFKigo0JkzZyTJI7/jy52zp33P7pxEbN68eYqLi5O/v78SEhL0+eefu/jsAABAfZ8w9KefflJycrJiYmI0c+ZMHTlyxPb31y+1a9dOq1atkuTCv0Gdnq/bzV577TVrbGys1dfX13rzzTfbPR7G0wwfPtwaFRVl9fHxsUZHR1uHDh1q3bVrl7ub5TKfffaZVVKlZeTIkVar9eIU888995w1MjLS6ufnZ+3Ro4d1586d7m10LVR3vqdPn7ampKRYr776aquPj4+1VatW1pEjR1pzc3Pd3ewaq+pcJVkXL15si/G07/hy5+wp33PFoy0kWS0WS62Wiv2YPNpi+fLlVh8fH+sbb7xh3b17t/XJJ5+0Nm3a1Prjjz/W4VkDANB4uDvXO2vx4sUO//76pbr4G9Ty/3YMAEC1iouLFRISIqnyBBymKlJPUVGR0/dFdenSRTfffLPmz59vW9e+fXsNHjy4Tmb0BACgsXF3rm8IGsQQbgBA/WK9wkO6ysrKlJOTY/fsRklKSUnxmOeHAwBQn1zpXN9Q1PtZuAEAnqu4uNjutZ+fX5WPtzh69KjKy8s99vnhAACgYaAHGgDgFF9fX9sjIFyhWbNmiomJUUhIiG253FBsT31+OAAA9YGrc31kZKR8fX1dtr/6gB5oAIBT/P39tX//fpWVlblkf1UVv1X1PksXH2vh5eVVqbfZE54fDgBAfeHqXO/r62t77JSnoIAGADjN39/fLYnQ19dXCQkJysrKsnv0V1ZWlu6+++4r3h4AADyVu3J9Q0EBDQBoENLS0jRixAglJiYqKSlJCxcuVG5ursaMGePupgEAgEaCAhoA0CAMHz5chYWFmj59uvLz8xUfH681a9YoNjbW3U0DAACNBM+BBgAAAADACczCDQAAAACAEyigAQAAAABwAgU0AAAAAABOoIAGAAAAAMAJFNAAAAAAADiBAhoAAAAAACdQQAMAAAAA4AQKaAAAAAAAnEABDQAAAACAEyigAQAAAABwAgU0AAAAAABOoIAGAAAAAMAJ/z8tUOKYHRpVwAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1200x500 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(12, 5))\n",
"\n",
"plt.subplot(1, 2, 1)\n",
"plot_image(X[1])\n",
"plt.title('Original Image')\n",
"\n",
"plt.subplot(1, 2, 2)\n",
"plot_image(X_pca[1], 2, 5)\n",
"plt.title('Compressed Image')\n",
"\n",
"plt.savefig('assets/Q5_compressed.png')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

Xet Storage Details

Size:
124 kB
·
Xet hash:
929b787313974f5b44591a747c705f4ab8ad71b50797e22e03e10ecfcb1ed22b

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.