From ac347902f0b69d58d1a7e21328fdcc21d4f28a46 Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Mon, 14 Sep 2020 16:09:22 -0600 Subject: [PATCH 1/6] Created using Colaboratory --- ..._131_Vectors_and_Matrices_Assignment.ipynb | 526 ++++++++++++++++-- 1 file changed, 468 insertions(+), 58 deletions(-) diff --git a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb index 87fc432d..d21ed5a1 100644 --- a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb +++ b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb @@ -38,16 +38,59 @@ { "cell_type": "code", "metadata": { - "id": "XNqjzQzrkVG7", + "id": "WXWvWOezHvp7", "colab_type": "code", "colab": {} }, "source": [ - "" + "import math\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" ], - "execution_count": 0, + "execution_count": 2, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "XNqjzQzrkVG7", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "5b03278c-d0e9-4804-fc4f-b03ec1e49c51" + }, + "source": [ + "# Plotting Vectors\n", + "black = np.array([0.3, 0.6])\n", + "# Coordinate Pairs for where the arrowheads are\n", + "# yellow = (.5, .5)\n", + "# red = (.2, .1)\n", + "# blue = (.1, .3)\n", + "\n", + "plt.arrow(0,0,black[0], black[1], head_width=0.02, head_length=0.01, color='black')\n", + "\n", + "plt.title('Vector examples')\n", + "plt.show()" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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l72ZVQwX/kY6/PDDgdwUCp4UzcwqiQt/I9x0001MmzaNsWPHsscee6Qdx8xso7jwC/Taa6/xve99j/79+3PaaaelHcfMbKO58Avw0UcfsddeewEwderUlNOYmW0aF34TIoJdd90VyH06x5OimVmlcuE34ZJLLmH+/Pncf//9dO7cOe04ZmabzIW/AU8//TRXXXUVw4YNY/DgwWnHMTPbLC789Vi0aBGHHnooALfddlvKaczMNp8LvxGrV6+mQ4cOACxevNiToplZVXCTNeLb3/42AM8++yzbb799ymnMzIrDhd/Avffey1133cVll11G3759045jZlY0njwtT319Pd26daNbt2688847accxM/s3njytCFasWEG3bt2A3Dw5ZmbVxoWf6N+/PwD//Oc/+dznPpdyGjOz4nPhA6NGjeK5557jlltuoWfPnmnHMTMriYIKX9IgSa9LqpV0USOPnytppqRXJP1V0i7Fj1oaM2fO5KyzzmLAgAF897vfTTuOmVnJNFn4kloAo4Cjgd7AUEm9Gwx7EegTEfsBdwPXFDtoKXz00UfsvffeAPzlL39JOY2ZWWkVcoR/MFAbEW9FxApgInB8/oCIeDQiPk4WpwFdixuz+CKCnXfeGYA5c+bQsmXLlBOZmZVWIYXfBajLW65P1q3PcODBxh6QNEJSjaSaBQsWFJ6yBC688ELee+89HnzwQTp16pRqFjOz5lDUi7aSTgb6ANc29nhEjImIPhHRp2PHjsV86Y3y5JNPcu211zJ8+HAGDRqUWg4zs+ZUyHmM2UC3vOWuybrPkHQUcAlwREQsL0684lu0aBGHHXYYAGPHjk05jZlZ8ynkCP85oKekHpJaAUOAKfkDJB0A3AQcFxHzix+zOBpOiiYp5URmZs2nycKPiJXAWcBDwKvApIiYIelyScclw64FtgX+IOklSVPWs7lUnXjiiQDU1NR4UjQzy5yCPpoSEQ8ADzRY95O8+0cVOVfR3XPPPdx9991cccUVHHTQQWnHMTNrdpmYPK2uro6dd96ZHj168NZbbzXLa5qZlYInT9uAFStWrP28/YwZM1JOY2aWnqov/H79+gFQW1vrSdHMLNOquvBvvPFGXnzxRW6//XZ22223tOOYmaWqagt/xowZnH322QwcOJBTTjkl7ThmZqmrysL/8MMP2WeffQD485//nHIaM7PyUHWF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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -63,13 +106,50 @@ "metadata": { "id": "atUEd3T6llKm", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "6e735c69-7042-4d36-875e-7fd1e86803b6" }, "source": [ - "" + "# Plotting in 3D\n", + "\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "import numpy as np\n", + "\n", + "orange = [.3, .5, .8]\n", + "\n", + "vectors = np.array([[0, 0, 0, .3, .5, .8]])\n", + "\n", + "X, Y, Z, U, V, W = zip(*vectors)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X, Y, Z, U, V, W, length=1)\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.set_zlim([0, 1])\n", + "ax.set_xlabel('X')\n", + "ax.set_ylabel('Y')\n", + "ax.set_zlabel('Z')\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 5, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOx9eXhcd3n1ubNppJnRLmu1tUu2bMu2vBOaAvnYArjsDeGLsxQKNNBAGpY2BRIKJGzhS8PSBBICSbNQSkmaugFCs5AFR97iOLEljWaRZkajkUaz73f5/nB/13f27c4m3/M8fgKWfOdqNPfc977ve86hOI6DBAkSJEgoD2SVPgEJEiRIuJggka4ECRIklBES6UqQIEFCGSGRrgQJEiSUERLpSpAgQUIZocjydWm1QYIECRLyB5XuC1KlK0GCBAllhES6EiRIkFBGSKQrQYIECWWERLoSJEiQUEZIpCtBggQJZYREuhIkSJBQRkikK0GCBAllhES6EiRIkFBGSKQrQYIECWWERLoSJEiQUEZIpCtBggQJZYREuhIkSJBQRkikK0GCBAllRDaXMQkS0oLjOLAsi0gkApqmoVAoIJPJIJfLIZPJIJPJQFFpzZYkSLgoQWUJppSsHSUkgeM4MAwDh8MBuVwOjUYDmqYBABaLBWq1Gu3t7QDAkzD5I5GxhIsEaT/gUqUrIWcQsqVpGhzHwev1gqIo2Gw20DQNrVaLUCjEkyv5N7FYDNFoNI5oJTKWcLFCqnQlZAXHcaBpGgzDgOM4UBSFQCCA06dPg6ZpjIyMQC6XIxQKwW63IxaLgaIovgrWaDRoaGiARqNBXV1d3HETP38SGUtYJ0j7gZVIV0JaELIlrQOKouD1emEwGEDTNDQaDXQ6Hbq7u0HTNGQyGSwWC2QyGXp6ekDTNILBIAKBAP8nEolAJpMlkbFarY57XfKHkC0hcdI3JuQskbGEKoXUXpCQO1iW5dsIBG63GwaDATKZDENDQ2hubsbCwkIcMQLnyZHcyBUKBRobG9HY2Bh3fIZheDL2eDyw2WwIh8OQyWQ8CRNCrq+vj/t3pLVBXidTZSwRsoRqhES6EniwLMu3EQhWV1dhNBqhVqsxPj4OnU7Hf00mk8V9L3CedFmWzfg6crkcOp0u7ljAeVINhUIIBALwer1YWlpCOBwGgJRkTPrGDMPA4/HAYrFgfHycPw+ZTAaFQiGRsYSqgkS6FznIY3wsFuPJkuM4LC8vw2w2o7GxEdu3b0dDQ0PSvxVWtZn+LlfI5XJotVpotdq4v2dZlidjv9+P5eVlhEIhAEB9fT00Gg3kcjnfSyakStbZEs+PVMfCVoVExhLKBYl0L1KQHVuapuPI1mazYWFhAW1tbdi1a1dcrzUR6Qi2UNJNB2EPWAiWZREOhxEIBOByuRAIBHD8+HFwHMeTMflTX18PuVzO/9wMwyAajcYdT9imINWxRMYSxIZEuhcZEsmWoigwDAOLxQKr1Yquri7s3bsXKpUq67HSVbrlAukBk3YDTdOYmJgAx3EIhUJ839jpdCIYDIJlWajV6jgybmhoSCLjxD51qp6xtFEhoVBIpHuRQLhj+8orr/DktLi4CLvdjr6+Phw4cAAKRe4fCZlMlnLlK1tPt9SgKIonYyLSAM6/B+FwmCdjl8uFYDAIhmFQV1eXRMYKhSIjGUvrbRIKgUS66xyJggaKohCNRjE3Nwe3241NmzbhDW94Az+UygfphmZitxfEAkVRqK+vR319Pdra2vi/5zgO0WgUfr8fwWAQNpsNgUAADMNApVIlkbFSqYzrhVutVtA0jZ6eHgASGUvIDIl01ylSCRrC4TCMRiO8Xi86OzuxZcuWgsiWoNLtBbFAURTq6upQV1eXkowDgQCCwSDsdjsCgQBomoZSqeSJOBQKQalU8m0KAKBpGrFYLO51JDKWAEiku+6QStAQCARgMBgQDocxODiIaDSK9vb2ogiXHDvTnm6tQ0jGra2tcV8TkrHX60U0GsXy8jIUCkVcZazRaKBUKvl/l46MyXqbJPxY/5BId50gUdBAURQ8Hg8MBgNYlsXQ0BBaWlpAURTsdrsofVexV8ZqCSqVCiqVCi0tLfzf9fb2IhaL8eq71dVVmM1mRKPROEk0+SMcVkrCj4sHEunWOFIJGtbW1mA0GqFQKDA8PIympqa4fyPWsCvVIO1iIV0hCEECgFKpRHNzM5qbm+O+h6ZpnozX1tawuLiISCQCuVweJ/xI9KdIVAYCkvCj1iGRbg0ilaABAFZWVmA0GqHRaLBly5YkkQGBWMR4MVe6QiS2WFJBoVCgqakp6QbIMAxPxm63G1arNaUkOtGfggg/WJbF3NwcxsfHJeFHjUAi3RpCOkGD3W6H2WxGc3MzduzYEedXkApiVbqpthck0s0Pcrk8J3+KpaUlhEIhfh1OSMTETlMSftQGJNKtAaQSNLAsC6vVCovFgo6ODuzevTvusTQTxCRdqdItjnTTIZ0/BcuyPBn7fD4sLS3B7/djeno6pQqPtIASd43JfyXhR/khkW4VQ7hjOzMzg46ODjQ2NmJxcRE2mw3d3d3Yt29f3HQ8F0ikKy5KQbrpIJPJ4vwpwuEwZmdnsW3bNt6fIhAIYGVlBcFgEAAKUuFJ622lg0S6VYhUggaiHgsEAujr68PBgwchl8sLOn4pSFfoeyuRbvnAsixPiNn8KchGRSgUyiqJlhI/SgeJdKsIqQQNkUgEJpMJdrsdnZ2dmJycLHq/NtXWQaHHkXq61UG66SD0p+jo6OD/nkiihRsVQn+KRCtNIokG4neNo9Eo1tbW0NPTI5FxjpBItwqQStAQCoVgMBgQCAQwMDCAuro6qNXqogmXHF/MSjcYDGJtbQ06nS5lBM96RzWTbjoIJdGJ/hSRSIQnY6vVGudPkbhRQdM0PB4PnxSSSfghkfF5SKRbQaQSNPh8PhgMBkSjUQwNDaGtrQ0URcFsNotmJCNWeyEUCsHr9eLMmTNobm6G0+mE3+9HJBLBmTNnoNFooNVq+aHOer3QapF004GiKKjVaqjV6rSS6EAggKWlJQQCAUSjUbAsC71eH0fIxJ8CyCz8EK62XSwbFRLpVgCJggaKouByuWAwGEBRFK8eE0IulyelNBSKVIkP+cDv9/NVuEqlwr59+3gD8WAwCL1ej8HBQX7Cbrfb49adCBGTladav8jWE+mmQzpJ9OrqKpxOJ9rb2xEIBLC8vJzkTyEkY5VKlUTGia+z3oUfEumWCekEDU6nEwaDIWUcjhAymSzp0a1QFHosUoVHIhEMDw9Dq9Xi9OnTSd4LFEXxF9mGDRv4r5F1J7/fn5SNJnxk1Wq1UKlUNXORXQykmw4cx/Fy6MRCQSiJXllZgclkQiwW4/0pEsmYYL0nfkikW2KkEjQAwPLyMkwmE3Q6HbZt25Y0dU6E2JVuPu0Fn88HvV4PmqYxPDzMVzqJPxM5drqebuK6E4FQleVyuWCxWHiJbCoyrjZczKRL03TaLZp0kuhYLBZnML+wsJDkT0EIua6ujm9JpBN+BINBNDY2QqlU8kVNotikmiCRbomQStDAcRyWlpawsLCA1tbWrHE4QohpDp7r9oLH48H8/DxYlsXw8HBSJSNWXE86VZbQr8DpdMJsNsdVSsI2RSVxMZMuy7J5ry4qlcqUkmiapuMM5snNV/gkRMiYtKU4jsPc3BwmJiZA0zR++9vf4pVXXsE3v/lNMX9MUSGRrsgQ7tiePn0ak5OTYBgGVqsVVqsVGzZswJ49e/Ku2MSsdLNtL7jdbszPzwMAhoeHkyoV4XFKKY5I51cgfGwlPcRIJAKGYTA3NxdXHeeThFEoLmbSJUbvYkChUOQkiRa2pRoaGhAMBuHz+RAMBuFyuZI+L9UGiXRFQipBAxk42e129PT0YP/+/QWTgNiVbqpjuVwuzM/PQyaTYWRkJOuHt1KKtFSPrX6/H0ajEW1tbXHT9VRRPCQ9WCxUmnQr2dNkGEbU9zIV0kmiGYZBKBSCy+WCz+fDt771LfzpT38Cy7I4ffo0JiYm8OlPfzpnEr7uuuvwxBNPYMOGDThz5kzS1zmOww033IAjR46goaEB999/P6ampvL+eSTSLRKpBA2xWAwmkwmBQABKpRIHDhwo+oNZyp7u2toa5ufnoVAoMDY2lnM/LNXFXklxhFwuR2tra9x0XRjFQ/ZOA4FAkiJLq9WioaGhoKqx0qSbrwxcTJSDdNNBLpdDq9VCqVRiaGgId999N771rW9hYmICO3bswOuvv55XFX7NNdfg05/+NA4fPpzy6//93/+Nubk5zM3N4ejRo/jUpz6Fo0eP5n3eEukWiFSCBmEcTn9/PzQaDTZu3CjKBSl2pcswDJxOJ+bn56FSqbB58+a0mxP5oNoUaZmieISKLJIYLIxvF+4YZyLjSpNupUgPqCzpAsnzA4/Hg/b2dmzduhVbt27N61iXXnopTCZT2q8/9thjOHz4MCiKwoEDB+B2u7G0tITu7u68Xkci3TyRStBA4nBCoRAGBwcxMTHBCxrEuiDFqnQ5joPH48HKygo4jsPExERa391CUG2kmw6ZFFnEOMbv98PhcCAUCgFAkhqLCD4qTbrrvb2QCYk3Ha/Xm3YGUSysVis2btzI//++vj5YrVaJdEuFVIIGEofDMAyGhobQ2toadwEoFArQNC3KoKHYSpfjOKyurvKVbVNTEyYnJ4s+r0TUCummAxFwJHoVsCyLUCgEv98fJ/iQyWSIRCKw2WxoamqCVqvl15zKAWFqRSVQadKlaTpuTuL1eqVBWi0jnaCBqMfSxeEQiNmHLfRYHMfB4XDAYDBAp9PxRDszMyPKeSWi1hbVc0U6Fy+GYXDq1CmoVKq0gg/SpiiF4KMatheqiXQ9Hk/SaqNY6O3txeLiIv//LRYLent78z6ORLopkE7QQFQ19fX1GeNwCCopaOA4DsvLyzAajWhsbMTOnTv5RIlwOCxaf/hiB3HV6uzsTAqaFDp4CQUAwv3iRDVWvpBIN5l0S9VeOHToEH7wgx/giiuuwNGjR9HU1JR3awGQSDcOZO2LYZg4QQNRjzU3N2P79u1oaGjI6Xhi79bmAhLfYzQa0dzcnFKAIeZQTkLqQVo2wYff74+TxhKfgnTR7elQadKt9Osnki7DMAVvc3zkIx/BM888g9XVVfT19eHWW2/l5fKf/OQncfnll+PIkSMYGRlBQ0MDfvaznxX0OhLp4gLZLi8v831ZlmVhs9mwuLiI9vb2vOJwCMQk3WxgWRZ2ux0mkwktLS2YmppKq3aTSFdc5DNIyyT4IGttQtMYlUqVtNYmJJlKk14lh4hAPOkWO0t4+OGHM36doij88Ic/LOo1gIucdBMFDTMzM9i/fz8WFxf5qWQhcTgE5SBdcnMwm8053xzEMjGXcB5iEI9SqUwyjUm0U0z0ttVoNAgGgwiFQlCr1RV9zK8UUpFutc8VLkrSTbVjS9M0IpEIjh49it7e3qLicAhKSbokmHJhYQEdHR3Yu3dvzr1BsUzME495saJU1V46O0Wh0fjq6ir/hMOybFI4ZaGCj1oBTdP8E104HM659VdJXFSkm4psI5EIjEYjXC4XZDKZKOoxArlcnuQXWixYloXFYsHi4iI2bNiQF9kSXMwEWQqU+6lBaDS+sLCA8fFx3jQ8HA7zbYrV1VU+nDJdUnAxqHRrAYivdN1ud1W7ixFcFKSbStAQDAZhNBrh8/kwODiIzZs34+WXXxb1AlIoFKJVusTS7sUXX0RXV1dRbQ+xIbUqKncjE/Z0hYKPVDvGpE2RSvBBNiryMZWvdD8ZiCfdUm4uiIl1TbqpBA3COJzBwUFs3bqV/5ARMYNYzlRyuTzJ+zNfMAyDxcVFWCwWAMDevXvzHuiVEuRpYWlpCWq1Glqt9qIk4Wog3XTIlBRM3Lu8Xi+WlpZ4wUdiwkcqwQfDMFVHutUujADWIemmEjRQFAW32w2DwQAAKeNwgAukKxaK6enSNM0P9Hp7e3HgwAGcPHmy4o9zQsRiMYTDYRw/fhydnZ3weDz8sOf48eP8RUv+Wy2V+XpDoZ+JTKbyJOEjk6k8idOpJBLbC1KlW0akEzQ4nU4YjUaoVCqMjo5m7PlUA+nSNA2z2YylpSX09fXFDfSqZdUrFovBbDZjeXkZcrkce/fu5b9GURSmp6exY8cOfh81cQUqkYwrfeFKiEc6K0ViMu73++F0OuHxeBAMBnHixImkhI9y3WCl9kIFkErQAAAOhwMmkwlarRZbt27NKV2gkqQrJLJEsi3keKUAuSHY7XZs3LgRBw8exLFjx/gVNGFbIdU+aqLN4uLiIoLBIFiWjestarXadRFYud6QaDLu9Xphs9kwPDwcl4VmNBrjgimFN1ixTeWFLY5Smt2IiZol3VSm4RzHwWazYWFhAS0tLdi5c2fOcThAaUg32/Gi0SjMZjMcDgdPZOkqv0pVujRNY2FhIa76Fg5vcu3hprNZFA56fD4flpaW4vwLhJVxNWakXawg+WjpstCEO8Z2ux1+v59PmkiUQhezMURuzh6PpyBZbrlRc6RLyNZqtfIXIsdx/LCp0DgcQPxKMtPxotEoTCYTVlZW0N/fn5FsS3V+2VZ+GIbBwsICbDYb31dOvDjIjaCYFoFw0CNMDyb+BX6/H6urq3xGmlKpTGpRSCg/snn5qlQqPimYQCj48Pv9aU3lyY5xPmQstRdKBIZhEIvF4PV6wbIsHA6HKHE4gPiVbqqVsUgkApPJBKfTif7+foyMjORMWGJWupl8YMnGhNVqRU9PT8bd5UzhlMW2B9L5F6RKgiBbKgaDgSfihoYGqUVRQhRidpNJ8CE0lV9bW+NbT8IdY61Wy+8YJ37GJNItEWQyGWKxGNxuN2w2G4aGhkQTNCgUCkQiERHO8jyElSlJlXC5XBgYGMDo6Gje1WEpXMuE5yAUXnR3d+d0E8uUk1YqwlOpVEmxPD6fD0ajETqdjh/epVp/Ii2K9UDGlV7NE9NhLBdT+UTBR11dHWKxGBwOBxwOh0S6pYLH48GpU6fQ2NiIDRs2YNOmTaIdW+xKVyaTgaZpvP7663C73bwIo5gVn1KEUwolxV1dXXk9MVQqnDLVeSgUCnR0dMQJAxLXnxYXFxGNRqFQKJJaFOVIDhYT1ZAaUer3LJOpvMvlgtFohMPhwM0334yzZ8/iyiuvxLZt23DppZfi4x//eM6v8+STT+KGG24AwzD42Mc+hi996UtxX19YWMDVV18Nt9sNhmFw++234/LLLy/oZ6qtTxmAxsZGHDx4EA6HAz6fT9Rji0m6oVAIBoMBwWAQIyMj2LJliyiP22JWujRNw+FwwGw2Y8OGDQWp3KqFdNMh3fqT0NVLmBxM+orCFkW1rrRVQ2pEpYQ6MpmMd2DbsmULHnvsMbzlLW/BU089BbPZDJfLlfOxGIbB9ddfj9///vfo6+vD3r17cejQIUxMTPDf8/Wvfx0f/vCH8alPfQqvv/46Lr/88ox5aplQc6Qrk8n4qkZsXwMxjhkMBmEwGOD3+zE0NAS3242uri5Rzk+sSpdlWUQiEV7UUIh/g/Ccqpl00yGdqxfpK5LhHXmUTWxRlDOSJx0qLcOtNgPzWCyGxsbGvGOoXn75ZYyMjGBoaAgAcMUVV+Cxxx6LI12KouD1egGcf9ru6ekp+LxrjnQJlEolbzAsFoqpJEk4ZSAQwPDwMC8v1uv1VXF+wHlSWVpagslkAsMw2LZtW9HRJsSxTEi0tUC6qZCur0jksn6/n1fdEYWWVqtFNBqF2+0uu+pOIl1xvHRTBU4mRqvfcssteNvb3oa77roLgUAATz31VMGvV3Okm+iTICYKOabf7+eTgIeHh9HW1pZUAYk1VCJDxHwhTJNobW3F7t27MTMzI0o/jhAsx3GIMSxUCnnNkm46pJPL0jTNV8RC1R3xuhXuopaCHCXSTfZJKdXTx8MPP4xrrrkGf/d3f4eXXnoJV111Fc6cOVPQ+19zpAucf2NLUenmQ7o+nw/z8/OIRqMYHh5OSgImIC0BMT6cxeSkNTc3x6VJiNWqoCgK7mAM7//ZUQQiDP77+n0Vf+wuF4jqTqVSYXx8HEC86s7v92NtbQ2BQADABXtFsVR3EunS/OuHw+GC+8u5BE7ee++9ePLJJwEABw8eRDgcxurqatxeea6oSdIFSlPp5nIBeL1ezM/Pg6ZpnmwzgbQExPhw5tpe4DgOKysrmJ+fR1NTU0lz0k7ZI/jef7wKf5SFQkZBTpXGJL1akfgUk011RyLcU6nuhKnBuUAi3QsG5sU4jO3duxdzc3MwGo3o7e3FI488goceeijuezZt2oQ//OEPuOaaa3D27FmEw+G4bYp8ULOkW+5qyuPxYH5+HizLYnh4OOdeqNgbB5mOxXEcVldXMT8/D51OF5cAnOpYxRBjOMbgu7/X44GjTv7v/vEdI6hXKS6aShfIvXWUKcI9XVClkIhTSWUl0r1Q6Razo6tQKPCDH/wAb3/728EwDK677jps3boVX/nKV7Bnzx4cOnQI3/ve9/Dxj38c3//+90FRFO6///6CP+c1Sbrl7Bm63W7Mz88DAIaHh/P+xYpJunK5PCVRchwHp9OJ+fl5aDQaTE5OZo0tKYZ0X7N58flfv4b5lQAoAEoZ0NtSj7+Y7Iw7p4sBxfbrs6nuEqWywhYFTdMV39OtNOmSwaXX6y3KS/fyyy9P2rv92te+xv/viYkJvPDCCwUfX4iaJF0hxFY+kUdjUtnK5XKMjIwU/AsthYqMgOM4rK2tQa/Xo76+Pq94+ELCKRmWw0+fN+GfnzagUa2ASk5Bp5LBGWLwt28ehFx2/vew3gZpmVAq5V0q1Z1QnUX6xaFQCB6Ph19pE7YoykHIlU4CJqTvdrtrwsAcqFHSTdxgEHNNh2VZHDt2jB+OJC7V5wsxc9KEBE7Itq6uDtu2bcvb9CXfvuuiK4Qv/PoMTix48GcjbThlcaOrsQ6BSAybO+rxf8bba35lrBCUMycsUZ1F0oA3btwY53O7sLCwblR3mSC89mtFAgzUKOkSkA2GYkmXVIxkG2F8fDxuT7MYiJmTJpPJEIlEMD09DaVSiYmJiaQ1pnyOlQvpchyHX59awtePzEAuo/Clt4/ip8+bUK9U4D2T3fjhs0b8/Vs64/rNEumWB6SnW4zqTmggky8q/TsWtjdqJTUCqFHSFWtXlwyeDAYD6uvrMTExAYPBIKq0Uaz2gtvtxuzsLAKBAPbu3Vt0BZ4L6a4FovjKf57F78+uYN9ACz7/1hF87ldnQLPAT6+cxCceegU7utQY0cYwPT0NlmWh1WoRCATg8XigVqvXfURPNZBuOuSiultZWYkLqaw21V0mCH9+r9eLkZGRCp9RbqhJ0iUodFeXrFQZDAZoNJq4x/NqiOwRwuPxQK/Xg6IojI6OYnZ2tmjCBbKT7rNzq7j5N6/DHYrhC28bxft2duPw/cexFoji51dP4fn5NTgDUXx8sxxerxfbt2+HTCZDMBiEXq+H2+2Gw+HgxQLCi7ma/QzyRTWTbioUqrpLzLqrtNlOIqT2QpmQL0FyHAeHwwGDwQCdTpdyyl8tpOv1eqHX68FxHD/IIwbuYiCdui0UZfDt383hoWkLxjZo8NOrdmFjSz2u/cUJmNdCuOejO9GkiOGe5+axp0uFN27pRn19PdRqNWiaRmNjI7RaLTZs2IDm5uY4sYDP54PT6eT9DISPuLWaClFp0hWrR5tNdRcIBJKy7qLRKOx2e0lVd7miVqJ6gBolXfIhz7XSFSqzmpqaMu6vloJ084lh9/l80Ov1YBgGIyMjcR8ksbc0Entyr1q9+Pyvz8C4GsS1Bzfhc5cNg6IofOJfT+GMzYdvHRpBnduEu14IIEQDX3n/FOoiaxkNb9KJBYSWi06nk0+FIFEu5E+1V8WVJt1SvzcKhSIpiofjOPh8PszMzCASiSSp7oSVcamy7hLj32slfh2oUdIlUCgUGUlXaPDS0tKSUpmViHJG9gjh9/uh1+sRi8UwMjJStBFNNgjbCzTD4p7nTfjhM0a0a1W4/+opHBxqBc2w+Ny/vYoXDWu4fo8OnbFl6HoG8PsjZ/DuyS6Md2qxuOgqyGUs1fAnUUKbqirWaDTQ6XRVUxWvd9JNBeLyV19fj/7+/rjzSaW6E0a356u6S4dEL1+Px1Pya0Ys1CTpCitdclEKwbIslpaWYDabeYOXXIdj2Yg8X2RbGQsEAtDr9YhEIhgZGckqKxYLhHQX1oL4wq9fw8lFD969vQtfedc4muqV4DgO//CbM/jd2RV8dIsKVx48b+bztf+aAc1w+Ns3n7fBoygq6aZS6PZCJgltMBiEz+eLMyIXqrYK2TsWA5Um3Uq9diphRDrVHU3TcWnB+aju0iEWi0mkWwkkthdYloXNZoPZbEZ7e3teZEugUCj4aa4YSLcyFgwGMT8/z5ucpzPMKRUoisKTs17cd8oChYzCHR/chndtP+/7G4lE8OVfn8Rj5/y4Zs8GfOnd20FRFBbXgvjlcSs+tLsXm1rP98LL4aebrt8orIpdLhe8Xi+mp6fjhAKljuep5NpUJU3M81GjEWOgxMf/TKo7YYuivr4+6feXWOlGIpG0LcNqQ02TLum/CuNmOjo6ijLlLvUgjZicE9/dVFaQpcZaIIp/OGLCcwYPDgy24Pb3bUV30/lBmMlkwr0vWfCYnsb/3deHL10+zp/fXc8YoJBT+NSlg/yxUuWhlWtPV6jaam1txcLCAjZv3pwynkeYIKzT6fJOms2EShGfWO51hUAMCXAm1Z1weJeYdafVahGLxfjXr/S+cL6oSdIlF7hcfn5d6aWXXio4biYRpSJdEt/j8/kwPDyM9vb2gsm2mEfaZ2ZX8Q+/eR2+cAzX7mzEF/5iChzHwmg0wmq14pVAI36tp3Fosgs3v/MC4c4u+/H4aTv+6g396Gy88PRQbXE92ariQCAAi8WCQCAAjuP4qor8yXc3tZLtBYZhqqq9IAaEqrvE1xMOXl0uF6LRKF5++WU8++yzoGkaL7/8MrZu3ZqXYChbNhoA/PKXv8Qtt9wCiqKwY8eOJAeyfFGTpAucD4pbWFgATdO45JJLRFvCF5t0aZqG1+vFqVOnMDw8jImJiaIulEL9eYNRBmE5Hr8AACAASURBVLf/dhaPHrNivFOLH3xgFMrgKqxWCxYWFtDd3Y013RDueup1vHm8Hd987wRksgvneef/zEOjkuNjb+yPO2460q02pKqqhIMf4W4qkc8K+43p3u9K9lVrpb0gBhIHrzabDSzLYmJiAo2NjTh58iTuu+8+vPbaa7j66qtzCqXMJRttbm4Ot912G1544QW0tLTA4XAU/bPULOnW1dVh//79vCRWLIi1vRCJRGAwGOByuSCTyXDgwAHR0iPyJd3TFg8+/+vXYF4L4q8u6ccNbx6CddEMo8MBtVqNffv24QWjB3//m1ewt78Z/+9D26GUX7iYX7F48NS5FdzwliG0NMS3bdKRbi346QoHP52dFxzSiHw2sdfY0NDAtyc0Gk3WTZhSo5LWjtXgMEZupAcOHEBvby/uvvvuvI6RSzbaT37yE1x//fX8kK4Q0/JE1Czpdnd3l+TCLrbSjUajMBgMWFtbw+DgIMbHx/GnP/1JtGqI3BRyudHQDIt/ec6EHz1nRKeuDj+/egqDGhonjr0MrVaL5uZmjI6O4pjZhb999DTGO7X48Ud2Qq2Mv5i+/4d5tGqUOHwgOe4+lbKt1r0X0slng8EgAoEAvF4vbDYbwuEw316wWq18ZVwuMqo06VZS4k3TNN+CKFSNlks22uzsLADgkksuAcMwuOWWW/COd7wj79eiKOp9AL4K1DDplgqFVrrRaBRGoxFOpxMDAwMYHx8vyWNnrkY1JmcQX/j1Gbxi8eLQZBc+fXAD7ItzcGg02LlzJwDg7NmzeH3Ji0/86yn0Nqvx06t2QauO/0i8ZFjDS4Y1/MM7xqCtS/641DrB5gqKoviqWFjtOBwOrKys8DvhxFQmsVdcCpFApUm30pUu2V4opTCCpmnMzc3hmWeegcViwaWXXopXX301b5LnOO4/APwHUMOkSz7A5FFWrA9fvhdGLBaDyWSCw+HAwMAARkdHS3ohZLspcByHXx634rYnZ6FSyPCNy4fQL3PC5bDFeUxEIhHYfDS+8dRJNKqVuO/wFFo1qqRj3fGUHt1NdfjI3r6Ur1dtg7RyQyaTob6+Hn19F94f4QQ+USSQ2CsuRsYrke75965Qh7FcstH6+vqwf/9+KJVKDA4OYmxsDHNzc9i7d2/B516zpEtA2gHlVijFYjGYzWYsLy+jv78fBw8eLMsFkKnSXfVH8I+PncXTs6vY39+IqzfL0KxwYXR0PCmZYNkXxTdf9AFyBe47vAvdTcn9yT+cW8Fpqxff+IstUClS/2wXO+mm2l4QTuCFVTERCfj9ftjtdvj9ft5qUUjGqfZSU0Ei3QuVbiHCiFyy0d773vfi4YcfxrXXXovV1VXMzs7yPeBCQFGUsuZJlwgkykW6NE3DbDbDbrdj48aNOZOtWKtF6Srd/5lZwc2PvQ5/mMa1O7R4Uy+H8bHUWW5rgSj++qHTCNIcHrpmFwbbkw3QGZbD9/8wj8H2Brx3R3fa80m3p1sLgzQxkM/vNZVIgFgtksEd2Usl0lkhGaeqitfbyliuEJKu1+tNKipyQS7ZaG9/+9vxu9/9DhMTE5DL5fjOd74Tp5YsAP9Us6QrlqduumMnVhE0TWNhYQFLS0vo6+vLq7ItZQx7IELj9t/O4ZfHrRhsVuCmXfX4810jaUUX/jCNjz1wEjZPBDdOqTHRnfrD+p+v2qFfCeD/fXg7FPL0P2c5FGnVjGJvpkKrRWG6rLAqXl5exvz8fFJVzLJsxfaEK026wtf3eDzYtCl5yJsLsmWjURSFO+64A3fccUfhJ3vhWG8C8IGaJV2CQj11M0HYsmAYBgsLC7Barejr68OBAwfy/rCVKob95KIbn//3M7C4wrh8UIEb3zqGvp7utBdhOMbgUw+fwsyyHz+8YhIq51zK74vSLO562oCt3Tq8fUvmFZlUVa1EusUjU1VMyJikiCTGuGu12pJvFlSadIXvu9vtxuTkZMXOJRdQFNUC4GcArqxZ0i1lpatQKM4Pmmw2vrl+8ODBgj9kxPRGjBYIqXR/ddyCL//nObTUUfj+e/rxjt0jGS/+GMPis//2KqbNbnz3A9vwpvEOvPhiatL9txNWWFwh3HLVrjiBRCpIPd3yZqQJDchXVlawd+/epBh3o9EYZx5fbCxPKlSadIXveY146X4SwAYAP65Z0iUQu9JlWRbhcBgnT57kK9tijaLFtotcXl6GYs2Ly8eb8NX37kBjfWYyZ1kO//Cb1/H0zCq++q7NePf/GtukQjDK4MfPGrG3vxlvHM7ueEZcxgwGAzweD3Q6HRiGAcdxFZXIlgvV8DOminHnOA6RSITvFZNYHrL6VmxVXMmfO/GGXgupERzH3QbgNmAdbC8olUpRXMFYloXFYsHi4iLkcjm2bNkS12MrBmKEUxJTH7PZjKamJrznLZfgvTlUGhzH4Rv/PYPHT9vxucuGceW+1KtfBA8eXcSKP4o7/3Iy60XFsizsdjvW1tbQ0tKCgYEBBINBOBwOPiJcqVRCp9PVjCl5vqgG0k0FiqKgVquhVqvjYnmEHgarq6u8zWJdXV0cGefye6qWIV4t2ToCNUy6YrUXhHaQnZ2d2LdvH0wmk6iPx8VUukIj9o6ODoyMjICm6Zwf7e562oAHX7bgujdswif+bCDj93pDMfzkeRPeNNaO3ZvSVw4k9mh+fh7Nzc1oampCf38/otEodDodb0Q0NDSEaDQKn88XZ0ourLYIIddqNHil/A8K/XwWah5fTZFKws0F4Hx7QSLdMqLQ9gIxOjeZTEkOZdWQk0bCMwmxEW9gu92ec/zP/S8t4IfPGvGBXT34wttGs1Ym975ghjdM43OXDaf9nrW1NczNzUGr1WJqagoUReHVV18FEC9YIaSgUqnQ1taWFNVDepCEvMul4hIblap0xRYEpTOPJ7+nxEilcDgMu91ekaeXRNINBoM146UL1DDpFlrpCivHtra2lN672dIe8kW+pOt0OqHX66H5X8mu8AMll8tz2oH9j1M23PbkLN4+sQH/dGhLVmJY9Ufw8z8t4N3bO7G5Kzlt2OfzYXZ2FjKZLM4+LxqN5j1IS9eDDIfD8Pl8cSou4vhFKuJKByAmopKkW+rXlclkSVUxcF7NeOLECUSjUSwsLPD5aOUyjxeSLvmcVdNnIhtqlnSB8xd3PuGUdrsdRqMxa4QP2V4QC7mSrsfjwezsLJRKZZxkVwiZTJb1WE+ddeDmx87iDUOt+O4HtkGeZQMBAH77mgNRhsNn3hxf5YZCIej1eoRCIYyNjSUNLIQESwiokO0F4WReqOISOn4tLi7yF7jwsVeMSPpCUSnS5TiuYtsDCoUCKpUqbjdWGOGeLlJJrJtmYqULVKedaDrUNOkC2dsLJAnYYDCgpaUlpwgfhULBX9xiIFvlTBKAWZbF+HiyZFeIbIY3LxnW8Nl/exXbenT4wRWTaeW7QLya7KP7N+INw60YaDvv3ETc0lwuF0ZGRtKaricm/wr/KwZSOX4lPvaaTCZEIhGwLIv5+Xm+Ks5VTlsMKilOqJZBFpBbpJLwpllMVSwk3XzmG9WCmifddIGEZNhjMBjQ1NSEqampnP1Pxe7ppqucg8Eg9Ho9wuEwRkdHcxoGZKqaT1s8+JuHX8FgWwPu+eguaFK4gglBhA3kQzvYrgHDMDCbzVhaWsrJLY3cBMoZ15Pqsdfn88FkMqGpqQk+ny9OTiusiPMJP8wFlax0a8F3IZN5vM/ng9vthsViycs8XgwJcCVR06Sb6uImAyiDwQCdTpfUE80FpR6khcNhzM/Pw+fzYWQkvWQ3FdK1F/QOPz7+4Cm0aVT46VVTaG7IvnsplCcLtzh6enpyVt5ViziCoijI5XK0t7fHrUjRNJ3WkFy4ypZvgCnBehik5YtihRHpUoMzmccLyTgWi/H/thZ2dBNR06QrBMdxWF1dxfz8PLRaLSYnJ5NylnJFqUhX6Lk7NDRUUHRPqkGaxRXCtb84CaWCws8O74rLMMsEQuAulwt6vR5tbW1558xlazlUGgqFAs3NzXEXprDSEvYfVSpVXFWci4JLIl3xkK6VlBip5PV6oVKpcOTIERiNRr6fnO/1nks+GgD8+7//Oz74wQ9ienoae/bsKepnBGqcdMnFzTAMjh49ioaGhqLIlqAU0mKXy4Xp6WkMDAxgbGys4As1sae74ovg2l+cQIRm8OC1e7CxNfefnaZpnDx5EjqdLq/2Sy6oFtJNhXSVllDBtbq6yiu4hFVW4k6xRLqlRapIpXPnzvHD1jNnzsBoNOKyyy5DOBzGQw89hC1btmQ9bi75aMD5ttWdd96J/fv3i/Yz1TTput1unD17FjRNY9u2baItSItFugzDYHFxEQsLC1AoFKJ47gpbFZ5QDH/1wEms+CK4/+rdGOvMLQXV7/djdnYWoVAI27dvj3scFwPVVOnmg1S7qmSnmPSJE3eKg8EgdDpd2cn3YiHdVKBpGmq1Gvv374fdbkdXVxduvfXWvNYyc8lHA4Avf/nL+OIXv4jvfOc7op1/TZMuAExMTGB+fl5UV6V0w7lcQSS7JGV3amqK33EV49xYlkUwyuAT/3oKhtUA7v7oTuzcmD2uJBwOQ6/XIxAIYGxsDAsLCyUJV6xV0k2FdDvF5JF3dXUVi4uLMJvNUCgUcX3iUu4UX+ykKzQwJ62jfM4pl3y0EydOYHFxEe9617sk0iVoaWkBTdMlsXcsBER4YTQa41Ru0WhUNMMbmUyGGMPiM4+exisWD+788CQuGc5sqhyLxWAwGOB0OjEyMoKOjg5QFAWLxVISs/H1RLqpIEyGcLlc6OrqQlNTU9r1KJIgLKbtokS6F6J6EiN2xADLsrjxxhtx//33i37smiZdglL0YPNBomR3z549cdNwMc+PYTnc82oU0/YQvvEXW/C2ifR+t8QL2Gazob+/Pym/LdeQy3yx3klXCGFbId16FGlPCG0XhWbkOp0ub8lzpUm3kh4MwnU5r9eLrVu35n2MbPloPp8PZ86cwZve9CYAgN1ux6FDh/D4448XPUyradIlH9JSVbq59OkySXaF5ykGCXEch1ueOIdpO4Mvvm0UH5xKfYfnOA42mw0mkwnd3d1p178k0i0e2T4jqXaKM0X0JLYn0lWUlSbdahEkeL3egpKAs+WjNTU1YXV1lf//b3rTm/Dd735X2l4gKEWlSwZW6dyvcpHsEog1YPneU3r88rgV7x5S4LpL+pO+Lqy4W1tbU/pKCFFs7zodJNLNjEwRPSRBmOypchwXt6eq0+mgUqkk0v1fFLqnm0s+WqlQ06QrrHTFlO0CF4g8kXTzkeyKiXv+aMJPnjfjI3v78NYWZ9LX3W43ZmdnUV9fn7MgRKp0i4eYWwvpdoqFngYLCwuIxWJgWRb19fW84q6hoaFs2xOVJN1E9WMxXrrZ8tGEeOaZZwp6jVSoadIlUCqVJal0hccsRLIrFn55zIrvPaXHu7d34iuXj+NPf3qJv9j9fj/m5ubAsiy2bNmSl/lLqVJ7LzbSLSVSeRpwHIf5+XlQFIVQKISVlRUEg8G47yWS51L4FFeSdBO9FmrNwBxYJ6SrUChKEk7JMExRkt1EFFIVHTmzjK88cRZ/PtqG29+3FTLZeRevcDgMg8EAv9+P0dHRuOFNrhCr0uU4DgaDATabDfX19WhoaEA0GkU4HEZdXV1NOUAVgnL/fBRFQSaTobGxMSkVgvSJ7XY7/H4/GIZJ2Z4o5pwrTbrC7Q+/359kslPtqGnSLeUgjaIoGI1GBIPBgiW7QhDJbT6Vxx/1Tnzh12cwtbEZd354Ekq5DLFYjPczHRkZKeq8iiVdMrALBAKQyWSYmpoCTdPwer1YXl7GzMwMIpFIXGSPTqcr66NwqVFNijS5XJ4yQZhInomMlvxOhD7F+RiRC02Syg1hpVuLXrpAjZMucJ4cxRyk0TQNk8mE5eVldHV1YceOHaJcVNkGc4k4seDGZx55BSMdGvzLlTtQp6BgMplgtVqhUCiwa9euouXOxQzSnE4nZmdn0dLSAo1Gg40bNyIajfICAZVKhW3btoGiKNA0zUf2rK6uIhgMltz9q1yolNtXroM04U4xkdEC8ZaLZrM5KUYp004xTdMVI7rESheoLS9dYB2QLiDO9gKR7BKlyuDgoKjO9/mEU56z+/DX/3oKnY1q/OT/7oTftYJXjUZ0dXXhwIEDOH36tCjnVEil6/f7MTMzA7lcjsnJSajVakSjUbz88stoaGgAy7Lwer3o7+8Hx3H84KOxsRE6nQ59fX08EZMBkXBSLxQS6HS6qs9Oq1TvutjthVQ7xYlR7gaDAQzD8DvF5PdS6fYCee1ypGeUAtX9ic4BpL9V6Ic/UbJLdlotFktFInvMziD+6oGT0Kjk+O67+qE/cxItLS1x619i9WJlMlnOP2MkEoFer4ff78fY2BgaGxt5Up2YmMDKygr0ej3UajVaW1tht9v5Hm9jYyNvWiL03yV/19XVxQ/fyKOw8KKvr6+PI+JCbRhLgWpqLxSLTDFKZJVtaWkJwWAQJ0+eTHpSKUf1K9wo8vl8FU0NKRQ1T7qFIp1kl6ASkT3L3jCu/cUJ0AyLL+xRgws4U65/FZMuLEQu2wsMw/DtlsHBQWzZsgUsy/LEGQgEMDc3B5VKhV27dsWdK8dxvBrL7XbzForCAEqNRsPvnQLgY8M3bNjAk1kkEuF7khaLhbdhJKIDrVZbsYpzPWekAal3iqenp7F9+/Y4yXMwGOR3ioUCD7GVa8IWndvtrjkvXWAdkK7wg5fLBZBNsksgFrHlejxXMIpr7j+ONX8EN79Bi7fsmUh7Fxez0k13HKGqrbe3l7e2IzExJM4nGAxidHQ0pSpIaIvY3d3NH5cEUHq9Xj6AUuhlS0zFCZEqlUq0trbGbY6QPjFx/woEAojFYpidnS1riOXFmBwBpPe+DQaD8Pl8cenBdXV1ce2JYmKUYrEYb9JUiwbmwDogXYJcBlW5SHYJyhnDvuYN4KqfHcOiO4bvv3cEb90xUPCx8kE60hUOyfbu3RtnnM6yLBYWFuBwODA0NMSb5+SKdAGU0WgUXq8XPp+PH+wIh20ajQYNDQ1xeWxkUi+TyRAIBGA2m9HR0QGfz4eFhYW44ZCwKl4PcT2V2iDI9ESRbqdY6FOcKkaJ/Mnl5xFe4x6PpyAJcKWxbkiXrI2lIl2hZFcYH54JpSDdxOPRNI0ZvQE3/9YCo4vFXVdM4rLN6Q1sCMSsdIUXEYlZFw7JSCsBOG/6YTab0dvbi3379olaaalUqpRRO6SaJatpwAXXLtITpmkadrudX4PSaDTo6enh1/RIn3hpaQl+vz8urocQcaGPweu9vZCIfH9eiqL4llHi75a0nhJ/L8KqOHGYLbzGpUq3QiC/kFQkWYxkt5SVLsuy5z1YFxZx/5wcZ9dYfPv9W3Mi3MRjFQNC3pFIBHNzc7zPrnBIRlEUH+dD2jFiehdngkKhSHqEJQIAMmybmZlBOByGRqNBR0cHvF4v31ZgGAYcx/GVdWdnJz+wI8MhkiYsdP4iZJyLsGM9DdJygVibCwqFIuVOcboYd0LCkUiEf/1CzW4qjZonXQKhQEIMyW4pEoGj0SiWlpZgMBiwobMT/7XSjBfMdvzjO8fwFzu6cz6WWJUuy7JwuVw4fvw4LwARDslCoRBf+W7btq3ovWAxQAQAFEXBbrejtbUVQ0NDiMVifOYZ8SfINLAjKRHCaHmyu0oq61yFHRLpigPhRkviTjHZ8/b7/Thz5gzuuusurK2tYePGjfjjH/+IycnJnAk4WzbaHXfcgZ/+9KdQKBTo6OjAfffdh/7+ZIOpQlHzpCusdIPBIJaWlkSR7Io9SAsGg7Barejs7MSePXvwvf8x4Tev2PGZNw/hqgObynpuHMfBarXCYDBAqVRi3759AC4MyYjpOZEYV9MjHFldC4fDGB8f54eNZFiTOLAjfWLhwE44aBMO7IjhTEtLCyiKyknYwTBMxfZWK0H2lfhZVSoV2tra0NbWBofDgT179uBHP/oRb07z6KOP4mtf+xp+97vfZX1PcslG27VrF44dO4aGhgb8+Mc/xhe+8AU8+uijov08NU+6wPk7ocvlgs1mw/j4eNGSXUA820PST+Y4Dh0dHdiyZQt++IwBP//TIg4f2Ijr/3ywoHMrVPa8urqKubk5tLa2Yvv27dDr9XxFR9oey8vLGBgYwObNm6tm+ZwM8Ox2e04DPOHATlg1kfUzn8+XkkRTDezI7qpMJksSdsRiMZw8ebImhR2FoBpsHSmKgk6ng1wux/vf/35cdtllOf/bXLLR3vzmN/P/+8CBA3jwwQfFO3msA9INBoOYnp5GU1MTOjo60NXVVelTAnD+vObm5hCLxTA+Pg6aprG8vIwHjy7in5824H07u/H3by8sFVgulyMcDuf1b3w+H2ZmZqBUKrFjxw7U1dWBpmlotVqcPn0a4XAYsVgMzc3NGBoa4h/hKw2y4mcwGNDV1VX0AE/YViCIxWJxbYV0Azthn5uQs81mw9TUVFyse60IOwpBNZAuQSGDtFyy0YS499578c53vrPgc0yFmifdhoYGHDx4ECsrK/D5fJU+HUSjUczPz8Pj8WBkZIS/uD0eD542+HHny1ZctrkDXz+0BTJZ6Y1qSBhlMBjE2NgYn1xLVo46Ojrg8XjQ3t6Onp4ehMNheDwefoihVqt5CW9jY2NZXcOI5FitVmPXrl0lI6xUO6eJAzuDwRC39aBUKrG8vAyNRsO3egoVdhSzt1puVJJ0E588S23r+OCDD+LYsWN49tlnRT1uzZMukQFXMrIHiDfKGRoaSno0f8HoxV3THuwfbMH3P7gNCnnh1VouPV1yPg6HA8PDw+jo6IgbkoXDYczNzYHjOExMTPDJF01NTfzjeKKQwWq18naNhIR1Op3opEFuXMJtinIjlWMXy7Lw+XwwmUxwuVyoq6tDNBrFuXPn0g7sCKFnEnaEQiEoFIq4ValyyWrzRaUNzIXvSSHbC9my0QieeuopfOMb38Czzz4r+s1+XZAuUJrIHnLMTCtSLMvCYrFgcXERfX19OHjwYNLF8rLJhS/95xwGmuT40Ud2oE5Z3Ic2m5LMarXCbDajr68vTkkGnL/gjUYjX4ln8uFNJ2SIRCJxA6pQKASlUhlXERdi30jeS6vVisHBwarqKQPnRSPz8/Po6urC9u3b+b5/vgM7mUwWJ+ygKCqusiZJwqUWdhSCSpvdCPvkPp8vb9LNlo0GACdPnsQnPvEJPPnkk3Gfe7FQ86QLnCeHUlS6mUiX4zgsLy/DYDCgo6MD+/fvTzk4OWPz4pMPnUJvsxo37ZJBW1f8W56OdInpDMlHEyrJOI6DxWKBzWbDwMAAxsYK6ycD5/uiHR0dcfleZK3H6/XC4XAgGAxCoVAkEXG66m11dRV6vR4dHR3Yt29fxclFiGAwiJmZGSgUCuzcuZOXoQK5DexWVlaSVFjCgR35HQnDKAkRkz5xoil5JBLB2tpaSfwNMiFfT2gxkUi6hajycslG+/znPw+/348PfehDAIBNmzbh8ccfF+3nWBekC5QusifVY7zT6cTc3BwaGxuxe/futI8f8ysBfOyBk2iuV+Leq3bCfPaVkpxXqiGZUElGor87OztLRmjCtR4Csjvr9XphNBp5s3Nha4KiKOj1+pSEVmkwDAOj0Qin04mxsbG8+ofpBnapFHZCIhYO7ACgvr4earUanZ2d/M1W6G+QStih1WrzjnTPFQzDVGwYKCTdYjaLsmWjPfXUUwUfOxesC9KlKCqlzLZYJLYsvF4vZmdnoVAosH379owJwDZ3GNf94gTkMgo/OzyFnuYGmERywiIXH+nLhkKhpCEZRVHwer2Ym5tDQ0NDSQdR6UCMaoQtDNLPdLvdOHPmDMLhMNRqNZqbm7GysoLGxsaKP0YLTZF6e3uxd+9eUfqrqd6PdAM7YiZO/ku+l5yfSqXC4OBgVmGHUGEnRmJHtbQXhCt9tYZ1QbpAad58QrpE4RaJRDA2Npa1j+T0R3HtL04gEGXw4LW70d8mrpKL4zh4vV4+sqe9vT1uSEZkvQzDYPPmzVWVISWXyxEIBGC329Hf34+enh6wLAu/388P63w+HziOg1ar5XdktVptWR5rA4EAZmZmUFdXh6mpqZLfqNIN7Eg1K1TYES8MEiFFvhe4IKvNJuwgTxqFJnYwDFPR1AjyGfD7/TXppQusI9ItBSiKgtlsRjQaxejoaE4KN1+YxscePAm7N4z7Dk9hc5d4HwzSlzWbzaAoKmlIRrxv19bWeEVeNWFtbQ16vZ53LyMXUDriIURMVIakAiStCbK6JQbIgNHlcmFsbKyiKjyhWxdR2LlcLpw7d46P3XE4HFhYWOCVeKQqJsQMpBZ2kPe10MSOaunpejyeimy1iIF1Qbr5eupmA03TMJvNsFqt6OjowNTUVE7HDEUZfPKhU5hz+PGjj+zA7k3iXLgcx/GDpra2NuzZswfT09Pw+Xy8H4LNZoPFYsGmTZswMjJSVY9dxMMBQM4eDiTtVnhhsSzLO1M5HA7Mz8+DpmmeMAgZ5zNYIgNRo9GIjRs3Vt17F4vFMDc3h3A4jMnJyaSWVraBHdkDFvaJyRCvu7ubJ+JchR2VrnSFXrq1aHYDrBPSJchlxSsThNE9vb29GBkZ4f0IsiHGsLjhl6dxfMGNOz64DZeOtqf8vnxvCl6vl3/cJUMyhmHQ19cHg8EAr9eLWCzGh0NW0weR7Ao7nc6CY+KFII/GOp0OPT09AC44U3m9XjidThiNRt7sJlHUkQgivqivr8fu3bvLugWQDSTZxGw2Y3BwkHdIS0S2gZ3VaoXf7+cN5UlLIXFzQijsIKtwqYQdkUgEKpUKzc3NZRd2CCvdWk2NANYJ6SZGsedLuunWv+x2e06RPSzL4Uv/8RqenXPia+/ZjMu3pZYi55MITIZk4XAYY2NjfCQNWRAng6fW1lb09/fzJuAkzYHkXRHS/HTQ7AAAIABJREFU0Wg0Zbs4hIRBTEVKVR0JnamEZjekciMxQZFIBGq1miedtbU1BAIBjI+PV9WNCrhwM9BoNAVZaWYb2C0vL/P+tYkDO2GAaqrEjlOnTqGpqQmBQKDswo7E9oJEulWAQtbG1tbWMDc3B61Wi6mpqbiVpVwSfDmOwz8dmcETry7j7/7PCP5yT1/a782FdElvcWVlJeWQLBqNxg31hMME4UUmXNcqJxG73W5+na6c3rtCpIodJyIGs9nMPzkAwPz8fEnVdfmAYRgYDAa4XC7RbwaZBnZerzelJSa5QREzpEgkgkgkgqamJp6IyynskEi3CqFQKHIWSJCUBJlMhm3btqVc/8pF5Xbn/xjw0LQFH7ukH3/9ZwMZvzeTfFfY2ti4cWPKIZnZbMbq6iqGh4fjfGBTIVW1k46ICekUQ8TE4yEajWLLli1VtTEBXKgetVotLrnkEv5mUCp1Xb5IXFErB/Gni9chTwmkPRGJRMCyLGiaRnd3N09+QoEOOQ4Z2AlDSROFHYUmdkikW0VIbC9kQigUgl6v53dbM/3ispHuz14048fPGfHh3b246a0jWc8zFemSIdnc3Bza29t5Fy2hkmxpaYmXGRfjslUKIiY3A6HHQzUhFothfn4efr8/zn+XIJu6bmVlJeV7kkldlw/C4TBmZmZAUVRFdqkTkfiU4Pf7cfbsWWi1WrS2tiIQCMBkMsUN7EhFnDiwI8KOrq4ufmBH+sTC4MpchR1C0vV6vRgYGCjnWyMa1gXpEmQiSZJe63K5+Mf2bNVEpuP96oQVt/92Du/YugG3vDs3j4BE0hUOyXbt2sUbpZBWAtH6E1lvKVZ1CiXihoYGftLd09MjemZasSBpxgsLCxgYGMD4+HjO1WO+6jryvpBKLxcQ7+KlpSV+HbGaQNR4a2tr2LJlS8qd2EIGduS9TZfYQbwrUgk7hIY3UqVbYQgr3cTBF6nElpaW8r740pHu71534MuPn8Ubh1vxnfdvgzxHi0aimguHw5idneX7ssIhGUVR8Pv9mJubg1KpxOTkZMbU4lIgGxHPzs7C7Xbz1pBKpRLBYLCsw7pMIMbxTU1Not2s0qnryC7xwsICTzqJRJzYy3S73ZiZmUF7ezvvkVFNcLlcmJmZQXd3N/bs2ZP2RlLIwI4M2oTtiXSJHeQ4q6urCIVCCAQCmJ2dxdNPPw2Hw1HQdZEtqicSieDw4cM4fvw42tra8Oijj4peUa8L0iVQKBS8np1lWdhsNpjNZvT09ODAgQN5f7hTtQNenHfixl+9ih19Tbjrih1QKXKv7iiKwuLiIkKhEF/dCCtb8igcDAYxOjpaVVN1UnnY7XZwHIe9e/dCrVaXrEdcCMiQMRQKlaWvTMhCWHER0kmlrtNoNHC73WBZNu0coZIQ7gTv2LGjIFJLN7Aj/d21tTW+rSDcAyZELJT3ks8RIeJjx46hs7OT9xr5zGc+A4VCgfe85z346le/mvXcconquffee9HS0gK9Xo9HHnkEX/ziF0WN6gHWCekKK91oNAqHwwG9Xs/3SAudoCeSxSsWD65/5DQG2zW4+6M70aDKjcSJZaHNZkN7e3vSkIxE0TgcjpyiaMoNcn5LS0sYGhqKM+nOVBGTx/BSEzFR6lkslqTzKzdSkQ5RCi4uLvKm56+++mqSqKMSmx4EZGVyYGCA78GKBWEbhiDdwC6dws7lckEmk0Gj0eCzn/0sfv/73+Pxxx9HU1MTVlZWcjqPXKJ6HnvsMdxyyy0AgA9+8IP49Kc/LXri87ogXYJQKITl5WVwHJe0/lUsZpf9+PiDJ9GuVeG+q3ahqT77BUKMU4hlYX9/f5Ito91uh9lsRm9vb1X2RVdXVzE/P5+zQ1m21kQ6Ii50MOV2uzE7O4uWlpaqs4QE4nduDx48yBOrcF2LbC4Uq64rBGSQJ5fLyyoQSbXWB8Rvk5AhZjQahUwmg9PpRCQSwdNPP43FxUXU1dVBpVKlNCFPhVyieoTfQ/wsnE5nnPikWKwL0uU4Dq+88gqvzNq2bZuox19cC+K6B06gTiHHfYen0KHLPmEmfUUSNaNSqfi/s1gsUCqVCIVCaGpqws6dO8vet80Gv9+P2dlZqFSqoi0X0/VDvV5vwURMTH2i0Si2bt1adY/qwkFUqp3bdOtaharr8gV5OrBarVU1yBNuk5CtnuHhYdTX1+Nf/uVf8MQTT2B1dRV9fX246aab8OMf/7jqbrTZsC5Il6IobN68GQqFAtPT06Ie2xPh8JVfnECM5vDgdVPY2JKZHEOhEObm5uLEC6Rv29jYiImJCczMzAAANm7ciHA4jDNnzoBhmDhXLZJ2Wm6QvrLP58vJUa1QKBSKtETs8/nSErFarYbNZoPVauVX1KqpFQNc2Lnt6enJa+e2EHUd+azk45/r9/tx7tw5NDY2VuUgLxaLYWZmBgzDYGpqCgDw7W9/G8888wweeOABTE5OIhgM4uzZs3mdey5RPeR7+vr6QNM0PB6P6DekdUG6wPmdQIZhcg5szAXuYAzfPR6BMwz84prdGN2QfjBD0zQMBgOcTifv8MWyLO/dQNM0vy86OjqatO5Chg3EVWt2dhYsy8YRTil9Zok4w2Kx5L3lIRayEfHMzAzcbjeUSiU6OjpA0zQCgYBoO7PFQrhzK5Yhezp1nfAxPNfsOpZleVP2zZs3V6VLFzEyGhoaQmdnJ06ePIkbbrgB73//+/Hcc8/x7ZmGhgbs3r07r2PnEtVz6NAh/PznP8fBgwfxq1/9Cm95y1tEvw6oLA7s4rhulwGxWAwsy+LFF1/EG97whqKPF4wyuPbnJ3DG5sEPPjSBN0/0pPw+YUbapk2beCMWQv5kH3N5eRkDAwNpjUvSHZv0Qr1eL/x+PwAkEXGxhON0OnkHs8HBwaqrfIgPBcMwGBsbg0ql4gnH6/WK2iMuBNWycyskYp/Ph2AwyKvr5HI5lpeX0d3dzc8WqgnRaBQzMzPgOA6bN28Gx3G4/fbb8fzzz+Puu+8WrWV45MgRfPazn+Wjem6++ea4qJ5wOIyrrroKJ0+eRGtrKx555BF+8JYn0l7k64Z0aZoGwzCikG6UZvHJh07hJcMabtzfhCveuDlpOTxxSDYwMJA0JFteXobJZEJ3dzc2bdokygedYZgkIhbaIOZDOMFgkJdCj46OVl1fmWxN2O32rGo3YthN3pdEIibL+mKTDRnktbW1YWBgoOpuWCTfLRgMor6+HtFotCzvSz4gmxOkuj1+/Dg++9nP4kMf+hBuuummivn3FomLh3Rfeukl7N+/v+APEcNy+Ny/vYrfvu7Abe+dwOY6N7q7u+PysTweD2ZmZtDQ0IDh4eG4yG2KouB2u6HX66HT6TA0NFTyiXA6wkkkYmEEuMFggNvtxujoaF7ZX+UCyaHr7OwsuDIrJRGTndZQKITNmzdX3SAPuPCo3t/fz3vnAvFKMvK+FKOuKxQkvp6iKIyPj4NlWdx222146aWXcPfdd2Pr1q0lff0S4+Ih3WPHjmFycrIgouM4Dv/4+Fn86oQNf/+OMVxzcBO/jtTR0cGbccdiMV5JxrIsv8dHhmgcx2F0dLSiF6JwTYtcWEqlEjKZDH6/Hxs3bqzKx0yh4fnY2Jjo1XcqIhY+KWQjYqFtZSl2WsVAJBLBuXPnIJPJMD4+ntO1IFTXkYgfAFnVdYVAaBw/MjKCjo4OTE9P48Ybb8Rf/uVf4sYbb6zV6laI9U+6DMOApmmcOnWqIMLjOA7f/p0e971oxt/8+SBueMswAMBgMEClUiEQCPAxOO3t7WAYhidbUjl6PB6MjIwUbdZdChBpZ319PTQaDfx+P0KhEFQqVVxFXKoU2WwQGueUuy+aiYiFNpihUIiPzBkZGamomCEVOI6D1WrF4uIiRkdHi94tFarrCBGzLMtv2RBCzocgyQ1BoVBgbGwMNE3jm9/8Jqanp3H33Xdjy5YtRZ1zFeHiId3XXnsNvb29eZth3PNHE773lB4f3deHL18+zrsinT59Gi6XC6Ojo+jp6Ykz7yC7jjabrWqrHlJ9syyb8mZEhi/kD0nnFRJxqZ2vyIpVV1eXaL3vYiEkYo/HA5fLBYZheLMWQsTVcK7A+UDNs2fPQqfTYXh4uGSVIslYI++NMLsuk7qO4zjY7XaYTCb+hnD06FHcdNNNuPLKK3HDDTesh+pWiPVPuizL8vt95MLIFQ9PW3DLE+fwnskufPt9W0FRF/phZDF9YGAgbki2srICo9GIzs5ObNq0qeoGKER6urq6mldIpXAdifyJRCL8+0D+iNGnJkMehUKB0dFRURWEYoFk0/X09KC7u5uv/DJVxOUkYpZlYTKZsLKygs2bN1fEr0OoriNkTNM0Ghoa+KenpaUlqNVqjI6OgqZpfP3rX8eJEydwzz33YHx8vOznXAZcPKRrMBhQX1/PL5dnw3+9asff/fsZvGm0HXddMYmg38cPyUZGRuDxePi9vqamJsRiMej1en6IVmn/00QIK4re3l709fUVTQIkdUFIxNFolL+oyJ9cH7eFN4SxsbGqHOQJd27HxsbS3hCEFTF5BC8XEXs8Hpw7dw4bNmyouv48MTEn65JqtRqPPPIITp8+jaWlJbz1rW/FLbfcgr6+9EkrNY71T7ocxyEajWJhYQEAsGnTpqz/5tnZVfzNw69g18Ym/PMHxrFoMoCmaYyOjvJDMpZl4Xa74XQ6YbfbQdM0b+gs7INWA4jMuBxbE0LJKvlDkgGERCx8ZCRrdsSDV4wbgtgQ7tyS/n2+SEfEiaY/hf7sNE1Dr9cjEAhU7eZEOBzG2bNn+eo2Go3i1ltvxdmzZ3Ho0CEsLy/jxIkT+NGPfoTBwcFKn24pcPGQLolcybbQfMzsxl89cAJDbQ348hubEPG7+QFO4pDMZDLxQ7S2tjb+8dvj8SQ9fjc1NeVV9YkBYVQO2aqoBEh1IyRiMnhRq9VwOp1oaGjA2NhY1T0hABdWAVtbW0UXiYhFxGQ3nAhxqm2GQMzjFxcX+aeYl156CZ///Odx7bXX4vrrry9ZK+66667DE088gQ0bNuDMmTMpz+2GG27AkSNH0NDQgPvvv5+XGZcAFw/prq6uwul0ZuwTnV3y4aqfHUeTmsJNu+TYPjqQckhms9lgsViyfsCJPl5INsQxihBxKbwUGIbBwsIClpeXq9ISEji/izk3NweXywWtVotIJAKO4+LIRqfTVbTiJS2jYDBY1sqREDEh40xEHIlEeM+O8fHxqrxphUIhnD17lm/NRSIR3HrrrXj99ddxzz33YGQke6RVMXjuueeg1Wpx+PDhlKR75MgR3HXXXThy5AiOHj2KG264IcllTESkvRDXzbiQkE22XDPDSgDX/vw4lBSDf7qsF3snhiGTyeLMyldXV/k49lySB4T6+K6u8/HrpOrzeDy8lwIxsybVcKEL6BzHweFwwGAwoLu7u+osIYH4XcyNGzdiYmKC/x0J5c0WiyVJ3tzU1FSWgZSw/z0wMIDNm3OLXRILCoUCLS0tcT1tIRGbzWb4/X7QNA2aptHV1YXe3t6qXVWzWCwYHx9Hc3Mznn/+eXzxi1/Exz72Mdx5551lGTRfeumlMJlMab/+2GOP4fDhw6AoCgcOHIDb7cbS0lLO8x+xsG5IFzhPfpnCKWcWHbj2X18Fw1J44OpdGO1qiktu8Pl8mJubg1qtLtqwhGRFabVa3slISDYk3kW4mN/U1JQ1eZakGNfX12NqaqoqKx7iIVtfX5/So1Umk6U0+ibvDSGbRHmzmObngUCA37mtVFR8KgiJmDhpNTY2YsOGDQgGg3HvjVg94mIQCoXw/9s796io6/z/PwYYBwR3QhRSRkAGuRkpt1XrrN1Oavpd6+x6q7OVZ7uYm1ub5lq29iMrMy9lm65mWVptYJud9KTSxaLsAirqpnIbROWicndggJmB4fP7wz6fnUHQAYaZD/p5nDNHZvgcPm8G5/V5f16v5+v5ysvLIyAggNTUVFpaWnj66acpKipix44d6PV6t6+pKzrz062oqFCCbm9Rq9WX7HSbm5s5dKyA//f9Bcw2L7bNTSIqxF8KthaLheLiYgc7xr7APtiIf3x7X9mTJ0/S1NTk0LCg1WrRaDQOt8DR0dGydIgSndQaGhq6bQvp7e19yegb+zyovdVjV+3NznAln1s50N7eLjWKiDvHjnR1kXJXILb34xWlavv37+eZZ57h0UcfZcOGDbK7+5ILV1XQValU+Pj4SDtd0Rv2bHUdb/wiUGuGzfclEBs8EPifxrGmpga9Xu/UhGBX05mdodVqlYp04pwtUZgfHh4uG7WEiH1rbFhYGNHR0S55Hzu7/Rbbm41GI1VVVQ5OWuKjo6WhiL3m9nIDFz2JKAMTU1tdrbGzi5S7ArG4Ax80aBCpqak0NzezcOFCSkpK+Oyzz2Q7Gt0ZP113cFUFXUBy+jp9+jQVFRUM14XxXrGJ4hojb8wcTXKY1qHCqtPpZJcTHTBggOSoVV1djU6nIyQkhKamJi5cuEBpaSmtra2XlWe5C9HnNiAgwC236Z1NobBardLdwvnz56X2ZjF3rtFoOH36tEt9bl2NeJfQ2NjY46GVfR2IBUGQXN9EP97vvvuOZ599lvnz57Nx40ZZfY46Mn36dNavX8+cOXPIyclBq9W6PbUAV5F6AZAkY7/88gt6vZ7w8HCW7ixg1y/nWXlPLP+XcD21tbWcPHlSkgXJsfVQHDV9uU6truRZ7lIFiHcRJpOJmJiYPkvJ9BSLxYLRaKS8vFwyPrefzOGO9mZnEcfSjBgxgtDQ0D6/2+rKHvRygVhsM9ZqtURGRtLc3Mw//vEPSktL2bx5M+Hh4X26Zme49957ycrKoqamhpCQEF544QXprvexxx5DEAQWLFhAZmYmAwcO5L333iMlJaWvlnP1S8YA8vLyMJvN1NfXM378eARBoKjKRN45E3dGDcJgMKBWq4mKipKddywgddQZjUaio6O77R8h9sWLqQmTySSNshZ3fb0tRol3CaWlpbL1m4BLNbei7Mod7c3OIhp3t7e3Exsb69GLQFeBOCAggNbWVqkRIzAwkKysLJYuXcqCBQt46KGHZL279SDXRtC1Wq3YbDZyc3NRq9Vcd911+Pn5UVlZSUtLC6NGjZJt4USU3HT0Pu0tNptN+iAZjUaam5vx8fFxKNQ56ywmdryJux053iV0R3Pbmb66s7SNq1Mm9jlwvV5PcHCwS3++qzAajeTl5aHRaFCr1fzlL3+hrq4Om83G448/zpQpUxgzZoynlylXro2gu3jxYgICAkhOTiY8PJz9+/cTHh6OWq12yPFptdouiy3upq6uDoPBIE0ecEcgs8+BNjQ00NLSgkajkd6fjrfeVquV4uJiWlpaiImJ8VjH2+XoqLnt6Q68q/ZmsdFFTNv09O/U3NxMQUEBfn5+srSHhP+pJ6qrq4mLiyMgIIBvvvmG5557jscee4yEhASOHDlCZWUlL7/8skvPnZmZyZNPPonNZuPhhx/mmWeecfh+aWkpDz74IBcuXMBms7Fy5UqmTp3q0jW4iGsj6BYWFvLTTz/xwQcfcPjwYUaPHo1eryc5OZnk5GR0Op2UB21ubnYINFqt1q23ls3NzRgMBqBvzLq7g72zmJiaEA1tBEGgsbERvV7v0h24K7HX3PZFILtce7Oz05vtRw/FxsZ2O3XkLkwmE3l5eQwZMoSIiAgaGxtZunQpVVVVbNq0yUHn6mrEGXhfffUVOp2O1NRU0tPTiY+Pl4559NFHSUxMZP78+eTl5TF16tTLNkR4kKu/Iw0utkeWlZWRlJTEjh078PPz4+jRo2RnZ7Nx40ZOnDghTRFNSUlh7Nix+Pv7S4oAq9WKv7+/pKXti9bdtrY2SSc6atQoWRieq1QqfH198fX1lW516+vrKSgowNfXlyFDhlBRUUFpaaksxsSLuEtza9/oYj94VOw4PHv2LCaTSeo47FjIbGhooKCggKCgINkpZUTs5ZPi7varr77i+eefZ+HChTzwwAN9vu4DBw4QFRUl+abMmTOHnTt3OgRdlUpFQ0MDcDH9If49+hNX1U73SgiCQF1dHQcPHiQ7O5uDBw9y5swZ6aqanJwszWUSjUlEnwAxEPe0EGWfx3NXlbonWCwWDAYDVquVmJgYh5yofaAR3x/gkkKdO4KKveZWLm5l9pMWxPfHYrEAF7ufgoODZWV8LtLY2Eh+fj5Dhw4lPDychoYGnn32Werq6ti0aZPbtKyffPIJmZmZvPPOOwB88MEH5OTksH79eumYc+fOMWnSJOrr62lqauLrr7/u9ih2N3Ft7HSvhEqlIigoiClTpjBlyhTgf1f4nJwcsrKyWLNmDY2NjcTFxUlpiSFDhtDS0iJ1Rfn4+DikJTQazWUDqDgxVqvVyqrl1B5xlPzZs2e7NM+xH14oYl/1Pn369CVdY67On5vNZmmGmtw0t97e3tLFuba2lsbGRiIiIvjNb37j4KXQl+3N3aG9vV26U4iPj8ff358vvviCtLQ0nn76af70pz/J7gKRnp7O3LlzWbRoET///DP3338/x48fl906L8c1FXQ7w8vLi8jISCIjI7n33nuBixXwY8eOkZOTw/vvv88vv/yCj48PSUlJJCUlkZiYiFarpbGxkbNnz2I2m/Hz83MoRKnVasxmMwaDgba2NkaPHi1L31P4XzFvyJAhpKamditl0Jkgv7W1VdrtiV1jGo3mklls3cH+otBTn1t3YLVaKSoqoq2tzeGi0JmpTUNDAyUlJTQ3N/e6vbm7NDQ0kJ+fT0hICMnJyRiNRh577DEaGhrIzMz0yG27Mx1jW7ZsITMzE4AJEyZgNpupqamRrQKkM66p9EJPEYtJhw4dIicnhwMHDlBcXExwcLCUH77xxhtRq9U0NDRQX1+PxWKhvb1dcoZyx0jr7iJeFMQCxsCBA/vsXGKzQkeNbMcLVWf0pc+tq7BXT0RGRhIcHNytoGl/oRILvWJ7s/geuWJoaHt7OyUlJdTX1xMfH8/AgQPZu3cvL7zwAkuWLOG+++7z2P/TtrY2oqOj2bdvH6GhoaSmpvLRRx85jGK/6667mD17NnPnziU/P5877riDiooKOabqrg31gjsRmwRycnKkQFxdXc2gQYM4d+4cy5Yt47bbbpM+TI2NjZLhjadla/aVdL1eL7UcuxN7jawYjO2lWaJ++NSpU273ue0uoo+sOCXBVemjrqR9HbvqnP0/JPo6iANA6+vrWbJkCS0tLWzYsMEjLbEd2bNnD3/729+w2Wz8+c9/5rnnnuP5558nJSWF6dOnk5eXxyOPPCI1/qxatYpJkyZ5etmdoQTdvsZkMjFt2jSGDRvG+PHjKSgo4PDhw9hsNm688UZSUlJISkpi+PDhUrHFE7K12tpaDAYDISEhspurZV+oq6ys5MKFC2g0GgIDA3vtQdwXiF4E586dIyYmxi2z3noyvdlms0nub/Hx8fj5+bF7925efPFFli5dypw5c+S4U+zvKEHXHZSUlDiMCRJ3c7m5uRw4cICcnBwKCgrQarUkJyeTmprKmDFjGDhwoJTj6yvZWktLi1SA8rQu+HJ01Nx6eXld0trs7e3toJjo6/xnZ4gVf0+nPLrSWIvtzd7e3lRUVKDT6RgxYgR1dXUsXryYtrY2NmzYQEhIiEfWfQ2gBF25IAgCNTU1DmmJiooKIiIiSElJITk5mfj4eNrb210iW7PZbJI3qzgDTo6IE4LFUUuX09zaexCLrc2deRD3RSC22WyUlJRw4cIFSc8qN8RmjqKiIpqamtBoNKxdu5ba2lpOnTrFQw89xKJFi2Q5hfkqQgm6cqa9vZ3i4mIpCOfm5tLc3Mzo0aOlQBweHi61pzorW6uurubkyZNSDk8ut+UdEVMew4YNY8SIET1ap70HsdFoxGKx4Ovr61Co623qpq6ujqKiIoYPH86IESNke0teX19PYWEhoaGh6HQ6amtrWbhwIYIgcMcdd2AwGMjNzeXzzz93qRn+lVp4AT7++GPS0tJQqVSMGTOGjz76yGXnlxlK0O1vWK1Wjh49KgXi48eP4+vrS2JiIikpKSQmJhIYGCilJexlaxqNhnPnzjFgwIAurSHlgKi5FQSBmJgYl65TEATMZrPDbXdra+slw0Kd8VBobW2lqKgIq9VKXFycbN9Pm82GwWCgublZWudnn33GypUrWbZsGTNnzuyzC4UzLbwGg4FZs2bxzTffEBgYSFVVVb+SenUTJej2dwRB4MKFCxw8eJCcnBwOHjxISUkJoaGhJCUlkZqail6vZ9++fZJNoNi+Ku72PD111/53KSsr4+zZs25VT3TXg9h+uObIkSMJCQmR7e5W3IXrdDpCQ0Oprq5m0aJFqNVq3nzzzT5/j3/++WfS0tL44osvAHjllVcAePbZZ6Vj/v73vxMdHc3DDz/cp2uRCUpHWn9HpVIRGBjIpEmTJIlMe3s7ZWVl/Pzzz2zdupXvv/+e+Ph4QkNDJf1wcHAwFouF8vJySbYm7vQ8IVuz19x2txGjt3TloWA/mVh8j8TiZlfDNeVCW1sbBoMBs9nM2LFj0Wg0fPrpp6xatYq0tDT+8Ic/uOXv29nQx47jzcVC7s0334zNZiMtLU3qDL2W6BdB90q5IovFwgMPPEBubi5BQUFs375dtnOaXImXlxfh4eE0NTXxxRdfUFhYSFBQECdOnCA7O5uMjAyOHj0qjalJTk4mKSmJIUOG0NjY6NAt1teyNXHSRFNTE/Hx8bIpQHWcTCwIAmfOnKG8vJygoCBaW1slf2ZXNyr0FjEXHhYWRmxsLFVVVSxatAg/Pz++/fZb2XXtiReIrKwsysvLmThxIseOHZOt41pfIfugKxom2+eKpk+f7pAr2rJlC4GBgRQXF5ORkcGSJUvYvn27B1ftXuLj43nvvfek52PGjGHMmDHMmzcPQRAwmUzk5uaSk5PDqlWrKCoqIigoSPKWSExMRKPR9Inbmn1cWtuiAAAO8klEQVSnVnh4ODExMR4PVl3R2NhIQUEB1113HRMmTHD4ne0bFcTWb3t9rDutQVtbWyVTorFjxzJgwAA++eQT1qxZw/Lly7nnnnvc/h4708Kr0+kYN24carWakSNHEh0djcFgIDU11a1r9TSyz+k6kyuaPHkyaWlpTJgwgba2Nq6//nqqq6tl++H2NGIgPHDggOS2dv78eaKioqS0RGxsrCTN6qlsrampicLCQpd3arka0SKyvr6e2NhYp+a9ifpY+9Zm0YPYXjHhalN6cZ6aaNReWVnJwoULGTRoEOvWrfOYJNCZFt7MzEzS09PZtm0bNTU1JCYmcvToUdnKGHtJ/83pOpMrsj9GlFLV1tbK7vZKLqhUKoYNG8bdd9/N3XffDVwMPEVFRWRnZ7Nr1y5eeOEFrFYrCQkJDvnhpqamK7qt2WtuezLrzZ2IBahhw4aRkpLi9IXa3oNYbDCwnzpRVVVFcXGxg9m5VqslICCgR3cNooKira2NpKQk1Go127dv5/XXX+ell15i+vTpHt1k+Pj4sH79eiZPniy18I4ePdqhhXfy5Ml8+eWXxMfH4+3tzerVq6/WgHtZZL/TdcZj84YbbiAzMxOdTgeAXq8nJydHCbq9xGw2c+TIEWk3fOLECWkckihbGzRokINszdvbm5aWFoKDg9Hr9bItQIm36BaLhdjY2D7r0BOHhYrSNZPJBODQthsQEHDZgFldXU1xcbGkoKisrOTJJ59k8ODBvP7667Iwwle4hP6703UmVyQeo9PpaGtrw2g0XpNXUFfj6+vLhAkTmDBhAnBxJ1dbWyuZwGdkZFBaWkpYWBgxMTHk5uZy3333ceutt9LS0sJ///tfbDabrGRrgiBQVVVFSUmJW6YZ23vnipsC0YPYaDRe4kEsvk9+fn60trZSWFiIIAgkJyfj4+NDeno6//znP1mxYgXTpk1TUmj9ENnvdJ3JFW3YsIFjx46xadMmMjIy+PTTT/n44489uOprB5vNxvLly9m2bRu//e1vqaiowGQyER8fLxXq9Hq95CjmSdma2WymoKAAHx8foqOjZbULt7d2NBqNNDY20trailarpaCggJiYGFatWsXQoUN57bXXlBZe+dN/d7rO5Ioeeugh7r//fqKiohg8eDAZGRkuOfeVpGqvvfYa77zzDj4+PgwdOpR3332X8PBwl5y7v+Dt7U18fDx5eXmSH6/VapVM4Ldu3cqxY8dQq9UkJiY6TOPoKFuzD8SuDIiCIFBeXk5FRYVs/SfUajVBQUFSuua6664jIiKCqqoqdu/ezfLly/Hx8SExMZFPPvmERx55xNNLVughst/pegpn2hq//fZbxo0bx8CBA9m4cSNZWVnXlFTNWQRBoKGhwcEE/uTJk9LUgpSUFMaMGSOZwHd0WxNvz3tSgDKZTOTn56PVatHr9bI0QBeprKykpKQEvV5PcHAwZ8+e5YknnmDYsGGsXbsWrVZLSUkJlZWV3HTTTS4/vzPeCQA7duxgxowZHDx4kJSUFJev4ypBaQPuLs5I1ew5cuQICxYs4Mcff3TbGvszgiBQUVFBTk6OVKgT1Q6i93BsbKykj+2ubE2c/1VbW0tsbKxLjV1cjcVioaCgAG9vb2JiYvD29ubDDz9k48aNvPrqq0yePLnP0y/ObDLgopZ52rRpWK1W1q9frwTdrum/6QVP4YxUzZ4tW7Zw1113uWNpVwUqlQqdTodOp+OPf/wjcPGDn5eXR05ODjt27ODIkSMIgiCZwCcnJxMSEoLJZOLUqVOYTCbUavUlsrULFy5QWFjI9ddfT0pKiiz8JjrDvnEkKiqKoUOHUl5ezhNPPMGIESP4/vvv+2ysfEecGX8OsGzZMpYsWcLq1at7dT5BEPjd737Hc889J31u/vOf/zjMQLtaUYKuC/jwww85dOgQ3333naeX0q/x9vYmISGBhIQEHn74YUn3KprAr1mzhsLCQgIDAx266fz9/WloaODMmTM0NTVJOuRBgwZhs9lkGXQtFgv5+fmo1WpSUlLw9vZm69atvPXWW6xevZo777zTrcoEZzYZhw8fpqysjGnTpvU66KpUKjZt2sTMmTO57bbbaGtrY+nSpVd9wAUl6HaJM1I1gK+//pqXX36Z77777pIxKQq9Q6VS4e/vz8SJE5k4cSJwcYdUXV0tmcBv27aNs2fP4u/vz/nz51m2bBm33367ZBZfUlIiK9maIAicO3eOM2fOMGrUKIYMGUJZWRl//etfiYyMZP/+/bJMhbS3t7Nw4UK2bt3qsp95ww038Pvf/55XX32VpqYmHnjgAfR6vct+vlxRcrpd4IxU7ciRI8yYMYPMzExGjRrl0vMrRQ3nsNlszJ49m9bWVu68804KCgrIzc3FbDY7mMBHRERI3WIdZWvuGvljNpvJz89Ho9EQHR2Nl5cXW7du5e2332bt2rXccccdHtPdXqmGYTQa0ev1klHR+fPnGTx4MLt27erV/7umpiaSkpIYMGAAhw4dupo2LkpOt7s4I1VbvHgxJpOJmTNnAhAWFsauXbt6fW5nTH7gYlHjjTfeYNy4cb0+Z3/F29ubF198kbi4OIfXLRaLZAK/efNmyQQ+KSlJKtSJJvB9LVsTJ0eXlZVJkrXS0lIWLFhAdHQ0P/74o8dd11JTUzEYDJw6dYrQ0FAyMjIcpjpotVpqamqk57feeitr1qzp9YXe39+f2bNnExAQcDUF3MuiBN3LMHXqVKZOnerw2vLly6Wvv/766z45r7uLGv2djgEXQKPRMG7cOOmCJJrAiwNCP/30UynApKSkkJKSQkJCAt7e3p26rfVUtiaOZx84cKBU1Hv77bd57733WLt2Lbfffrssusqc2WT0FV5eXrLMu/cVStCVIe4ualwLiCbwkydPZvLkycDFPGVpaSnZ2dns37+f1157DaPRSGxsrKQfDg0NxWKxcP78ecmE234ScVe+CaIkrry8nOjoaAYPHszp06dZsGAB8fHx/PDDDx7f3XbkSpsMe7KystywoqsTJej2Q/qiqHEt4uXlRUREBBEREcyZMwe42I4rmsB/9NFHHD16FC8vL4duuuuvvx6TycTp06cl2Zp9WqK9vZ38/HwCAgIkr9jNmzezdetW1q1bxy233CKL3a2CZ1AKaTLEU0UNhUuxN4EXmziKiooYOnSog9uaRqPBaDRSVlYmzV3bs2cP4eHhbN++ncTERFasWIG/v7+nfyUF96B0pPUnnFFO2OOqooaCc4iyL3sT+LKyMlpbW0lNTWXu3LnExMSwcuVKsrOzUalU+Pj4kJqayltvvdUna1J8QmRH17cygiBc7qHgIXbv3i2MGjVKiIyMFF566SVBEARh2bJlws6dOy859pZbbhEOHjzosnPv3btXiI6OFvR6vfDKK690esz27duFuLg4IT4+Xrj33ntddu7+yOeffy4kJycL//73v4V3331XmDdvnhAeHi7MnDlTaGpqEgRBEKxWq1BQUNAn529raxMiIyOFkydPChaLRbjxxhuFEydOOBzzzTffSGv517/+JcyaNatP1qIg0WVcVYKuggPOfICLioqEsWPHCnV1dYIgCEJlZaUnliobamtrhZaWFofX2tvb3Xb+n376SZg0aZL0fMWKFcKKFSu6PP7w4cPCTTfd5I6lXct0GVevHZ2GglPYy9UGDBggydXsefvtt3n88cclT9fg4GBPLFU2DB48GF9fX4fXPN3CW1FR0eXxik+IZ1GCroIDznyAi4qKKCoq4uabb2b8+PHXRL/81YLoE7J48WJPL+WaRZGMKXSbtrY2DAYDWVlZlJeXM3HiRI4dOybrAZRXM4pPSP9C2ekqOODMB1in0zF9+nTUajUjR44kOjoag8Hg7qUq/Ip9C6/VaiUjI+OSDrIjR44wb948du3adc2ngzyNEnQVHHDmA3zPPfdIHUk1NTUUFRVJLcsK7se+hTcuLo5Zs2ZJLbyiF4i9T8jYsWP7tK1X4QpcrsrmkZqfgtOUlpYKERERQm1trSAIglBXVydEREQIp06d6tXPvZJcrb29XXjqqaeEuLg44YYbbhDS09N7db6OXEmydubMGeHWW28Vxo4dKyQkJAi7d+926fkVFFxAl3FVaY7o56xatYri4mI2b97MvHnziIiI6HKkUH/AmbExjz76KImJicyfP5+8vDymTp3K6dOnPbdoBYVL6VK+oqQX+jlPPfUU2dnZrFu3jh9++IGnn37a00vqFc5I1lQqFQ0NDcDFlujhw4d7YqkKCj1CUS/0c9RqNatXr2bKlCl8+eWXqNVqTy+pVzjjsJaWlsakSZN48803aWpq6jOLTQWFvkDZ6V4F7N27l2HDhnH8+HFPL8UtpKenM3fuXMrLy9mzZw/3338/7e3tnl5Wj8jMzCQmJoaoqChWrlx5yfctFguzZ88mKiqKcePGKWmUqwAl6PZzjh49yldffUV2djavv/46586d8/SSeoUzkrUtW7Ywa9YsACZMmIDZbHaYatBfECeE7N27l7y8PNLT08nLy3M4ZsuWLQQGBlJcXMxTTz3FkiVLPLRaBVehBN1+jCAIzJ8/n3Xr1hEWFsbixYv7fU7XGclaWFgY+/btAyA/Px+z2czQoUM9sdxe4Uz+eufOnTz44IMAzJgxg3379nGF4reC3LmctEF5yPsBPApst3vuDRwGbvH02nr5e00FioCTwHO/vrYcmP7r1/HAj8B/gaPAJBef/12gCjjexfdVwD+BYuAXIKmH55kBvGP3/H5gfYdjjgM6u+cngSGe/hspj54/lEJaP0YQhM3AZrvnNiDJcytyDYIg7AH2dHjtebuv84Cb+3AJW4H1wPtdfP8uYNSvj3HAxl//VVC4Ikp6QUGhA4IgfA/UXeaQu4H3hYtkA9epVKphPThVBTDC7rnu19c6PUalUvkAWqC2B+dSkAlK0FVQ6D6hQJnd8/JfX+suB4FRKpVqpEqlGgDMAXZ1OGYX8OCvX88AvhF+zTMo9E+U9IKCgocQBKFNpVItAL7gYj7+XUEQTqhUquXAIUEQdgFbgA9UKlUxF3ffczy3YgVXoARdBYXu40xawCmcyF+bgZk9+dkK8kRJLygodJ9dwAOqi4wHjIIg9G+BtILb+P8+YkRNKTSiSwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -86,18 +166,18 @@ "metadata": { "id": "ah6zMSLJdJwL", "colab_type": "code", - "outputId": "b1ccb836-02b8-4d42-a7db-6c34f010f6c6", "colab": { "base_uri": "https://localhost:8080/", "height": 52 - } + }, + "outputId": "53ddfb1c-9848-46e5-81f6-6bb86f2719a4" }, "source": [ "from math import e, pi\n", "print(e)\n", "print(pi)" ], - "execution_count": 0, + "execution_count": 7, "outputs": [ { "output_type": "stream", @@ -114,13 +194,53 @@ "metadata": { "id": "3qpwDlzXkVf5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 287 + }, + "outputId": "21453133-9580-4f06-ee0e-021969712afd" }, "source": [ - "" + "one = black * 1.1\n", + "five = black * 5\n", + "pie = black * pi\n", + "exp = black * -e\n", + "\n", + "plt.arrow(0,0,one[0], one[1], head_width=0.02, head_length=0.01, color='black')\n", + "plt.arrow(0,0,five[0], five[1], head_width=0.02, head_length=0.01, color='red')\n", + "plt.arrow(0,0,pie[0], pie[1], head_width=0.02, head_length=0.01, color='blue')\n", + "plt.arrow(0,0,exp[0], exp[1], head_width=0.02, head_length=0.01, color='yellow')\n", + "plt.xlim(0,4) \n", + "plt.ylim(0,4)\n" ], - "execution_count": 0, - "outputs": [] + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 4.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -143,13 +263,49 @@ "metadata": { "id": "I1BGXA_skV-b", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 287 + }, + "outputId": "6316c1ba-401a-4c76-e693-415ab651abfc" }, "source": [ - "" + "a = np.array([[5],[7]])\n", + "b = np.array([[3],[4]])\n", + "\n", + "plt.arrow(0,0,a[0][0], a[1][0], head_width=0.02, head_length=0.01, color='black')\n", + "plt.arrow(0,0,b[0][0], b[1][0], head_width=0.02, head_length=0.01, color='red')\n", + "plt.xlim(0,5) \n", + "plt.ylim(0,7)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 7.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 21 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -166,13 +322,48 @@ "metadata": { "id": "68sWHIOPkXp5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 287 + }, + "outputId": "01e8c980-64ca-4685-cd6a-ea8e9edf2d5d" }, "source": [ - "" + "result = a - b\n", + "plt.arrow(0,0,a[0][0], a[1][0], head_width=0.02, head_length=0.01, color='black')\n", + "plt.arrow(0,0,b[0][0], b[1][0], head_width=0.02, head_length=0.01, color='red')\n", + "plt.arrow(0,0,result[0][0], result[1][0], head_width=0.02, head_length=0.01, color='red')\n", + "plt.xlim(0,5) \n", + "plt.ylim(0,7)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 7.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -195,13 +386,33 @@ "metadata": { "id": "2_cZQFCskYNr", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "fe758941-63e2-4b67-ce9e-79ba79665d09" }, "source": [ - "" + "c = np.array([7, 22, 4, 16])\n", + "d = np.array([12, 6, 2, 9])\n", + "\n", + "np.dot(c,d)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "368" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + } + ] }, { "cell_type": "markdown", @@ -224,13 +435,34 @@ "metadata": { "id": "ku-TdCKAkYs8", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "outputId": "a54bd139-8f48-4638-a8b7-da3c647cbda6" }, "source": [ - "" + "e = np.array([[5],[7],[2]])\n", + "f = np.array([[3],[4],[6]])\n", + "e * f" ], - "execution_count": 0, - "outputs": [] + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[15],\n", + " [28],\n", + " [12]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 29 + } + ] }, { "cell_type": "markdown", @@ -253,13 +485,31 @@ "metadata": { "id": "-5VKOMKBlgaA", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "fd50c0ad-61ac-4963-a82d-8082b4eaf1b1" }, "source": [ - "" + "g = np.array([[1], [1], [1], [8]])\n", + "h = np.array([[3], [3], [3], [3]])\n", + "print(\"g's norm is: \" + str(np.linalg.norm(g)))\n", + "print(\"h's norm is: \" + str(np.linalg.norm(h)))\n", + "\n", + "# Therefor, G is longer" ], - "execution_count": 0, - "outputs": [] + "execution_count": 30, + "outputs": [ + { + "output_type": "stream", + "text": [ + "g's norm is: 8.18535277187245\n", + "h's norm is: 6.0\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -313,13 +563,43 @@ "metadata": { "id": "Z69c-uPtnbIx", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "6f8ed519-1741-47a8-8578-f04489e1bfbb" }, "source": [ - "" + "A = np.array([[1,2],[3,4],[5,6]])\n", + "B = np.array([2, 4, 6])\n", + "C = np.array([[9, 6, 3], [4, 7, 11]])\n", + "D = np.array([[1, 0, 0], [0,1,0], [0,0,1]])\n", + "E = np.array([[1,3], [5,7]])\n", + "\n", + "np.matmul(A, C)\n", + "np.matmul(B, D)\n", + "np.matmul(B, A)\n", + "np.matmul(C, A)\n", + "np.matmul(C, D)\n", + "np.matmul(D, A)\n", + "np.matmul(E, C)\n" ], - "execution_count": 0, - "outputs": [] + "execution_count": 38, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[21, 27, 36],\n", + " [73, 79, 92]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 38 + } + ] }, { "cell_type": "markdown", @@ -336,13 +616,34 @@ "metadata": { "id": "zhKwiSItoE2F", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 124 + }, + "outputId": "a1dd1348-a4d7-4f23-f490-56cffe8e19b8" }, "source": [ - "" + "print(np.matmul(C, D))\n", + "print(np.matmul(A, E))\n", + "print(np.matmul(B, A))\n", + "\n", + "# The amount of rows for the first matrix and the amount of columns for the second matrix are the dimensions of the new matrix" ], - "execution_count": 0, - "outputs": [] + "execution_count": 40, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[ 9 6 3]\n", + " [ 4 7 11]]\n", + "[[11 17]\n", + " [23 37]\n", + " [35 57]]\n", + "[44 56]\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -370,13 +671,34 @@ "metadata": { "id": "Wl3ElwgLqaAn", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 88 + }, + "outputId": "35ffcb47-4403-47e6-a011-ec836e354615" }, "source": [ - "" + "F = np.array([[20, 19, 18, 17], [16, 15, 14, 13], [12, 11, 10, 9], [8,7,6,5],[4,3,2,1]])\n", + "F.T" ], - "execution_count": 0, - "outputs": [] + "execution_count": 41, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[20, 16, 12, 8, 4],\n", + " [19, 15, 11, 7, 3],\n", + " [18, 14, 10, 6, 2],\n", + " [17, 13, 9, 5, 1]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 41 + } + ] }, { "cell_type": "markdown", @@ -413,13 +735,34 @@ "metadata": { "id": "ZnqvZBOYqar3", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "74bfbc70-5e43-459d-ee38-546c4942a6b6" }, "source": [ - "" + "G = np.array([[13,14], [21, 12]])\n", + "G_i = np.identity(2)\n", + "\n", + "np.matmul(G, G_i)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 44, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[13., 14.],\n", + " [21., 12.]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] }, { "cell_type": "markdown", @@ -451,13 +794,29 @@ "metadata": { "id": "5QShhoXyrjDS", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "outputId": "398254f1-6e63-4015-e105-e75df0885b97" }, "source": [ - "" + "H = np.array([[12,11], [7, 10]])\n", + "J = np.array([[0, 1, 2], [7, 10, 4], [3, 2, 0]])\n", + "print(np.linalg.det(H))\n", + "print(np.linalg.det(J))" ], - "execution_count": 0, - "outputs": [] + "execution_count": 45, + "outputs": [ + { + "output_type": "stream", + "text": [ + "43.000000000000014\n", + "-19.999999999999996\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -474,13 +833,30 @@ "metadata": { "id": "nyX6De2-rio1", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "outputId": "8a46361a-1b51-4b78-86c4-c4baf88d8819" }, "source": [ - "" + "print(np.linalg.inv(H))\n", + "print(np.linalg.inv(J))" ], - "execution_count": 0, - "outputs": [] + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[ 0.23255814 -0.25581395]\n", + " [-0.1627907 0.27906977]]\n", + "[[ 0.4 -0.2 0.8 ]\n", + " [-0.6 0.3 -0.7 ]\n", + " [ 0.8 -0.15 0.35]]\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -494,6 +870,40 @@ "Please ignore Python rounding errors. If necessary, format your output so that it rounds to 5 significant digits (the fifth decimal place)." ] }, + { + "cell_type": "code", + "metadata": { + "id": "eT4ZJsynp-qn", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "outputId": "86e65c15-c5f6-43b0-98f5-2aa6700f92d7" + }, + "source": [ + "result_1 = np.round(np.matmul(H, np.linalg.inv(H)) , 5)\n", + "result_2 = np.round(np.matmul(np.linalg.inv(J), J) , 5)\n", + "print(result_1)\n", + "print(result_2)\n", + "\n", + "# They are not the same, J_inv * J have a higher dimension because J was of a higher dimension" + ], + "execution_count": 48, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[1. 0.]\n", + " [0. 1.]]\n", + "[[ 1. 0. 0.]\n", + " [-0. 1. 0.]\n", + " [-0. -0. 1.]]\n" + ], + "name": "stdout" + } + ] + }, { "cell_type": "markdown", "metadata": { From 01240a78b2cb355e56e7e68073e31690a45fcde1 Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Tue, 15 Sep 2020 17:19:32 -0600 Subject: [PATCH 2/6] Created using Colaboratory --- ...termediate_Linear_Algebra_Assignment.ipynb | 835 ++++++++++++++++-- 1 file changed, 776 insertions(+), 59 deletions(-) diff --git a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb index 9110b2b1..88140c6c 100644 --- a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb +++ b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -38,13 +38,49 @@ "metadata": { "id": "w1iZfYvBtEA1", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "outputId": "36345775-a10c-486a-bc56-cc7b1c5f7cde" }, "source": [ - "" + "sales = [3505, 2400, 3027, 2798, 3700, 3250, 2689]\n", + "\n", + "\n", + "def mean(array):\n", + " start = 0\n", + " count = 0\n", + " for i in array:\n", + " start = start + i\n", + " count = count + 1\n", + " return (start/count)\n", + "\n", + "def var(array, mean):\n", + " l = 0\n", + " for i in array:\n", + " l = l + ((mean - i)**2)\n", + " return l/(len(sales)-1)\n", + " \n", + "mean = mean(sales)\n", + "var = var(sales, mean)\n", + "std = (var ** 0.5)\n", + "print(\"The mean of the sales is: \" + str(mean))\n", + "print(\"The variance of the sales is: \" + str(var))\n", + "print(\"The Standard Deviation is of the sales is: \" + str(std))\n" ], - "execution_count": 0, - "outputs": [] + "execution_count": 48, + "outputs": [ + { + "output_type": "stream", + "text": [ + "The mean of the sales is: 3052.714285714286\n", + "The variance of the sales is: 214387.90476190473\n", + "The Standard Deviation is of the sales is: 463.0204150595357\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -61,13 +97,75 @@ "metadata": { "id": "G7ZB0krot564", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "outputId": "ffc8d3f5-33ee-427b-ad65-db1b78d70d17" }, "source": [ - "" + "import pandas as pd\n", + "customers = [127, 80, 105, 92, 120, 115, 93]\n", + "\n", + "data = {'Sales':sales, 'Customers':customers}\n", + "df = pd.DataFrame(data)\n", + "df.cov()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 49, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SalesCustomers
Sales214387.9047627604.357143
Customers7604.357143290.952381
\n", + "
" + ], + "text/plain": [ + " Sales Customers\n", + "Sales 214387.904762 7604.357143\n", + "Customers 7604.357143 290.952381" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 49 + } + ] }, { "cell_type": "markdown", @@ -79,18 +177,113 @@ "## 1.3 Find the standard deviation of customers who entered the store last week. Then, use the standard deviations of both sales and customers to standardize the covariance to find the correlation coefficient that summarizes the relationship between sales and customers. (You may use library functions to check your work.)" ] }, + { + "cell_type": "code", + "metadata": { + "id": "H1NrdNMDhUxX", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "outputId": "e3390cd1-1e76-4ddd-a453-c77f5c3f8720" + }, + "source": [ + "df.corr()" + ], + "execution_count": 50, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SalesCustomers
Sales1.0000000.962834
Customers0.9628341.000000
\n", + "
" + ], + "text/plain": [ + " Sales Customers\n", + "Sales 1.000000 0.962834\n", + "Customers 0.962834 1.000000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 50 + } + ] + }, { "cell_type": "code", "metadata": { "id": "vFJms2YRrKhY", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "b206e3f8-861c-43d1-c369-a1fbc8d8cc1a" }, "source": [ - "" + "import numpy as np\n", + "\n", + "sstd = df['Customers'].std()\n", + "sstd\n", + "\n", + "# Get the correlation coeficient\n", + "\n", + "corr = 7604.357143/(sstd * std)\n", + "corr" ], - "execution_count": 0, - "outputs": [] + "execution_count": 51, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.962833977832979" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 51 + } + ] }, { "cell_type": "markdown", @@ -109,13 +302,171 @@ "metadata": { "id": "0TWgUIiaCFzq", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "outputId": "214664f1-8a49-410e-cd7b-d94f1e0a486f" }, "source": [ - "" + "url = 'https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv'\n", + "\n", + "df = pd.read_csv(url)\n", + "\n", + "df.head()\n", + "\n", + "df_clean = df.drop(columns=['name','sex','cabin','embarked','home.dest', 'body'])\n", + "\n", + "df_clean.dropna().cov()\n", + "df_clean.dropna().cov()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 113, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Unnamed: 0pclasssurvivedagesibspparchfarehas_cabin_number
Unnamed: 0134684.669602297.177515-3.839481-1762.793202-28.202673-12.616962-12565.338711-113.249578
pclass297.1775150.767808-0.009317-4.800834-0.041313-0.000832-32.729097-0.302847
survived-3.839481-0.0093170.018213-0.037315-0.0017180.0090110.5151750.005307
age-1762.793202-4.800834-0.037315194.563134-0.890944-2.524901195.9029362.065690
sibsp-28.202673-0.041313-0.001718-0.8909440.4512030.1520436.6013950.034326
parch-12.616962-0.0008320.009011-2.5249010.1520430.6131948.8568360.004701
fare-12565.338711-32.7290970.515175195.9029366.6013958.8568364787.58443614.824096
has_cabin_number-113.249578-0.3028470.0053072.0656900.0343260.00470114.8240960.239909
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 pclass ... fare has_cabin_number\n", + "Unnamed: 0 134684.669602 297.177515 ... -12565.338711 -113.249578\n", + "pclass 297.177515 0.767808 ... -32.729097 -0.302847\n", + "survived -3.839481 -0.009317 ... 0.515175 0.005307\n", + "age -1762.793202 -4.800834 ... 195.902936 2.065690\n", + "sibsp -28.202673 -0.041313 ... 6.601395 0.034326\n", + "parch -12.616962 -0.000832 ... 8.856836 0.004701\n", + "fare -12565.338711 -32.729097 ... 4787.584436 14.824096\n", + "has_cabin_number -113.249578 -0.302847 ... 14.824096 0.239909\n", + "\n", + "[8 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 113 + } + ] }, { "cell_type": "markdown", @@ -142,13 +493,42 @@ "metadata": { "id": "YLSBk7hJvvCx", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "650c1e8b-5264-4f27-cb38-a06e28d22fc9" }, "source": [ - "" + "import matplotlib.pyplot as plt\n", + "\n", + "vector_1 = [0, 3]\n", + "vector_2 = [3,0]\n", + "\n", + "# Plot the Scaled Vectors\n", + "plt.arrow(0,0, vector_1[0], vector_1[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, vector_2[0], vector_2[1],head_width=.05, head_length=0.05, color ='green')\n", + "plt.xlim(-0.1,3.5) \n", + "plt.ylim(-0.1,3.5)\n", + "plt.title(\"Orthogonal Vectors\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 70, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -171,13 +551,35 @@ "metadata": { "id": "F_-y54YSz47k", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "cbc9f929-cd75-4bbe-fc73-75ad08ebd940" }, "source": [ - "" + "a = np.array([[-5], [3], [7]])\n", + "b = np.array([[6], [-8], [2]])\n", + "result = a[0]*b[0] + a[1]*b[1] + a[2]*b[2]\n", + "result\n", + "\n", + "# They are not orthogonal because the dot product of them do not equal zero" ], - "execution_count": 0, - "outputs": [] + "execution_count": 80, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([-40])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 80 + } + ] }, { "cell_type": "markdown", @@ -204,13 +606,35 @@ "metadata": { "id": "IlV_uaYK1EQB", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "outputId": "8a43665b-2883-43af-cef2-21f2cea4293b" }, "source": [ - "" + "c = np.array([2, -15, 6, 20])\n", + "first = np.linalg.norm(c)**2\n", + "second = np.dot(c,c)\n", + "third = np.dot(c.T, c)\n", + "print(first)\n", + "print(second)\n", + "print(third)\n", + "\n", + "# They all have the sam result" ], - "execution_count": 0, - "outputs": [] + "execution_count": 83, + "outputs": [ + { + "output_type": "stream", + "text": [ + "665.0\n", + "665\n", + "665\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -245,7 +669,12 @@ "colab_type": "text" }, "source": [ - "Your text here" + "\\begin{align}\n", + "d = 12\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix}7\\begin{bmatrix} 1 \\\\ 0 \\end{bmatrix}\n", + "\\end{align}\n", + "\\begin{align}\n", + "d = 2\\begin{bmatrix} 1 \\\\ 0 \\\\ 0 \\end{bmatrix}11\\begin{bmatrix} 0 \\\\ 1 \\\\ 0 \\end{bmatrix}-8\\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\end{bmatrix}\n", + "\\end{align}" ] }, { @@ -267,13 +696,33 @@ "metadata": { "id": "I3W8ZiHR1_Fa", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "4082e8c8-bc8e-4362-fb24-94b451cb46a9" }, "source": [ - "" + "f = np.array([4, 12, 11, 9, 2])\n", + "f_norm = np.linalg.norm(f)\n", + "f = f / f_norm\n", + "f" ], - "execution_count": 0, - "outputs": [] + "execution_count": 85, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0.20908335, 0.62725005, 0.57497921, 0.47043754, 0.10454167])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 85 + } + ] }, { "cell_type": "markdown", @@ -295,6 +744,118 @@ "## 4.1 Plot two vectors that are linearly dependent and two vectors that are linearly independent (bonus points if done in $\\mathbb{R}^3$)." ] }, + { + "cell_type": "code", + "metadata": { + "id": "0IWYKsTKuRLg", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "efe24e5b-5120-4566-9c23-ad5447e6d9d7" + }, + "source": [ + "# Plot Linearly Dependent Vectors\n", + "\n", + "\n", + "\n", + "# Original Vector\n", + "v = [0.5,0] \n", + "\n", + "# Scaled Vectors\n", + "v2 = np.multiply(2, v)\n", + "v3 = np.multiply(-0.3,v)\n", + "\n", + "# Get Vals for L\n", + "axes = plt.gca()\n", + "x_vals = np.array(axes.get_xlim())\n", + "y_vals = 0*x_vals\n", + "\n", + "# Plot Vectors and L\n", + "plt.plot(x_vals, y_vals, '--', color='b', linewidth=1)\n", + "plt.arrow(0,0, v2[0], v2[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, v[0], v[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, v3[0], v3[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "# Axis Bounds\n", + "plt.xlim(-0.5,2) \n", + "plt.ylim(-1.1,1)\n", + "\n", + "plt.title(\"Linearly Dependent Vectors\")\n", + "plt.show()" + ], + "execution_count": 92, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xVpzsOoNu8kW", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 336 + }, + "outputId": "c5f0d160-b943-43ae-e9ff-4ed033e2776c" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-1,4) \n", + "plt.ylim(-1,4)\n", + "\n", + "# Unit Vectors\n", + "i_hat = np.array([3,0])\n", + "j_hat = np.array([0,2])\n", + "\n", + "# Fix Axes\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# PLot Vectors\n", + "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='black')\n", + "plt.title(\"Linearly independent variables\")\n", + "plt.show()" + ], + "execution_count": 103, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " # Remove the CWD from sys.path while we load stuff.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -326,13 +887,51 @@ "metadata": { "id": "G2LK2RWL39Q4", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 287 + }, + "outputId": "0af436a2-5316-4257-88c1-070634866310" }, "source": [ - "" + "g = np.array([1,2])\n", + "h = np.array([4, 8])\n", + "plt.xlim(0,5) \n", + "plt.ylim(0,9)\n", + "plt.arrow(0, 0, g[0], g[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0, 0, h[0], h[1], linewidth=3, head_width=.05, head_length=0.05, color ='black')\n", + "\n", + "# There is no span for the following vectors, since they are linearly dependent. This means that they can not combine in any way\n", + "# to make a new vector" ], - "execution_count": 0, - "outputs": [] + "execution_count": 106, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 106 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -357,13 +956,36 @@ "metadata": { "id": "p1i_ueD25ZcP", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "2568b476-0257-403c-bb42-c2d4c20a0c99" }, "source": [ - "" + "l = np.array([1, 2, 3])\n", + "m = np.array([-1, 0, 7])\n", + "n = np.array([4, 8, 2])\n", + "A = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", + "np.linalg.matrix_rank(A)\n", + "\n", + "# These arrays have a span of 3. There can be three different matrices that can result from a combination of these matrixes" ], - "execution_count": 0, - "outputs": [] + "execution_count": 125, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 125 + } + ] }, { "cell_type": "markdown", @@ -391,13 +1013,44 @@ "metadata": { "id": "utvF3Pkt8NP6", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "242ff09e-a825-4ea0-c65f-ccb65603f9cb" }, "source": [ - "" + "# Axis Bounds\n", + "plt.xlim(-2,3) \n", + "plt.ylim(-1,2)\n", + "\n", + "# Original \n", + "a = [-0.5, .5] \n", + "b = [2, 1]\n", + "\n", + "# Plot Vectors\n", + "plt.arrow(0,0, a[0], a[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, b[0], b[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"Two vectors to form a basis for R^2\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 111, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -416,7 +1069,7 @@ "colab_type": "text" }, "source": [ - "" + "To form a basis is to have a set of vectors that are linearly independent and span a space in vector R^2. This is done if the combination of all these vectors fill a space." ] }, { @@ -447,6 +1100,32 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "3pMQPHjeBCse", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "d4be0921-120c-4c19-ea3e-cedcb12c9f9d" + }, + "source": [ + "B = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", + "print(\"The rank of P is: \" + str(np.linalg.matrix_rank(B)))" + ], + "execution_count": 129, + "outputs": [ + { + "output_type": "stream", + "text": [ + "The rank of P is: 3\n" + ], + "name": "stdout" + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -464,7 +1143,7 @@ "colab_type": "text" }, "source": [ - "" + "It tells us the amount of linearly independent columns or linearly inependent rows the matrix has. " ] }, { @@ -495,13 +1174,50 @@ "metadata": { "id": "hp5z2WTBCNKx", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "befff198-3bea-4827-e54a-f2489e972ecb" }, "source": [ - "" + "v = np.array([1,3])\n", + "w = np.array([-1, 2])\n", + "proj = (np.dot(v, w)/np.dot(v,v))*v\n", + "\n", + "# Axis Bounds\n", + "plt.xlim(-1.1,4) \n", + "plt.ylim(-1.1,4)\n", + "\n", + "# Get Vals for L\n", + "axes = plt.gca()\n", + "x_vals = np.array(axes.get_xlim())\n", + "y_vals = 2.98*x_vals\n", + "# Plot Vectors and L\n", + "plt.plot(x_vals, y_vals, '--', color='b', linewidth=1)\n", + "plt.arrow(0, 0, v[0], v[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0, 0, w[0], w[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0, 0, proj[0], proj[1], linewidth=3, head_width=.05, head_length=0.05, color ='gray')\n", + "\n", + "plt.title(\"vector w\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 151, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -524,11 +1240,11 @@ "metadata": { "id": "cp52kZra-ykj", "colab_type": "code", - "outputId": "12502200-eafe-4e20-bfb7-2d539c6027cb", "colab": { "base_uri": "https://localhost:8080/", - "height": 347 - } + "height": 265 + }, + "outputId": "99d14bad-1398-4a0c-bb2e-aebd9df28faa" }, "source": [ "import pandas as pd\n", @@ -547,18 +1263,19 @@ "plt.scatter(df.x, df.y)\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 152, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdkAAAFKCAYAAABRtSXvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAGBhJREFUeJzt3X9s1IX9x/FXe9craXvKlR4VDPgD\nvOFGjDXRBcVfBCWCWQIbtusQFxcnqWy6yAargHxDXALZEicSYfz4Y1sWO1GxS1QMvzK38CNIg+ki\nlrJsK20p1/YGJ6XH9XrfP/jSL3MtV9p73+fu4/PxF+U++fT9Tn88+/lcf+Qlk8mkAABA2uU7PQAA\nAG5FZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAw4k33CcPhaLpPqUCgSJFIT9rPm2lu2UNyzy5u2UNi\nl2zklj0kdrmaYNA/5GM5cSXr9XqcHiEt3LKH5J5d3LKHxC7ZyC17SOwyUjkRWQAAchGRBQDACJEF\nAMAIkQUAwAiRBQDACJEFAMAIkQUAwAiRBQDASMrf+HT+/HktX75cZ8+eVTwe13PPPaf7778/E7MB\nGKZYPKH2zvNKxBMqLHDPLw0A0i3THyspI/vuu+/qlltu0YsvvqiOjg499dRT+vDDD80HA5Baor9f\ndXub1dAUVnc0plJ/oSpCQVXOmipPPjeqgMuc+lhJGdlAIKDPP/9cknTu3DkFAgGzYQBcm7q9zdp9\n5NTAy13nYgMvV88OOTUWkHWc+lhJme958+apra1NjzzyiBYtWqTly5ebDQNg+GLxhBqawoM+1tDU\nqVg8keGJgOzk5MdKyivZ9957TxMnTtS2bdt0/Phx1dbW6p133hny+ECgyOSXL1/trxzkErfsIbln\nl1zdo73zvLqjsUEfi0R75fEVKFhWnOGp0idX3y5f5pY9pNzdxcmPlZSRPXr0qGbOnClJmjZtms6c\nOaNEIiGPZ/CQWvwppGDQb/In9DLNLXtI7tkll/dIxBMq9Req69x/f/II+McocTGes7vl8tvlSm7Z\nQ8rtXaw/Vkb1p+5uuukmHTt2TJLU2tqq4uLiIQMLIHMKCzyqCAUHfawiVMZ3GQP/x8mPlZRXspWV\nlaqtrdWiRYvU19enNWvWmA0D4NpUzpoq6dLzSpForwL+MaoIlQ38P4BLnPpYyUsmk8l0ntDidkIu\n36a4klv2kNyzi1v2iMUT8vgKlLgYd8UVrFveLm7ZQ3LPLhYfK6O6XQwg+xUWeDShrNgVgQUsZfpj\nhcgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITI\nAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIA\nYITIAgBgxJvqgLfeekv19fUDLzc2NqqhocF0KAAA3CBlZBcuXKiFCxdKkg4fPqwPPvjAfCgAANzg\nmm4Xb9y4UTU1NVazAADgKsOO7KeffqoJEyYoGAxazgMAgGvkJZPJ5HAOXL16tebNm6dvfvObVz2u\nry8hr9eTluEAAMhlw47snDlz9Kc//Uk+n++qx4XD0bQMdqVg0G9y3kxzyx6Se3Zxyx4Su2Qjt+wh\nsUuq8w1lWLeLOzo6VFxcnDKwAADg/w0rsuFwWKWlpdazAADgKsOK7PTp07V161brWQAAcBV+4xMA\nAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABG\niCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogs\nAABGiCwAAEaGFdn6+np961vf0oIFC7R//37jkQAAcIeUkY1EItq4caP+8Ic/aNOmTdqzZ08m5gIA\nIOd5Ux1w4MABzZgxQyUlJSopKdHatWszMRcAADkv5ZXsqVOn1NvbqyVLlqi6uloHDhzIxFwAAOS8\nvGQymbzaAb/5zW909OhRvf7662pra9PixYu1b98+5eXlDXp8X19CXq/HZFgAAHJJytvF48aNU0VF\nhbxeryZPnqzi4mJ1d3dr3Lhxgx4fifSkfchg0K9wOJr282aaW/aQ3LOLW/aQ2CUbuWUPiV1SnW8o\nKW8Xz5w5UwcPHlR/f78ikYh6enoUCATSNhwAAG6V8kq2vLxcc+bM0RNPPCFJWrlypfLz+fFaAABS\nSRlZSaqqqlJVVZX1LAAAuAqXpAAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAY\nIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGy\nAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgBgIBZPqL3zvGLxhNOjwEHeVAccOnRIzz//vG677TZJ\nUigU0qpVq8wHA4BclOjvV93eZjU0hdUdjanUX6iKUFCVs6bKk891zVdNyshK0j333KPXXnvNehYA\nyHl1e5u1+8ipgZe7zsUGXq6eHXJqLDiEL6sAIE1i8YQamsKDPtbQ1Mmt46+gYV3JNjc3a8mSJTp7\n9qyWLl2q++67b8hjA4Eieb2etA14WTDoT/s5neCWPST37OKWPSR2cVp753l1R2ODPhaJ9srjK1Cw\nrDjDU6VPLr5NhpKpXVJG9uabb9bSpUv12GOPqaWlRYsXL9ZHH30kn8836PGRSE/ahwwG/QqHo2k/\nb6a5ZQ/JPbu4ZQ+JXbJBIp5Qqb9QXef+O7QB/xglLsZzci8pd98mg0n3LlcLdsrbxeXl5Zo7d67y\n8vI0efJklZWVqaOjI23DAYBbFBZ4VBEKDvpYRahMhQXpv8uH7JbySra+vl7hcFg/+MEPFA6H1dXV\npfLy8kzMBgA5p3LWVEmXnoONRHsV8I9RRahs4P/x1ZIysrNmzdKyZcu0Z88exeNxrVmzZshbxQDw\nVefJz1f17JC+/eAUeXwFSlyMcwX7FZYysiUlJdq0aVMmZgEA1ygs8ChYVuya5zExMvwIDwAARogs\nAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAA\nRogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEay\nPrKxeELtnecViyecHgUAgGviHc5Bvb29evzxx1VTU6MFCxZYzyRJSvT3q25vsxqawuqOxlTqL1RF\nKKjKWVPlyc/6rw0AABheZN944w1df/311rP8h7q9zdp95NTAy13nYgMvV88OZXQWAABGIuUl4cmT\nJ9Xc3KyHHnooA+NcEosn1NAUHvSxhqZObh0DAHJCyivZdevWadWqVdq5c+ewThgIFMnr9YxqqPbO\n8+qOxgZ9LBLtlcdXoGBZ8aheh1OCQb/TI6SNW3Zxyx4Su2Qjt+whsctIXDWyO3fu1J133qlJkyYN\n+4SRSM+oh0rEEyr1F6rr3H+HNuAfo8TFuMLh6KhfT6YFg/6cnHswbtnFLXtI7JKN3LKHxC6pzjeU\nq0Z2//79amlp0f79+3X69Gn5fD7dcMMNuvfee9M23GAKCzyqCAX/4znZyypCZSosGN2VMgAAmXDV\nyL766qsD/96wYYNuvPFG88BeVjlrqqRLz8FGor0K+MeoIlQ28P8AAGS7YX13sRM8+fmqnh3Stx+c\nIo+vQImLca5gAQA5ZdiR/dGPfmQ5x5AKCzwKlhW75rkAAMBXB7/VAQAAI0QWAAAjRBYAACNEFgAA\nI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNE\nFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI95UB1y4cEEr\nVqxQV1eXYrGYampq9PDDD2diNgAAclrKyO7bt0/Tp0/XM888o9bWVj399NNEFgCAYUgZ2blz5w78\nu729XeXl5aYDAQDgFnnJZDI5nAOrqqp0+vRpbdq0SdOmTRvyuL6+hLxeT9oGBAAgVw07spL02Wef\n6Wc/+5nq6+uVl5c36DHhcDRtw10WDPpNzptpbtlDcs8ubtlDYpds5JY9JHZJdb6hpPzu4sbGRrW3\nt0uSbr/9diUSCXV3d6dtOAAA3CplZI8cOaLt27dLkjo7O9XT06NAIGA+GAAAuS5lZKuqqtTd3a3q\n6mr98Ic/1OrVq5Wfz4/XAgCQSsrvLh4zZox+9atfZWIWAABchUtSAACMEFkAAIwQWQAAjBBZAACM\nEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZ\nAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjHiHc9D69ev1ySefqK+v\nT88++6weffRR67kAc9Gei2o7EZbfly9/kc/pcQC4UMrIHjx4UCdOnFBdXZ0ikYjmz59PZJHTLvb1\n6ZXfHlVr+Av1J6X8POnGYIleWnyXfN5hfd0JAMOS8nbx3XffrV//+teSpOuuu04XLlxQIpEwHwyw\n8spvj6rlzKXASlJ/Umo584Ve+e1RZwcD4DopI+vxeFRUVCRJ2rFjhx544AF5PB7zwQAL0Z6Lag1/\nMehjreEvFO25mOGJALjZsO+N7d69Wzt27ND27duvelwgUCSvN/0RDgb9aT+nE9yyh5Sbu7SdCA9c\nwX5Zf1KKXuzXrTfl3l6X5eLbZChu2cUte0jsMhLDiuzHH3+sTZs2aevWrfL7rz5YJNKTlsGuFAz6\nFQ5H037eTHPLHlLu7uL35Ss/T4OGNj/v0uO5uJeUu2+TwbhlF7fsIbFLqvMNJeXt4mg0qvXr12vz\n5s0aO3Zs2oYCnOAv8unGYMmgj90YLOG7jAGkVcrIvv/++4pEInrhhRf05JNP6sknn1RbW1smZgNM\nvLT4Lk0aX6L8vEsv5+dJk8Zf+u5iAEinlLeLKysrVVlZmYlZgIzweb36n6fvUbTnoqIX+/k5WQBm\n+KFAfGX5i3y69Sb3PM8EIPvwaxUBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEA\nMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBC\nZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwMqzINjU1afbs2fr9739vPQ8AAK6RMrI9PT1au3atZsyY\nkYl5AABwjZSR9fl82rJli8aPH5+JeQAAcA1vygO8Xnm9KQ8DAABfkvZ6BgJF8no96T6tgkF/2s/p\nBLfsIblnF7fsIbFLNnLLHhK7jETaIxuJ9KT7lAoG/QqHo2k/b6a5ZQ/JPbu4ZQ+JXbKRW/aQ2CXV\n+YbCj/AAAGAk5ZVsY2Oj1q1bp9bWVnm9Xu3atUsbNmzQ2LFjMzEfAAA5K2Vkp0+frt/97neZmAUA\nAFfhdjEAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAA\nRogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaI\nLAAARogsAABGiCwAAEa8wznoF7/4hY4dO6a8vDzV1tbqjjvusJ4LWSwWT6i987wS8YQKCzxOjwMA\nWStlZA8fPqx//vOfqqur08mTJ1VbW6u6urpMzIYsk+jvV93eZjU0hdUdjanUX6iKUFCVs6bKk89N\nEQD4spSfGQ8cOKDZs2dLkqZMmaKzZ8/qiy++MB8M2adub7N2HzmlrnMxJZNS17mYdh85pbq9zU6P\nBgBZKWVkOzs7FQgEBl4uLS1VOBw2HQrZJxZPqKFp8Ld7Q1OnYvFEhicCgOw3rOdkr5RMJq/6eCBQ\n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\nrkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -573,7 +1290,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": null, "outputs": [] } ] From 2199e8b83247fd684451eb8c0de72c01c859b61b Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Wed, 16 Sep 2020 09:18:29 -0600 Subject: [PATCH 3/6] Created using Colaboratory --- ...termediate_Linear_Algebra_Assignment.ipynb | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb index 88140c6c..08231039 100644 --- a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb +++ b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -69,7 +69,7 @@ "print(\"The variance of the sales is: \" + str(var))\n", "print(\"The Standard Deviation is of the sales is: \" + str(std))\n" ], - "execution_count": 48, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -111,7 +111,7 @@ "df = pd.DataFrame(data)\n", "df.cov()" ], - "execution_count": 49, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -191,7 +191,7 @@ "source": [ "df.corr()" ], - "execution_count": 50, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -269,7 +269,7 @@ "corr = 7604.357143/(sstd * std)\n", "corr" ], - "execution_count": 51, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -320,7 +320,7 @@ "df_clean.dropna().cov()\n", "df_clean.dropna().cov()" ], - "execution_count": 113, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -513,7 +513,7 @@ "plt.title(\"Orthogonal Vectors\")\n", "plt.show()" ], - "execution_count": 70, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -565,7 +565,7 @@ "\n", "# They are not orthogonal because the dot product of them do not equal zero" ], - "execution_count": 80, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -623,7 +623,7 @@ "\n", "# They all have the sam result" ], - "execution_count": 83, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -708,7 +708,7 @@ "f = f / f_norm\n", "f" ], - "execution_count": 85, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -785,7 +785,7 @@ "plt.title(\"Linearly Dependent Vectors\")\n", "plt.show()" ], - "execution_count": 92, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -831,7 +831,7 @@ "plt.title(\"Linearly independent variables\")\n", "plt.show()" ], - "execution_count": 103, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -904,7 +904,7 @@ "# There is no span for the following vectors, since they are linearly dependent. This means that they can not combine in any way\n", "# to make a new vector" ], - "execution_count": 106, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -969,9 +969,9 @@ "A = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", "np.linalg.matrix_rank(A)\n", "\n", - "# These arrays have a span of 3. There can be three different matrices that can result from a combination of these matrixes" + "# These arrays have a span of (-1 - 4) for the x value, (0, 8) for the y value, and (2, 7) in the z value. This is because all the arrays are linearly independent from one another." ], - "execution_count": 125, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -1035,7 +1035,7 @@ "plt.title(\"Two vectors to form a basis for R^2\")\n", "plt.show()" ], - "execution_count": 111, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -1115,7 +1115,7 @@ "B = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", "print(\"The rank of P is: \" + str(np.linalg.matrix_rank(B)))" ], - "execution_count": 129, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1202,7 +1202,7 @@ "plt.title(\"vector w\")\n", "plt.show()" ], - "execution_count": 151, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -1263,7 +1263,7 @@ "plt.scatter(df.x, df.y)\n", "plt.show()" ], - "execution_count": 152, + "execution_count": null, "outputs": [ { "output_type": "display_data", From dd91ccfcbd3390d56e9ac246e9383fc8ac6c6997 Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Wed, 16 Sep 2020 10:07:46 -0600 Subject: [PATCH 4/6] Created using Colaboratory --- ..._132_Intermediate_Linear_Algebra_Assignment.ipynb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb index 08231039..a57b6b70 100644 --- a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb +++ b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -960,30 +960,30 @@ "base_uri": "https://localhost:8080/", "height": 35 }, - "outputId": "2568b476-0257-403c-bb42-c2d4c20a0c99" + "outputId": "b8da7e69-1e81-43e1-897f-47cdcc48abdb" }, "source": [ "l = np.array([1, 2, 3])\n", "m = np.array([-1, 0, 7])\n", "n = np.array([4, 8, 2])\n", - "A = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", + "A = np.matrix([[1,2],[-1,0],[4,8]])\n", "np.linalg.matrix_rank(A)\n", "\n", - "# These arrays have a span of (-1 - 4) for the x value, (0, 8) for the y value, and (2, 7) in the z value. This is because all the arrays are linearly independent from one another." + "# These arrays have a span of 3. All of these matrices are linearly independent, allowing for a combination of three dimensions for all matrices." ], - "execution_count": null, + "execution_count": 3, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "3" + "2" ] }, "metadata": { "tags": [] }, - "execution_count": 125 + "execution_count": 3 } ] }, From 002e14dfc65383236d6ef73abd23cc0363419efe Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Wed, 16 Sep 2020 15:50:13 -0600 Subject: [PATCH 5/6] Created using Colaboratory --- ...133_High_Dimensional_Data_Assignment.ipynb | 666 ++++++++++++------ 1 file changed, 441 insertions(+), 225 deletions(-) diff --git a/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb b/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb index d0417b2e..d68f713c 100644 --- a/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb +++ b/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb @@ -38,13 +38,86 @@ "metadata": { "id": "fIJhCtF6RW_U", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "dfd4edfb-6d44-47a8-9b7b-330851442c78" }, "source": [ - "" + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "x = np.arange(0, 100)\n", + "y = x*2\n", + "plt.plot(x,y, 'r')\n", + "plt.xlim(0, 10)\n", + "plt.ylim(0, 20)\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 1, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "9XFVkZUdd2IS", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 287 + }, + "outputId": "37c42086-c256-496c-fe80-55941a4c8990" + }, + "source": [ + "fig, ax = plt.subplots()\n", + "plt.xlim(-1, 1) \n", + "plt.ylim(-1, 1)\n", + "\n", + "a = plt.Circle((0, 0), .5)\n", + "ax.add_artist(a)\n" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 2 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -63,7 +136,7 @@ "colab_type": "text" }, "source": [ - "" + "Graphs that do not pass the vertical line tests do not count as functions because they do not follow the rule for all functions that for one input there can only be one output." ] }, { @@ -98,6 +171,19 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "ofIcZYv4gUC5", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Relation 2, since it's the only relation that has only one output y for an input x, it's the only function." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -124,6 +210,18 @@ "\\end{align}" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "uuqxsoJZgiIL", + "colab_type": "text" + }, + "source": [ + "The dimensionality of the domain is 3 for m, and 4 for n.\n", + "\n", + "The dimensinality of the codomain is 3 for m and 2 for n." + ] + }, { "cell_type": "markdown", "metadata": { @@ -134,6 +232,16 @@ "## 3.2 Do you think it's possible to create a function that maps from a lower dimensional space to a higher dimensional space? If so, provide an example." ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "AEnScswY3ev3", + "colab_type": "text" + }, + "source": [ + "There is no form to map a lower dimensional space to a higher dimensional space because there is no way for a new feature to be created based from the input that is linearly independent from that column." + ] + }, { "cell_type": "markdown", "metadata": { @@ -161,6 +269,38 @@ "\\end{align}" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "RQH2etLmmGJ-", + "colab_type": "text" + }, + "source": [ + "\\begin{align}\n", + "p(\\begin{bmatrix}1 \\\\ 0 \\end{bmatrix}) = \\begin{bmatrix} 1 \\\\-1 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "p(\\begin{bmatrix}0 \\\\ 1 \\end{bmatrix}) = \\begin{bmatrix} 3 \\\\2 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "T = \\begin{bmatrix} 1 & 3 \\\\ -1 & 2 \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "q(\\begin{bmatrix}1 \\\\ 0\\\\0 \\end{bmatrix}) = \\begin{bmatrix} 4 \\\\-1\\\\5 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "q(\\begin{bmatrix}0 \\\\ 1\\\\0 \\end{bmatrix}) = \\begin{bmatrix} 1 \\\\2\\\\1 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "q(\\begin{bmatrix}0 \\\\ 0\\\\1 \\end{bmatrix}) = \\begin{bmatrix} 2 \\\\3\\\\-2 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "T = \\begin{bmatrix} 4 & 1 & 2 \\\\ -1 & 2 & 3 \\\\ 5 & 1 & -2 \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "\\end{align}" + ] + }, { "cell_type": "markdown", "metadata": { @@ -176,13 +316,37 @@ "metadata": { "id": "0UANR1IEaVWE", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "b368a9a7-bb82-45be-8450-bb4ee12faad3" }, "source": [ - "" + "t = np.array([[1, 3], [-1,2]])\n", + "example = np.array([5, 2])\n", + "np.matmul(t, example)\n", + "# First one is correct\n", + "t_2 = np.array([[4, 1, 2], [-1,2,3],[5,1,-2]])\n", + "example_2 = np.array([5, 2, 1])\n", + "np.matmul(t_2, example_2)\n", + "#Second one is correct" ], - "execution_count": 0, - "outputs": [] + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([24, 2, 25])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] }, { "cell_type": "markdown", @@ -204,6 +368,16 @@ "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors." ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "cQpvocO3pYI8", + "colab_type": "text" + }, + "source": [ + "An eigenvector is a vector that does not change in direction after a a transformation is applied on it. Although it's direction doesn't change, it is still affected by a value of the transformation. That is the eigenvalue." + ] + }, { "cell_type": "markdown", "metadata": { @@ -224,6 +398,16 @@ "## 6.1 What are some of the challenges of working with high dimensional spaces?" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "LxCPP2OEqPDX", + "colab_type": "text" + }, + "source": [ + "As we work with higher dimensional spaces, many complications come to arise. First, it becomes more computationally expensive. At the same time, it becomes far less humanly intuitive, since our brains can not handle any dimensions above the third dimension well. Finally, there is an increased redundancy while working with ever so higher dimensions." + ] + }, { "cell_type": "markdown", "metadata": { @@ -234,6 +418,16 @@ "## 6.2 What is the rule of thumb for how many observations you should have compared to parameters in your model?" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "mRruANcKqqTq", + "colab_type": "text" + }, + "source": [ + "You should always have at least five observations for every parameter." + ] + }, { "cell_type": "markdown", "metadata": { @@ -269,9 +463,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 351 + "height": 345 }, - "outputId": "974e831f-cd76-41ed-c225-8ab4d1fea275" + "outputId": "708cf134-a146-47f4-a021-cbb0901f42df" }, "source": [ "from urllib.request import urlopen\n", @@ -296,7 +490,7 @@ "print(national.shape)\n", "national.head()" ], - "execution_count": 2, + "execution_count": 7, "outputs": [ { "output_type": "stream", @@ -850,7 +1044,7 @@ "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 7 } ] }, @@ -859,91 +1053,41 @@ "metadata": { "id": "O5zrMTud2qFU", "colab_type": "code", - "outputId": "22a279ad-ad46-46ba-82c4-47ff31864e01", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 - } + "height": 230 + }, + "outputId": "df6e205a-27e2-4944-f6ec-5a6d05bc7682" }, "source": [ "# Look at datatypes\n", "# a lot of object datatypes even though they seem to be strings of numbers.\n", "national.dtypes" ], - "execution_count": 3, + "execution_count": 8, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL object\n", - "AGE1 int64\n", - "METRO3 object\n", - "REGION object\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS object\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE object\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ object\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT object\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ object\n", - "FMTMETRO3 object\n", - "FMTBUILT object\n", - "FMTSTRUCTURETYPE object\n", - "FMTBEDRMS object\n", - "FMTOWNRENT object\n", - "FMTCOST06RELPOVCAT object\n", - "FMTCOST08RELPOVCAT object\n", - "FMTCOST12RELPOVCAT object\n", - "FMTCOSTMEDRELPOVCAT object\n", - "FMTINCRELPOVCAT object\n", - "FMTCOST06RELFMRCAT object\n", - "FMTCOST08RELFMRCAT object\n", - "FMTCOST12RELFMRCAT object\n", - "FMTCOSTMEDRELFMRCAT object\n", - "FMTINCRELFMRCAT object\n", - "FMTCOST06RELAMICAT object\n", - "FMTCOST08RELAMICAT object\n", - "FMTCOST12RELAMICAT object\n", - "FMTCOSTMEDRELAMICAT object\n", - "FMTINCRELAMICAT object\n", - "FMTASSISTED object\n", - "FMTBURDEN object\n", - "FMTREGION object\n", - "FMTSTATUS object\n", + "CONTROL object\n", + "AGE1 int64\n", + "METRO3 object\n", + "REGION object\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT object\n", + "FMTASSISTED object\n", + "FMTBURDEN object\n", + "FMTREGION object\n", + "FMTSTATUS object\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 3 + "execution_count": 8 } ] }, @@ -952,17 +1096,17 @@ "metadata": { "id": "yIrOjVmd2yLz", "colab_type": "code", - "outputId": "d855cbbd-42ba-47a2-aba9-584813e9c5ab", "colab": { "base_uri": "https://localhost:8080/", "height": 35 - } + }, + "outputId": "5edcd950-4350-43c4-8deb-542d53a2dd6f" }, "source": [ "# check for null values\n", "national.isnull().sum().any()" ], - "execution_count": 4, + "execution_count": 9, "outputs": [ { "output_type": "execute_result", @@ -974,7 +1118,7 @@ "metadata": { "tags": [] }, - "execution_count": 4 + "execution_count": 9 } ] }, @@ -983,11 +1127,11 @@ "metadata": { "id": "2u9tdmwX3KL_", "colab_type": "code", - "outputId": "ce3e8bc6-7571-4b9b-8b4f-b8ae7c94f837", "colab": { "base_uri": "https://localhost:8080/", "height": 52 - } + }, + "outputId": "fc569f46-401b-42c0-c579-11a4c4bb1820" }, "source": [ "# check for number of categorical vs numeric columns\n", @@ -997,7 +1141,7 @@ "print(f'{len(cat_cols)} categorical columns')\n", "print(f'{len(num_cols)} numerical columns')" ], - "execution_count": 5, + "execution_count": 10, "outputs": [ { "output_type": "stream", @@ -1014,11 +1158,11 @@ "metadata": { "id": "UMHOtOs_3gcL", "colab_type": "code", - "outputId": "9194fefa-217a-49e4-cd81-b2d416d77b19", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 - } + "height": 230 + }, + "outputId": "ce9a04ae-fad0-46bf-e567-662d2172575c" }, "source": [ "# We're making a copy of our data in case we mess something up.\n", @@ -1033,80 +1177,30 @@ "\n", "national_processed.dtypes" ], - "execution_count": 6, + "execution_count": 11, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL category\n", - "AGE1 int64\n", - "METRO3 category\n", - "REGION category\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS category\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE category\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ category\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT category\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ category\n", - "FMTMETRO3 category\n", - "FMTBUILT category\n", - "FMTSTRUCTURETYPE category\n", - "FMTBEDRMS category\n", - "FMTOWNRENT category\n", - "FMTCOST06RELPOVCAT category\n", - "FMTCOST08RELPOVCAT category\n", - "FMTCOST12RELPOVCAT category\n", - "FMTCOSTMEDRELPOVCAT category\n", - "FMTINCRELPOVCAT category\n", - "FMTCOST06RELFMRCAT category\n", - "FMTCOST08RELFMRCAT category\n", - "FMTCOST12RELFMRCAT category\n", - "FMTCOSTMEDRELFMRCAT category\n", - "FMTINCRELFMRCAT category\n", - "FMTCOST06RELAMICAT category\n", - "FMTCOST08RELAMICAT category\n", - "FMTCOST12RELAMICAT category\n", - "FMTCOSTMEDRELAMICAT category\n", - "FMTINCRELAMICAT category\n", - "FMTASSISTED category\n", - "FMTBURDEN category\n", - "FMTREGION category\n", - "FMTSTATUS category\n", + "CONTROL category\n", + "AGE1 int64\n", + "METRO3 category\n", + "REGION category\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT category\n", + "FMTASSISTED category\n", + "FMTBURDEN category\n", + "FMTREGION category\n", + "FMTSTATUS category\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 6 + "execution_count": 11 } ] }, @@ -1117,9 +1211,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 265 + "height": 261 }, - "outputId": "02fe0fad-81bb-404c-a4cd-92242cfe4c6c" + "outputId": "cca25176-5240-43c6-af20-948e489591ba" }, "source": [ "# Replace all category cell values with their numeric category codes\n", @@ -1129,7 +1223,7 @@ "print(national_processed.shape)\n", "national_processed.head()" ], - "execution_count": 7, + "execution_count": 12, "outputs": [ { "output_type": "stream", @@ -1683,7 +1777,7 @@ "metadata": { "tags": [] }, - "execution_count": 7 + "execution_count": 12 } ] }, @@ -1694,88 +1788,38 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 + "height": 230 }, - "outputId": "3cbe9b8e-05e4-4126-f072-030c8d2ac7b4" + "outputId": "e3fba5cd-0c11-4422-f845-ba61e0753ee8" }, "source": [ "# Now we only ahve numeric columns (ints and floats)\n", "national_processed.dtypes" ], - "execution_count": 10, + "execution_count": 13, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL int32\n", - "AGE1 int64\n", - "METRO3 int8\n", - "REGION int8\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS int8\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE int8\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ int8\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT int8\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ int8\n", - "FMTMETRO3 int8\n", - "FMTBUILT int8\n", - "FMTSTRUCTURETYPE int8\n", - "FMTBEDRMS int8\n", - "FMTOWNRENT int8\n", - "FMTCOST06RELPOVCAT int8\n", - "FMTCOST08RELPOVCAT int8\n", - "FMTCOST12RELPOVCAT int8\n", - "FMTCOSTMEDRELPOVCAT int8\n", - "FMTINCRELPOVCAT int8\n", - "FMTCOST06RELFMRCAT int8\n", - "FMTCOST08RELFMRCAT int8\n", - "FMTCOST12RELFMRCAT int8\n", - "FMTCOSTMEDRELFMRCAT int8\n", - "FMTINCRELFMRCAT int8\n", - "FMTCOST06RELAMICAT int8\n", - "FMTCOST08RELAMICAT int8\n", - "FMTCOST12RELAMICAT int8\n", - "FMTCOSTMEDRELAMICAT int8\n", - "FMTINCRELAMICAT int8\n", - "FMTASSISTED int8\n", - "FMTBURDEN int8\n", - "FMTREGION int8\n", - "FMTSTATUS int8\n", + "CONTROL int32\n", + "AGE1 int64\n", + "METRO3 int8\n", + "REGION int8\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT int8\n", + "FMTASSISTED int8\n", + "FMTBURDEN int8\n", + "FMTREGION int8\n", + "FMTSTATUS int8\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 10 + "execution_count": 13 } ] }, @@ -1784,13 +1828,185 @@ "metadata": { "id": "WAJ8bjVcEwhA", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 177 + }, + "outputId": "4348059c-2285-46eb-fd03-4b934028397a" }, "source": [ - "### Your Code Here" + "### Your Code Here\n", + "\n", + "from numpy import array\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA\n", + "from sklearn import decomposition\n", + "scaler = StandardScaler()\n", + "Z = scaler.fit_transform(national_processed)\n", + "pca = decomposition.PCA(n_components=4)\n", + "B = pca.fit_transform(Z)\n", + "print(\"\\n Projected data: \\n\", B)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + " Projected data: \n", + " [[-2.57657018 -1.37612731 -1.25383511 -0.61988077]\n", + " [ 2.04064284 -0.98806144 -2.2379997 -2.98740252]\n", + " [ 1.21527025 0.37016817 -3.24860604 -2.12389856]\n", + " ...\n", + " [ 1.83162816 -2.95570213 5.28543497 0.58805327]\n", + " [-5.02514474 -2.52857814 -0.10201898 1.5501208 ]\n", + " [-9.89816404 -0.80284266 -3.53506307 2.86100003]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qwrRoz06v1eO", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 194 + }, + "outputId": "4803ad6c-c6ac-4d54-8677-80e8ee06a329" + }, + "source": [ + "pc_df = pd.DataFrame(data = B , \n", + " columns = ['PC1', 'PC2','PC3','PC4'])\n", + "pc_df.head()" + ], + "execution_count": 24, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PC1PC2PC3PC4
0-2.576570-1.376127-1.253835-0.619881
12.040643-0.988061-2.238000-2.987403
21.2152700.370168-3.248606-2.123899
32.8218371.723711-4.375157-1.479343
4-1.570106-0.878362-3.3070620.785881
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 PC4\n", + "0 -2.576570 -1.376127 -1.253835 -0.619881\n", + "1 2.040643 -0.988061 -2.238000 -2.987403\n", + "2 1.215270 0.370168 -3.248606 -2.123899\n", + "3 2.821837 1.723711 -4.375157 -1.479343\n", + "4 -1.570106 -0.878362 -3.307062 0.785881" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 24 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "PRJ-ezRpuTSr", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "outputId": "8ec697f7-315e-4170-c755-fd1620d05560" + }, + "source": [ + "# Plot the data after PCA\n", + "data = {\"x\": x, \"y\": y}\n", + "\n", + "df = pd.DataFrame(data)\n", + "\n", + "plt.scatter(pc_df['PC1'], pc_df['PC2'])\n", + "plt.title(\"Data After PCA\")\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.show()" + ], + "execution_count": 26, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", From 3c70a5f6201fee1f53cf8cc1275d90a228eda973 Mon Sep 17 00:00:00 2001 From: Marcos Morales <40769305+MarcosMorales2011@users.noreply.github.com> Date: Thu, 17 Sep 2020 18:29:39 -0600 Subject: [PATCH 6/6] Created using Colaboratory --- .../LS_DS_134_Clustering_Assignment.ipynb | 2469 ++++++++++++++++- 1 file changed, 2342 insertions(+), 127 deletions(-) diff --git a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb index 3342efb0..99471f16 100644 --- a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb +++ b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb @@ -54,11 +54,11 @@ "metadata": { "id": "ws5R9X6hLJQ2", "colab_type": "code", - "outputId": "078a0dfa-1b57-4a70-b7dd-6747910059c9", "colab": { "base_uri": "https://localhost:8080/", - "height": 278 - } + "height": 248 + }, + "outputId": "d2608c6d-7774-4b39-e003-a2d5985017cb" }, "source": [ "import pandas as pd\n", @@ -72,7 +72,7 @@ "print(df.shape)\n", "df.head()" ], - "execution_count": 0, + "execution_count": 79, "outputs": [ { "output_type": "stream", @@ -113,7 +113,19 @@ " compactness_mean\n", " concavity_mean\n", " concave points_mean\n", - " ...\n", + " symmetry_mean\n", + " fractal_dimension_mean\n", + " radius_se\n", + " texture_se\n", + " perimeter_se\n", + " area_se\n", + " smoothness_se\n", + " compactness_se\n", + " concavity_se\n", + " concave points_se\n", + " symmetry_se\n", + " fractal_dimension_se\n", + " radius_worst\n", " texture_worst\n", " perimeter_worst\n", " area_worst\n", @@ -139,7 +151,19 @@ " 0.27760\n", " 0.3001\n", " 0.14710\n", - " ...\n", + " 0.2419\n", + " 0.07871\n", + " 1.0950\n", + " 0.9053\n", + " 8.589\n", + " 153.40\n", + " 0.006399\n", + " 0.04904\n", + " 0.05373\n", + " 0.01587\n", + " 0.03003\n", + " 0.006193\n", + " 25.38\n", " 17.33\n", " 184.60\n", " 2019.0\n", @@ -163,7 +187,19 @@ " 0.07864\n", " 0.0869\n", " 0.07017\n", - " ...\n", + " 0.1812\n", + " 0.05667\n", + " 0.5435\n", + " 0.7339\n", + " 3.398\n", + " 74.08\n", + " 0.005225\n", + " 0.01308\n", + " 0.01860\n", + " 0.01340\n", + " 0.01389\n", + " 0.003532\n", + " 24.99\n", " 23.41\n", " 158.80\n", " 1956.0\n", @@ -187,7 +223,19 @@ " 0.15990\n", " 0.1974\n", " 0.12790\n", - " ...\n", + " 0.2069\n", + " 0.05999\n", + " 0.7456\n", + " 0.7869\n", + " 4.585\n", + " 94.03\n", + " 0.006150\n", + " 0.04006\n", + " 0.03832\n", + " 0.02058\n", + " 0.02250\n", + " 0.004571\n", + " 23.57\n", " 25.53\n", " 152.50\n", " 1709.0\n", @@ -211,7 +259,19 @@ " 0.28390\n", " 0.2414\n", " 0.10520\n", - " ...\n", + " 0.2597\n", + " 0.09744\n", + " 0.4956\n", + " 1.1560\n", + " 3.445\n", + " 27.23\n", + " 0.009110\n", + " 0.07458\n", + " 0.05661\n", + " 0.01867\n", + " 0.05963\n", + " 0.009208\n", + " 14.91\n", " 26.50\n", " 98.87\n", " 567.7\n", @@ -235,7 +295,19 @@ " 0.13280\n", " 0.1980\n", " 0.10430\n", - " ...\n", + " 0.1809\n", + " 0.05883\n", + " 0.7572\n", + " 0.7813\n", + " 5.438\n", + " 94.44\n", + " 0.011490\n", + " 0.02461\n", + " 0.05688\n", + " 0.01885\n", + " 0.01756\n", + " 0.005115\n", + " 22.54\n", " 16.67\n", " 152.20\n", " 1575.0\n", @@ -249,44 +321,15 @@ " \n", " \n", "\n", - "

5 rows × 33 columns

\n", "" ], "text/plain": [ - " id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n", - "0 842302 M 17.99 10.38 122.80 1001.0 \n", - "1 842517 M 20.57 17.77 132.90 1326.0 \n", - "2 84300903 M 19.69 21.25 130.00 1203.0 \n", - "3 84348301 M 11.42 20.38 77.58 386.1 \n", - "4 84358402 M 20.29 14.34 135.10 1297.0 \n", - "\n", - " smoothness_mean compactness_mean concavity_mean concave points_mean \\\n", - "0 0.11840 0.27760 0.3001 0.14710 \n", - "1 0.08474 0.07864 0.0869 0.07017 \n", - "2 0.10960 0.15990 0.1974 0.12790 \n", - "3 0.14250 0.28390 0.2414 0.10520 \n", - "4 0.10030 0.13280 0.1980 0.10430 \n", - "\n", - " ... texture_worst perimeter_worst area_worst smoothness_worst \\\n", - "0 ... 17.33 184.60 2019.0 0.1622 \n", - "1 ... 23.41 158.80 1956.0 0.1238 \n", - "2 ... 25.53 152.50 1709.0 0.1444 \n", - "3 ... 26.50 98.87 567.7 0.2098 \n", - "4 ... 16.67 152.20 1575.0 0.1374 \n", - "\n", - " compactness_worst concavity_worst concave points_worst symmetry_worst \\\n", - "0 0.6656 0.7119 0.2654 0.4601 \n", - "1 0.1866 0.2416 0.1860 0.2750 \n", - "2 0.4245 0.4504 0.2430 0.3613 \n", - "3 0.8663 0.6869 0.2575 0.6638 \n", - "4 0.2050 0.4000 0.1625 0.2364 \n", - "\n", - " fractal_dimension_worst Unnamed: 32 \n", - "0 0.11890 NaN \n", - "1 0.08902 NaN \n", - "2 0.08758 NaN \n", - "3 0.17300 NaN \n", - "4 0.07678 NaN \n", + " id diagnosis ... fractal_dimension_worst Unnamed: 32\n", + "0 842302 M ... 0.11890 NaN\n", + "1 842517 M ... 0.08902 NaN\n", + "2 84300903 M ... 0.08758 NaN\n", + "3 84348301 M ... 0.17300 NaN\n", + "4 84358402 M ... 0.07678 NaN\n", "\n", "[5 rows x 33 columns]" ] @@ -294,7 +337,7 @@ "metadata": { "tags": [] }, - "execution_count": 1 + "execution_count": 79 } ] }, @@ -310,22 +353,35 @@ "(Because we've removed the diagnosis label) - Use this version." ] }, + { + "cell_type": "code", + "metadata": { + "id": "ofGdLvcfR8aj", + "colab_type": "code", + "colab": {} + }, + "source": [ + "dr = df" + ], + "execution_count": 80, + "outputs": [] + }, { "cell_type": "code", "metadata": { "id": "86MHoPJon_aC", "colab_type": "code", - "outputId": "d4d9f1cd-c63c-4623-954e-11a61d1e3ced", "colab": { "base_uri": "https://localhost:8080/", - "height": 261 - } + "height": 231 + }, + "outputId": "7e937783-4107-4344-8224-302c08c433d0" }, "source": [ "df = df.drop('diagnosis', axis=1)\n", "df.head()" ], - "execution_count": 0, + "execution_count": 81, "outputs": [ { "output_type": "execute_result", @@ -359,7 +415,18 @@ " concavity_mean\n", " concave points_mean\n", " symmetry_mean\n", - " ...\n", + " fractal_dimension_mean\n", + " radius_se\n", + " texture_se\n", + " perimeter_se\n", + " area_se\n", + " smoothness_se\n", + " compactness_se\n", + " concavity_se\n", + " concave points_se\n", + " symmetry_se\n", + " fractal_dimension_se\n", + " radius_worst\n", " texture_worst\n", " perimeter_worst\n", " area_worst\n", @@ -385,7 +452,18 @@ " 0.3001\n", " 0.14710\n", " 0.2419\n", - " ...\n", + " 0.07871\n", + " 1.0950\n", + " 0.9053\n", + " 8.589\n", + " 153.40\n", + " 0.006399\n", + " 0.04904\n", + " 0.05373\n", + " 0.01587\n", + " 0.03003\n", + " 0.006193\n", + " 25.38\n", " 17.33\n", " 184.60\n", " 2019.0\n", @@ -409,7 +487,18 @@ " 0.0869\n", " 0.07017\n", " 0.1812\n", - " ...\n", + " 0.05667\n", + " 0.5435\n", + " 0.7339\n", + " 3.398\n", + " 74.08\n", + " 0.005225\n", + " 0.01308\n", + " 0.01860\n", + " 0.01340\n", + " 0.01389\n", + " 0.003532\n", + " 24.99\n", " 23.41\n", " 158.80\n", " 1956.0\n", @@ -433,7 +522,18 @@ " 0.1974\n", " 0.12790\n", " 0.2069\n", - " ...\n", + " 0.05999\n", + " 0.7456\n", + " 0.7869\n", + " 4.585\n", + " 94.03\n", + " 0.006150\n", + " 0.04006\n", + " 0.03832\n", + " 0.02058\n", + " 0.02250\n", + " 0.004571\n", + " 23.57\n", " 25.53\n", " 152.50\n", " 1709.0\n", @@ -457,7 +557,18 @@ " 0.2414\n", " 0.10520\n", " 0.2597\n", - " ...\n", + " 0.09744\n", + " 0.4956\n", + " 1.1560\n", + " 3.445\n", + " 27.23\n", + " 0.009110\n", + " 0.07458\n", + " 0.05661\n", + " 0.01867\n", + " 0.05963\n", + " 0.009208\n", + " 14.91\n", " 26.50\n", " 98.87\n", " 567.7\n", @@ -481,7 +592,18 @@ " 0.1980\n", " 0.10430\n", " 0.1809\n", - " ...\n", + " 0.05883\n", + " 0.7572\n", + " 0.7813\n", + " 5.438\n", + " 94.44\n", + " 0.011490\n", + " 0.02461\n", + " 0.05688\n", + " 0.01885\n", + " 0.01756\n", + " 0.005115\n", + " 22.54\n", " 16.67\n", " 152.20\n", " 1575.0\n", @@ -495,44 +617,15 @@ " \n", " \n", "\n", - "

5 rows × 32 columns

\n", "" ], "text/plain": [ - " id radius_mean texture_mean perimeter_mean area_mean \\\n", - "0 842302 17.99 10.38 122.80 1001.0 \n", - "1 842517 20.57 17.77 132.90 1326.0 \n", - "2 84300903 19.69 21.25 130.00 1203.0 \n", - "3 84348301 11.42 20.38 77.58 386.1 \n", - "4 84358402 20.29 14.34 135.10 1297.0 \n", - "\n", - " smoothness_mean compactness_mean concavity_mean concave points_mean \\\n", - "0 0.11840 0.27760 0.3001 0.14710 \n", - "1 0.08474 0.07864 0.0869 0.07017 \n", - "2 0.10960 0.15990 0.1974 0.12790 \n", - "3 0.14250 0.28390 0.2414 0.10520 \n", - "4 0.10030 0.13280 0.1980 0.10430 \n", - "\n", - " symmetry_mean ... texture_worst perimeter_worst area_worst \\\n", - "0 0.2419 ... 17.33 184.60 2019.0 \n", - "1 0.1812 ... 23.41 158.80 1956.0 \n", - "2 0.2069 ... 25.53 152.50 1709.0 \n", - "3 0.2597 ... 26.50 98.87 567.7 \n", - "4 0.1809 ... 16.67 152.20 1575.0 \n", - "\n", - " smoothness_worst compactness_worst concavity_worst concave points_worst \\\n", - "0 0.1622 0.6656 0.7119 0.2654 \n", - "1 0.1238 0.1866 0.2416 0.1860 \n", - "2 0.1444 0.4245 0.4504 0.2430 \n", - "3 0.2098 0.8663 0.6869 0.2575 \n", - "4 0.1374 0.2050 0.4000 0.1625 \n", - "\n", - " symmetry_worst fractal_dimension_worst Unnamed: 32 \n", - "0 0.4601 0.11890 NaN \n", - "1 0.2750 0.08902 NaN \n", - "2 0.3613 0.08758 NaN \n", - "3 0.6638 0.17300 NaN \n", - "4 0.2364 0.07678 NaN \n", + " id radius_mean ... fractal_dimension_worst Unnamed: 32\n", + "0 842302 17.99 ... 0.11890 NaN\n", + "1 842517 20.57 ... 0.08902 NaN\n", + "2 84300903 19.69 ... 0.08758 NaN\n", + "3 84348301 11.42 ... 0.17300 NaN\n", + "4 84358402 20.29 ... 0.07678 NaN\n", "\n", "[5 rows x 32 columns]" ] @@ -540,7 +633,7 @@ "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 81 } ] }, @@ -560,72 +653,2194 @@ { "cell_type": "code", "metadata": { - "id": "U92Y3jNKPpjJ", + "id": "4-NDDWkGauGI", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 436 + }, + "outputId": "4d9037fa-8d4f-4b50-f592-d9841e2f2731" }, "source": [ - "# Perform K-Means Clustering on the Dataset" + "dp = df.drop(['Unnamed: 32', 'id'], axis = 1)\n", + "dp" ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7ghqYSxrP_FE", - "colab_type": "text" - }, - "source": [ - "## Check you work: \n", - "\n", - "This is something that in a truly unsupervised learning situation **WOULD NOT BE POSSIBLE**. But for educational purposes go back and grab the true diagnosis column (label) from the original dataset. Take your cluster labels and compare them to the original diagnosis column. You can make scatterplots for each to see how they compare or you can calculate a percent accuracy score like: \n", - "\\begin{align}\n", - "\\frac{\\text{Num Correct Labels}}{\\text{Num Total Observations}}\n", - "\\end{align}" + "execution_count": 82, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
017.9910.38122.801001.00.118400.277600.300100.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.38017.33184.602019.00.162200.665600.71190.26540.46010.11890
120.5717.77132.901326.00.084740.078640.086900.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.99023.41158.801956.00.123800.186600.24160.18600.27500.08902
219.6921.25130.001203.00.109600.159900.197400.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.57025.53152.501709.00.144400.424500.45040.24300.36130.08758
311.4220.3877.58386.10.142500.283900.241400.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.91026.5098.87567.70.209800.866300.68690.25750.66380.17300
420.2914.34135.101297.00.100300.132800.198000.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.54016.67152.201575.00.137400.205000.40000.16250.23640.07678
.............................................................................................
56421.5622.39142.001479.00.111000.115900.243900.138900.17260.056231.17601.25607.673158.700.0103000.028910.051980.024540.011140.00423925.45026.40166.102027.00.141000.211300.41070.22160.20600.07115
56520.1328.25131.201261.00.097800.103400.144000.097910.17520.055330.76552.46305.20399.040.0057690.024230.039500.016780.018980.00249823.69038.25155.001731.00.116600.192200.32150.16280.25720.06637
56616.6028.08108.30858.10.084550.102300.092510.053020.15900.056480.45641.07503.42548.550.0059030.037310.047300.015570.013180.00389218.98034.12126.701124.00.113900.309400.34030.14180.22180.07820
56720.6029.33140.101265.00.117800.277000.351400.152000.23970.070160.72601.59505.77286.220.0065220.061580.071170.016640.023240.00618525.74039.42184.601821.00.165000.868100.93870.26500.40870.12400
5687.7624.5447.92181.00.052630.043620.000000.000000.15870.058840.38571.42802.54819.150.0071890.004660.000000.000000.026760.0027839.45630.3759.16268.60.089960.064440.00000.00000.28710.07039
\n", + "

569 rows × 30 columns

\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... symmetry_worst fractal_dimension_worst\n", + "0 17.99 10.38 ... 0.4601 0.11890\n", + "1 20.57 17.77 ... 0.2750 0.08902\n", + "2 19.69 21.25 ... 0.3613 0.08758\n", + "3 11.42 20.38 ... 0.6638 0.17300\n", + "4 20.29 14.34 ... 0.2364 0.07678\n", + ".. ... ... ... ... ...\n", + "564 21.56 22.39 ... 0.2060 0.07115\n", + "565 20.13 28.25 ... 0.2572 0.06637\n", + "566 16.60 28.08 ... 0.2218 0.07820\n", + "567 20.60 29.33 ... 0.4087 0.12400\n", + "568 7.76 24.54 ... 0.2871 0.07039\n", + "\n", + "[569 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 82 + } ] }, { "cell_type": "code", "metadata": { - "id": "OIG7-yGLP-eA", + "id": "U92Y3jNKPpjJ", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 290 + }, + "outputId": "5c8f6eb2-721e-4c0c-ede8-3f3faed5af39" }, "source": [ - "# Your Code Here" + "# Perform K-Means Clustering on the Dataset\n", + "sum_of_squared_distances = []\n", + "K = range(1,11)\n", + "for k in K:\n", + " km = KMeans(n_clusters=k)\n", + " km.fit(dp)\n", + " sum_of_squared_distances.append(km.inertia_)\n", + "\n", + "plt.plot(K, sum_of_squared_distances, 'bx-')\n", + "plt.xlabel('K')\n", + "plt.ylabel('Sum of squared distances')\n", + "plt.show()" + ], + "execution_count": 83, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "RRpckfHtm8_O", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 301 + }, + "outputId": "06c2e920-4c34-4089-bfd8-0af3bd7858ba" + }, + "source": [ + "# For N-clusters = 3 the third cluster is far too small, so try 2 instead\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(dp)\n", + "labels = kmeans.labels_\n", + "\n", + "print(labels)" + ], + "execution_count": 84, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0\n", + " 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\n", + " 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0\n", + " 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0\n", + " 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1\n", + " 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0\n", + " 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1\n", + " 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0\n", + " 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 1 1 1 0 1 0]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UdaAcO1F0d4k", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 231 + }, + "outputId": "4526f208-5ce6-47f5-a23c-91cc7948c00d" + }, + "source": [ + "l_series = pd.Series(labels)\n", + "dp['clusters'] = l_series.values\n", + "dp.head()" + ], + "execution_count": 85, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstclusters
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.118901
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.089021
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.087581
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.173000
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.076781
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... fractal_dimension_worst clusters\n", + "0 17.99 10.38 ... 0.11890 1\n", + "1 20.57 17.77 ... 0.08902 1\n", + "2 19.69 21.25 ... 0.08758 1\n", + "3 11.42 20.38 ... 0.17300 0\n", + "4 20.29 14.34 ... 0.07678 1\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 85 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "iYdnhiqSnRPc", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "outputId": "9d1854ab-ac25-4278-fea2-d500967efb7f" + }, + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "fig, ax = plt.subplots()\n", + "color = {0: 'red', 1: 'green'}\n", + "grouped = dp.groupby('clusters')\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = \"radius_mean\", y = \"symmetry_worst\", label = key, color = color[key])\n", + "plt.show()\n" + ], + "execution_count": 86, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7ghqYSxrP_FE", + "colab_type": "text" + }, + "source": [ + "## Check you work: \n", + "\n", + "This is something that in a truly unsupervised learning situation **WOULD NOT BE POSSIBLE**. But for educational purposes go back and grab the true diagnosis column (label) from the original dataset. Take your cluster labels and compare them to the original diagnosis column. You can make scatterplots for each to see how they compare or you can calculate a percent accuracy score like: \n", + "\\begin{align}\n", + "\\frac{\\text{Num Correct Labels}}{\\text{Num Total Observations}}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OIG7-yGLP-eA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "outputId": "a8fb34de-ea6d-434b-da06-bb470d2bb2e6" + }, + "source": [ + "# Your Code Here\n", + "fig, ax = plt.subplots()\n", + "colors = {\"B\" : \"red\", \"M\" : \"green\"}\n", + "grouped = dr.groupby(\"diagnosis\")\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = \"radius_mean\", y = \"symmetry_worst\", label = key, color = colors[key])\n", + "plt.show()" + ], + "execution_count": 90, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BedOTS0eJ9_K", + "colab_type": "text" + }, + "source": [ + "# 2) Perform PCA on your dataset first and *then* use k-means clustering. \n", + "\n", + "- You need to standardize your data before PCA.\n", + "- First try clustering just on PC1 and PC2 so that you can make a scatterplot of your clustering.\n", + "- Then use use a scree plot to decide how many principal components to include in your clustering, and use however many principal components you need in order to retain 90% of the variation of the original dataset\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dW1AeAK8PNah", + "colab_type": "code", + "colab": {} + }, + "source": [ + "##### Your Code Here #####\n", + "\n", + "# Standarize data\n", + "scaler = StandardScaler()\n", + "R = scaler.fit_transform(dp)" + ], + "execution_count": 94, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "2Wzz_m1Xi8Jx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 214 + }, + "outputId": "e81e6ad8-ce90-468f-c287-7425141e007b" + }, + "source": [ + "# Call the PCA\n", + "pca = PCA()\n", + "\n", + "pca_features = pca.fit_transform(R)\n", + "\n", + "pca_features = pd.DataFrame(pca_features)\n", + "\n", + "h = []\n", + "\n", + "for i in range(1, 32):\n", + " h.append(\"PC\" + str(i))\n", + "\n", + "pca_features.columns = h\n", + "\n", + "pca_features.head()" + ], + "execution_count": 101, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30PC31
09.3245842.150041-1.112108-3.644284-1.1823671.4121542.151872-0.287144-0.307340-0.5931190.716610-0.815015-0.232401-0.571323-0.525107-0.5788850.745496-0.121635-0.573312-0.2583430.273157-0.1514750.0974550.089668-0.176351-0.151917-0.197971-0.261789-0.0352970.048808-0.047403
12.800754-3.875512-0.528043-1.1242300.5976970.025522-0.0470180.691868-1.1246851.1292620.2883790.136667-0.4651560.603762-0.698337-0.006371-0.650643-0.1290480.2637820.281806-0.1152350.001813-0.095575-0.2195760.012458-0.170471-0.0502970.1788090.032262-0.005257-0.001896
26.009637-1.025178-0.549446-0.918287-0.1877010.540223-0.6866570.161941-0.0877230.375032-0.4814970.270437-0.608718-0.1610750.0869410.5024850.3304870.244015-0.0620450.4601700.1469850.277548-0.068785-0.0725410.0973660.169414-0.0099360.0456130.0452220.0063130.000542
36.61434610.626254-3.195999-0.183760-2.9822043.0544131.4220261.181278-0.556884-1.744363-0.6068771.237750-0.9486700.219865-0.532092-0.2144580.0432630.4579760.0632720.1097360.0465080.591382-0.280432-0.1423280.1643210.082271-0.2665310.1775790.043164-0.071841-0.019711
44.274566-2.0018511.397775-2.9445320.538734-1.228769-0.9759900.826780-0.3481550.4749200.368438-0.2221800.453931-0.247654-0.4793900.316414-0.1495480.2290100.099393-0.413921-0.035730-0.1427330.0034570.145019-0.0108270.0008840.0271980.030265-0.0360720.0078130.021043
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC29 PC30 PC31\n", + "0 9.324584 2.150041 -1.112108 ... -0.035297 0.048808 -0.047403\n", + "1 2.800754 -3.875512 -0.528043 ... 0.032262 -0.005257 -0.001896\n", + "2 6.009637 -1.025178 -0.549446 ... 0.045222 0.006313 0.000542\n", + "3 6.614346 10.626254 -3.195999 ... 0.043164 -0.071841 -0.019711\n", + "4 4.274566 -2.001851 1.397775 ... -0.036072 0.007813 0.021043\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 101 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "LpFjac-gjtSl", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 301 + }, + "outputId": "a9c7064a-d24f-4334-876e-0235201f229b" + }, + "source": [ + "two = pca_features[[\"PC1\", \"PC2\"]]\n", + "\n", + "# Clustering on only PC1 and PC2\n", + "\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(two)\n", + "labels = kmeans.labels_\n", + "\n", + "print(labels)" + ], + "execution_count": 103, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0\n", + " 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0\n", + " 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0\n", + " 0 1 0 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0\n", + " 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 0\n", + " 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1\n", + " 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0\n", + " 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1\n", + " 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0\n", + " 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 1 1 1 1 0 1 0]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "N9cY2s8-kZw8", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 214 + }, + "outputId": "347b5086-082f-4b7f-a04d-d22026324d67" + }, + "source": [ + "# Add the cluster labels to the dataframe\n", + "labels_series = pd.Series(labels)\n", + "pca_features[\"clusters\"] = labels_series.values\n", + "pca_features.head()" + ], + "execution_count": 105, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30PC31clusters
09.3245842.150041-1.112108-3.644284-1.1823671.4121542.151872-0.287144-0.307340-0.5931190.716610-0.815015-0.232401-0.571323-0.525107-0.5788850.745496-0.121635-0.573312-0.2583430.273157-0.1514750.0974550.089668-0.176351-0.151917-0.197971-0.261789-0.0352970.048808-0.0474031
12.800754-3.875512-0.528043-1.1242300.5976970.025522-0.0470180.691868-1.1246851.1292620.2883790.136667-0.4651560.603762-0.698337-0.006371-0.650643-0.1290480.2637820.281806-0.1152350.001813-0.095575-0.2195760.012458-0.170471-0.0502970.1788090.032262-0.005257-0.0018961
26.009637-1.025178-0.549446-0.918287-0.1877010.540223-0.6866570.161941-0.0877230.375032-0.4814970.270437-0.608718-0.1610750.0869410.5024850.3304870.244015-0.0620450.4601700.1469850.277548-0.068785-0.0725410.0973660.169414-0.0099360.0456130.0452220.0063130.0005421
36.61434610.626254-3.195999-0.183760-2.9822043.0544131.4220261.181278-0.556884-1.744363-0.6068771.237750-0.9486700.219865-0.532092-0.2144580.0432630.4579760.0632720.1097360.0465080.591382-0.280432-0.1423280.1643210.082271-0.2665310.1775790.043164-0.071841-0.0197111
44.274566-2.0018511.397775-2.9445320.538734-1.228769-0.9759900.826780-0.3481550.4749200.368438-0.2221800.453931-0.247654-0.4793900.316414-0.1495480.2290100.099393-0.413921-0.035730-0.1427330.0034570.145019-0.0108270.0008840.0271980.030265-0.0360720.0078130.0210431
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC30 PC31 clusters\n", + "0 9.324584 2.150041 -1.112108 ... 0.048808 -0.047403 1\n", + "1 2.800754 -3.875512 -0.528043 ... -0.005257 -0.001896 1\n", + "2 6.009637 -1.025178 -0.549446 ... 0.006313 0.000542 1\n", + "3 6.614346 10.626254 -3.195999 ... -0.071841 -0.019711 1\n", + "4 4.274566 -2.001851 1.397775 ... 0.007813 0.021043 1\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 105 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "JP6PD5JxkFUA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "outputId": "f49ba1b4-3316-4de5-c127-06e05bfbaa17" + }, + "source": [ + "# Plot graph on PC1 and PC2, using the cluster to colorcode\n", + "fig, ax = plt.subplots()\n", + "color = {0: 'red', 1: 'green'}\n", + "grouped = pca_features.groupby('clusters')\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = \"PC1\", y = \"PC2\", label = key, color = color[key])\n", + "plt.show()\n" + ], + "execution_count": 107, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "S3nnRUQ2kjmX", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 404 + }, + "outputId": "df59bb49-a1ac-44fe-e5a6-5dd491abff09" + }, + "source": [ + "# Define scree plot function\n", + "def scree_plot(pca):\n", + " '''\n", + " Creates a scree plot associated with the principal components \n", + " \n", + " INPUT: pca - the result of instantian of PCA in scikit learn\n", + " \n", + " OUTPUT:\n", + " None\n", + " '''\n", + " num_components=len(pca.explained_variance_ratio_)\n", + " ind = np.arange(num_components)\n", + " vals = pca.explained_variance_ratio_\n", + " \n", + " plt.figure(figsize=(18, 6))\n", + " ax = plt.subplot(111)\n", + " cumvals = np.cumsum(vals)\n", + " ax.bar(ind, vals)\n", + " ax.plot(ind, cumvals)\n", + " for i in range(num_components):\n", + " ax.annotate(r\"%s\" % ((str(vals[i]*100)[:3])), (ind[i], vals[i]), va=\"bottom\", ha=\"center\", fontsize=4.5)\n", + " \n", + " ax.xaxis.set_tick_params(width=0)\n", + " ax.yaxis.set_tick_params(width=2, length=12)\n", + " \n", + " ax.set_xlabel(\"Principal Component\")\n", + " ax.set_ylabel(\"Variance Explained (%)\")\n", + " plt.title('Explained Variance Per Principal Component')\n", + "\n", + "scree_plot(pca)" + ], + "execution_count": 110, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_offkJH8lzhL", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Drop the clusters\n", + "pca_features = pca_features.drop(\"clusters\")" ], - "execution_count": 0, + "execution_count": null, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "BedOTS0eJ9_K", - "colab_type": "text" + "id": "e4aC5mv0lS4e", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 301 + }, + "outputId": "d9c154f8-d301-4e30-bab5-6c5745fb3ed2" }, "source": [ - "# 2) Perform PCA on your dataset first and *then* use k-means clustering. \n", + "# Around eight PCs will do to have a 90% variance\n", "\n", - "- You need to standardize your data before PCA.\n", - "- First try clustering just on PC1 and PC2 so that you can make a scatterplot of your clustering.\n", - "- Then use use a scree plot to decide how many principal components to include in your clustering, and use however many principal components you need in order to retain 90% of the variation of the original dataset\n", - "\n" + "n_pc = pca_features[[\"PC1\", \"PC2\", \"PC3\", \"PC4\", \"PC5\", \"PC6\", \"PC7\", \"PC8\"]]\n", + "\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(n_pc)\n", + "labels = kmeans.labels_\n", + "\n", + "print(labels)" + ], + "execution_count": 113, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1\n", + " 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1\n", + " 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1\n", + " 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1\n", + " 1 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1\n", + " 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1\n", + " 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 1 0 0 0\n", + " 0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1\n", + " 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1\n", + " 1 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0\n", + " 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1\n", + " 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1 1\n", + " 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1\n", + " 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 1 1 0 0\n", + " 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 1 1 1 1 1 1 1 0 0 0 0 1 0 1]\n" + ], + "name": "stdout" + } ] }, { "cell_type": "code", "metadata": { - "id": "dW1AeAK8PNah", + "id": "PIwZvztpl5n0", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 214 + }, + "outputId": "e53460c7-606f-422e-a2df-39cb6b58b10b" + }, + "source": [ + "# Add the cluster labels to the dataframe\n", + "labels_series = pd.Series(labels)\n", + "pca_features[\"clusters\"] = labels_series.values\n", + "pca_features.head()" + ], + "execution_count": 114, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30PC31clusters
09.3245842.150041-1.112108-3.644284-1.1823671.4121542.151872-0.287144-0.307340-0.5931190.716610-0.815015-0.232401-0.571323-0.525107-0.5788850.745496-0.121635-0.573312-0.2583430.273157-0.1514750.0974550.089668-0.176351-0.151917-0.197971-0.261789-0.0352970.048808-0.0474030
12.800754-3.875512-0.528043-1.1242300.5976970.025522-0.0470180.691868-1.1246851.1292620.2883790.136667-0.4651560.603762-0.698337-0.006371-0.650643-0.1290480.2637820.281806-0.1152350.001813-0.095575-0.2195760.012458-0.170471-0.0502970.1788090.032262-0.005257-0.0018960
26.009637-1.025178-0.549446-0.918287-0.1877010.540223-0.6866570.161941-0.0877230.375032-0.4814970.270437-0.608718-0.1610750.0869410.5024850.3304870.244015-0.0620450.4601700.1469850.277548-0.068785-0.0725410.0973660.169414-0.0099360.0456130.0452220.0063130.0005420
36.61434610.626254-3.195999-0.183760-2.9822043.0544131.4220261.181278-0.556884-1.744363-0.6068771.237750-0.9486700.219865-0.532092-0.2144580.0432630.4579760.0632720.1097360.0465080.591382-0.280432-0.1423280.1643210.082271-0.2665310.1775790.043164-0.071841-0.0197110
44.274566-2.0018511.397775-2.9445320.538734-1.228769-0.9759900.826780-0.3481550.4749200.368438-0.2221800.453931-0.247654-0.4793900.316414-0.1495480.2290100.099393-0.413921-0.035730-0.1427330.0034570.145019-0.0108270.0008840.0271980.030265-0.0360720.0078130.0210430
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC30 PC31 clusters\n", + "0 9.324584 2.150041 -1.112108 ... 0.048808 -0.047403 0\n", + "1 2.800754 -3.875512 -0.528043 ... -0.005257 -0.001896 0\n", + "2 6.009637 -1.025178 -0.549446 ... 0.006313 0.000542 0\n", + "3 6.614346 10.626254 -3.195999 ... -0.071841 -0.019711 0\n", + "4 4.274566 -2.001851 1.397775 ... 0.007813 0.021043 0\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 114 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6NJjfHmol8wm", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "outputId": "81541975-132b-4865-f65f-837879489516" + }, + "source": [ + "# Plot graph on PC1 and PC2, using the cluster to colorcode\n", + "fig, ax = plt.subplots()\n", + "color = {0: 'red', 1: 'green'}\n", + "grouped = pca_features.groupby('clusters')\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = \"PC1\", y = \"PC2\", label = key, color = color[key])\n", + "plt.show()" + ], + "execution_count": 115, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ZS1ffCajmtIf", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 230 + }, + "outputId": "f419971a-e35f-4d00-9fbe-e4817552cc34" + }, + "source": [ + "dr['diagnosis']" + ], + "execution_count": 121, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 M\n", + "1 M\n", + "2 M\n", + "3 M\n", + "4 M\n", + " ..\n", + "564 M\n", + "565 M\n", + "566 M\n", + "567 M\n", + "568 B\n", + "Name: diagnosis, Length: 569, dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 121 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Le773zw0mu5G", "colab_type": "code", "colab": {} }, "source": [ - "##### Your Code Here #####" + "verify = dr.replace('M', 1)\n", + "verify = dr.replace('B', 0)" ], - "execution_count": 0, + "execution_count": 127, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "n6OCyUHUnKta", + "colab_type": "code", + "colab": {} + }, + "source": [ + "verify = verify.replace('M', 1)" + ], + "execution_count": 129, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "4oJ8GJnJnCbk", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 230 + }, + "outputId": "ecda51f5-00ed-46d3-e359-5470bc2a7e70" + }, + "source": [ + "verify[\"diagnosis\"]" + ], + "execution_count": 133, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 1\n", + "1 1\n", + "2 1\n", + "3 1\n", + "4 1\n", + " ..\n", + "564 1\n", + "565 1\n", + "566 1\n", + "567 1\n", + "568 0\n", + "Name: diagnosis, Length: 569, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 133 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3z56EjGLnEkL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 230 + }, + "outputId": "a782aa3a-aeda-4d51-9616-5d82f1a69e88" + }, + "source": [ + "pca_features[\"clusters\"]" + ], + "execution_count": 132, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 0\n", + "1 0\n", + "2 0\n", + "3 0\n", + "4 0\n", + " ..\n", + "564 0\n", + "565 0\n", + "566 1\n", + "567 0\n", + "568 1\n", + "Name: clusters, Length: 569, dtype: int32" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 132 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NxtzyGD8mMdn", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "064b7d3a-9b36-478d-a7a7-70b5aef69ca3" + }, + "source": [ + "# Check accuracy with 90% variance\n", + "test = (verify[\"diagnosis\"] != pca_features[\"clusters\"])\n", + "(((test == True).sum() / test.value_counts().sum()) * 100)\n", + "\n", + "# Had to use != here because my 0 and 1 values were flipped" + ], + "execution_count": 134, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "92.2671353251318" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 134 + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -664,7 +2879,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": null, "outputs": [] } ]