Skip to content

Instantly share code, notes, and snippets.

@kiwamizamurai
Created November 26, 2018 10:18
Show Gist options
  • Save kiwamizamurai/a04feae4d7285a664178366cbf6cd8eb to your computer and use it in GitHub Desktop.
Save kiwamizamurai/a04feae4d7285a664178366cbf6cd8eb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 今回の目的\n",
"\n",
"- 固有値、固有ベクトルを理解する\n",
"- PCAを理解する"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 固有ベクトルが回転しないベクトル & 固有値が伸縮率であることを確かめよう"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"sns.set_style(\"whitegrid\")\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x1a16bde780>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAFkCAYAAADbgnvLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAFHhJREFUeJzt3H+sXHWZx/H3LaVUtCUYV42JQtD08RrdVS8JNYI0CrJsNKy/NhFFLawGwx/+jC4GTUg0RsOiGDW43SL+wB8Rxd3ErbDRiEQtwqysEibPRjaQbMyyBIEC5YrtPfvHnZLxetveM3O4d+bp+5VMcr9nzjnzybR8eu4zZ5hpmgZJUi3r1jqAJKl7lrskFWS5S1JBlrskFWS5S1JBlrskFbR+nIMj4ulADzgT2AdcDTTA7cBFmbkwbkBJUnsjX7lHxNHAl4BHB5suBy7JzNOAGeCc8eNJkkYxzljmMuBK4HeD9Rxw4+DnXcAZY5xbkjSGkcYyEfEO4N7MvD4iLh5snsnMA193fQg4brlje72eX4mVpBHMzc3NrHTfUWfu5wNNRJwBvBj4KvD0oec3AQ8cIuCIL7t6+v0+s7Ozax3jkKYhI5iza+bs1rTk7PV6rfYfaSyTma/IzNMzcxtwG/A2YFdEbBvscjZw0yjnliSNb6y7ZZb4ALAjIjYAfeDaDs8tSWph7HIfXL0fcPq455Mkjc8vMUlSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQZa7JBVkuUtSQetHPTAijgJ2AAHsB7YDM8DVQAPcDlyUmQvjx5QktTHOlftrATLz5cDHgMsHj0sy8zQWi/6csRNKklobudwz8/vAuwbLE4B7gDngxsG2XcAZY6WTJI1kpmmasU4QEV8BXge8Ebg6M5812P5K4PzMfOvw/r1erzn22GPHes3VMD8/z8aNG9c6xiFNQ0YwZ9fM2a1pybl3717m5uZmVrr/yDP3AzLz7RHxYeBm4ElDT20CHljumNnZ2XFf9gnX7/cnPuc0ZARzds2c3ZqWnL1er9X+I49lIuK8iLh4sNwLLAC3RsS2wbazgZtGPb8kaXTjXLl/D/hyRPwUOBp4L9AHdkTEhsHP144fUZLU1sjlnpmPAH+3zFOnjx5HktQFv8QkSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQWtH+WgiDgauAo4ETgG+DhwB3A10AC3Axdl5kInKSVJrYx65f5W4L7MPA04G/g8cDlwyWDbDHBONxElSW2NWu7fAT46tN4HzAE3Dta7gDPGyCVJGsNM0zQjHxwRm4B/BXYAl2XmswbbXwmcn5lvXXpMr9drjj322JFfc7XMz8+zcePGtY5xSNOQEczZNXN2a1py7t27l7m5uZmV7j/SzB0gIp4NXAd8MTO/ERGfHnp6E/DAwY6dnZ0d9WVXTb/fn/ic05ARzNk1c3ZrWnL2er1W+480lomIZwA3AB/OzKsGm38VEdsGP58N3DTKuSVJ4xv1yv0jwPHARyPiwOz9PcDnImID0Aeu7SCfJGkEI5V7Zr6HxTJf6vTx4kiSuuCXmCSpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpoPXjHBwRpwCfysxtEfE84GqgAW4HLsrMhfEjSpLaGvnKPSI+BPwzsHGw6XLgksw8DZgBzhk/niRpFONcud8JvB742mA9B9w4+HkX8GrguuUO7Pf7Y7zs6pifn5/4nNOQEczZNXN2a1pytjVyuWfmdyPixKFNM5nZDH5+CDjuYMfOzs6O+rKrpt/vT3zOacgI5uyaObs1LTl7vV6r/bv8QHV4vr4JeKDDc0uSWuiy3H8VEdsGP58N3NThuaUn1MJCw/2P7qNpmsfX9z70h4OuV7JP2/VK95FWYqy7ZZb4ALAjIjYAfeDaDs8tPWEWFhrevGM3t971e06+5WGuueAU3rLzZnp338/cCcf/2fqb79wKwJt37D7oPm3XKznnN9+5lXXrZtbyrdIUGavcM/MuYOvg5/8CTu8gk7Sq7nvkMXp338/+Bnp3389v732Y3t33s2+hWXZ93yOPARxyn7brlZzzvkce4y82HbOWb5WmiF9i0hHvaU/ZwNwJx3PUDMydcDxbnvEU5k44nvXrZpZdP+0pGx4/5mD7tF2v5JxPe8qGtX6rNE2aplnVx6233tpMgzvuuGOtIxzWNGRsmunI+cc/7m/+7We/avbv3//4uv+7Bw+6Xsk+bdcr3Wca3s+mMWfXBt254q7tcuYuTaWFhYa37Lx5ceb+m0dXPB8fZ8Y+yjmduasNy11HPGfuqsiZu454ztxVUpsZThcPZ+7dmYaMTTMdOZ25d8+c3XLmLrXkzF0VWe464jlzV0XO3HXEc+auktrMcLp4OHPvzjRkbJrpyOnMvXvm7JYzd6klZ+6qyHLXEc+Zuypy5q4jnjN3ldRmhtPFw5l7d6YhY9NMR05n7t0zZ7ecuUstOXNXRZa7jnjO3FWRM3cd8Zy5q6Q2M5wuHs7cuzMNGZtmOnI6c++eObvlzF1qyZm7KrLcdcRz5q6KnLnriOfMXSW1meF08XDm3p1pyNg005HTmXv3zNktZ+5SS87cVZHlriOeM3dV5MxdRzxn7iqpzQyni4cz9+5MQ8ammY6czty7Z85uOXOXWnLmroosdx3xnLmrImfuOuI5c1dJbWY4XTycuXdnGjI2zXTkdObePXN2y5m71JIzd1VkueuI58xdFXU6c4+IdRFxZUT8IiJ+EhHP6/L80hPBmbtKajPDOdxjy5Ytr9+yZcvVg5+3btmy5V+W7uPMvTvTkLFppiOnM/fumbNbaz1zPxX4IUBm7o6Ikzs+v9Q5Z+6qqOty3ww8OLTeHxHrM3Pf8E79fr/jl+3e/Pz8xOechoww+Tnvf3Qft971e/Y3cOtdv+fff/nrQ65333Y7QKtjujjn7ttu5/gnrZ/49/MAc66trst9D7BpaL1uabEDzM7Odvyy3ev3+xOfcxoywuTnbJqGk295ePHK/cSnctbWv+Tk3zz6+BXz0vXLXvJCAE6+5eGD7tN2vZJzvuwlL2RmZmbi388DzNmtXq/X7oA2M5zDPbZs2fKGJTP3XUv3cebenWnI2DTTkXP//oXmZ71fNwsLC4+v/2/P/EHXK9mn7Xql+0zD+9k05uzaWs/crwPOjIifAzPA9o7PLz0h1q2b4fgnrWdmZubx9fBth0vXK9mn7Xql+0gr0Wm5Z+YCcGGX55Qktef/W0aSCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SCrLcJakgy12SClo/zsER8TrgTZl57mC9FbgC2AfckJmXjh9RktTWyFfuEXEF8Mkl57gSOBc4FTglIl46XjxJ0ijGGcv8HHj3gUVEbAaOycw7M7MBrgdeNWY+SdIIDjuWiYgLgPct2bw9M78dEduGtm0G9gytHwJOWu6c/X6/ZczVNz8/P/E5pyEjmLNr5uzWtORs67Dlnpk7gZ0rONceYNPQehPwwHI7zs7OrijcWur3+xOfcxoygjm7Zs5uTUvOXq/Xav/O7pbJzD3AYxHx3IiYAc4Cburq/JKklRvrbpllXAhcAxzF4t0yN3d8fknSCoxV7pn5E+AnQ+vdwNbxIkmSxuWXmCSpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpIMtdkgqy3CWpoPWjHBQRxwFfBzYDG4D3Z+YvImIrcAWwD7ghMy/tLKkkacVGvXJ/P/CjzDwdeAfwhcH2K4FzgVOBUyLipWMnlCS1NtKVO/AZ4A9D55iPiM3AMZl5J0BEXA+8CviPsVNKklo5bLlHxAXA+5Zs3p6Zt0TEM1kcz7yXxRHNnqF9HgJOWu6c/X5/tLSraH5+fuJzTkNGMGfXzNmtacnZ1mHLPTN3AjuXbo+IFwHfAj6YmTcOrtw3De2yCXhguXPOzs6OlnYV9fv9ic85DRnBnF0zZ7emJWev12u1/0gz94h4AfAd4NzM3AWQmXuAxyLiuRExA5wF3DTK+SVJ4xl15v5JYCNwRUQAPJiZ5wAXAtcAR7F4t8zNnaSUJLUyUrkPiny57buBrWMlkiSNzS8xSVJBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JBlrskFWS5S1JB60c5KCKeDHwDeCrwCHBeZt4bEVuBK4B9wA2ZeWlnSSVJKzbqlfs7gV5mngZ8C7hksP1K4FzgVOCUiHjp+BElSW2NVO6Z+VngE4Plc4B7ImIzcExm3pmZDXA98KpuYkqS2jjsWCYiLgDet2Tz9sy8JSJ+DLwIOBPYDOwZ2uch4KTlztnv90dLu4rm5+cnPuc0ZARzds2c3ZqWnG0dttwzcyew8yDPvTIing/8AHgJsGno6U3AA8sdNzs72z7pKuv3+xOfcxoygjm7Zs5uTUvOXq/Xav+RxjIRcXFEnDdYPgLsz8w9wGMR8dyImAHOAm4a5fySpPGMdLcMcBXwlcHI5ihg+2D7hcA1g203ZObN40eUJLU1Urln5j3AXy+zfTewddxQkqTx+CUmSSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgix3SSrIcpekgtaPc3BEPB+4GXhGZs5HxFbgCmAfcENmXtpBRklSSyNfuUfEZuAfgT8Mbb4SOBc4FTglIl46XjxJ0ihGKveImAH+CfgIsHewbTNwTGbemZkNcD3wqq6CSpJWbqZpmkPuEBEXAO9bsvlu4FuZ+bWIuAt4PvA04LuZecrguPOBkzLzkuEDe73eoV9QkrSsubm5mZXue9hyX05E/Bb4n8FyK/BL4DXA7sx8wWCf9wBHZ+ZlrV9AkjSWkcp92IEr98EHqrcBbwD+G/gBcGlm3jxuSElSO2PdLbOMC4FrgKNYvFvGYpekNTD2lXsbk37rZEQ8GfgG8FTgEeC8zLx3knJGxHHA14HNwAbg/Zn5i0nKOCwiXge8KTPPHawnLmdErAO+CPwVi3d//X1m/nZtU/2piDgF+FRmbouI5wFXAw1wO3BRZi6scb6jgauAE4FjgI8DdzB5OY8CdgAB7Ae2AzNMWE6AiHg60APOZPG/l6tpkXHVvsQ0JbdOvhPoZeZpwLeAAx8GT1LO9wM/yszTgXcAXxhsn6SMAETEFcAn+dO/ZxOXE/hbYGNmvgz4Bxb/nk6MiPgQ8M/AxsGmy4FLBn9PZ4Bz1irbkLcC9w0ynQ18nsnM+VqAzHw58DEWM05czsE/ll8CHh1sap1xVcp9Wm6dzMzPAp8YLJ8D3DOBOT/D4h86LI7V5icw4wE/B959YDHBOU8FfgiQmbuBk9c2zp+5E3j90HoOuHHw8y7gjFVP9Oe+A3x0aL2PCcyZmd8H3jVYngDcwwTmBC5j8ULod4N164xdz9wPd+vkf0bEgW2bgT1D+zwEnNR1noM5SM7tmXlLRPwYeBGLvw6tWc7DZHwmi+OZ965lRjhkzm9HxLahbWua8xA2Aw8OrfdHxPrM3LdWgYZl5ncj4sShTTODfxxh8T08bvVT/anMfBggIjYB17L4W+9lk5YTIDP3RcRXgNcBbwReM0k5I+IdwL2ZeX1EXDzY3PrPvPNyz8ydwM7hbYNbJy8YlMAzgRtYvHVy09Bum4AHus7TJufQc68cfD7wA+AlrFHOg2WMiBexODb6YGbeOLginsj3cok9rGHOQ1iaa92kFPtBDM9aJ+U9JCKeDVwHfDEzvxERnx56emJyAmTm2yPiwyx+BvikoacmIef5QBMRZwAvBr4KPH3o+RVlXJWxTGY+LzO3ZeY24H+BV2fmHuCxiHjuYGxzFnDTauQ5mIi4OCLOGywfAfZPWs6IeAGLvwKfm5m7ACYt48FMcM6fAX8Dj3/g+5u1jXNYvxr6jehsJuA9jIhnsHjR9uHMvGqweRJznjd0NbyXxX8ob52knJn5isw8fdCXtwFvA3a1zdj5lXtLk3br5FXAVwa/YRzF4ifpMFk5P8niB2tXDEZcD2bmOUxWxkOZxJzXAWdGxM9Z/LBq+2H2X2sfAHZExAagz+IYZK19BDge+GhEHJi9vwf43ITl/B7w5Yj4KXA0i2PNPpP3fi7V+s98VW+FlCStDv9/7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQVZ7pJUkOUuSQX9P8HL9cRi8+xWAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(6,6))\n",
"plt.xlim(-40,40)\n",
"plt.ylim(-40,40)\n",
"xx, yy = np.meshgrid(np.arange(0,10,1), np.arange(0,10,1))\n",
"X = np.c_[xx.ravel(), yy.ravel()]\n",
"plt.scatter(X[:,0], X[:,1], s=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$ A = \\begin{bmatrix} 3 & 1 \\\\ 2 & 2 \\end{bmatrix} $$"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x1a16cdf080>"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"A = np.array([[3,1],[2,2]])\n",
"plt.figure(figsize=(6,6))\n",
"plt.xlim(-40,40)\n",
"plt.ylim(-40,40)\n",
"xx, yy = np.meshgrid(np.arange(0,10,1), np.arange(0,10,1))\n",
"X = np.c_[xx.ravel(), yy.ravel()]\n",
"X = np.dot(A,X.T).T\n",
"plt.scatter(X[:,0], X[:,1], s=5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 対角化\n",
"\n",
"$$ A = \\begin{bmatrix} 3 & 1 \\\\ 2 & 2 \\end{bmatrix}, P = \\begin{bmatrix} 1 & 1 \\\\ 1 & -2 \\end{bmatrix} , \n",
"P^{-1} = -\\frac{1}{3} \\begin{bmatrix} -2 & -1 \\\\ -1 & 1 \\end{bmatrix}$$\n",
"\n",
"$$ P A P^{-1} = \\begin{bmatrix} 4 & 0 \\\\ 0 & 1 \\end{bmatrix} $$"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"P * Pinv: \n",
" [[1. 0.]\n",
" [0. 1.]]\n",
"\n",
"Pinv * P: \n",
" [[1. 0.]\n",
" [0. 1.]]\n",
"\n",
"Pinv * A * P: \n",
" [[4.00000000e+00 0.00000000e+00]\n",
" [5.55111512e-17 1.00000000e+00]]\n"
]
}
],
"source": [
"P = np.array([[1,1],[1,-2]])\n",
"Pinv = -1/3 * np.array([[-2,-1],[-1,1]])\n",
"print(\"P * Pinv: \\n\", np.dot(P,Pinv))\n",
"print()\n",
"print(\"Pinv * P: \\n\", np.dot(Pinv,P))\n",
"print()\n",
"print(\"Pinv * A * P: \\n\", np.dot(np.dot(Pinv,A),P))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1a16da54a8>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAFkCAYAAADCJVcoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xt8XHWd//HXmaRNSJtekxahNxH6JbCANqWtggrqilqEXdzuCgtyE2TtooA+FhH8Kb8fuxRdK5dV7ggCLWxRXK4Lu5RlufRC00oR02+p2qaA0iRNL0ma6zm/P87M9GQySeZyJjOTvJ//dOacM+d8Mk3O53zvjud5iIjI6BbJdwAiIpJ/SgYiIqJkICIiSgYiIoKSgYiIoGQgIiJAaTYfNsYsBG6y1p5ijDkSuB/wgN8CS621buDYQ4CHgGnAfuB8a21jNtcXEZFwZFwyMMb8E3APUB7dtBy4zlr7ccABzkz4yD8Ab0b3/wK4LtNri4hIuLKpJvo9cFbgfS3wUvT1s8BnEo4/GfjPQfaLiEieZFxNZK39pTFmTmCTY62NDWfeD0xM+MgEYO8g+wGoq6vTkGgRkQzU1tY6mX42qzaDBG7gdSWwJ2H/vuj2gfbH1dbWhhhWbtTX11NTU5PvMIakOMNTDDGC4gxbscRZV1eX1efD7E20yRhzSvT154GXE/a/CnxhkP0iIpInYZYMvgXcbYwZC9QDjwEYY54HTgduBx4wxrwCdAHnhHhtERHJQlbJwFq7HVgUfb0V+GSSYz4bfdkFLMnmeiIikhsadCYiIkoGIiKiZCAiIigZiIgISgYiIoKSgYhI3lx22WVcdtll+Q4DUDIQEcmLP/3pT7S3t7N371527tyZ73BCHXQmIlKQXNejua2LqvFjcZyMp+8B4Fe/+hUvvPACra2ttLS0sHTpUm677TbmzJnD2LFjuf7667n22mtpaWkB4LrrrsMY0+88jz32GJ/+9KcpLy9nxYoVXH311VnFlS0lAxEZ0VzX4+y711K3o4Xa2ZNZeckiIpHsEkJ7ezs///nP2b17N0uWLKG3t5evf/3rHHPMMfzoRz9i0aJFnHPOOWzfvp1rrrmGlStXJsTk8tRTT/Hoo49SWlrK4sWL+eY3v0l5efkAV8w9JQMRGdGa27qo29FCj+tRt6OF5rYuqivLsjrniSeeSCQSoaqqigkTJvD73/+eD37wgwBs3bqVtWvX8uyzzwKwb98+NmzYwC233ALAxRdfjOM4tLW18a1vfQvwk8OTTz7JkiX5m6RByUBERrSq8WOpnT05XjKoGj8263O+9dZbADQ1NdHa2srUqVOJRPwm2COOOIIzzjiDL37xizQ3N7Nq1Srmz5/Pgw8+GP/85Zdfzg033MApp5wC+DOO3nDDDXlNBmpAFpERzXEcVl6yiDXXfJpHLl2UdZsB+Eng/PPP59JLL+X73/8+JSUl8X2XXXYZzz77LOeddx5f/epXOeqoo/p8trm5mTfeeIOTTz45vq22tpbOzk42btyYdWyZUslAREa8SMTJumoo6MQTT+Tb3/52/P3q1avjrydPnszPfvazAT87depU/vd//7ff9meeeSa0+DKhkoGIiKhkICKSjrPOOmvog4qQSgYiIqJkICIiSgYiIoKSgYiIoGQgIjKsHn30Ubq7u5Pu6+zs5KSTTuKee+4Z5qiUDEREhtWdd96J67pJ9z333HN84Qtf4PHHHx/wmFxR11IRGflcF9qbYFw15GDW0vHjx3PzzTdTVlbGpEmT+Jd/+Rd6enq44oor8DyP7u5urr/+ejZv3kxjYyNXXnll0oFpq1at4tprr2X37t289NJLnHrqqVnFmg4lAxEZ2VwXHjgddq6DmQvh/Kcgkl2lSOKspY7jsHLlSqZPn84DDzzA7bffzsKFC6msrOTHP/4x27Zto7W1lSVLlnD77bfzk5/8pN85t2/fzoEDBzj66KP50pe+xH333TesyUDVRCIysrU3+YnA7fH/bW/K+pTBWUsrKioYM2YM06dPj+97++23+cQnPsGJJ57I17/+dW699db4RHYxDz30EOeddx7nnXce77//PqtWreLAgQNcfPHF3HvvvdTV1bFjx46sY02VSgYiMrKNq/ZLBLGSwbjqrE8ZnLX0wIEDAOzatYtp06axfv165syZw7p165g2bRr33XcfmzZtYvny5Tz44IM4joPrupx77rmce+65APT09PDMM8/w+OOPM2nSJABuv/12VqxYwTXXXJN1vKlQMhCRkc1x/KqhkNoM4OCspfv37+cHP/gBpaWlXH755TiOw8SJE7nxxhtxHIcrr7ySBx54gEgkwtKlSwGYP38+l156Kb/4xS/iM6iuXr2aY489Np4IwJ/24swzz+SKK67gkEMOyTrmoSgZiMjIF4nA+GmhnS5x1lKAj33sY/2Ou//++/ttu+mmm/pt++xnP8tnP/vZPtumT5/O2rVrsws0DWozEBERlQxERNKhWUtFRGTEUjIQERElAxERUTIQERFCbkA2xlwAXBB9Ww58GDjUWrsnuv9W4CRgf/SYM621e8OMQURE0hdqMrDW3g/cD2CM+SlwXywRRM0DTrPWZj8eXEREQpOTaiJjzHzgWGvtXYFtEeAo4C5jzKvGmItycW0REUmf43le6Cc1xvwKuM1a+2JgWyXwTWA5UAK8CFxkrd0c/GxdXZ1XUVERekxh6+jooLy8PN9hDElxhqcYYgTFGbZiibO9vZ3a2tqM59oIfdCZMWYScHQwEUS1A7dYa9ujx60GTgA2JxxHTU1N2GGFrr6+XnGGqBjiLIYYQXGGrVjirKury+rzuagm+gTw30m2zwVeMcaUGGPGACcDG3NwfRERSVMupqMwwB/ib4y5CthmrX3CGPMwsBboBn5hrX0rB9cXEZE0hZ4MrLU/Sni/PPD6h8APw76miIxiIS5pOZpp0JmIFK/YkpbLa+D+xf57yYiSgYgUrxwsaTlaKRmISPGKLWkZKQ1tScvRSusZiEjxysGSlqOVkoGIFLeQl7QcrVRNJCIiSgYiIqJkICIiKBmIiAhKBiIigpKBiIigZCAiIigZiIgISgYiIoKSgYiIoGQgIiIoGYiICEoGIiKCkoGIiKBkICIiKBmIyEjlutC6Czwv35EUBSUDERl5XBceOB2W18D9i/33MiglAxEpfomlgPYm2LkO3B7/3/am/MZXBJQMRKSwpFu9k6wUMK4aZi6ESKn/77jq3MY8AmgNZBEpHLEb+851/k38/Kf8NY4Hk6wUMH6a/9n2Jj8ROM7wxF/EVDIQkcKRSfXOQKWASMRPCkoEKVHJQEQKR+zGHisZpFK94zgqBYRAyUBECkemN/ZYKUAypmQgIoVFN/a8UJuBiIxMGnSWFiUDERl5NOgsbUoGIjLyaNBZ2pQMRGTk0aCztIXegGyM2QTsjb79o7X2wsC+S4CvAT3ADdbap8K+voiIupumL9RkYIwpB7DWnpJk36HAN4D5QDnwijHmv6y1nWHGICJFznXDuYmrV1Jawq4mOgGoMMY8b4xZbYxZFNi3AHjVWttprd0LbAOOD/n6IlLM1PCbN2FXE7UD/wrcAxwFPGuMMdbaHmACB6uPAPYDE5OdpL6+PuSwwtfR0aE4Q1QMcRZDjFDccZZ0NHNUw1ocrxevYS1vv/EaveVT8xShr1i+z2yFnQy2AtustR6w1RjTDHwA2AnsAyoDx1YCe5KdpKamJuSwwldfX684Q1QMcRZDjFDkcXoe/GYR7FyHM3Mhcz98Ut7r+4vl+6yrq8vq82Eng4uA44CvG2MOwy8N/Cm6bz3wz9F2hTKgBvhtyNcXkWKmht+8CbvN4F5gkjHmFeBR/OTwDWPMGdbaPwO3Ai8Dq4FrrbUdIV9fRIqdZhvNi1BLBtbaLuCchM2vBfbfDdwd5jVFRCR7GnQmIiJKBiIiomQgIiIoGYiICEoGIiKCkoGIiKBkICIiKBmIiAhKBiIigpKBiMRoAflRTclARLSOgCgZiAhaQF6UDERGrHSqfbSA/KgX9noGIlIIYtU+O9f5N/fzn/Knhh6I1hEY9VQyEBmJMqn20ToCo5qSgchIpGofSZOqiURGIlX7SJqUDERGqli1j0gKVE0kIiJKBiIiomQgIsloaopRR8lApJDl46asqSlGJSUDkUKVr5uypqYYlZQMRApVvm7KGqMwKqlrqUihit2UY1NKpHpT9qJVS5mOL9AYhVFJyUCkUGVyU3ZdZr24FJrfTG1OooFojMKoo2oikUKW7nxB7U1UNG0+WLXUuEU9giQlSgYixWigXkbjqmmvOt6v7x9TAXecrB5BkhIlA5FCNdANf7BeRo5Dw6k/ha+9DF1t4PWqR5CkRMlApBANdsNP7GXUuqtv0nAiMK0GZi3ySwgzFvj7Uqku0mCzUUvJQKQQDdatNNj1c8YCeOzC/kkj1vh85Vv+658cM3R1kQabjWrqTSRSiAbrVhrsZeR5/o0+WdKIRPxSQmJSGaiXULIEpB5Fo4aSgUghGqpbaayXkeclSRrNB49LZ6xCpuMaZEQINRkYY8YA9wFzgDLgBmvtE4H9VwEXA43RTV+z1towYxAZMVLp6z9U0khnrIIGm41qYZcMzgWarbXnGWOmApuAJwL75wFfsdbWhXxdkdFrqKSRzgAyDTYbtRwvxF4DxpjxgGOt3R9NBq9ba48I7K8H3gIOBZ621t6YeI66ujqvoqIitJhypaOjg/Ly8nyHMSTFGZ5iiBEUZ9iKJc729nZqa2szLs6FWjKw1rYCGGMqgceA6xIOeQT4KbAPeNwYc7q19qnE89TU1IQZVk7U19crzhAVQ5zFECNkGKfrDnv10Ij+PvOgri67CpfQu5YaY2YCLwIPWmtXBLY7wM3W2iZrbRfwNPCRsK8vMqQC6kvvuh6N+zsJs4SexsX976G3d+gupbn4zrzC+X+Q8BuQpwPPA/9orX0hYfcE4LfGmBqgDfgUfmOzyPCJ9aWP9ZjJdCK3UELxOPvutdTtaKF29mRWXrKISGSYGm2D38NhH4F3N/YdrRxsN8jFdxbWhHoSmrAbkL8LTAa+Z4z5XnTb3cA4a+1dxpjv4pcaOoEXrLXPhHx9kcEVUF/65rYu6na00ON61O1oobmti+rKsuG5ePB7eG8THD7P/zdZl9JcfGexCfUGSkAy7MJuM/gm8M1B9j8IPBjmNWV0cl2P5rYuqsaPxUmhjjt+/LgqnHz3pY/Wz1eNq6J29uR4yaBq/NjhiyFxTMFXnoQDzcnbDHIx/iA6od64WMlAYxryToPOpOikW73S7/ivPklkoBtfrgWqXJyZC1n51Sdpbu9JOamFJtmYgoGezHMx/iA6oV7NrGqNaSgQqqSTouK6Hlvf38+GhOqVwfSrjmnvSW+NgDAlVLlEDjRTXVk2vIkgJp21EtJdVyEVTg7OKRlTMpCiEXvCX3zry1SMLaEk4qRUvVI1fiy1sydTmuLxOaX1haVAqZpIikbsCb/Xg/bOHp7+xscxh1YO+VTtOA4rL1mUVhtDzgxV5ZKH/v6DKrR4JGdUMpCi0fcJfwpTxqX+hB+JOOFWx2TT736gKpdCm0K60OKRnFIykKIRe8J/9epPAR4fW7aaL9+1Ftcd5kFLubpJDraGQT4UWjySU0oGUlQiEYdIxGFjw56UG5BDl6ub5FDtCcM9clrtG6OK2gyk6MSqixL756c79iBdrudPHZGzsQqDtSfkY+S0prQeVZQMpOgkaxDO9dQOrutx9XN/Ykvj9tyOVRhoCulURwG7LiUdzX7pIYy4NKX1qKFqIilKiQ3CyaZ2CFNzWxf1uzqSjlXIZrK5lD+bSpVNtPRw1BNnqMFX0qaSgYwIA1UdhXn+mmnlbGns7Fc1lWmJJK3PplJlEy09OJrvRzKgZCAjQq7HEjiOw02nfYBpMz/U5/zZTDaX9meHqrKJlh68hrV+m4YafCUNqiaSESP0sQSJ53f883se8aqdgUY3x6t/3N4BewCFPjI6Wnp4+4wn4IKn/fcFtHaDFDaVDEQSDNYrKVnVzkCN2Rt3NPMf45dR01PvP6kn9AAasjSTyejfSITe8qkHE0GBrN0ghU+/GSIBsRv5R298IemAtmRVOwM1Zk909zG38y2cQcYjDFSacXt76brvC3jZDGzToDFJg5KBSMBQvZISq3amVIzp1xsodsyeyES2lh2Ll+agLdf1uOzO54jsXIfj9uDtXIfX1pj+D6NBY5IGVRPJqJZYJTRUr6Rg1c6UijGcc8+6+LEPX7yQlgPdVI0fe7D6Z9zncNpTG48Qi8XzPFa/47GhZC61ka1s7DmS5Q//npWXThu6p1LiOAMNGpMUKRnIqJW0ayceK88+gmYmUpVQfRMfgTx+LNWVZTTu74yXIjbsaOFv71rD5nf2xs8V7xmUQvfOYCzzZk9m3qzJnNvwPSZ176OJCZQ27Bm6t1FsnEHDWvjNooNtBOpeKilQNZGMWolVQo37DtB13xdwbj6G6l+ehROo+omNQA62JQSrjI4/fCK/2Zn5fEnBWDbuaOG2s+fx2nc+wxFz5lAaiaTW2yjZOAORFCkZyKjVp/5/5kRu+sWvcQL19MGbab8RyG1dfWZRLY1ArK35uMMnMnXcmMxjmT2ZaRPKmDahnEcu/Shrrvk0j1y6aOgus7FxBk6J2ggkbaomktwrlAVSEuKI1/+3djDh0b8m8ue1HKAcvE68D5zI2MDNdKARyLFZVDft3Bs/9o2dezj77nVpjUYeqJtprLdRiifxxxm88RpzP3yS2ggkLUoGkluF0td9gDgiEYfqyH68P72O43jgdbC4cxkP/e35TAvcTAcagQwHn+o37Gih1/VwIe3RyDD4jT/lGVmD4wxE0qBqIsmtQunrPlgc0eqVHkrY6BkmzT6O6gnl/U4RG4GceDOOPdWv+c6nWDDHr+qZN2sSnufFRyC7vW5Wk9kNNvZBJAwqGUhuxfq6hz33f5hxOA7O+U8RaW3kCCby6GBTWgSqmlyP+NN6JOLE6/gbWzu5fOUmTlr23/ERyFtKaziz9TvMmz017em1s5n/SCRVSgaSW3ns696vamWwOCIRIhOmM2iq8ly8+0+Hd9bBjAWc03UdGxr2Mn/WRFaccySRSn8cQMRx2LijhUmxEciOy9zOt/ig+w51O5y0b+a5npFVBJQMZDgM1dc97AVZGGh66Oz63DsdLfQ2rKWUXnoa1vGHzh30epVc+d5VODdvi7dFHLx5e2wtO5aannq6vDE8U3Y1W8uOo2rc59K7bo5nZBUBtRlIvuVoQZZsF7txXY/GfQfw9r8fn/FztzeBOvcour0Ide5RzJgxi2mR/dRG3u4z/1C8DeGaz1Bz9Ys40/+CQ7wDlDpQ0/07f0RymnI9I6uISgaSXzlakCWbqhXX9Tjnrte48r2rmBx5m8ishTT/za+YWF7C/ztsOX9s2MGcWXNYdckidrfNp+SXD/Vri4j3DGrdBe//FgfwgO5DP8yYiip0S5dCo2Qg2ctmHEGOFmQZaJ3koapaXNdj6/v7+UPDDuaN2UopLj0N6zh92eNUV0/n15efSsuB+fFzVE8oH7wtIvbz7VzH1pIjWbzjKmrTHIMgMhyUDCQ72Y4jyOFAqWC//VSWmIwd8/ofd1NRNpmN3lxqnbepc4/ifXcCTbs62NbYijm0sm8yCbRF9Es40Z+vede7LL51Mz1uZmMQRHJNbQaSncT++6270l9ZK8uBUsFF5QdaYD6VNoTmti42bN+NC7R2utxQ9UO44i2WH/YTSiIRykodFt/6Mmff+Rruvvf7/YwDjgeIRJg6fQa1s6eEt6qZSMhUMpDsBPvvz1gAj10I76wfttHGfWb7nDUZ8NjYsKff0398lPD23Rx3+ARc18XzvH4jiU+YOYmNDXsA+N2f22gpmcLKSw9l6/v7+cItL+Ph9us9FPsZ+04218zuXe9QNX1GfOqLhy9eyLbGVuZOH6+GYCk4of6lGmMixpg7jDFrjDH/Y4w5MmH/JcaYDcaYtcaY08O8tuRJrP/+VfWw5H4/EQzjaOM+T/wNLQenlN6+m63v74+XEGI34+NnTGLTzr0svHE1f3fnmvjTu+t6NLV28e+XLuIjsyZREnGYH32Cj0QczKGV1EwrY5qzl9rI1vhkdk273o1fY0rFGI6bMZHSiMd/jF/G1Ls+HO8h5boef3/vOhbf9gpfumMNvb3h9JoSCUvYj21/BZRbaz8KfAf4cWyHMeZQ4BvAScBpwI3GGFWajgSxOvPx04Z9Za3E2T5rZ0+mxIGKslIW3/ZKn+qalgPdbH734IRyseqiYPXO39+7nlWXfpS10ZlCPQ8a93fiuh6O53LrmNsowcUD6kuOZtGtm/nyXWvp6XE55551bN65h48fhr/ucSApNrd1xecu2tSwhyWBRCRSCMKuJjoZ+E8Aa+1aY8z8wL4FwKvW2k6g0xizDTgeeD3kGCRfQh5tnErvn8ReQ54HW9/fz+LbXqE3YfqGWOJY/8fdAPG6+6bWvu0JLQe6qa4s61MFddzhE/hzYxPzyrb63USdEi5oW0qPCxt2tPD2rv3U7Wih14OX33PoPuJExr73OsxciHtIFV5bF8cfPpFNO/0qqDd2prBYjcgwCjsZTAD2Bt73GmNKrbU9SfbtByYmO0l9fX3IYYWvo6NDcQ4qvYFViXG6nr+YTP2uDmqmlXPTaR8gMkRyiVVKeZ5HTXUZ9bs6OLq6jMadv6cp+tnvn1xJ63Fd9IydxOSKMWzZsgXP8zg6evyRU8eyq2EbTZEILQd62LB9N70e/GbnXjwmUOf6S1G2TfkLWhsnggu9rsdVK9bFz3F0dTnbPvqvlHbtoXvsZK6+9UXqd3VgqsZydFUZW5s6qZlW3ieuMOl3M1zFEme2wk4G+4DKwPtINBEk21cJ7El2kpqampDDCl99fb3iDFFinI37O9nSuJ1eD7Y0djJt5ofSeop+4uia/qWKQbrB/nru0fztXWt4Y+ce/u8r+1h5ySIcB+a/3hptnJ5Ee3s75zZ9j1M/EOGf//5UOpatjl9va3M3r13zCSLRdZRj1/R/jh30ev4xr37nU/2OCVux/p8XqmKJs66uLqvPh50MXgW+CPy7MWYR8GZg33rgn40x5UAZUAP8NuTrywiR7eRsSdcGCHaDbViLu38XzRH/3C0HunnznRYme/uo20G8CidYBfW7+vr4egYA8+dM6VPlNK2yzF8qs60xXk2W+HNMSzKlhNvby+7G95g67XCcfKz1IEL4yeBx4C+NMa8BDnChMeYqYJu19gljzK3Ay/gN19daaztCvr6MEGFOzhZvexhXhTNjATS8hue5bPm3L3Fm2zXMmz2VFRefyK/H3cjcrt+xdewx8cnkgkkltp6B63o0t3aw8ssfpNE9gZYD3f5ANM/rV/JwIpH4ampVzr5+01C4vb1suemTzO18i/qyYzn66peIlJRk/LOKZCrUZGCtdYHLEjZvCey/G7g7zGvKyJXWko8DcF2PL9+1Jv5k/sjZ9xG55Vgct5e5Xb9joruPDTsibNu+HdNdT6njYrrr6d3XSEvJ5D5TWbQc6KG31+Xv714Tn7eoeUwNfxVNKCvPPoJI4gI646cRwaP6l1+CnevwZiyk6W9+SVVlOY7jsLvxPeZ2vkVpdJrr3Y3vUXXozJC+QZHUqUwqI1pjayfrt/u9fNZvb6GRSTBzEV6klK1lx9ISmUj5mAifu2cLG3oPzki65KG34yOJe3pczr57LeetamDJnWv8eYucrZRyMKHU7WihmYnJu9YGqqd6G9Zy+rLH411ep047nK1lx9LjRdhadixTpx2e3y9MRi2NQJaClPKav0NI/GRskRunvYm5ZVM55o7XePPdfYDD2d3XMZX9NDEB3tkHwIbtu3l9++54r6I3du7h+Bmz2Pi+P2/R1rE1tHRNoHbWJKoqy/p3rXVdf9qK6GR1dT1H8r47geZAl9ejr36J5vffpWqYF/8ZVDaTD0pRUjKQgpPKpHKpmjpuLJVlpezv7KGyvJSp48bi4tDsTcQ70M3v3tsXP/bYwybyu/cOFpYj+IPXzr1vPRVlpbR19DB/zhRWfHUhu9v+B8fby/Ur/gBte3Dw8PbvwqmcdnAK7kDvJe/wBXxt6gM8vxPAXyM53ijuRPjHJ9+lbsdvs/55Q5Ht5INSlPQ/LAUn24Vpgna3d9Pe3QtAe1cvTa1d8dHG/7hiI7Wzp1DiwLxZk/iPpSdx4gf9yeQWzJnC0984mfauXnpdj/auXn56xuE8cukiSkoiVE84hN2RydQ1tOC6vVz13lU4Nx/Td4GeYO+ld9fzRrQEUhJx+Ldz5sVLPGH+vKFInHxwGKYVkfxTyUAKTphr/laNH8v8wLkch4OTyTXs6dfvP9iDCejz2dmT+lZZTakYQ0VZKWUdzdH5ity+C/QEJ/GbuZA5nXNojk6iF2wYL7g1jhPiHo5pRST/lAyk4ITZrTTZDX6wfv8RPKqdvYBfVx787JYtW/qce3d7N+1dvbQynnavjErnAIypoKl3PFWxGVGjbQjOuGpWeiT9mQpujeOQpxWR4qBkIAUpjG6lA51rwBtvtK7c27mO7sNOZMxFTxOJlAwYR9X4sdTOmswftv+RQ+jAAXo6W1l806/54OwPRuv+Dy58E3EY8Fxh/ryhCMQto4PaDGTkcN2UFtYZcHH59ia8netw3B4iO9fxtTueG3RmUcdxuO2cj9DiTKDONXR7ETb0zmWXO4ENO1po3N+ZdKGdTA20cI9IGFQykJEhjB4w46rpPuxEIjvXscGdy+p3vHj3z9igs8QFcaZVljF/zlTO3fE9JnXv87ul4nD84RO5fOXGpAvtZPbjhdfDSiQZlQxkZBikB0wqy2IC4DiMuehpvj79Yc7t/T/Uzp5C1fix8Rvxeasa+i5niV8IufXLH+HVqz/NEXPmUOL43UbvOHceGxv2hNZDqOB6HMmIo5KBjAzBHjCHfQQqqoDEZTEnAQ4bGwZ+unYiJdxx2ef7tCk0tXbG1yoIro+Q+LS+4quLaDnQnbShOtseQgXX40hGHCUDGRkcB77yBPz8c/DuRr/K6PynaG7r7vNEjeP0W/QmUWJjbnD95OCNOPFpPbYoTkyYPYQKrseRjDiqJpIau5cBAAATxklEQVThM1gDr5da4++gDuyG9zaB1xuvKkq2LGbsdawKaKhG2diN+MEls3jk0kXxG3HiuROf1gdsqM5Q2OcTCVLJQIbHYA28rsusF5dC85vZTX+QZLCU43msPPsImplI1fgxeK1N/uvKMjyPlBtlIxGHyYeUFvb4AJEsKBnI8EjWwBvrx97eREXT5oNP9G27wImkP+ApcbBUdH2ByM51VM9Y4B/yznqqowmnKaEKadA1iV2Xko5m/5zBQWqFNj5AJEOqJpLhEXtqT5zeObqvvep4f9+MBfDYRbC8pu88P6mKDZZynP4J6J2+yShZNU/SaqNoqeaoJ87oF5P6/stIoZKBDI/BpjhwHBpO/Sk1M6dCWzPc+fE+9f4Zj4QNVhvNWOBfM1iFlFDNM2C1UTSpOAkxqe+/jCRKBjJ8hpri4LGL/Jvt2HHQ1Zb9JGnJqo0SklGwmifWhbRftVE0qXgNa3ECMSXr+68qIylWqiaSglDS2XKwSqe7HS57BS54evA2g1SmnwhWGwVfJzFg76BoUnn7jCf6xBQ8ft6syXiep+oiKVoqGUhB6C2b0rcn0LSaoRNBrHfSjAWw5OcwfnpWM2wO2jsoEqG3fGqf88eOb9zfyeUrN/KxZaupnT2Zhy9eGB98ph5GUiyUDKQwpDttcrBxuGENLD8GZi1K2i011sjrRGcNHewGnW7voEjEIRJx4lNPbNi+myV3reHNd/aqHUGKiqqJpHAMUI2TtMdOvHdSCeD1bXBO+OyX71rLwhtfYMG/vMDf3bkmPrdQWD2BgtVFJ8ycxOZ39moOISk6KhlIQRuwx06sJNHWCKsugHfWJ21wbm7roq6hJf4+doOeOm5saD2BgtVLU8eN4ey712kOISk6SgZSWFy3T1VRc1sXG3c0M8ndR90Or2+PnUgEKqf7jboDVC/FntrX/3E3QPwG3dTatydQ4/5OIhEn/Xr+aLyRcdXxuDQqWYqRkoEUjiRTVlSNK+U/xi9jbudbbC07lqpxn+v/uUG6rDqOwyPRRt5gm0FwFtB5syZntvbAAFNsaFSyFCMlAxlWrusN/NScZMoKB6jpqcdxXP/f9ub0BqG5LpH2JqZPqE7aE6i5rQvP8/jYstXpjxcYbIoNkSKjBmQZNrH6/4/e+EK/RWKA5FNWjKv2B3pFSvsM+Erxgv6T+wBTW8Se4Ksry/qPL0hlDMMAU2xoigopRioZyLAZcsTuQN1L0+lyGpTik3u/8QXRCe6GXEIzSbyaokKKlUoGMmyGmv8/sfE4boiRwwMabHK8BH3WCuiTRNb6PZYG/mCf2HK1PKVKG5JrKhlIega6Yadg0BG+XpoL2qcSxwAljUHbLcA/dsYCfzCb2+t3Xb3g6ZR+xlwsT6nShgwHJQNJXbLeM5BWchiop02fuYmGaowdbKGc/hfsc56UbqyO409vsfwYfzDbO+v7DWYbSC4WvNGEeDIcVE0kqUusg2/bNWgDbTricxOlUKWTtC0gRSlX44yf7k9vkUo8CcJennLI6jWREKhkIKlLXFYSJ7yulenMTZRkectUpVyNk+5cSTmk5TVlOISWDIwxE4GHgAnAWOAqa+2ahGNuBU4C9kc3nWmt3RtWDJJjiTdIyPimnNRQ6x0MFEcaN8e0bqypxjMMNJBNci3MksFVwAvW2puNMQZYCcxLOGYecJq1NvVyvRSWxBtkvp6es7hR68Yq0l+YyeAnQGfgvB3BncaYCHAUcJcxZjpwr7X2vhCvL9nKpKdQAT09i0jmnEz6LRtjLgauTNh8obX2dWPMocCzwBXW2pcCn6kEvgksB0qAF4GLrLWbgyepq6vzKioq0o5puHV0dFBeXp7vMIaUcpyey6wXl1LRtJn2quNpOPWn4KTYv8BzKels8RuBMywdFMP3WQwxguIMW7HE2d7eTm1tbcbF84xKBtbae4F7E7cbY44DHgG+HUwEUe3ALdba9uixq4ETgM0Jx1FTU5NJWMOqvr5+ZMXZugua3wSvl3HNb1Izqzq1J/50unmGEWceFUOMoDjDVixx1tXVZfX50LqWGmOOAVYB51hrn01yyFzgFWNMiTFmDHAysDGs60uW0hit20d7EzSsja44tjZ5N89U5vkRkbwKs83gRqAcuMVvP2avtfZMY8xVwDZr7RPGmIeBtUA38Atr7VshXl+ykWkPnYqpMHYcdO7z/62Y2nd/SCWHvAm2o4iMYKElA2vtmQNsXx54/UPgh2FdU0KWSWNwezN0t/uvu9v998FzFPM0z4mJbOGP8h2RSM4U0SOaFKShqpcyrX4qBAmJrKSzZejPiBQpjUCWzMWqUL7yJBxoTl69VEAjedOWMNK5t2xKviMSyRklA8lMsraAgW70xToWITGRbdmS74hEckbVRJKZLCaLKyqZrqUgUmSUDCQzxdwWICL9qJpIMlPMbQEi0o+SgWSuWNsCRKQfVROJiIiSgYiIqJpI8i02VkHzFonklZKB5NZgayQExirMmnocHL26uOYtEhlB9JcnuRO72S+vgfsX+++DAmMVKpo2j9yxCiJFQMlAMjfU1NRDDUwLjFVorzpeYxVE8kjVRJKZVKamTpjbp9/NPjBWoaGhiRqNVRDJGyUDyUwqU1OnMjAtPt1D8/DELSJJqZpIMpPqdBSa20ekKKhkIJnRdBQiI4qSgWRO01GIjBiqJpL+tIC9yKijZCB9DTU2QERGJCUD6Wu0LFojIn0oGUhfWrRGZFRSA7L0pV5CIqOSSgb5UsiNtBobIDLqKBnkgxppRaTAKBnkgxppRaTAKBnkgxppRaTAqAE5H9RIKyIFRiWDfBmJjbSF3CguIoNSMpBwqFFcpKgpGUh6Bnr6V6O4SFFTMpDUDfb0r0ZxkaKmBmRJ3WCrm6lRXKSohZYMjDEO8A7wdnTTGmvtNQnHfB9YDPQAV1hr14d1fRkGQ61prPUNRIpWmCWDDwEbrbVfTLbTGDMP+CSwEJgJ/BI4McTrS67p6V9kxAqzzaAWONwY86Ix5hljjEnYfzLwvLXWs9Y2AKXGGFUsF5uR2CVWRDIrGRhjLgauTNi8FLjRWrvKGHMy8BB9n/wnAM2B9/uBiUBj4vnr6+szCWtYdXR0KM4QFUOcxRAjKM6wFUuc2cooGVhr7wXuDW4zxlTgtwVgrX3FGHO4Mcax1sb6IO4DKgMfqQT2JDt/TU1NJmENq/r6+uKO03ULqrqnGL7PYogRFGfYiiXOurq6rD4fZjXR94ErAIwxJwANgUQA8CpwmjEmYoyZBUSstSO7M3qhjsjVADERSRBmA/Iy4CFjTKy30AUAxpgfAo9Za9cbY14G1uAnoaUhXrvwxG64sZ435z/l17cXgsG6iIrIqBRaMrDWtuB3G03c/k+B1z8AfhDWNQtaod1wg9VCQ3URFZFRR4POcqWQbrjJSinqIioiAUoGuVJIffIHKqWoakhEogqkEnuEKpQ++Zo3SESGoJLBaFBIpRQRKUhKBqOF5g0SkUGomkhERJQMREREyUBERFAyEBERlAxGr0KdN0lE8kLJYDTSRHUikkDJYDRKNiJZREY1JYPRSCOSRSSBBp2NRhqRLCIJlAxGK41IFpEAVROJiIiSgYiIKBmIiAhKBiIigpKBiIigZCAiIigZiIgISgYiIoKSgYiIoGQgIiIoGYiICEoGIiKCkoGIiKBkICIiKBmIiAhKBiIigpJB6lwXWneB5+U7EhGR0CkZpMJ14YHTYXkN3L/Yfy8iMoKEtuylMeY7wOeibycBh1prD0045glgKtANHLDWfj6s6+dUexPsXAduj/9ve1O+IxIRCVVoycBauwxYBmCMeQq4OslhRwLHWmuLq65lXDXMXOgngpkL/fc05zsqEZHQhJYMYowxZwEt1trnErZPxy8xPGmMmQQss9Y+Ffb1c8Jx4Pyn/BLBuGr/vYjICOJ4GTSIGmMuBq5M2HyhtfZ1Y8zrwNnW2m0Jn5kJ/C1wCzAFeBU4yVq7K3hcXV2dV1FRkXZMw62jo4Py8vJ8hzEkxRmeYogRFGfYiiXO9vZ2amtrM35SzahkYK29F7g3cbsx5hhgT2IiiPozcIe1tgfYZYzZBBhgV+KBNTU1mYQ1rOrr6xVniIohzmKIERRn2Iolzrq6uqw+H3Zvos8Azw6y798BjDHjgb8A6kO+voiIZCDsZGCAP/TZYMwPjTELrLXPAm8bY9YCzwPftdaqW46ISAEItQHZWrs0ybZ/Cry+IszriYhIODToTERElAxERETJQEREUDIQERGUDEREBCUDERFByUBERFAyEBERlAxERAQlAxERQclARERQMhAREZQMREQEJQMREUHJQEREUDIQERGUDEREBCUDERFByUBERFAyEBERlAxERAQlAxERQclARERQMhAREZQMREQEJQMREUHJQEREUDIQERGUDEREBCUDERFByUBERFAyEBERoDSbDxtj/hpYYq09J/p+EXAL0AM8b629PuH4KmAFcAjwHnChtbY9mxhERCR7GZcMjDG3ADcmnOMO4BzgZGChMWZewsf+D7DCWvtxYBPwtUyvLyIi4cmmmug14B9ib4wxE4Aya+3vrbUe8Bzw6YTPnAz8Z/T1s8Bnsri+iIiEZMhqImPMxcCVCZsvtNY+aow5JbBtArAv8H4/cETC5yYAewP7Jya7Zl1d3VBhFQTFGa5iiLMYYgTFGbZiiTMbQyYDa+29wL0pnGsfUBl4XwnsGeCYAwPsp7a21knhWiIiEqLQehNZa/cBXcaYDxljHOA04OWEw14FvhB9/fkk+0VEJA/C7lp6GfAwsB7YZK1dZ4yZYoz5VXT/DcCXjTGvAh8F/i3k64uISAYcz/PydvFi6ppqjPkO8Lno20nAodbaQxOOeQKYCnQDB6y1nx+O2ALXd4B3gLejm9ZYa69JOOb7wGL87/gKa+364YwxGsNE4CH8NqSxwFXW2jUJx9wKnITftgRwprV2L8PAGBMBfgacAHQCX7XWbgvsvwS/J1wPcIO19qnhiCtJnGOA+4A5QFk0licC+68CLgYao5u+Zq21wx1nNJZNHGwv/KO19sLAvkL5Pi8ALoi+LQc+jP93vie6P2+/k9HrLwRustaeYow5Ergf8IDfAkuttW7g2EPw/8amReM931rb2P+sB2U1ziAb0a6ppwG/CWy+A/gS8AfgaWPMPGvtxsD+WNfU+6M3568BPxmOeK21y4Bl0difAq5OctiRwLHR3lT58CFgo7X2i8l2Rrv6fhJYCMwEfgmcOHzhxV0FvGCtvdkYY4CVQGI35HnAadbapmGPDv4KKLfWfjT6gPJj4EwAY8yhwDeA+fg3jFeMMf9lre3MQ5znAs3W2vOMMVPxu2s/Edg/D/iKtTavrZ/GmHIAa+0pSfYVzPdprb0f/waLMeanwH2xRBCVt99JY8w/AecBbdFNy4HrrLX/Y4y5A//38/HAR/4BeNNa+wNjzJeB64BvDnaNfI5ALsquqcaYs4AWa+1zCdun45cYnjTGvGKMOX24YwNqgcONMS8aY56J3miDTsYvcXnW2gag1BhTPfxh8hPgzujrUqAjuDP6ZH4UcJcx5lVjzEXDHF/898xauxb/RhWzAHjVWtsZfSrcBhw/zPHFrAK+F3jfk7C/Frgm+vt4DflzAlBhjHneGLM6mmBjCun7BMAYMx//oe6uwLZ8/07+Hjgr8L4WeCn6Otm9MO17Zc5LBvnompqtQWJ+HbgGODvJx8biP0HeAkwBXjXGrLfW7hrGGJcCN1prVxljTsYvJgaf/CcAzYH3se9w0OJjDuK80Fr7evSp8CHgioT944Db8J9+SoAXjTEbrLWbcxVnguDvGUCvMabUWtuTZF/Ofg+HYq1tBTDGVAKP4T/9BT0C/BT/7+pxY8zpeaqCaQf+FbgH/4b6rDHGFNr3GfBd4PqEbXn9nbTW/tIYMyewyQnUQCT7ztK+V+Y8GQx319QwDBSzMeYYYE+w/jjgz8Ad0V/wXdE6UgPkJBkki9EYU0H06dBa+4ox5nBjTPCXJpXvOOdxRmM9Dv9m9W1r7UsJu9uBW2LtQcaY1fhPl8OVDBK/p0j0/zXZvpx/h4MxxszErx74mbV2RWC7A9wcq9M2xjwNfATIRzLYCmyL/h5uNcY0Ax8AdlJ43+ck4Ghr7YsJu/L9O5nIDbwe7F450P5+CmaiuiLpmvoZ/CLXQPv+HcAYMx74C6B+mOKK+T7Rp2xjzAlAQ0L7xavAacaYiDFmFv5NLh/1n8fgV3GcY61N9n3Oxa87Lok2kp4MbExyXK7Ef8+iVRpvBvatBz5ujCmPNoTX4DfgDbto1eTzwNXW2vsSdk8AfmuMGR/9e/oUkK+2g4vwS80YYw6Lxvan6L6C+T6jPgH8d5Lt+f6dTLQpULOS7F6Y9r0ybw3IA4h1TS3Br9teZ4yZAtxjrT0Lv2vqA9HeB0348yANJwP8V58NxvwQeMxa+6wx5jRjzFr8rP3dPNxolwEPGWNivYUuSIhxvTHmZWAN/oPA0mGOL+ZG/MbCW6LNGnuttWdGe79ss9Y+YYx5GFiL3zPrF9bat4YxvseBvzTGvAY4wIUJsd2K/8cVAa611nYMcq5c+i4wGfieMSbWdnA3MM5ae5cx5rvAi/g9ol6w1j6TpzjvBe43xryC3/vlIuAbxphC+z7B/xv/Q/xN4fxOJvoWcLcxZiz+Q+djAMaY54HTgdvx75WvAF2kcK/Ma9dSEREpDAVTTSQiIvmjZCAiIkoGIiKiZCAiIigZiIgISgYiIoKSgYiIoGQgIiLA/web7/8hgML3cwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"RAND = np.random.randn(2,100)\n",
"plt.figure(figsize=(6,6))\n",
"plt.xlim(-10,10)\n",
"plt.ylim(-10,10)\n",
"Y = np.dot(A,RAND).T\n",
"plt.scatter(RAND.T[:,0], RAND.T[:,1], s=5, label=\"pre-A\")\n",
"plt.scatter(Y[:,0], Y[:,1], s=5, label=\"post-A\")\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 下図の$v_1$,$v_2$は固有ベクトル"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1a16df58d0>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"RAND = np.random.randn(2,100)\n",
"plt.figure(figsize=(6,6))\n",
"plt.xlim(-10,10)\n",
"plt.ylim(-10,10)\n",
"Y = np.dot(A,RAND).T\n",
"plt.scatter(RAND.T[:,0], RAND.T[:,1],c=\"black\", s=5, label=\"pre-A\")\n",
"plt.scatter(Y[:,0], Y[:,1], c=\"green\", s=5, label=\"post-A\")\n",
"plt.quiver(0,0,7,7,angles='xy',scale_units='xy',scale=1,color=\"r\",label=\"v1\")\n",
"plt.quiver(0,0,4,-8,angles='xy',scale_units='xy',scale=1,color=\"b\",label=\"v2\")\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>x'</th>\n",
" <th>y'</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2.076058</td>\n",
" <td>0.257641</td>\n",
" <td>6.485813</td>\n",
" <td>4.667397</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-1.088061</td>\n",
" <td>0.153705</td>\n",
" <td>-3.110477</td>\n",
" <td>-1.868711</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.458799</td>\n",
" <td>-0.547848</td>\n",
" <td>-4.924245</td>\n",
" <td>-4.013294</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.005307</td>\n",
" <td>1.419801</td>\n",
" <td>1.403880</td>\n",
" <td>2.828988</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.089503</td>\n",
" <td>-0.064117</td>\n",
" <td>0.204393</td>\n",
" <td>0.050772</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x y x' y'\n",
"0 2.076058 0.257641 6.485813 4.667397\n",
"1 -1.088061 0.153705 -3.110477 -1.868711\n",
"2 -1.458799 -0.547848 -4.924245 -4.013294\n",
"3 -0.005307 1.419801 1.403880 2.828988\n",
"4 0.089503 -0.064117 0.204393 0.050772"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.concat([pd.DataFrame(RAND.T), pd.DataFrame(Y)],axis=1)\n",
"df.columns = ['x', 'y', 'x\\'','y\\'']\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'GREEN is before, BLACK is after')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x720 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lam = [df.iloc[i][2]/df.iloc[i][3] for i in range(len(df))]\n",
"plt.figure(figsize=(10,10))\n",
"plt.xlim(-10,10)\n",
"plt.ylim(-10,10)\n",
"plt.quiver(0,0,7,7,angles='xy',scale_units='xy',scale=1,color=\"r\",label=\"v1\")\n",
"plt.quiver(0,0,4,-8,angles='xy',scale_units='xy',scale=1,color=\"b\",label=\"v2\")\n",
"#plt.scatter(Y[:,0], Y[:,1], c=\"green\", s=5, label=\"post-A\")\n",
"for i in range(len(df)):\n",
" if round(lam[i]) == (1 or 4):\n",
" plt.scatter(RAND.T[i,0], RAND.T[i,1], c=\"green\", s=7)\n",
" plt.scatter(Y[i,0], Y[i,1], c=\"black\", marker=\"x\", s=7)\n",
"plt.legend()\n",
"plt.title(\"GREEN is before, BLACK is after\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PCAをしよう"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SHAPE: (400, 4096)\n",
"SAMPLE: 400\n",
"DIMENSION: 4096\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" <th>8</th>\n",
" <th>9</th>\n",
" <th>...</th>\n",
" <th>4086</th>\n",
" <th>4087</th>\n",
" <th>4088</th>\n",
" <th>4089</th>\n",
" <th>4090</th>\n",
" <th>4091</th>\n",
" <th>4092</th>\n",
" <th>4093</th>\n",
" <th>4094</th>\n",
" <th>4095</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.309917</td>\n",
" <td>0.367769</td>\n",
" <td>0.417355</td>\n",
" <td>0.442149</td>\n",
" <td>0.528926</td>\n",
" <td>0.607438</td>\n",
" <td>0.657025</td>\n",
" <td>0.677686</td>\n",
" <td>0.690083</td>\n",
" <td>0.685950</td>\n",
" <td>...</td>\n",
" <td>0.665289</td>\n",
" <td>0.669421</td>\n",
" <td>0.652893</td>\n",
" <td>0.661157</td>\n",
" <td>0.475207</td>\n",
" <td>0.132231</td>\n",
" <td>0.148760</td>\n",
" <td>0.152893</td>\n",
" <td>0.161157</td>\n",
" <td>0.157025</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.454545</td>\n",
" <td>0.471074</td>\n",
" <td>0.512397</td>\n",
" <td>0.557851</td>\n",
" <td>0.595041</td>\n",
" <td>0.640496</td>\n",
" <td>0.681818</td>\n",
" <td>0.702479</td>\n",
" <td>0.710744</td>\n",
" <td>0.702479</td>\n",
" <td>...</td>\n",
" <td>0.136364</td>\n",
" <td>0.157025</td>\n",
" <td>0.136364</td>\n",
" <td>0.148760</td>\n",
" <td>0.152893</td>\n",
" <td>0.152893</td>\n",
" <td>0.152893</td>\n",
" <td>0.152893</td>\n",
" <td>0.152893</td>\n",
" <td>0.152893</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.318182</td>\n",
" <td>0.400826</td>\n",
" <td>0.491736</td>\n",
" <td>0.528926</td>\n",
" <td>0.586777</td>\n",
" <td>0.657025</td>\n",
" <td>0.681818</td>\n",
" <td>0.685950</td>\n",
" <td>0.702479</td>\n",
" <td>0.698347</td>\n",
" <td>...</td>\n",
" <td>0.074380</td>\n",
" <td>0.132231</td>\n",
" <td>0.181818</td>\n",
" <td>0.136364</td>\n",
" <td>0.128099</td>\n",
" <td>0.148760</td>\n",
" <td>0.144628</td>\n",
" <td>0.140496</td>\n",
" <td>0.148760</td>\n",
" <td>0.152893</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.198347</td>\n",
" <td>0.194215</td>\n",
" <td>0.194215</td>\n",
" <td>0.194215</td>\n",
" <td>0.190083</td>\n",
" <td>0.190083</td>\n",
" <td>0.243802</td>\n",
" <td>0.404959</td>\n",
" <td>0.483471</td>\n",
" <td>0.516529</td>\n",
" <td>...</td>\n",
" <td>0.652893</td>\n",
" <td>0.636364</td>\n",
" <td>0.657025</td>\n",
" <td>0.685950</td>\n",
" <td>0.727273</td>\n",
" <td>0.743802</td>\n",
" <td>0.764463</td>\n",
" <td>0.752066</td>\n",
" <td>0.752066</td>\n",
" <td>0.739669</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.500000</td>\n",
" <td>0.545455</td>\n",
" <td>0.582645</td>\n",
" <td>0.623967</td>\n",
" <td>0.648760</td>\n",
" <td>0.690083</td>\n",
" <td>0.694215</td>\n",
" <td>0.714876</td>\n",
" <td>0.723140</td>\n",
" <td>0.731405</td>\n",
" <td>...</td>\n",
" <td>0.190083</td>\n",
" <td>0.161157</td>\n",
" <td>0.177686</td>\n",
" <td>0.173554</td>\n",
" <td>0.177686</td>\n",
" <td>0.177686</td>\n",
" <td>0.177686</td>\n",
" <td>0.177686</td>\n",
" <td>0.173554</td>\n",
" <td>0.173554</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 4096 columns</p>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 5 6 \\\n",
"0 0.309917 0.367769 0.417355 0.442149 0.528926 0.607438 0.657025 \n",
"1 0.454545 0.471074 0.512397 0.557851 0.595041 0.640496 0.681818 \n",
"2 0.318182 0.400826 0.491736 0.528926 0.586777 0.657025 0.681818 \n",
"3 0.198347 0.194215 0.194215 0.194215 0.190083 0.190083 0.243802 \n",
"4 0.500000 0.545455 0.582645 0.623967 0.648760 0.690083 0.694215 \n",
"\n",
" 7 8 9 ... 4086 4087 4088 \\\n",
"0 0.677686 0.690083 0.685950 ... 0.665289 0.669421 0.652893 \n",
"1 0.702479 0.710744 0.702479 ... 0.136364 0.157025 0.136364 \n",
"2 0.685950 0.702479 0.698347 ... 0.074380 0.132231 0.181818 \n",
"3 0.404959 0.483471 0.516529 ... 0.652893 0.636364 0.657025 \n",
"4 0.714876 0.723140 0.731405 ... 0.190083 0.161157 0.177686 \n",
"\n",
" 4089 4090 4091 4092 4093 4094 4095 \n",
"0 0.661157 0.475207 0.132231 0.148760 0.152893 0.161157 0.157025 \n",
"1 0.148760 0.152893 0.152893 0.152893 0.152893 0.152893 0.152893 \n",
"2 0.136364 0.128099 0.148760 0.144628 0.140496 0.148760 0.152893 \n",
"3 0.685950 0.727273 0.743802 0.764463 0.752066 0.752066 0.739669 \n",
"4 0.173554 0.177686 0.177686 0.177686 0.177686 0.173554 0.173554 \n",
"\n",
"[5 rows x 4096 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"from sklearn import datasets\n",
"faces = datasets.fetch_olivetti_faces()\n",
"img_shape = (64,64)\n",
"print(\"SHAPE: \", faces.data.shape)\n",
"print(\"SAMPLE: \", faces.data.shape[0])\n",
"print(\"DIMENSION: \", faces.data.shape[1])\n",
"pd.DataFrame(faces.data).head()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"mean_vector = np.mean(faces.data, axis = 0)\n",
"faces = (faces.data - mean_vector)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"scatter_matrix = np.dot(faces.T, faces)/400\n",
"la, v = np.linalg.eig(scatter_matrix)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>0</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>18.793076</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>11.044083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>6.288853</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3.944698</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2.848902</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0\n",
"0 18.793076\n",
"1 11.044083\n",
"2 6.288853\n",
"3 3.944698\n",
"4 2.848902"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(la).head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# # Demension from 4096 to 64"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 使う画像"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'original')"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(12, 6))\n",
"ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[])\n",
"ax.imshow(faces[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"original\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 射影する"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(400, 4096)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"U = v[:,0:64]\n",
"proj = np.dot(U, U.T)\n",
"red = np.dot(proj.T, faces.T).T\n",
"red.shape"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'projection')"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(12, 6))\n",
"ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[])\n",
"ax.imshow(red[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"projection\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# sklearnを使うと"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(400, 64)\n"
]
},
{
"data": {
"text/plain": [
"Text(0.5,1,'sklearn')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.decomposition import PCA\n",
"pca = PCA(n_components=64, whiten=True)\n",
"pca.fit(faces.data)\n",
"X_pca = pca.transform(faces.data)\n",
"print(X_pca.shape)\n",
"fig = plt.figure(figsize=(12, 6))\n",
"ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[])\n",
"ax.imshow(pca.inverse_transform(X_pca)[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"sklearn\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 並べて比較"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5,1,'sklearn')"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(12, 6))\n",
"ax = fig.add_subplot(1, 3, 1, xticks=[], yticks=[])\n",
"ax.imshow(faces[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"original\")\n",
"\n",
"ax = fig.add_subplot(1, 3, 2, xticks=[], yticks=[])\n",
"ax.imshow(red[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"projection\")\n",
"\n",
"ax = fig.add_subplot(1, 3, 3, xticks=[], yticks=[])\n",
"ax.imshow(pca.inverse_transform(X_pca)[0].reshape(img_shape), cmap=plt.cm.bone)\n",
"ax.set_title(\"sklearn\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda env:py35]",
"language": "python",
"name": "conda-env-py35-py"
},
"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.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment