diff --git a/module1-vectors-and-matrices/Jacob_Torres_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb b/module1-vectors-and-matrices/Jacob_Torres_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb new file mode 100644 index 00000000..34e8532f --- /dev/null +++ b/module1-vectors-and-matrices/Jacob_Torres_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb @@ -0,0 +1,1172 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Jacob_Torres_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yXA3GwWhY9KL" + }, + "source": [ + "# Part 1 - Scalars and Vectors\n", + "\n", + "For the questions below it is not sufficient to simply provide answer to the questions, but you must solve the problems and show your work using python (the NumPy library will help a lot!) Translate the vectors and matrices into their appropriate python representations and use numpy or functions that you write yourself to demonstrate the result or property. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oNOTv43_Zi9L" + }, + "source": [ + "## 1.1 Create a two-dimensional vector and plot it on a graph" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5oCHTpESqmk4" + }, + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "XNqjzQzrkVG7", + "outputId": "412d60bd-ee5d-449e-d2a2-033b2310c333", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + } + }, + "source": [ + "# 2D vector\n", + "vec_2d = np.array([2, 5])\n", + "\n", + "# Graph the vector\n", + "plt.arrow(0,0,vec_2d[0],vec_2d[1], color='green')\n", + "plt.xlim(0, 3)\n", + "plt.ylim(0, 5)\n", + "plt.title(\"2-Dimensional Vector\")\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEICAYAAABCnX+uAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd5xU9b3G8c+XZReQLqyAdBVFNFhANCGoSPQSSEAlKsTKJYAaiRUVBIwgisbGFUUJolgRsaJyUURDsBFALIAoKkqv0su27/1jBu6GADu77OxvyvN+vebFmZ1z5jy/PcOzZ86ZYu6OiIgkr3KhA4iIyMFRkYuIJDkVuYhIklORi4gkORW5iEiSU5GLiCQ5FbkcNDN7zMwGh86xm5k1MrOtZpYR5/VcYWYz47kOkVioyNOImVUwsyfM7Ecz22Jm88zst0Uss8TMdkTn32hmH5nZlWa257Hj7le6+7D4jyA27v6Tu1dx9/wQ6zezitHf1Vn7uO1BM5t0EPe9xMx+c3AJJdWoyNNLeWApcAZQHRgETDSzJkUs93t3rwo0BkYAtwBPxC9mcnP3ncCLwGWFfx59htADGB8il5mVD7FeiT8VeRpx923u/ld3X+LuBe7+JvAD0CrG5Te5+xvARcDlZnY8gJk9ZWZ3RqfPNLNlZnazma0xs5Vmdq6ZdTKzb8xsg5kN3H2fZlbOzG41s+/MbL2ZTTSzQ6O3NTEzN7PLzewnM1tnZrcVWraNmc02s81mttrMHthrufLR64eb2RvRdS82s96F7uOv0XU+HX3WMd/MWhe6fXe2LWa2wMzOi/HXPR7oZmaHFPrZfxH5PzfFzKpHnx2tNLPlZnZn4UNBZtbbzBYWWu/JZvYM0AiYHD10dHN03i7R3BvN7AMzO7bQ/Swxs1vM7Atgm8o8NanI05iZ1QGOBuYXZzl3nwUsA9rtZ5a6QEWgPjAE+DtwCZE/GO2AwWbWNDpvP+BcIs8SDgd+Bh7Z6/5+DRwDdACGFCqqkcBId68GHAlM3E+eCdG8hwN/AO7a67BHl+g8NYA3gFGFbvsumrk6cAfwrJnV28969nD3j4CVwPmFfnwp8Ly75wFPAXnAUcBJwDnAnwDM7ALgr0T26KtF861390uBn4g8Q6ri7vea2dHAC8B1QDbwNpGizyq03h5AZ6BGdN2SatxdlzS8AJnANODxIuZbAvxmHz//BLgtOv0UcGd0+kxgB5ARvV4VcODUQsvOAc6NTi8EOhS6rR6QS+QwUJPosg0K3T4L6B6dnkGkXGvvlW33cuWBhkA+ULXQ7XcDT0Wn/wpMK3RbC2DHAX4f84Cu0ekrgJkHmHcQ8E50uhqwnUhp1wF2AZUKzdsDeD86PRW4NpbtAQwGJha6Xg5YDpxZaP7/Dv140yW+F+2Rp6HoicpngBzgmkI/nxJ9yr7VzC4u4m7qAxv2c9t6//8TjTui/64udPsOoEp0ujHwavSwwEYixZ5PpOx2W1VoenuhZXsReUbxtZn9y8x+t48shwMb3H1LoZ/9GM2/v/uvWOiwzGXRk8K78x0P1N7PuPf2DNDezHY/E/jO3T+LjjkTWFnofh8HDosu15DIM4FYHB4dDwDuXkDkPEjh8S2N8b4kSel4WZoxMyNyorIO0Mndc3ff5u4HfAVLofs4hUhRlMZL75YS2WP8cB/raXKgBd39W6BH9A/T+cAkM6u112wrgEPNrGqhMm9EZK/1gMysMZHDQh2Aj90938zmAVbUstF8P5rZP4kcVvot/3+ScymRPfLavu9DHUuJHCra593udX0F8ItCmY3IH4LlB1hGUoz2yNPPaOBYIsdZdxQ1c2FmVi261zsBeNbdvyyFPI8Bw6OliZllm1nXGPNcYmbZ0b3QjdEfFxSex92XAh8Bd1vkZYEtiezJPxvDKioTKcG10fX1JLJHXhzjiTzraQs8F820EngHuD/6Oy1nZkea2RnRZcYCN5lZK4s4avfvh8gzmyMK3f9EoLOZdTCzTOBGIn8kPipmTkliKvI0Ei2DvsCJwKpiHEaZbGZbiOwp3gY8APQspVgjiZxgfCe6jk+AU2NctiMw38y2Ru+n+37+OPUgctx8BfAqcLu7Tyvqzt19AXA/8DGRAv0F8B/PHIrwMnAo8F60wHe7DMgCFhA5wTuJyPkB3P0lYDjwPLAFeC16HxA5vj8oekjmJndfRGSP/2FgHfB7In+kc4qZU5KYuetZl4hIMtMeuYhIkovpZKeZLSHyFC8fyHP31gdeQkREykpxXrXS3t3XxS2JiIiUiA6tiIgkuZhOdprZD0TOrDuRdwKO2cc8fYA+AJUrV27VvHnzUo4qIvuzYccGfvj5B5rVaka1CtVCx5ESmDNnzjp3zy7JsrEWeX13X25mhwHvAv3cfcb+5m/durXPnj27JHlEpJjGzh1L78m9OfeYc3m1+6uh40gJmdmckp5/jOnQirsvj/67hsjrcNuUZGUiUrpGzRpF78m9ufgXF6vE01iRRW5mlc2s6u5pIp/S9lW8g4nIgd374b30m9KP3if35tnzY3mjqqSqWF61UofIhxrtnv95d//fuKYSkQO644M7+Os//sp1p17Hgx0fDB1HAiuyyN39e+CEMsgiIjG4ddqt3PPhPQz49QDu6nBX6DiSAPTphyJJpN+UfoyaNYph7Ycx6PRBoeNIglCRiySJXq/3Yty8cdx39n3c+KsbQ8eRBKIiF0kC3Sd158X5L/Jop0e56pSrQseRBKMiF0lwXV7owuRvJjOuyzh6nlRanx4sqURFLpLAOozvwPQl03nu/Of44y/+GDqOJCgVuUiCOnXsqcxaPouXL3yZ8489P3QcSWAqcpEE1OKRFixct5C3/vgWnZp1Ch1HEpyKXCSBuDuNH2rM0s1LmXbpNDoc0SF0JEkCKnKRBOHuZP8tm/U71vPPnv/k141+HTqSJAkVuUgCcHcqDq9ITn4On/T6hFMbxPr90yIqcpHg3J1yQyOfX/dZ3884se6JgRNJslGRiwRU4AVkDM0A4KurvuK4w44LnEiSkYpcJJD8gnzKD4v8F1x0zSKOrnV04ESSrFTkIgHkFeSROSwTgO//8j1NazYNnEiSmYpcpIzl5OdQ4c4KACy9fikNqjUInEiSnYpcpAztzNtJpeGVAFh540rqVqkbOJGkAhW5SBnZnrudyndVBmBt/7XUPqR24ESSKlTkImVga85Wqt5dFYANN2+gZqWagRNJKlGRi8TZpp2bqHFPjcj0rZuoVqFa4ESSalTkInG0fvt6av8tcghl64CtVM6qHDiRpKJyoQOIpKrVW1fvKfHtA7erxCVutEcuEgcrtqyg/gP1Adg1aBdZGVmBE0kq0x65SCn7ceOPe0o8Z1COSlziTkUuUooWb1hMk5FNAMgbnEdmRmbYQJIWVOQipWTh2oU0e7gZAPlD8skolxE4kaQLFblIKfhi9Re0eLQFECnxcqb/WlJ29GgTOUizV8zmhMdOAKBgSIFKXMqcHnEiB+GjpR9xyt9PoUpWFQqGFGBmoSNJGlKRi5TQB0s+oO24ttStUpfNt25WiUswKnKREpi6eCrtx7fnqEOPYuWNK1XiEpSKXKSY3lj0Bh2f68hJdU/i237fho4joiIXKY6J8yfSdUJX2jVqx9y+c0PHEQFU5CIxe/rzp7lo0kV0PLIjM3rOCB1HZA8VuUgMxswZw+WvXU63Y7sx5ZIpoeOI/BsVuUgRHvrkIfq+2ZfLWl7GpAsnhY4j8h9iLnIzyzCzz8zszXgGEkkkI2aO4Pqp13Nl6ysZf9740HFE9qk4e+TXAgvjFUQk0dz+/u0MeG8AN5x2A6M7jw4dR2S/YipyM2sAdAbGxjeOSGLo/05/hs4YyqB2g7j/v+4PHUfkgGL9YomHgJuBqvubwcz6AH0AGjVqdPDJRAK5+q2rGT17NMPPGs7AdgNDxxEpUpF75Gb2O2CNu8850HzuPsbdW7t76+zs7FILKFKWer7Wk9GzR/PAOQ+oxCVpxLJH3hboYmadgIpANTN71t0viW80kbJ14UsX8tKCl3is82P0bd03dByRmBW5R+7uA9y9gbs3AboD01Xikmo6P9eZlxa8xJNdn1SJS9LRly9L2jvjyTOY8dMMJnSbwEXHXxQ6jkixFavI3f0D4IO4JBEJoNWYVsxdOZfXLnqNrs27ho4jUiLaI5e01XxUcxatX8SUi6fQ8aiOoeOIlJiKXNKOu9PwwYYs37Kc6ZdNp33T9qEjiRwUFbmkFXen5j012bRrEzN7zqRto7ahI4kcNBW5pA13p/yw8hR4AbP+NItT6p8SOpJIqVCRS1oo8AIyhmYAMK/vPE6oe0LgRCKlR0UuKa9wiS+4egHHZh8bOJFI6VKRS0rLL8in/LDIw/yba76hWa1mgROJlD4VuaSs3Pxcsu7MAuCHa3+gSY0mYQOJxImKXFJSTn4OFe6sAMCy65dRv1r9wIlE4kdFLilnZ95OKg2vBMCqG1dRp0qdwIlE4ktFLillW842qtxdBYB1/ddR65BagROJxJ+KXFLGll1bqDaiGgA/3/IzNSrWCJxIpGyoyCUlbNy5kZr31ARg862bqVphv19mJZJyVOSS9NZtX0f23yLfSrVt4DYOyTwkcCKRsqUil6S2eutq6t5fF4Adt+2gYvmKgROJlL0ivyFIJFEt27xsT4nvGrRLJS5pS0UuSWnJxiU0fLAhALmDc8nKyAqcSCQcFbkknW/Xf0vTkU0ByBucR/lyOkIo6U1FLkllwdoFHD3qaADyh+STUS4jcCKR8FTkkjQ+X/U5xz16HAAFQwooZ3r4ioCKXJLEv5b/ixMfP5EMy6BgSAFmFjqSSMJQkUvCm/nTTNqMbUONijXIHZyrEhfZi4pcEtr0H6bT7sl2NKjWgA03b1CJi+yDilwS1pRvp9Dh6Q40r92cpdcvVYmL7IeKXBLSa1+/RqfnO9GqXisW/nlh6DgiCU1FLglnwlcTOO/F8zij8RnM7jM7dByRhKcil4Ty1Lyn6PFyDzo368wHV3wQOo5IUlCRS8J4bPZj9Hy9Jxe2uJA3//hm6DgiSUNFLgnhwY8f5Kq3ruKKE67gxQteDB1HJKmoyCW4u/55Fze8cwNXn3I1T577ZOg4IklHRS5BDZo+iNum38ZNv7yJRzo9EjqOSFLSx8ZJMDdMvYEHP3mQIacP4Y72d4SOI5K0VOQSxJVvXsnjcx5nRIcR3PLrW0LHEUlqKnIpc5e9ehnPfPEMIzuO5C+n/iV0HJGkV2SRm1lFYAZQITr/JHe/Pd7BJDV1e7Ebr3z9Co//7nH6tOoTOo5ISohlj3wXcJa7bzWzTGCmmU1x90/inE1STMdnOzL1u6k8fe7TXHrCpaHjiKSMIovc3R3YGr2aGb14PENJ6mk3rh0zl85k4h8mcsFxF4SOI5JSYnr5oZllmNk8YA3wrrt/uo95+pjZbDObvXbt2tLOKUnspMdPYubSmbze/XWVuEgcxFTk7p7v7icCDYA2Znb8PuYZ4+6t3b11dnZ2aeeUJNXs4WbMWzWPqZdMpcsxXULHEUlJxXpDkLtvBN4HOsYnjqQKd6feffVYvGEx71/+PucceU7oSCIpq8giN7NsM6sRna4EnA18He9gkrzcnap3V2XVtlV89N8fcWaTM0NHEklpsbxqpR4w3swyiBT/RHfXR9PJPrk75YZG9g9m955Nq8NbBU4kkvpiedXKF8BJZZBFklyBF5AxNAOAz6/8nJZ1WgZOJJIe9M5OKRX5BfmUHxZ5OC3880Ka124eOJFI+lCRy0HLK8gjc1gmAIv7LebIQ48MnEgkvajI5aDk5ueSdWcWAD9e9yONqjcKnEgk/ajIpcR25e2i4vCKACy/YTmHVz08cCKR9KQilxLZkbuDQ+46BIDVN63msMqHBU4kkr5U5FJs23K2UeXuKgCs67+OWofUCpxIJL2pyKVYNu/aTPUR1QHYeMtGqlesHjiRiKjIJWY/7/iZQ+89FIAtA7ZQJatK4EQiAvryZYnRuu3r9pT4toHbVOIiCUR75FKkVVtXUe/+egDsvG0nFcpXCJxIRArTHrkc0NJNS/eU+K5Bu1TiIglIRS779cPPP9DoocgbfHIH55KVkRU4kYjsi4pc9umb9d9wxP8cAUDe4DzKl9NROJFEpSKX/zB/zXyOGXUMAPlD8skolxE4kYgciIpc/s1nKz/j+NGRb/IrGFJAOdNDRCTR6X+p7PHpsk85eczJVMioQMGQAswsdCQRiYGKXAD454//5LQnTqNWpVrsuG2HSlwkiajIhfe+f4/TnzqdxtUbs+7mdSpxkSSjIk9zb3/7Nr955je0yG7BkuuWhI4jIiWgIk9jryx8hc7Pd6ZN/TbMv3p+6DgiUkIq8jT1/JfP021iN85qchaf/unT0HFE5CCoyNPQuM/GcfErF9Pl6C68d/l7oeOIyEFSkaeZR//1KL3e6EX347rzeo/XQ8cRkVKgIk8j9310H39++8/0OqkXL/zhhdBxRKSUqMjTxLB/DKP/u/3p16YfY7uMDR1HREqRPgkpDQyYNoARH47glra3MOI3I0LHEZFSpiJPcdf973WM/HQkd5x5B0POGBI6jojEgYo8hfWZ3Ie/z/079/7mXvq37R86jojEiYo8RV388sU8/9XzPPzbh7mmzTWh44hIHKnIU9C5E87l9UWvM/b3Y+l1cq/QcUQkzlTkKebsp89m2g/TePa8Z7m45cWh44hIGVCRp5BfPfErPl72MZMumES3Ft1CxxGRMqIiTxEtR7fkyzVfMrnHZH539O9CxxGRMqQiTwFNRzZlycYlvHPJO5x95Nmh44hIGVORJzF3p859dVi7fS3/uOIfnN749NCRRCSAIt+ib2YNzex9M1tgZvPN7NqyCCYH5u5Uvqsya7ev5eNeH6vERdJYLHvkecCN7j7XzKoCc8zsXXdfEOdssh/uTrmhkb/Bc/rM4eR6JwdOJCIhFblH7u4r3X1udHoLsBCoH+9gsm8FXrCnxL+86kuVuIgU79MPzawJcBLwH18pY2Z9zGy2mc1eu3Zt6aSTf5NfkE/G0AwAvv7z1xx/2PGBE4lIIoi5yM2sCvAycJ27b977dncf4+6t3b11dnZ2aWYUIK8gj/LDIkfCvvvLdxxT+5jAiUQkUcT0qhUzyyRS4s+5+yvxjSR7y83PJevOLAB+uu4nGlZvGDiRiCSSIovczAx4Aljo7g/EP5IUtitvFxWHVwRgxQ0rqFe1XuBEIpJoYjm00ha4FDjLzOZFL53inEuAHbk79pT4mpvWqMRFZJ+K3CN395mAlUEWKWRrzlaq3l0VgPU3r+fQSocGTiQiiUrv7ExAm3ZuosY9NQDYeMtGqlesHjiRiCQyFXmC2bBjA7XurQXAlgFbqJJVJXAiEUl0KvIEsmbbGurcVweA7QO3UymzUuBEIpIMivWGIImfFVtW7CnxnbftVImLSMxU5Angp00/Uf+ByKce5AzKoUL5CoETiUgyUZEH9v3P39P4ocYA5A7OJTMjM3AiEUk2KvKAFq1bxJH/cyQAeYPzKF9OpyxEpPhU5IF8ufpLmj/SHID8IflklMsInEhEkpWKPIA5K+bQ8rGWABQMKaCcaTOISMmpQcrYJ8s+ofXfW1OpfCUKhhQQ+SgbEZGSU5GXoX8s+Qe/fOKX1Klch20Dt6nERaRUqMjLyLvfvcuZ48+kaY2mrLpplUpcREqNirwMTF40mXOePYeWdVry/bXfh44jIilGRR5nkxZMosuELvyqwa/4/MrPQ8cRkRSkIo+j5754jgteuoCzjzibD3t9GDqOiKQoFXmcjJ07lktevYTzmp/HO5e+EzqOiKQwFXkcjJo1it6Te3PJLy7hlYv0FaciEl8q8lJ274f30m9KP3qf3Jtnzn8mdBwRSQMq8lJ0xwd3cMu0W7j21GsZ8/sxoeOISJrQpzSVklun3co9H97DwF8PZHiH4aHjiEgaUZGXgn5T+jFq1iiGtR/GoNMHhY4jImlGRX6Qer3ei3HzxnHf2fdx469uDB1HRNKQivwg9JjUgwnzJ/Bop0e56pSrQscRkTSlIi+hLi90YfI3kxnXZRw9T+oZOo6IpDEVeQl0GN+B6Uum8/z5z9PjFz1CxxGRNKciL6ZTx57KrOWzeOXCVzjv2PNCxxERUZEXR4tHWrBw3ULe+uNbdGrWKXQcERFARR4Td6fxQ41Zunkp0y6dRocjOoSOJCKyh4q8CO5O7b/VZsOODcy4YgbtGrcLHUlE5N+oyA/A3ak4vCI5+Tl8+qdPaVO/TehIIiL/QUW+H+5OuaGRj6L5rO9nnFj3xMCJRET2TUW+DwVeQMbQDAC+uuorjjvsuMCJRET2T0W+l/yCfMoPi/xaFl2ziKNrHR04kYjIganIC8kryCNzWCYA3//le5rWbBo4kYhI0Yr8PHIzG2dma8zsq7IIFEpOfs6eEl96/VKVuIgkjVi+WOIpoGOccwS1M28nFe6sAMDKG1fSoFqDwIlERGJXZJG7+wxgQxlkCWJ77nYqDa8EwNr+a6lbpW7gRCIixVNqX/VmZn3MbLaZzV67dm1p3W1cbc3ZSuW7KgOw4eYN1D6kduBEIiLFV2pF7u5j3L21u7fOzs4urbuNm007N1H17qqR6Vs3UbNSzcCJRERKJi1ftbJ++3pq/y2y9711wFYqZ1UOnEhEpORKbY88WazeunpPiW8fuF0lLiJJL5aXH74AfAwcY2bLzKxX/GPFx4otK6h7f+Rk5q5Bu6iUWSlwIhGRg1fkoRV3T4mvwPlx4480GdkEgJxBOWRmZIYNJCJSStLi0MriDYv3lHje4DyVuIiklJQv8oVrF9Ls4WYA5A/JJ6NcRuBEIiKlK6WL/IvVX9Di0RZApMTLWUoPV0TSVMo22+wVsznhsRMAKBhSoBIXkZSVku320dKPOOXvp1A1qyoFQwows9CRRETiJuWK/IMlH9B2XFvqVanHpls3qcRFJOWlVJFPXTyV9uPbc9ShR7HixhUqcRFJCylT5G8seoOOz3XkxLon8m2/b0PHEREpMylR5BPnT6TrhK60a9SOz/p+FjqOiEiZSvoif/rzp7lo0kX89qjfMqPnjNBxRETKXFIX+Zg5Y7j8tcvpdmw33r747dBxRESCSNoiH/nJSPq+2ZdLW17KpAsnhY4jIhJMUhb5iJkjuG7qdVzZ+kqePu/p0HFERIJKuiK//f3bGfDeAG447QZGdx4dOo6ISHBJ9Q1B/d/pz30f38egdoMYdtaw0HFERBJC0hT51W9dzejZoxl+1nAGthsYOo6ISMJIiiK/4rUrGP/5eB445wGu/+X1oeOIiCSUhC/yC1+6kJcWvMTozqO5svWVoeOIiCSchC7yzs935u1v3+aprk9x+YmXh44jIpKQErbIz3jyDGb8NIMJ3SZw0fEXhY4jIpKwErLIW41pxdyVc3n1olc5t/m5oeOIiCS0hCvy5qOas2j9IqZcPIWOR3UMHUdEJOElTJG7Ow0fbMjyLcuZftl02jdtHzqSiEhSSIgid3dq3lOTTbs2MbPnTNo2ahs6kohI0ghe5O5O+WHlKfACZv1pFqfUPyV0JBGRpBK0yAu8gIyhGQDM6zuPE+qeEDKOiEhSClbkhUt8wdULODb72FBRRESSWpAizy/Ip/ywyKq/7fctRx16VIgYIiIpocyLPDc/l6w7swBYcu0SGtdoXNYRRERSSpkWeU5+DhXurADAsuuXUb9a/bJcvYhISiqzIt+Zt5NKwysBsOrGVdSpUqesVi0iktLKpMi35Wyjyt1VAFjXfx21DqlVFqsVEUkLcS/yLbu2UG1ENQB+vuVnalSsEe9VioiklbgW+cadG6l5T00ANt+6maoVqsZzdSIiaSluRb5u+zqy/5YNwLaB2zgk85B4rUpEJK2Vi2UmM+toZovMbLGZ3VrU/LkFuXtKfMdtO1TiIiJxVGSRm1kG8AjwW6AF0MPMWhxomS9WfQHArkG7qFi+YinEFBGR/Yllj7wNsNjdv3f3HGAC0LWohXIH55KVkXWw+UREpAixHCOvDywtdH0ZcOreM5lZH6BP9OquzIzMrw4+XkKqDawLHSKONL7kpvElr2NKumCpnex09zHAGAAzm+3urUvrvhNJKo8NNL5kp/ElLzObXdJlYzm0shxoWOh6g+jPREQkAcRS5P8CmplZUzPLAroDb8Q3loiIxKrIQyvunmdm1wBTgQxgnLvPL2KxMaURLkGl8thA40t2Gl/yKvHYzN1LM4iIiJSxmN4QJCIiiUtFLiKS5Epc5EW9bd/MKpjZi9HbPzWzJgcTtKzFML4rzGytmc2LXv4UImdJmNk4M1tjZvt8rb9F/E907F+Y2cllnfFgxDC+M81sU6FtN6SsMx4MM2toZu+b2QIzm29m1+5jnqTchjGOLWm3n5lVNLNZZvZ5dHx37GOe4nenuxf7QuSk53fAEUAW8DnQYq95rgYei053B14sybpCXGIc3xXAqNBZSzi+04GTga/2c3snYApgwGnAp6Ezl/L4zgTeDJ3zIMZXDzg5Ol0V+GYfj8+k3IYxji1pt190e1SJTmcCnwKn7TVPsbuzpHvksbxtvyswPjo9CehgZlbC9ZW1En0sQbJw9xnAhgPM0hV42iM+AWqYWb2ySXfwYhhfUnP3le4+Nzq9BVhI5B3YhSXlNoxxbEkruj22Rq9mRi97v+Kk2N1Z0iLf19v29/5l75nH3fOATUCyfDVQLOMD6BZ92jrJzBru4/ZkFev4k9kvo09vp5jZcaHDlFT0afdJRPbsCkv6bXiAsUESbz8zyzCzecAa4F133++2i7U7dbKz5CYDTdy9JfAu//8XVBLfXKCxu58APAy8FjhPiZhZFeBl4Dp33xw6T2kqYmxJvf3cPd/dTyTyLvk2Znb8wd5nSYs8lrft75nHzMoD1YH1JVxfWStyfO6+3t13Ra+OBVqVUbaykNIfy+Dum3c/vXX3t4FMM6sdOFaxmFkmkaJ7zt1f2ccsSbsNixpbKmw/AHffCLwPdNzrpmJ3Z0mLPJa37b8BXB6d/gMw3aNH75NAkePb63hjFyLH8lLFG8Bl0Vc+nAZscveVoUOVFjOru/uYo5m1IfL/IFl2MohmfwJY6O4P7Ge2pIGO5ooAAADRSURBVNyGsYwtmbefmWWbWY3odCXgbODrvWYrdneW6NMPfT9v2zezocBsd3+DyMZ4xswWEznx1L0k6wohxvH9xcy6AHlExndFsMDFZGYvEDnzX9vMlgG3Eznpgrs/BrxN5FUPi4HtQM8wSUsmhvH9AbjKzPKAHUD3JNrJAGgLXAp8GT3WCjAQaARJvw1jGVsyb796wHiLfGFPOWCiu795sN2pt+iLiCQ5newUEUlyKnIRkSSnIhcRSXIqchGRJKciFxFJcipyEZEkpyIXEUly/wfxexqM3GZoLwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "unKFT619lk3e" + }, + "source": [ + "## 1.2 Create a three-dimensional vector and plot it on a graph" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "atUEd3T6llKm", + "outputId": "20039539-5e28-4523-9bd4-00c2fd415887", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 466 + } + }, + "source": [ + "# 3-dimensional vector\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "vectors = np.array([\n", + " [0, 0, 0, 3, 1, -2],\n", + " [0, 0, 0, 1, -2, 2],\n", + " [0, 0, 0, -1, 3, 0]\n", + "])\n", + "X, Y, Z, U, V, W = zip(*vectors)\n", + "fig = plt.figure(figsize=(8, 8))\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X, Y, Z, U, V, W, length=1)\n", + "ax.set_xlim(-3, 3)\n", + "ax.set_ylim(-3, 3)\n", + "ax.set_zlim(-3, 3)\n", + "ax.set_xlabel('X')\n", + "ax.set_ylabel('Y')\n", + "ax.set_zlabel('Z')\n", + "ax.set_title(\"3-Dimensional Vector\")\n", + "plt.show()" + ], + "execution_count": null, + "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": "b7qFxbKxZmI2" + }, + "source": [ + "## 1.3 Scale the vectors you created in 1.1 by $5$, $\\pi$, and $-e$ and plot all four vectors (original + 3 scaled vectors) on a graph. What do you notice about these vectors? " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ah6zMSLJdJwL", + "outputId": "d7cb85b7-0337-4278-9e27-5319305406c6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + } + }, + "source": [ + "from math import e, pi\n", + "print(e)\n", + "print(pi)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "2.718281828459045\n", + "3.141592653589793\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3qpwDlzXkVf5", + "outputId": "2d69dd95-2e8a-4d27-e283-8f9730f52143", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + } + }, + "source": [ + "# Scale the original vector\n", + "A = np.multiply(5, vec_2d)\n", + "B = np.multiply(pi, vec_2d)\n", + "C = np.multiply(np.multiply(-1, e), vec_2d)\n", + "\n", + "print(f\"\"\"Original vector = {vec_2d}\n", + "Scaled vector A = {A}\n", + "Scaled vector B = {B}\n", + "Scaled vector C = {C}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Original vector = [2 5]\n", + "Scaled vector A = [10 25]\n", + "Scaled vector B = [ 6.28318531 15.70796327]\n", + "Scaled vector C = [ -5.43656366 -13.59140914]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lIYq9lnSl6_h", + "outputId": "28b4c44d-006e-473e-8500-308f83e4825f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 879 + } + }, + "source": [ + "# Graph all 4 vectors\n", + "fig, ax = plt.subplots(figsize=(10, 15))\n", + "ax.set_title(\"Scaled Vectors\")\n", + "\n", + "ax.set_xlim(-10, 10)\n", + "ax.set_xticks(ticks=np.arange(-10, 15, 5))\n", + "\n", + "\n", + "ax.set_ylim(-30, 30)\n", + "ax.set_yticks(ticks=np.arange(-30, 40, 10))\n", + "\n", + "ax.arrow(0,0, vec_2d[0],vec_2d[1], color='g')\n", + "ax.text(x=3, y=6, s='V', fontweight='bold')\n", + "\n", + "ax.arrow(0,0, A[0],A[1], color='r')\n", + "ax.text(x=9, y=26, s='A', fontweight='bold')\n", + "\n", + "ax.arrow(0,0, B[0],B[1], color='b')\n", + "ax.text(x=7, y=16, s='B', fontweight='bold')\n", + "\n", + "ax.arrow(0,0, C[0],C[1], color='y')\n", + "ax.text(x=-6, y=-14, s='C', fontweight='bold')\n", + "\n", + "plt.show()" + ], + "execution_count": null, + "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": "wrgqa6sWimbH" + }, + "source": [ + "## 1.4 Graph vectors $\\vec{a}$ and $\\vec{b}$ and plot them on a graph\n", + "\n", + "\\begin{align}\n", + "\\vec{a} = \\begin{bmatrix} 5 \\\\ 7 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{b} = \\begin{bmatrix} 3 \\\\4 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I1BGXA_skV-b", + "outputId": "c8200e87-e544-4017-c968-ed153d48ac0c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 716 + } + }, + "source": [ + "# Graph vectors a and b\n", + "\n", + "a = [5, 7]\n", + "b = [3, 4]\n", + "fig, ax = plt.subplots(figsize=(8, 12))\n", + "ax.set_title(\"Vectors a and b\")\n", + "\n", + "ax.set_xlim(0, 6)\n", + "ax.set_ylim(0, 8)\n", + "\n", + "ax.arrow(0,0, a[0],a[1], color='b')\n", + "ax.text(x=6, y=7, s='a', fontweight='bold')\n", + "ax.arrow(0,0, b[0],b[1], color='y')\n", + "ax.text(x=4, y=4, s='b', fontweight='bold')\n", + "\n", + "\n", + "plt.show()" + ], + "execution_count": null, + "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": "QN6RU_3gizpw" + }, + "source": [ + "## 1.5 find $\\vec{a} - \\vec{b}$ and plot the result on the same graph as $\\vec{a}$ and $\\vec{b}$. Is there a relationship between vectors $\\vec{a} \\thinspace, \\vec{b} \\thinspace \\text{and} \\thinspace \\vec{a-b}$" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "68sWHIOPkXp5", + "outputId": "d30df900-7c46-483d-86c4-ebef7ca6b028", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + } + }, + "source": [ + "# Find vector a -b\n", + "a_b = np.subtract(a, b)\n", + "print(f\"Vector a -b = {a_b}\")\n", + "\n" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Vector a -b = [2 3]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "z7Qm1DgRqh1i", + "outputId": "dd08e253-1221-4296-c3a5-1005bcb04daf", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 499 + } + }, + "source": [ + "# Graph vectors a, b, and a -b\n", + "fig, ax = plt.subplots(figsize=(8, 8))\n", + "ax.set_title(\"Vector a -b\")\n", + "\n", + "ax.set_xlim(0, 6)\n", + "ax.set_ylim(0, 8)\n", + "\n", + "ax.arrow(0,0, a[0],a[1], color='b')\n", + "ax.text(x=6, y=7, s='a', fontweight='bold')\n", + "\n", + "ax.arrow(0,0, b[0],b[1], color='y')\n", + "ax.text(x=4, y=4, s='b', fontweight='bold')\n", + "\n", + "ax.arrow(0,0, a_b[0],a_b[1], color='r')\n", + "ax.text(x=3, y=3, s='a -b', fontweight='bold')\n", + "\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeAAAAHiCAYAAAAwHB+eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3yV1eHH8c9JCAkECHvvIXsa9giipaJYtNaBq46CVuuqikq11bpHFfcP6lYsWoqWulGBsGUvQfZeAcKGzPP741y8ARK4gdz73PF9v16+crjPucnXSPL1Wecx1lpEREQktOK8DiAiIhKLVMAiIiIeUAGLiIh4QAUsIiLiARWwiIiIB1TAIiIiHlABi0ixGWOsMaap1zlEIpkKWKSEGGO+Nsb8vZDXBxljthljSp3m533XGPP4mScUkXCiAhYpOe8B1xhjzHGvXwuMttbmepAJY0y8F19XRE5OBSxScj4DqgC9j75gjKkEDATeN8bEGWMeMMasNsbsMsZ8YoypXGBuL2PMdGPMHmPMRmPM9caYocDVwDBjzAFjzP98c1saYyb55i41xvymwOd51xjzhjHmS2PMQeCc44MaY24wxiwzxuw3xqwxxtx8Gv++F/jeu9MY85wxRr9PRIpBPzAiJcRaexj4BLiuwMuXA8uttQuB24GLgTSgNpAJvAZgjGkAfAW8AlQDOgALrLWjgNHAs9bactbai4wxCcD/gG+B6r7PO9oY07zA170KeAIoD0wtJO4O3P8YVABuAF40xnQq5r/yJUAq0AkYBNxYzPeLxDQVsEjJeg/4nTEmyffn63yvAdwC/MVau8lamwU84ptbCleY31lr/2WtzbHW7rLWLijia3QDygFPW2uzrbU/AJ8DgwvM+a+1dpq1Nt9ae+T4T2Ct/cJau9o6k3Fl3vv4eafwjLV2t7V2AzDiuK8vIqegAhYpQdbaqcBO4GJjTBOgC/CRb3MD4FPfYeM9wDIgD6gB1ANWB/hlagMbrbX5BV5bD9Qp8OeNJ/sExpgBxpiZxpjdviwXAFWLmLvUd/j7gDGmYEkX/BrrfblEJECndVWmiJzU+7g93+bAN9ba7b7XNwI3WmunHf8GY8xGXFkX5vhHlm0B6hlj4gqUcH1gxUneU/BrJQL/8WX8r7U2xxjzGXD8xWPuE1nbuohPVQ9YWuDrbynqa4rIibQHLFLy3gfOA4bgP/wM8H/AE77zvRhjqhljBvm2jQbOM8ZcbowpZYypYozp4Nu2HWhc4PPMAg7hLsxKMMb0BS4CxgSYrzSQCGQAucaYAUD/4v5LAvcZYyoZY+oBdwIfn8bnEIlZKmCREmatXQdMB5KB8QU2veT787fGmP3ATKCr7z0bcIeB7wF2AwuA9r73vQW08h26/sxam40r3AG4w92vA9dZa5cHmG8/cAfugrFM3Pnn8Sd9U+H+C8z1Zf3Cl1NEAmSsLfJIlYiIiASJ9oBFREQ8EFABG2Pu9l0JucQY868Ct1iIiIjIaThlARtj6uDOF6Vaa9sA8cCVwQ4mIiISzQI9BF0KKONbMKAsut1ARETkjJyygK21m4HngQ3AVmCvtfbbYAcTERGJZqdciMO3mPwgoBGwB/i3MeYaa+2Hx80bCgwFSE5OPrtFixZBiCsiIhJ+5s6du9NaW6047wlkJazzgLXW2gwAY8w4oAdwTAH7Fo0fBZCammrnzJlTnBwiIiIRyxizvrjvCeQc8AagmzGmrO85p+fi1rAVERGR0xTIOeBZwFhgHrDY955RQc4lIiIS1QJ6GIO19m/A34KcRUREJGZoJSwREREPqIBFREQ8oAIWERHxgApYRETEAypgERERD6iARUREPKACFhER8YAKWERExAMqYBEREQ+ogEVERDygAhYREfGAClhERMQDKmAREREPqIBFREQ8oAIWERHxgApYRETEAypgERERD6iARUREPKACFhER8YAKWERExAMqYBEREQ+ogEVERDygAhYREfGAClhERMQDKmAREREPqIBFREQ8oAIWERHxgApYRETEAypgERERD6iARUREPKACFhER8YAKWERExAMqYBEREQ+ogEVERDygAhYREfGAClhERMQDKmAREREPqIBFREQ8oAIWERHxgApYRETEAypgERERD6iARUREPKACFhER8YAKWERExAMqYBERkTNXyhgz3xhzwPfPFGNM65O+IVTJREREopgFxgFbgFrAMGAE8Kui3nDKAjbGNAc+LvBSY+Cv1toRZxRVREQkesQB5wPdAeN7re3J3nDKArbW/gx0ADDGxAObgU/PKKaIiEh0qQ60A14EvgLeBsqf7A3FPQd8LrDaWrv+tOKJiEjEmDrV6wQRqRLQB6h7qonFLeArgX8VtsEYM9QYM8cY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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1ZPVuJAlehu_" + }, + "source": [ + "## 1.6 Find $c \\cdot d$\n", + "\n", + "\\begin{align}\n", + "\\vec{c} = \\begin{bmatrix}7 & 22 & 4 & 16\\end{bmatrix}\n", + "\\qquad\n", + "\\vec{d} = \\begin{bmatrix}12 & 6 & 2 & 9\\end{bmatrix}\n", + "\\end{align}\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2_cZQFCskYNr", + "outputId": "70f3f4c2-c3a2-438b-dd00-312d0b868e50", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + } + }, + "source": [ + "c = np.array([7, 22, 4, 16])\n", + "d = np.array([12, 6, 2, 9])\n", + "c_dot_d = np.dot(c, d)\n", + "print(f\"\"\"\n", + "c = {c}\n", + "d = {d}\n", + "c . d = {c_dot_d}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "c = [ 7 22 4 16]\n", + "d = [12 6 2 9]\n", + "c . d = 368\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cLm8yokpfg9B" + }, + "source": [ + "## 1.7 Find $e \\times f$\n", + "\n", + "\\begin{align}\n", + "\\vec{e} = \\begin{bmatrix} 5 \\\\ 7 \\\\ 2 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{f} = \\begin{bmatrix} 3 \\\\4 \\\\ 6 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ku-TdCKAkYs8", + "outputId": "d4d8b704-0369-4701-eb7d-76ca7b9492e2", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + } + }, + "source": [ + "e = np.array([\n", + " [5, 7, 2]\n", + "])\n", + "\n", + "f = np.array([\n", + " [3, 4, 6]\n", + "])\n", + "\n", + "e_mul_f = np.matmul(e.T, f)\n", + "\n", + "print(f\"\"\"\n", + "e = {e}\n", + "f = {f}\n", + "The product of e and f = {e_mul_f}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "e = [[5 7 2]]\n", + "f = [[3 4 6]]\n", + "The product of e and f = [[15 20 30]\n", + " [21 28 42]\n", + " [ 6 8 12]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-TN8wO2-h53s" + }, + "source": [ + "## 1.8 Find $||g||$ and then find $||h||$. Which is longer?\n", + "\n", + "\\begin{align}\n", + "\\vec{g} = \\begin{bmatrix} 1 \\\\ 1 \\\\ 1 \\\\ 8 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{h} = \\begin{bmatrix} 3 \\\\3 \\\\ 3 \\\\ 3 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-5VKOMKBlgaA", + "outputId": "8b1e5f46-90a7-4362-fc3c-a86b1077bdd8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + } + }, + "source": [ + "g = np.array([\n", + " [1, 1, 1, 8]\n", + "])\n", + "\n", + "h = np.array([\n", + " [3, 3, 3, 3]\n", + "])\n", + "\n", + "g_norm = np.linalg.norm(g)\n", + "h_norm = np.linalg.norm(h)\n", + "\n", + "print(f\"\"\"\n", + "g norm = {g_norm}\n", + "h norm = {h_norm}\n", + "Therefore, g is longer than h.\n", + "\"\"\")\n" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "g norm = 8.18535277187245\n", + "h norm = 6.0\n", + "Therefore, g is longer than h.\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "njrWIMS-ZAoH" + }, + "source": [ + "# Part 2 - Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GjkcAVIOmOnn" + }, + "source": [ + "## 2.1 What are the dimensions of the following matrices? Which of the following can be multiplied together? See if you can find all of the different legal combinations.\n", + "\\begin{align}\n", + "A = \\begin{bmatrix}\n", + "1 & 2 \\\\\n", + "3 & 4 \\\\\n", + "5 & 6\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "B = \\begin{bmatrix}\n", + "2 & 4 & 6 \\\\\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "C = \\begin{bmatrix}\n", + "9 & 6 & 3 \\\\\n", + "4 & 7 & 11\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "D = \\begin{bmatrix}\n", + "1 & 0 & 0 \\\\\n", + "0 & 1 & 0 \\\\\n", + "0 & 0 & 1\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "E = \\begin{bmatrix}\n", + "1 & 3 \\\\\n", + "5 & 7\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z69c-uPtnbIx", + "outputId": "edc42e49-cdf0-464f-8e7e-ab2af9345b70", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + } + }, + "source": [ + "matrix_A = np.array([\n", + " [1, 2],\n", + " [3, 4],\n", + " [5, 6]\n", + "])\n", + "\n", + "matrix_B = np.array([\n", + " [2, 4, 6]\n", + "])\n", + "\n", + "matrix_C = np.array([\n", + " [9, 6, 3],\n", + " [4, 7, 11]\n", + "])\n", + "\n", + "matrix_D = np.array([\n", + " [1, 0, 0],\n", + " [0, 1, 0],\n", + " [0, 0, 1]\n", + "])\n", + "\n", + "matrix_E = np.array([\n", + " [1, 3],\n", + " [5, 7]\n", + "])\n", + "\n", + "print(f\"\"\"\n", + "Matrix A {matrix_A.shape}\n", + "Matrix B {matrix_B.shape}\n", + "Matrix C {matrix_C.shape}\n", + "Matrix D {matrix_D.shape}\n", + "Matrix E {matrix_E.shape}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Matrix A (3, 2)\n", + "Matrix B (1, 3)\n", + "Matrix C (2, 3)\n", + "Matrix D (3, 3)\n", + "Matrix E (2, 2)\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2g-KTo660Z2v", + "outputId": "b55527ef-f9c2-401a-ccfb-7369795afe37", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 121 + } + }, + "source": [ + "# Multiply matrices A and C\n", + "matrix_F = np.matmul(matrix_A, matrix_C)\n", + "print(f\"\"\"\n", + "Matrix F {matrix_F.shape}\n", + "{matrix_F}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Matrix F (3, 3)\n", + "[[17 20 25]\n", + " [43 46 53]\n", + " [69 72 81]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "we03LqtBy4IY", + "outputId": "0b167a32-4572-47bd-a30f-91b42489ab0e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 121 + } + }, + "source": [ + "# Multiply F (the product of A and C) by D\n", + "matrix_G = np.matmul(matrix_F, matrix_D)\n", + "print(f\"\"\"\n", + "Matrix G {matrix_G.shape}\n", + "{matrix_G}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Matrix G (3, 3)\n", + "[[17 20 25]\n", + " [43 46 53]\n", + " [69 72 81]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y69ojy6xzEh5" + }, + "source": [ + "Matrices A and C can be multiplied, because they have the same shape as the other's transposed shape." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lMOlCoM3ncGa" + }, + "source": [ + "## 2.2 Find the following products: CD, AE, and BA. What are the dimensions of the resulting matrices? How does that relate to the dimensions of their factor matrices?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zhKwiSItoE2F", + "outputId": "745e06c2-22ae-4729-8859-2bd5efa6eb10", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 104 + } + }, + "source": [ + "matrix_H = np.matmul(matrix_C, matrix_D)\n", + "matrix_I = np.matmul(matrix_A, matrix_E)\n", + "matrix_J = np.matmul(matrix_B, matrix_A)\n", + "print(f\"\"\"\n", + "CD = Matrix H {matrix_H.shape}\n", + "AE = Matrix I {matrix_I.shape}\n", + "BA = Matrix J {matrix_J.shape}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "CD = Matrix H (2, 3)\n", + "AE = Matrix I (3, 2)\n", + "BA = Matrix J (1, 2)\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ygWaNQpd9Jrj" + }, + "source": [ + "CD: the product of matrices with dimensions (2, 3) and (3, 3) has dimensions (2, 3)\n", + "\n", + "AE: the product of matrices with dimensions (3, 2) and (2, 2) has dimensions (3, 2)\n", + "\n", + "BA: the product of matrices with dimensions (1, 3) and (3, 2) has dimensions (1, 2)\n", + "\n", + "Based on these results, the pattern in the products of matrices seems to be to inherit the number of rows of the first factor matrix, and the number of columns of the second factor matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "p2jmaGLgoFPN" + }, + "source": [ + "## 2.3 Find $F^{T}$. How are the numbers along the main diagonal (top left to bottom right) of the original matrix and its transpose related? What are the dimensions of $F$? What are the dimensions of $F^{T}$?\n", + "\n", + "\\begin{align}\n", + "F = \n", + "\\begin{bmatrix}\n", + "20 & 19 & 18 & 17 \\\\\n", + "16 & 15 & 14 & 13 \\\\\n", + "12 & 11 & 10 & 9 \\\\\n", + "8 & 7 & 6 & 5 \\\\\n", + "4 & 3 & 2 & 1\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Wl3ElwgLqaAn", + "outputId": "4a3a3faa-0035-422b-b60a-fc2204338169", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 208 + } + }, + "source": [ + "f = np.array([\n", + " [20, 19, 18, 17],\n", + " [16, 15, 14, 13],\n", + " [12, 11, 10, 9],\n", + " [8, 7, 6, 5],\n", + " [4, 3, 2, 1]\n", + "])\n", + "\n", + "print(f\"\"\"\n", + "f = {f}\n", + "f^T = {f.T}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "f = [[20 19 18 17]\n", + " [16 15 14 13]\n", + " [12 11 10 9]\n", + " [ 8 7 6 5]\n", + " [ 4 3 2 1]]\n", + "f^T = [[20 16 12 8 4]\n", + " [19 15 11 7 3]\n", + " [18 14 10 6 2]\n", + " [17 13 9 5 1]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Adh-UXCoF7Is" + }, + "source": [ + "The main diagonal of both f and its transpose are 20, 15, 10, and 5, in that order. Even though the transpose has most of the other values in different positions, the main diagonal appears not to change." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "13ik2LEEZLHn" + }, + "source": [ + "# Part 3 - Square Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sDBAPUwfp7f7" + }, + "source": [ + "## 3.1 Find $IG$ (be sure to show your work) 😃\n", + "\n", + "You don't have to do anything crazy complicated here to show your work, just create the G matrix as specified below, and a corresponding 2x2 Identity matrix and then multiply them together to show the result. You don't need to write LaTeX or anything like that (unless you want to).\n", + "\n", + "\\begin{align}\n", + "G= \n", + "\\begin{bmatrix}\n", + "13 & 14 \\\\\n", + "21 & 12 \n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ZnqvZBOYqar3", + "outputId": "db5b8ea6-6606-4599-8bf3-318b048426cc", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 156 + } + }, + "source": [ + "g = np.array([\n", + " [13, 21],\n", + " [14, 12]\n", + "])\n", + "\n", + "identity = np.array([\n", + " [1, 0],\n", + " [0, 1]\n", + "])\n", + "\n", + "identity_g = np.matmul(g, identity)\n", + "\n", + "print(f\"\"\"\n", + "g = {g}\n", + "identity matrix = {identity}\n", + "g * identity matrix = {identity_g}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "g = [[13 21]\n", + " [14 12]]\n", + "identity matrix = [[1 0]\n", + " [0 1]]\n", + "g * identity matrix = [[13 21]\n", + " [14 12]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DZ_0XTDQqpMT" + }, + "source": [ + "## 3.2 Find $|H|$ and then find $|J|$.\n", + "\n", + "\\begin{align}\n", + "H= \n", + "\\begin{bmatrix}\n", + "12 & 11 \\\\\n", + "7 & 10 \n", + "\\end{bmatrix}\n", + "\\qquad\n", + "J= \n", + "\\begin{bmatrix}\n", + "0 & 1 & 2 \\\\\n", + "7 & 10 & 4 \\\\\n", + "3 & 2 & 0\n", + "\\end{bmatrix}\n", + "\\end{align}\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5QShhoXyrjDS", + "outputId": "83ea3db5-eb69-4105-e38b-a43e974b2cca", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 87 + } + }, + "source": [ + "h = np.array([\n", + " [12, 11],\n", + " [7, 10]\n", + "])\n", + "\n", + "j = np.array([\n", + " [0, 1, 2],\n", + " [7, 10, 4],\n", + " [3, 2, 0]\n", + "])\n", + "\n", + "# Determinants\n", + "det_h = np.linalg.det(h)\n", + "det_j = np.linalg.det(j)\n", + "\n", + "print(f\"\"\"\n", + "|h| = {round(det_h, 3)}\n", + "|j| = {round(det_j, 3)}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "|h| = 43.0\n", + "|j| = -20.0\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2gZl1CFwrXSH" + }, + "source": [ + "## 3.3 Find $H^{-1}$ and then find $J^{-1}$" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nyX6De2-rio1", + "outputId": "8a115279-d700-4f25-cd47-04baf06a73f7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + } + }, + "source": [ + "inv_h = np.linalg.inv(h)\n", + "inv_j = np.linalg.inv(j)\n", + "\n", + "print(f\"\"\"\n", + "h^-1 = {inv_h}\n", + "j^-1 = {inv_j}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "h^-1 = [[ 0.23255814 -0.25581395]\n", + " [-0.1627907 0.27906977]]\n", + "j^-1 = [[ 0.4 -0.2 0.8 ]\n", + " [-0.6 0.3 -0.7 ]\n", + " [ 0.8 -0.15 0.35]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vvd4Pe86rjhW" + }, + "source": [ + "## 3.4 Find $HH^{-1}$ and then find $J^{-1}J$. Is $HH^{-1} == J^{-1}J$? Why or Why not? \n", + "\n", + "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": "TShQKn7_lfnQ", + "outputId": "234ce224-bd27-436e-b32f-cb6ddaec7734", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 139 + } + }, + "source": [ + "print(f\"\"\"\n", + "h(h^-1) = {np.matmul(h, inv_h)}\n", + "j(j^-1) = {np.matmul(j, inv_j)}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "h(h^-1) = [[1.00000000e+00 5.55111512e-16]\n", + " [2.22044605e-16 1.00000000e+00]]\n", + "j(j^-1) = [[ 1.00000000e+00 -5.55111512e-17 0.00000000e+00]\n", + " [ 0.00000000e+00 1.00000000e+00 0.00000000e+00]\n", + " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "p5b6HLjMpYCr" + }, + "source": [ + "The product matrices in both h(h^-1) and j(j^-1) are identity matrices for their respective dimensionalities." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V0iTO4McYjtk" + }, + "source": [ + "# Stretch Goals: \n", + "\n", + "A reminder that these challenges are optional. If you finish your work quickly we welcome you to work on them. If there are other activities that you feel like will help your understanding of the above topics more, feel free to work on that. Topics from the Stretch Goals sections will never end up on Sprint Challenges. You don't have to do these in order, you don't have to do all of them. \n", + "\n", + "- Write a function that can calculate the dot product of any two vectors of equal length that are passed to it.\n", + "- Write a function that can calculate the norm of any vector\n", + "- Prove to yourself again that the vectors in 1.9 are orthogonal by graphing them. \n", + "- Research how to plot a 3d graph with animations so that you can make the graph rotate (this will be easier in a local notebook than in google colab)\n", + "- Create and plot a matrix on a 2d graph.\n", + "- Create and plot a matrix on a 3d graph.\n", + "- Plot two vectors that are not collinear on a 2d graph. Calculate the determinant of the 2x2 matrix that these vectors form. How does this determinant relate to the graphical interpretation of the vectors?\n", + "\n" + ] + } + ] +} \ No newline at end of file diff --git a/module2-intermediate-linear-algebra/Jacob_Torres_LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/module2-intermediate-linear-algebra/Jacob_Torres_LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb new file mode 100644 index 00000000..0b9794dd --- /dev/null +++ b/module2-intermediate-linear-algebra/Jacob_Torres_LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -0,0 +1,1562 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Jacob_Torres_LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GSNiYn8lr6nN" + }, + "source": [ + "# Statistics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3d4izUhQvh2_" + }, + "source": [ + "## 1.1 Sales for the past week was the following amounts: [3505, 2400, 3027, 2798, 3700, 3250, 2689]. Without using library functions, what is the mean, variance, and standard deviation of of sales from last week? (for extra bonus points, write your own function that can calculate these two values for any sized list)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YgCoLzDSwCvf" + }, + "source": [ + "# Function for finding sales stats\n", + "def sales_stats(sales):\n", + " sales_mean = 0.0\n", + " sales_variance = 0.0\n", + " sales_std = 0.0\n", + " \n", + " # Calculate mean\n", + " sum = 0\n", + " for x in range(len(sales)):\n", + " sum += sales[x]\n", + " sales_mean = sum / len(sales)\n", + "\n", + "# Calculate variance\n", + " sum = 0\n", + " for x in range(len(sales)):\n", + " sum += (sales[x] - sales_mean) ** 2\n", + " sales_variance = sum / (len(sales) -1)\n", + "\n", + " # Calculate standard deviation\n", + " sales_std = sales_variance ** (1/2)\n", + "\n", + " return sales_mean, sales_variance, sales_std\n" + ], + "execution_count": 26, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "w1iZfYvBtEA1", + "outputId": "2e9d19e5-7e09-4755-ae8a-ebe232dff5ba", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + } + }, + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "weekly_sales = np.array([3505, 2400, 3027, 2798, 3700, 3250, 2689])\n", + "sales_mean, sales_variance, sales_std = sales_stats(weekly_sales)\n", + "\n", + "print(f\"\"\"\n", + "Sales mean = ${round(sales_mean, 2)}\n", + "Variance = ${round(sales_variance, 2)}\n", + "Standard deviation = ${round(sales_std, 2)}\n", + "\"\"\")" + ], + "execution_count": 25, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Sales mean = $3052.71\n", + "Variance = $214387.9\n", + "Standard deviation = $463.02\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oh63KaOctEp_" + }, + "source": [ + "## 1.2 Find the covariance between last week's sales numbers and the number of customers that entered the store last week: [127, 80, 105, 92, 120, 115, 93] (you may use librray functions for calculating the covariance since we didn't specifically talk about its formula)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "G7ZB0krot564", + "outputId": "a4ac2b4d-c595-400b-f456-a49b32f2dc32", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + } + }, + "source": [ + "weekly_customers = np.array([127, 80, 105, 92, 120, 115, 93])\n", + "\n", + "# Transform sales and customer data into dataframe\n", + "data = {\n", + " 'weekly_sales': weekly_sales,\n", + " 'weekly_customers': weekly_customers\n", + "}\n", + "sales_df = pd.DataFrame(data)\n", + "\n", + "# Calculate covariance between sales and customers\n", + "cov = sales_df.cov()\n", + "print(f\"\"\"Covariance between weekly sales and customers:\n", + "{cov}\n", + "\"\"\")" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Covariance between weekly sales and customers:\n", + " weekly_sales weekly_customers\n", + "weekly_sales 214387.904762 7604.357143\n", + "weekly_customers 7604.357143 290.952381\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J9SbUY9mt66I" + }, + "source": [ + "## 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": "vFJms2YRrKhY", + "outputId": "6cbb6dcb-01df-4c5d-d836-e4c676a6b03c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + } + }, + "source": [ + "customer_mean, customer_variance, customer_std = sales_stats(weekly_customers)\n", + "print(f\"\"\"\n", + "Standard deviation:\n", + " Sales = ${round(sales_std, 2)}\n", + " Customers = {round(customer_std, 3)}\n", + "\"\"\")" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Standard deviation:\n", + " Sales = $463.02\n", + " Customers = 17.057\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ENyVw3U_f-bp", + "outputId": "adc28dc3-22fa-4af1-8aa1-e22ea50904b8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 157 + } + }, + "source": [ + "# Calculate the correlation coefficient\n", + "combined_std = sales_std * customer_std\n", + "combined_cov = cov['weekly_sales']['weekly_customers']\n", + "corr = combined_cov / combined_std\n", + "print(f\"\"\"The correlation between sales and customers last week:\n", + " r = {round(corr, 3)}\n", + "\n", + "Pandas correlation matrix:\n", + "{sales_df.corr()}\n", + "\"\"\")" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "text": [ + "The correlation between sales and customers last week:\n", + " r = 0.963\n", + "\n", + "Pandas correlation matrix:\n", + " weekly_sales weekly_customers\n", + "weekly_sales 1.000000 0.962834\n", + "weekly_customers 0.962834 1.000000\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IbZVf7nmujPJ" + }, + "source": [ + "## 1.4 Use pandas to import a cleaned version of the titanic dataset from the following link: [Titanic Dataset](https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv)\n", + "\n", + "## Calculate the variance-covariance matrix and correlation matrix for the titanic dataset's numeric columns. (you can encode some of the categorical variables and include them as a stretch goal if you finish early)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0TWgUIiaCFzq", + "outputId": "d4787592-85be-4079-d13d-ff01d04315b8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 559 + } + }, + "source": [ + "# Load Titanic dataset\n", + "data_url = 'https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv'\n", + "titanic_data = pd.read_csv(data_url)\n", + "titanic_data.drop(columns='Unnamed: 0', inplace=True)\n", + "print(titanic_data.shape)\n", + "titanic_data.head()" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(1310, 15)\n" + ], + "name": "stdout" + }, + { + "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", + "
pclasssurvivednamesexagesibspparchticketfarecabinembarkedboatbodyhome.desthas_cabin_number
01.01.0Allen, Miss. Elisabeth Waltonfemale29.00000.00.024160211.3375B5S2NaNSt Louis, MO1
11.01.0Allison, Master. Hudson Trevormale0.91671.02.0113781151.5500C22 C26S11NaNMontreal, PQ / Chesterville, ON1
21.00.0Allison, Miss. Helen Lorainefemale2.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
31.00.0Allison, Mr. Hudson Joshua Creightonmale30.00001.02.0113781151.5500C22 C26SNaN135.0Montreal, PQ / Chesterville, ON1
41.00.0Allison, Mrs. Hudson J C (Bessie Waldo Daniels)female25.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
\n", + "
" + ], + "text/plain": [ + " pclass survived ... home.dest has_cabin_number\n", + "0 1.0 1.0 ... St Louis, MO 1\n", + "1 1.0 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "2 1.0 0.0 ... Montreal, PQ / Chesterville, ON 1\n", + "3 1.0 0.0 ... Montreal, PQ / Chesterville, ON 1\n", + "4 1.0 0.0 ... Montreal, PQ / Chesterville, ON 1\n", + "\n", + "[5 rows x 15 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "FS1vbgWdnEXF", + "outputId": "e513a71f-9012-4d1f-af2d-7a29fb64c2b7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 310 + } + }, + "source": [ + "titanic_data.cov()" + ], + "execution_count": 7, + "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", + "
pclasssurvivedagesibspparchfarebodyhas_cabin_number
pclass0.701969-0.127248-3.9546050.0530900.013287-24.227788-2.876653-0.249992
survived-0.1272480.236250-0.314343-0.0140880.0347766.1460230.0000000.061406
age-3.954605-0.314343165.850021-2.559806-1.459378114.41661381.6229221.463138
sibsp0.053090-0.014088-2.5598061.0850520.3368338.641768-8.708471-0.003946
parch0.0132870.034776-1.4593780.3368330.7491959.9280314.2371900.013316
fare-24.2277886.146023114.4166138.6417689.9280312678.959738-179.16468410.976961
body-2.8766530.00000081.622922-8.7084714.237190-179.1646849544.6885673.625689
has_cabin_number-0.2499920.0614061.463138-0.0039460.01331610.9769613.6256890.174613
\n", + "
" + ], + "text/plain": [ + " pclass survived ... body has_cabin_number\n", + "pclass 0.701969 -0.127248 ... -2.876653 -0.249992\n", + "survived -0.127248 0.236250 ... 0.000000 0.061406\n", + "age -3.954605 -0.314343 ... 81.622922 1.463138\n", + "sibsp 0.053090 -0.014088 ... -8.708471 -0.003946\n", + "parch 0.013287 0.034776 ... 4.237190 0.013316\n", + "fare -24.227788 6.146023 ... -179.164684 10.976961\n", + "body -2.876653 0.000000 ... 9544.688567 3.625689\n", + "has_cabin_number -0.249992 0.061406 ... 3.625689 0.174613\n", + "\n", + "[8 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "oaDDPLoorcKk", + "outputId": "1307d209-c445-447a-c113-d1d0b587007a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 310 + } + }, + "source": [ + "titanic_data.corr()" + ], + "execution_count": 8, + "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", + "
pclasssurvivedagesibspparchfarebodyhas_cabin_number
pclass1.000000-0.312469-0.3663700.0608320.018322-0.558629-0.034642-0.713857
survived-0.3124691.000000-0.050199-0.0278250.0826600.244265NaN0.302250
age-0.366370-0.0501991.000000-0.190747-0.1308720.1718920.0590590.271887
sibsp0.060832-0.027825-0.1907471.0000000.3735870.160238-0.099961-0.009064
parch0.0183220.082660-0.1308720.3735871.0000000.2215390.0510990.036806
fare-0.5586290.2442650.1718920.1602380.2215391.000000-0.0431100.507253
body-0.034642NaN0.059059-0.0999610.051099-0.0431101.0000000.083796
has_cabin_number-0.7138570.3022500.271887-0.0090640.0368060.5072530.0837961.000000
\n", + "
" + ], + "text/plain": [ + " pclass survived ... body has_cabin_number\n", + "pclass 1.000000 -0.312469 ... -0.034642 -0.713857\n", + "survived -0.312469 1.000000 ... NaN 0.302250\n", + "age -0.366370 -0.050199 ... 0.059059 0.271887\n", + "sibsp 0.060832 -0.027825 ... -0.099961 -0.009064\n", + "parch 0.018322 0.082660 ... 0.051099 0.036806\n", + "fare -0.558629 0.244265 ... -0.043110 0.507253\n", + "body -0.034642 NaN ... 1.000000 0.083796\n", + "has_cabin_number -0.713857 0.302250 ... 0.083796 1.000000\n", + "\n", + "[8 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7K0Xfh8MvYkl" + }, + "source": [ + "# Orthogonality" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pe3eOZ2fvdZ-" + }, + "source": [ + "## 2.1 Plot two vectors that are orthogonal to each other. What is a synonym for orthogonal?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YLSBk7hJvvCx", + "outputId": "46292beb-9c3b-4244-ddad-960056292c7b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 516 + } + }, + "source": [ + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "\n", + "j = np.array([2, -1])\n", + "k = np.array([1, 2])\n", + "j_dot_k = np.vdot(j, k)\n", + "print(f\"The vectors below have a dot product of {j_dot_k}\")\n", + "\n", + "fig = plt.figure(figsize=(8, 8))\n", + "ax = fig.add_subplot()\n", + "ax.set_title(\"Orthogonal Vectors\")\n", + "ax.set_xlim(-3, 3)\n", + "ax.set_ylim(-3, 3)\n", + "ax.arrow(-1, -1, j[0],j[1], color='b')\n", + "ax.arrow(2, -1, k[0],k[1], color='r')\n", + "\n", + "plt.show()" + ], + "execution_count": 29, + "outputs": [ + { + "output_type": "stream", + "text": [ + "The vectors below have a dot product of 0\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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ABTnkEPCeumlcedoAYqKspmdaGYzzazGzKryGgoAUCaWLZMmTZKuvpq95BwUu6c8Q9IJkp7LYRYAQLnZZ5+wnntu3DlaiKLeSObusyTJ+OsIACrPhx9KM2dKN97IXnJOeE4ZZe+OO6QTTgjvyABQQpdcEtYzz4w6RkvSYJTNbKKZzVjH13GNuSMzG25m1WZWvXDhwqZPDKxl442lceOkDh2k/feXPv449kRAhRg1Slq8OPYULYq5e/EbMXtG0rnuXl3I9auqqry6uqCrAgVxDy/8rH3x5267Sc8+G4INALGZ2VR3b/AF0Ry+RotgFo6k1dRI114rvfKK1KWLtP32/CEPoHwU+5aor5jZfEl7S3rEzJ7IZyygacykc84Je8433STNmSN16yb16CEtWBB7OgBYv6Ki7O7j3L2Xu7d39x7u/uW8BgOKdfrpIc533il98IG0+eZSx47S22/HngwA1o3D12jxTj01xHncOOmTT6Q+fcIe9ezZsScDgDURZVSM448PcX788XB5hx1CnF97Le5cAFCLKKPifPnLIc7PZeeh69cvxPnll+POBQBEGRXrS18Kca6N8Z57hjg/x0ljAURClFHxqqpCnGsPYx9wQIhz7WFuACgVogxkdt01xLn2BWBHHBHi/OCDcecCUDmIMrCW7bYLcX77balTJ+mrXw1xvvPO2JMBaOmIMlCPLbeUli+X3n9f2mwz6bTTQpxvuin2ZABaKqIMNGCzzUKYFy0Kp+0888wQ52uvDXvUAJAXogwU6HOfk956S1q6VBowQDrvPKlVK+mii4gzgHwQZaCRNtpImjYtfETkAQdIl10W4nz22eEDMQCgqYgy0EQbbCA980w4defRR0u/+IXUurU0bJi0enXs6QCUI6IMFKl9e+nhh6VPP5VOOUW69VapTRtp8GDps89iTwegnBBlICdt20pjxkirVoVPqLrvPqldu/B+508+iT0dgHJAlIGctW4d3ja1erV07rnhzGAdO0r77ReehwaA+hBloJm0aiVdc0148dell0ovvihtuGH4AIylS2NPByBFRBloZmbhbVM1NdJ114VzbHfpIm27bXjvMwDUIspAiZiFt025SzffLM2dK3XvHr7efz/2dABSQJSBCIYPD3EeMybsLW+xhdShgzRvXuzJAMRElIGITjklxHncOGnlSmnrrcMe9VtvxZ4MQAxE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PQ3Iq3sOeWuF" + }, + "source": [ + "A synonym for orthogonal is perpendicular. In other words, two vectors that are orthogonal to each other will create a right angle at their intersection." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7AS4V1Nhvvxz" + }, + "source": [ + "## 2.2 Are the following vectors orthogonal? Why or why not?\n", + "\n", + "\\begin{align}\n", + "a = \\begin{bmatrix} -5 \\\\ 3 \\\\ 7 \\end{bmatrix}\n", + "\\qquad\n", + "b = \\begin{bmatrix} 6 \\\\ -8 \\\\ 2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "F_-y54YSz47k", + "outputId": "608743bf-1fb1-4ba5-c416-264220fd0e61", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 105 + } + }, + "source": [ + "# Calculate the dot product of the vectors\n", + "a = np.array([\n", + " [-5, 3, 7]\n", + "])\n", + "b = np.array([\n", + " [6, -8, 2]\n", + "])\n", + "\n", + "a_dot_b = np.vdot(a, b)\n", + "print(f\"\"\"a.b = {a_dot_b}\n", + "\n", + "Since the dot product = {a_dot_b}, and not 0,\n", + "the vectors are not orthogonal.\n", + "\"\"\")" + ], + "execution_count": 31, + "outputs": [ + { + "output_type": "stream", + "text": [ + "a.b = -40\n", + "\n", + "Since the dot product = -40, and not 0,\n", + "the vectors are not orthogonal.\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MiNjyqiEz5SG" + }, + "source": [ + "## 2.3 Compute the following values: What do these quantities have in common?\n", + "\n", + "## What is $||c||^2$? \n", + "\n", + "## What is $c \\cdot c$? \n", + "\n", + "## What is $c^{T}c$?\n", + "\n", + "\\begin{align}\n", + "c = \\begin{bmatrix} 2 & -15 & 6 & 20 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IlV_uaYK1EQB", + "outputId": "3e875f9f-d9d3-4254-f5e8-0d10806f372c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 157 + } + }, + "source": [ + "c = np.array([\n", + " [2, -15, 6, 20]\n", + "])\n", + "\n", + "print(f\"\"\"c = {c}\n", + "||c||^2 = {np.linalg.norm(c) ** 2}\n", + "c.c = {np.vdot(c, c)}\n", + "c^Tc = {c.T * c}\n", + "\"\"\")" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "text": [ + "c = [[ 2 -15 6 20]]\n", + "||c||^2 = 665.0\n", + "c.c = 665\n", + "c^Tc = [[ 4 -30 12 40]\n", + " [ -30 225 -90 -300]\n", + " [ 12 -90 36 120]\n", + " [ 40 -300 120 400]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X98kxMKOld9L" + }, + "source": [ + "- The squared norm of c = the dot product of c and itself.\n", + "- c multiplied by its transpose creates a 4x4 square matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MK_TpWqk1Evk" + }, + "source": [ + "# Unit Vectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kpit6WWO1b8l" + }, + "source": [ + "## 3.1 Using Latex, write the following vectors as a linear combination of scalars and unit vectors:\n", + "\n", + "\\begin{align}\n", + "d = \\begin{bmatrix} 7 \\\\ 12 \\end{bmatrix}\n", + "\\qquad\n", + "e = \\begin{bmatrix} 2 \\\\ 11 \\\\ -8 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oBCj1sDW2ouC" + }, + "source": [ + "\\begin{align}\n", + "d = \\begin{bmatrix} 7 \n", + "\\begin{bmatrix} 1 \\\\ 0\n", + "\\end{bmatrix}\n", + "+ 12 \n", + "\\begin{bmatrix} 0 \\\\ 1 \\end{bmatrix}\n", + "\\end{bmatrix}\n", + "\n", + "e = \\begin{bmatrix} 2\n", + "\\begin{bmatrix} 1 \\\\ 0 \\\\ 0\n", + "\\end{bmatrix}\n", + "+ 11 \n", + "\\begin{bmatrix} 0 \\\\ 1 \\\\ 0\n", + "\\end{bmatrix}\n", + "+ -8\n", + "\\begin{bmatrix} 0 \\\\ 0 \\\\ 1 \\end{bmatrix}\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dAdUQuep1_yJ" + }, + "source": [ + "## 3.2 Turn vector $f$ into a unit vector:\n", + "\n", + "\\begin{align}\n", + "f = \\begin{bmatrix} 4 & 12 & 11 & 9 & 2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I3W8ZiHR1_Fa", + "outputId": "7cd4d363-65ac-49bd-9e73-1d4aac5fb119", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "f = np.array([\n", + " [4, 12, 11, 9, 2]\n", + "])\n", + "\n", + "f_norm = np.linalg.norm(f)\n", + "f_unit = f / f_norm\n", + "print(f_unit)" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[0.20908335 0.62725005 0.57497921 0.47043754 0.10454167]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o39UyP-I5lpP" + }, + "source": [ + "# Linear Independence / Dependence " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ajfBqYe45sT5" + }, + "source": [ + "## 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": "GzckBwQKmd-u", + "outputId": "76ac3130-3982-4384-83fc-6220ff5f9145", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 499 + } + }, + "source": [ + "# Linearly dependent vectors\n", + "V = np.array([3, 2])\n", + "V2 = np.multiply(3, V)\n", + "\n", + "plt.style.use('seaborn-bright')\n", + "fig, ax = plt.subplots(figsize=(12, 12))\n", + "ax.set_title(\"Linearly Dependent Vectors\")\n", + "ax.set_xlim(-4, 4)\n", + "ax.set_ylim(-4, 4)\n", + "ax.arrow(0,0, V[0],V[1], color='b')\n", + "ax.arrow(0,0, V2[0],V2[1], color='r')\n", + "plt.show()" + ], + "execution_count": 13, + "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": "Rl9o6xh8oF2K", + "outputId": "9b7e5e05-0f66-4e35-f9dd-c575ee202413", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 499 + } + }, + "source": [ + "# Linearly Independent Vectors\n", + "V = np.array([-2, 4])\n", + "V2 = np.array([-2, 2])\n", + "\n", + "fig, ax = plt.subplots(figsize=(12, 12))\n", + "ax.set_title(\"Linearly Independent Vectors\")\n", + "ax.set_xlim(-4, 4)\n", + "ax.set_ylim(-4, 4)\n", + "ax.arrow(0,0, V[0],V[1], color='b')\n", + "ax.arrow(0,0, V2[0],V2[1], color='r')\n", + "plt.show()" + ], + "execution_count": 14, + "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": "TrJ0MT_n3SvO" + }, + "source": [ + "# Span" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "86iXLzwM2z8l" + }, + "source": [ + "## 5.1 What is the span of the following vectors?\n", + "\n", + "\\begin{align}\n", + "g = \\begin{bmatrix} 1 & 2 \\end{bmatrix}\n", + "\\qquad\n", + "h = \\begin{bmatrix} 4 & 8 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "G2LK2RWL39Q4", + "outputId": "61677548-5e06-41d2-92e6-ffa985c04c81", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 140 + } + }, + "source": [ + "g = np.array([1, 2])\n", + "h = np.array([4, 8])\n", + "matrix_gh = np.array([g, h])\n", + "\n", + "print(f\"\"\"\n", + "Matrix gh = {matrix_gh}\n", + "\n", + "h = 4g; g and h are linearly dependent.\n", + "span(gh) = line (1, 2), (4, 8)\n", + "\"\"\")" + ], + "execution_count": 33, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Matrix gh = [[1 2]\n", + " [4 8]]\n", + "\n", + "h = 4g; g and h are linearly dependent.\n", + "span(gh) = line (1, 2), (4, 8)\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l1deylUj4IHH" + }, + "source": [ + "## 5.2 What is the span of $\\{l, m, n\\}$?\n", + "\n", + "\\begin{align}\n", + "l = \\begin{bmatrix} 1 & 2 & 3 \\end{bmatrix}\n", + "\\qquad\n", + "m = \\begin{bmatrix} -1 & 0 & 7 \\end{bmatrix}\n", + "\\qquad\n", + "n = \\begin{bmatrix} 4 & 8 & 2\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "p1i_ueD25ZcP", + "outputId": "056671d1-a160-4a4c-a4c8-990ab6273d19", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 157 + } + }, + "source": [ + "l = np.array([1, 2, 3])\n", + "m = np.array([-1, 0, 7])\n", + "n = np.array([4, 8, 2])\n", + "matrix_lmn = np.array([l, m, n])\n", + "\n", + "print(f\"\"\"Matrix LMN\n", + "{matrix_lmn}\n", + "\n", + "det(lmn) = {np.linalg.det(matrix_lmn)}\n", + "span(lmn) = 3 dimensional space\n", + "\"\"\")" + ], + "execution_count": 34, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Matrix LMN\n", + "[[ 1 2 3]\n", + " [-1 0 7]\n", + " [ 4 8 2]]\n", + "\n", + "det(lmn) = -19.999999999999996\n", + "span(lmn) = 3 dimensional space\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBqe7X1732kX" + }, + "source": [ + "# Basis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YeUZVHRM6PpT" + }, + "source": [ + "## 6.1 Graph two vectors that form a basis for $\\mathbb{R}^2$\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "utvF3Pkt8NP6", + "outputId": "bb5ebfee-ee03-4016-af65-4c4a4cc11edb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + } + }, + "source": [ + "i_hat = np.array([1, 0])\n", + "j_hat = np.array([0, 1])\n", + "\n", + "plt.title(\"Basis Vectors for R2\")\n", + "plt.xlim(-2, 2)\n", + "plt.ylim(-2, 2)\n", + "plt.arrow(0,0, i_hat[0],i_hat[1], linewidth=1, color='green')\n", + "plt.arrow(0,0, j_hat[0],j_hat[1], linewidth=1, color='orange')\n", + "plt.show()" + ], + "execution_count": 17, + "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": "20yPFBDUxxnS" + }, + "source": [ + "## 6.2 What does it mean to form a basis?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3w4tEayT8M0o" + }, + "source": [ + "A set of vectors can form the basis of a vector space if they are linearly independent and can span the whole vector space by being scaled." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EHmUxbcY6vD3" + }, + "source": [ + "# Rank" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IpJwt9kw6v8U" + }, + "source": [ + "## 7.1 What is the Rank of P?\n", + "\n", + "\\begin{align}\n", + "P = \\begin{bmatrix} \n", + "1 & 2 & 3 \\\\\n", + " -1 & 0 & 7 \\\\\n", + "4 & 8 & 2\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yezj1zWbELO3", + "outputId": "8bb3ba25-19a9-4b71-e060-22eab8bb1243", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "p = np.array([\n", + " [1, -1, 4],\n", + " [2, 0, 8],\n", + " [3, 7, 2]\n", + " ])\n", + "p_rank = np.linalg.matrix_rank(p)\n", + "\n", + "print(f\"\"\"\n", + "rank(p) = {p_rank}\n", + "\"\"\")" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "rank(p) = 3\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGqFMBYY7mHD" + }, + "source": [ + "## 7.2 What does the rank of a matrix tell us?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vjg1IiCD8nnP" + }, + "source": [ + "The rank of a matrix is the number of dimensions that the matrix vectors are able to span. The rank is never less than the smallest possible dimensionality of the matrix, but it may be less than the column space (number of columns.) If this is the case, it means that 1 or more of the column vectors are linearly dependent, and the dimensionality of the matrix is colapsed." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0Db2sc_V8QD6" + }, + "source": [ + "# Linear Projections\n", + "\n", + "## 8.1 Line $L$ is formed by all of the vectors that can be created by scaling vector $v$ \n", + "\\begin{align}\n", + "v = \\begin{bmatrix} 1 & 3 \\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "\\begin{align}\n", + "w = \\begin{bmatrix} -1 & 2 \\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "## find $proj_{L}(w)$\n", + "\n", + "## graph your projected vector to check your work (make sure your axis are square/even)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hp5z2WTBCNKx", + "outputId": "27e741bc-d4d1-434d-f983-a3c52f064fdd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "v = np.array([\n", + " [1, 3]\n", + "])\n", + "w = np.array([\n", + " [-1, 2]\n", + "])\n", + "proj_lw = np.subtract(\n", + " w, (np.vdot(v, w) /\n", + " (np.linalg.norm(v) **2)) *v\n", + ")\n", + "\n", + "print(f\"\"\"\n", + "proj l(w) = {proj_lw}\n", + "\"\"\")" + ], + "execution_count": 45, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "proj l(w) = [[-1.5 0.5]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TKkrPwRM-Oar" + }, + "source": [ + "# Stretch Goal\n", + "\n", + "## For vectors that begin at the origin, the coordinates of where the vector ends can be interpreted as regular data points. (See 3Blue1Brown videos about Spans, Basis, etc.)\n", + "\n", + "## Write a function that can calculate the linear projection of each point (x,y) (vector) onto the line y=x. run the function and plot the original points in blue and the new projected points on the line y=x in red. \n", + "\n", + "## For extra points plot the orthogonal vectors as a dashed line from the original blue points to the projected red points." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "cp52kZra-ykj", + "outputId": "b790b243-626b-4008-acc7-df8013af2499", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Creating a dataframe for you to work with -Feel free to not use the dataframe if you don't want to.\n", + "x_values = [1, 4, 7, 3, 9, 4, 5 ]\n", + "y_values = [4, 2, 5, 0, 8, 2, 8]\n", + "\n", + "data = {\"x\": x_values, \"y\": y_values}\n", + "\n", + "df = pd.DataFrame(data)\n", + "\n", + "df.head()\n", + "\n", + "plt.scatter(df.x, df.y)\n", + "plt.show()" + ], + "execution_count": 24, + "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": "EZTA6Tj6BGDb" + }, + "source": [ + "" + ], + "execution_count": 24, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/module3-dimensionality-reduction/Jacob_Torres_LS_DS_133_High_Dimensional_Data_Assignment.ipynb b/module3-dimensionality-reduction/Jacob_Torres_LS_DS_133_High_Dimensional_Data_Assignment.ipynb new file mode 100644 index 00000000..4fa5ad76 --- /dev/null +++ b/module3-dimensionality-reduction/Jacob_Torres_LS_DS_133_High_Dimensional_Data_Assignment.ipynb @@ -0,0 +1,2550 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Jacob_Torres_LS_DS_133_High_Dimensional_Data_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7wMWCkE1RZpM" + }, + "source": [ + "# Vertical Line Test" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W0-g7aprRv2j" + }, + "source": [ + "## 1.1 Create two graphs, one that passes the vertical line test and one that does not." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-tPn7C1yChre" + }, + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "fIJhCtF6RW_U", + "outputId": "b5f5f300-63f3-497c-8d82-a5fec1cf1065", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 823 + } + }, + "source": [ + "# Function that passes the vertical line test\n", + "def f(x):\n", + " y = 3 *x -4\n", + " return y\n", + "\n", + "# Graph the function\n", + "x_vals = [-2, -1, 0, 1, 2]\n", + "y_vals = [f(x) for x in x_vals]\n", + "vertical_x = np.ones(13)\n", + "vertical_y = np.arange(-10, 3)\n", + "\n", + "plt.style.use('seaborn-bright')\n", + "fig, ax = plt.subplots(figsize=(12, 16))\n", + "ax.set_title(\"Passes the Vertical Line Test\")\n", + "ax.set_xlim(-3, 3)\n", + "ax.set_ylim(-10, 2)\n", + "ax.plot(x_vals, y_vals, '-', color='g', linewidth=1.5)\n", + "ax.plot(vertical_x, vertical_y, '.', color='k')\n", + "plt.show()" + ], + "execution_count": null, + "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": "za07xHPQJIGI", + "outputId": "9ee5ee50-fce1-4c43-cb9a-9bde94d14e88", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 607 + } + }, + "source": [ + "# Graph that doesn't pass the vertical line test\n", + "def g(y):\n", + " x = y **2\n", + " return x\n", + "\n", + "y_vals = np.arange(-3, 4)\n", + "x_vals = [g(y) for y in y_vals]\n", + "vertical_y = np.arange(-3, 4)\n", + "vertical_x = np.multiply(5, np.ones(7))\n", + "\n", + "plt.style.use('seaborn-bright')\n", + "fig, ax = plt.subplots(figsize=(8, 10))\n", + "ax.set_title(\"Doesn't Pass the Vertical Line Test\")\n", + "ax.set_xlim(0, 10)\n", + "ax.set_ylim(-4, 4)\n", + "ax.plot(x_vals, y_vals, '-', color='g', linewidth=1.5)\n", + "ax.plot(vertical_x, vertical_y, '.', color='k')\n", + "plt.show()" + ], + "execution_count": null, + "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": "ckeTKqMgRy7g" + }, + "source": [ + "## 1.2 Why are graphs that don't pass the vertical line test not considered \"functions?\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Gtl20YeDR6x-" + }, + "source": [ + "When an equation fails to pass the vertical line test, it is a graphical representation of there being multiple possible outputs (y values) for at least one input (x value.) This means that the equation is inconsistent in its output depending on any given input, and can't be reliably used." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g21uN62xSKSk" + }, + "source": [ + "# Functions as Relations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gwkcV-EMSMNd" + }, + "source": [ + "## 2.1 Which of the following relations are functions? Why?\n", + "\n", + "\\begin{align}\n", + "\\text{Relation 1: } \\{(1, 2), (3, 2), (1, 3)\\}\n", + "\\\\\n", + "\\text{Relation 2: } \\{(1, 3), (2, 3), (6, 7)\\}\n", + "\\\\\n", + "\\text{Relation 3: } \\{(9, 4), (2, 1), (9, 6)\\}\n", + "\\\\\n", + "\\text{Relation 4: } \\{(6, 2), (8, 3), (6, 4)\\}\n", + "\\\\\n", + "\\text{Relation 5: } \\{(2, 6), (2, 7), (2, 4)\\}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "lPJ_c50EbIPM", + "outputId": "0e148aa4-b87b-4975-cda0-79648c3994a0", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "rel1 = np.array([\n", + " [1, 2],\n", + " [3, 2],\n", + " [1, 3]\n", + "])\n", + "rel2 = np.array([\n", + " [1, 3],\n", + " [2, 3],\n", + " [6, 7]\n", + "])\n", + "rel3 = np.array([\n", + " [9, 4],\n", + " [2, 1],\n", + " [9, 6]\n", + "])\n", + "rel4 = np.array([\n", + " [6, 2],\n", + " [8, 3],\n", + " [6, 4]\n", + "])\n", + "rel5 = np.array([\n", + " [2, 6],\n", + " [2, 7],\n", + " [2,4]\n", + "])\n", + "\n", + "print(f\"\"\"\n", + "Relation 1:\n", + "{rel1}\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 2:\n", + "{rel2}\n", + "This is a function because all inputs have unique outputs.\n", + "\n", + "Relation 3:\n", + "{rel3}\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 4:\n", + "{rel4}\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 5:\n", + "{rel5}\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Relation 1:\n", + "[[1 2]\n", + " [3 2]\n", + " [1 3]]\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 2:\n", + "[[1 3]\n", + " [2 3]\n", + " [6 7]]\n", + "This is a function because all inputs have unique outputs.\n", + "\n", + "Relation 3:\n", + "[[9 4]\n", + " [2 1]\n", + " [9 6]]\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 4:\n", + "[[6 2]\n", + " [8 3]\n", + " [6 4]]\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n", + "Relation 5:\n", + "[[2 6]\n", + " [2 7]\n", + " [2 4]]\n", + "This is not a function because 1 input maps to more than 1 output.\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y0U30PrlTAAa" + }, + "source": [ + "# Functions as a mapping between dimensions\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pw-OU9qmT5Ua" + }, + "source": [ + "## 3.1 for the following functions what is the dimensionality of the domain (input) and codomain (range/output)?\n", + "\n", + "\\begin{align}\n", + "m(𝑥_1,𝑥_2,𝑥_3)=(x_1+x_2, x_1+x_3, x_2+x_3)\n", + "\\\\\n", + "n(𝑥_1,𝑥_2,𝑥_3,𝑥_4)=(x_2^2 + x_3, x_2x_4)\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k4tKHjdHUevC" + }, + "source": [ + "## 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": "Dy1pJVh0S0P7" + }, + "source": [ + "I do not believe that this is possible, because a function can only map a single output to an input, and cannot add extra dimensionality on its own." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2nEWvwVyVWdW" + }, + "source": [ + "# Vector Transformations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1n0-6FsYVcVk" + }, + "source": [ + "## 4.1 Plug the corresponding unit vectors into each function. Use the output vectors to create a transformation matrix.\n", + "\n", + "\\begin{align}\n", + "p(\\begin{bmatrix}x_1 \\\\ x_2 \\end{bmatrix}) = \\begin{bmatrix} x_1 + 3x_2 \\\\2 x_2 - x_1 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "q(\\begin{bmatrix}x_1 \\\\ x_2 \\\\ x_3\\end{bmatrix}) = \\begin{bmatrix} 4x_1 + x_2 + 2x_3 \\\\2 x_2 - x_1 + 3x_3 \\\\ 5x_1 - 2x_3 + x_2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CNmFtdKmsSPW", + "outputId": "921d50ee-4e19-49ea-dd2b-ab760c4bd2f2", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# Unit vectors\n", + "i_hat = np.array([1, 0, 0])\n", + "j_hat = np.array([0, 1, 0])\n", + "k_hat = np.array([0, 0, 1])\n", + "\n", + "# Functions\n", + "def p(x1, x2):\n", + " y1 = x1 +3 *x2\n", + " y2 = 2 *x2 -x1\n", + " return np.array([y1, y2])\n", + "\n", + "def q(x1, x2, x3):\n", + " y1 = 4 *x1 +x2 +2 *x3\n", + " y2 = 2 *x2 -x1 +3 *x3\n", + " y3 = 5 *x1 -2 *x3 +x2\n", + " return np.array([y1, y2, y3])\n", + "\n", + "# Output matrices\n", + "p_matrix = p(i_hat, j_hat)\n", + "q_matrix = q(i_hat, j_hat, k_hat)\n", + "\n", + "print(f\"\"\"\n", + "p = {p_matrix}\n", + "q = {q_matrix}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "p = [[ 1 3 0]\n", + " [-1 2 0]]\n", + "q = [[ 4 1 2]\n", + " [-1 2 3]\n", + " [ 5 1 -2]]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2Byn7MZT9wpl", + "outputId": "d343d8fc-91bc-4e95-ca91-dfb047b6cd4f", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# Composite transformation matrix\n", + "t = np.matmul(p_matrix, q_matrix)\n", + "print(f\"t = {t}\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "t = [[ 1 7 11]\n", + " [-6 3 4]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n5HUOQIxZ2gp" + }, + "source": [ + "## 4.2 Verify that your transformation matrices are correct by choosing an input matrix and calculating the result both via the traditional functions above and also via vector-matrix multiplication." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0UANR1IEaVWE", + "outputId": "57ff2b9e-1335-4645-8219-5ede3d3ee0ee", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# Verify transformation matrix\n", + "v = np.array([\n", + " [1, 2, 4], [3, 6, 9]\n", + "])\n", + "v_pq = np.matmul(np.matmul(v.T, p_matrix), q_matrix)\n", + "v_t = np.matmul(v.T, t)\n", + " \n", + "print(f\"\"\"Verifying the transformation matrix:\n", + " Test matrix = {v}\n", + "\n", + " Result of output matrices: {v_pq}\n", + "\n", + " Result of transformation matrix: {v_t}\n", + "\n", + " The results are the same.\n", + " \"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Verifying the transformation matrix:\n", + " Test matrix = [[1 2 4]\n", + " [3 6 9]]\n", + "\n", + " Result of output matrices: [[-17 16 23]\n", + " [-34 32 46]\n", + " [-50 55 80]]\n", + "\n", + " Result of transformation matrix: [[-17 16 23]\n", + " [-34 32 46]\n", + " [-50 55 80]]\n", + "\n", + " The results are the same.\n", + " \n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vEoiri3mak7j" + }, + "source": [ + "# Eigenvalues and Eigenvectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5HY0R4u7anIr" + }, + "source": [ + "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors.\n", + "\n", + "An eigenvector is a vector which maintains its orientation, even after a transformation is applied to it. Eigenvalues An eigenvalue is the non-0 value by which a given eigenvector is scaled." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VdehMwBtatKI" + }, + "source": [ + "# The Curse of Dimensionality" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZiBJxsZla88c" + }, + "source": [ + "## 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": "4oVrJax-a3SK" + }, + "source": [ + "## 6.1 What are some of the challenges of working with high dimensional spaces?\n", + "\n", + "- As the number of dimensions increases, the amount of useful information decreases.\n", + "- It's extremely difficult and impractical to visualize more than two dimensions of data.\n", + "- After a certain number of dimensions, the data points become spacially equidistant, so some important statistical calculations become impossible." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NZmqdeygbHJx" + }, + "source": [ + "# Principal Component Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7iEheetpbJdN" + }, + "source": [ + "## 7.1 Code for loading and cleaning the 2013 national dataset from the [Housing Affordability Data System (HADS)](https://www.huduser.gov/portal/datasets/hads/hads.html) --housing data, can be found below. \n", + "\n", + "## Perform PCA on the processed dataset `national_processed` (Make sure you standardize your data!) and then make a scatterplot of PC1 against PC2. Some of our discussion and work around PCA with this dataset will continue during tomorrow's lecture and assignment.\n", + "\n", + "Not only does this dataset have decent amount columns to begin with (99), but in preparing the data for PCA we have also [one-hot-encoded](https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f#targetText=One%20hot%20encoding%20is%20a,the%20entry%20in%20the%20dataset.) all of the categorical variables. This has the effect of creating a new column for each individual category of each categorical variable. After processing this dataset has 64738 columns. --Das a lot of columns.\n", + "\n", + "Don't worry too much about the mechanics of one-hot encoding right now, you will learn and experiment with a whole bunch of categorical encoding approaches in unit 2. \n", + "\n", + "The code below will read in the dataset and perform the one-hot encoding of the categorical variables. Start adding your PCA code at the bottom of the provided code." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Us4nNFs02HlD", + "outputId": "658501f1-fab8-4df0-e469-8f946eb2003a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 351 + } + }, + "source": [ + "from urllib.request import urlopen\n", + "from zipfile import ZipFile\n", + "from io import BytesIO\n", + "import os.path\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Read Natinal Data \n", + "national_url = 'https://www.huduser.gov/portal/datasets/hads/hads2013n_ASCII.zip'\n", + "national_file = 'thads2013n.txt'\n", + "\n", + "if os.path.exists(national_file):\n", + " national = pd.read_csv(national_file)\n", + "else: \n", + " z_national = urlopen(national_url)\n", + " zip_national = ZipFile(BytesIO(z_national.read())).extract(national_file)\n", + " national = pd.read_csv(zip_national)\n", + "\n", + "print(national.shape)\n", + "national.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(64535, 99)\n" + ], + "name": "stdout" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CONTROLAGE1METRO3REGIONLMEDFMRL30L50L80IPOVBEDRMSBUILTSTATUSTYPEVALUEVACANCYTENURENUNITSROOMSWEIGHTPERZINC2ZADEQZSMHCSTRUCTURETYPEOWNRENTUTILITYOTHERCOSTCOST06COST12COST08COSTMEDTOTSALASSISTEDGLMEDGL30GL50GL80APLMEDABL30...COST08RELPOVCATCOST08RELFMRPCTCOST08RELFMRCATCOST12RELAMIPCTCOST12RELAMICATCOST12RELPOVPCTCOST12RELPOVCATCOST12RELFMRPCTCOST12RELFMRCATCOSTMedRELAMIPCTCOSTMedRELAMICATCOSTMedRELPOVPCTCOSTMedRELPOVCATCOSTMedRELFMRPCTCOSTMedRELFMRCATFMTZADEQFMTMETRO3FMTBUILTFMTSTRUCTURETYPEFMTBEDRMSFMTOWNRENTFMTCOST06RELPOVCATFMTCOST08RELPOVCATFMTCOST12RELPOVCATFMTCOSTMEDRELPOVCATFMTINCRELPOVCATFMTCOST06RELFMRCATFMTCOST08RELFMRCATFMTCOST12RELFMRCATFMTCOSTMEDRELFMRCATFMTINCRELFMRCATFMTCOST06RELAMICATFMTCOST08RELAMICATFMTCOST12RELAMICATFMTCOSTMEDRELAMICATFMTINCRELAMICATFMTASSISTEDFMTBURDENFMTREGIONFMTSTATUS
0'100003130103'82'3''1'737389561573826213403221106722006'1'140000-6'1'163117.394239118021'1'5331'1'169.000000213.750000648.588189803.050535696.905247615.1567120-97373815738262134032251616.620234.571429...472.898038248.4026352290.250487484.001102237.0776242222.339102464.3469362'1 Adequate''-5''2000-2009''1 Single Family''2 2BR''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''2 50.1 - 100% FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''1 LTE 50% FMR''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''.''2 30% to 50%''-5''-5'
1'100006110249'50'5''3'5584611001716528604457442421841980'1'1130000-6'1'162150.7255444122961'1'4871'1'245.33333358.3333331167.6407811669.6434051324.6712181058.988479123000-95584617165286044574455846.019911.400000...4120.4246563103.0940636275.7689994151.785764365.3884684174.909320396.2716802'1 Adequate''-5''1980-1989''1 Single Family''4 4BR+''1 Owner''3 150-200% Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''3 GT FMR''4 60 - 80% AMI''4 60 - 80% AMI''6 100 - 120% AMI''4 60 - 80% AMI''7 120% AMI +''.''1 Less than 30%''-5''-5'
2'100006370140'53'5''3'5584611001375022897366141547041985'1'1150000-6'1'172213.789404227974'1'14051'1'159.00000037.5000001193.3932091772.6270061374.5821751068.02516828000-95584613750228973661444676.819937.500000...4124.9620163109.4529056458.3392394161.147910365.9464494276.153890497.0931972'1 Adequate''-5''1980-1989''1 Single Family''4 4BR+''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''4 60 - 80% AMI''5 80 - 100% AMI''6 100 - 120% AMI''4 60 - 80% AMI''4 60 - 80% AMI''.''3 50% or More''-5''-5'
3'100006520140'67'5''3'558469491375022897366141396431985'1'1200000-6'1'162364.585097232220'1'2791'1'179.00000070.6666671578.8576122351.1693411820.4429001411.7002240-95584613750228973661444676.817875.000000...4191.8274923161.9267097673.4945124247.752301397.2248015404.3827634148.7566103'1 Adequate''-5''1980-1989''1 Single Family''3 3BR''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''6 100 - 120% AMI''7 120% AMI +''7 120% AMI +''5 80 - 100% AMI''4 60 - 80% AMI''.''1 Less than 30%''-5''-5'
4'100007130148'26'1''3'609917371480124628394211549221980'1'1-6-6'2'10042314.524902296874'1'7595'2'146.00000012.500000759.000000759.000000759.000000759.0000009690006099114801246283942148792.816651.125000...3102.985075355.3087073195.9721153102.985075355.3087073195.9721153102.9850753'1 Adequate''Central City''1980-1989''5 50+ units''2 2BR''2 Renter''3 150-200% Poverty''3 150-200% Poverty''3 150-200% Poverty''3 150-200% Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''3 50 - 60% AMI''3 50 - 60% AMI''3 50 - 60% AMI''3 50 - 60% AMI''7 120% AMI +''0 Not Assisted''1 Less than 30%''-5''-5'
\n", + "

5 rows × 99 columns

\n", + "
" + ], + "text/plain": [ + " CONTROL AGE1 METRO3 ... FMTBURDEN FMTREGION FMTSTATUS\n", + "0 '100003130103' 82 '3' ... '2 30% to 50%' '-5' '-5'\n", + "1 '100006110249' 50 '5' ... '1 Less than 30%' '-5' '-5'\n", + "2 '100006370140' 53 '5' ... '3 50% or More' '-5' '-5'\n", + "3 '100006520140' 67 '5' ... '1 Less than 30%' '-5' '-5'\n", + "4 '100007130148' 26 '1' ... '1 Less than 30%' '-5' '-5'\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "O5zrMTud2qFU", + "outputId": "eab96302-82de-497a-a349-171f88926bf5", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# Look at datatypes\n", + "# a lot of object datatypes even though they seem to be strings of numbers.\n", + "national.dtypes" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "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": 10 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yIrOjVmd2yLz", + "outputId": "d9774873-8c0b-418b-f3dd-7cb808d0095b", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# check for null values\n", + "national.isnull().sum().any()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "False" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2u9tdmwX3KL_", + "outputId": "80d70b05-5549-4fb3-866e-06e3cc1ff01c", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# check for number of categorical vs numeric columns\n", + "cat_cols = national.columns[national.dtypes=='object']\n", + "num_cols = national.columns[national.dtypes!='object']\n", + "\n", + "print(f'{len(cat_cols)} categorical columns')\n", + "print(f'{len(num_cols)} numerical columns')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "32 categorical columns\n", + "67 numerical columns\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UMHOtOs_3gcL", + "outputId": "6e7b3bbe-fa4f-458a-f6b7-6b42960b9dd9", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# We're making a copy of our data in case we mess something up.\n", + "national_processed = national.copy()\n", + "\n", + "# Categorically Encode our Variables:\n", + "# They need to all be numeric before we do PCA.\n", + "# https://pbpython.com/categorical-encoding.html\n", + "\n", + "# Cast categorical columns to \"category\" data type\n", + "national_processed[cat_cols] = national_processed[cat_cols].astype('category')\n", + "\n", + "national_processed.dtypes" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "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": 13 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ymxU-aPtQ1eq", + "outputId": "501ec0af-55bf-4f8b-a5dc-3ab5793e6e14", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 266 + } + }, + "source": [ + "# Replace all category cell values with their numeric category codes\n", + "for col in cat_cols:\n", + " national_processed[col] = national_processed[col].cat.codes\n", + "\n", + "print(national_processed.shape)\n", + "national_processed.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(64535, 99)\n" + ], + "name": "stdout" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CONTROLAGE1METRO3REGIONLMEDFMRL30L50L80IPOVBEDRMSBUILTSTATUSTYPEVALUEVACANCYTENURENUNITSROOMSWEIGHTPERZINC2ZADEQZSMHCSTRUCTURETYPEOWNRENTUTILITYOTHERCOSTCOST06COST12COST08COSTMEDTOTSALASSISTEDGLMEDGL30GL50GL80APLMEDABL30...COST08RELPOVCATCOST08RELFMRPCTCOST08RELFMRCATCOST12RELAMIPCTCOST12RELAMICATCOST12RELPOVPCTCOST12RELPOVCATCOST12RELFMRPCTCOST12RELFMRCATCOSTMedRELAMIPCTCOSTMedRELAMICATCOSTMedRELPOVPCTCOSTMedRELPOVCATCOSTMedRELFMRPCTCOSTMedRELFMRCATFMTZADEQFMTMETRO3FMTBUILTFMTSTRUCTURETYPEFMTBEDRMSFMTOWNRENTFMTCOST06RELPOVCATFMTCOST08RELPOVCATFMTCOST12RELPOVCATFMTCOSTMEDRELPOVCATFMTINCRELPOVCATFMTCOST06RELFMRCATFMTCOST08RELFMRCATFMTCOST12RELFMRCATFMTCOSTMEDRELFMRCATFMTINCRELFMRCATFMTCOST06RELAMICATFMTCOST08RELAMICATFMTCOST12RELAMICATFMTCOSTMEDRELAMICATFMTINCRELAMICATFMTASSISTEDFMTBURDENFMTREGIONFMTSTATUS
0082207373895615738262134032211067220060140000-61163117.394239118021153310169.000000213.750000648.588189803.050535696.905247615.1567120-97373815738262134032251616.620234.571429...472.898038248.4026352290.250487484.001102237.0776242222.339102464.34693621051204444311111111120200
115042558461100171652860445744242184198001130000-61162150.7255444122961148710245.33333358.3333331167.6407811669.6434051324.6712181058.988479123000-95584617165286044574455846.019911.400000...4120.4246563103.0940636275.7689994151.785764365.3884684174.909320396.27168021031403443422213335370100
225342558461100137502289736614154704198501150000-61172213.7894042279741140510159.00000037.5000001193.3932091772.6270061374.5821751068.02516828000-95584613750228973661444676.819937.500000...4124.9620163109.4529056458.3392394161.147910365.9464494276.153890497.09319721031404444322212345340300
33674255846949137502289736614139643198501200000-61162364.585097232220127910179.00000070.6666671578.8576122351.1693411820.4429001411.7002240-95584613750228973661444676.817875.000000...4191.8274923161.9267097673.4945124247.752301397.2248015404.3827634148.75661031031304444422222566440100
44260260991737148012462839421154922198001-6-6210042314.524902296874175951146.00000012.500000759.000000759.000000759.000000759.0000009690006099114801246283942148792.816651.125000...3102.985075355.3087073195.9721153102.985075355.3087073195.9721153102.98507531135213333422223222271100
\n", + "

5 rows × 99 columns

\n", + "
" + ], + "text/plain": [ + " CONTROL AGE1 METRO3 REGION ... FMTASSISTED FMTBURDEN FMTREGION FMTSTATUS\n", + "0 0 82 2 0 ... 0 2 0 0\n", + "1 1 50 4 2 ... 0 1 0 0\n", + "2 2 53 4 2 ... 0 3 0 0\n", + "3 3 67 4 2 ... 0 1 0 0\n", + "4 4 26 0 2 ... 1 1 0 0\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6NS5AQpcQ8Je", + "outputId": "c137d54d-1fb7-4252-b868-4b8483abc826", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "# Now we only ahve numeric columns (ints and floats)\n", + "national_processed.dtypes" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "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": 15 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WAJ8bjVcEwhA", + "outputId": "ec77ee6e-0bd1-4e93-d275-7a97519d1930", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 351 + } + }, + "source": [ + "# Standardize the data\n", + "scaler = StandardScaler()\n", + "z = scaler.fit_transform(national_processed)\n", + "\n", + "# Extract features\n", + "pca = PCA()\n", + "new_features = pca.fit_transform(z)\n", + "\n", + "# Turn the processed data into a dataframe\n", + "national_pca = pd.DataFrame(new_features)\n", + "print(national_pca.shape)\n", + "national_pca.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(64535, 99)\n" + ], + "name": "stdout" + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456789101112131415161718192021222324252627282930313233343536373839...59606162636465666768697071727374757677787980818283848586878889909192939495969798
0-2.576570-1.376127-1.253835-0.6198821.592855-2.529629-1.0243842.0389710.743631-0.981357-0.958024-0.983633-0.1243202.130272-0.232511-1.259668-1.8112150.8002300.1574960.0578910.076233-0.3038510.2346310.3116921.4148470.6655750.2060750.297168-0.885343-1.1008120.017568-0.296827-0.0452260.328718-0.227059-0.2065670.1051830.209632-0.4529490.487132...-0.022755-0.0053800.0170970.0175090.007771-0.001771-0.0056350.0024380.000044-1.555674e-12-2.275710e-12-7.244823e-12-2.792285e-121.391321e-132.899610e-12-1.398466e-125.030034e-12-1.453494e-12-7.971580e-15-8.595370e-161.397316e-15-4.201700e-15-2.629575e-151.662437e-152.281487e-16-8.200807e-157.638178e-152.129641e-151.126562e-154.763201e-15-1.111901e-151.643459e-15-2.481185e-151.627337e-154.206682e-162.517816e-154.136666e-156.081237e-15-5.551242e-16-7.942743e-16
12.040643-0.988061-2.237999-2.9874032.1603201.2208751.076368-0.6813690.948055-0.182382-0.6903090.670541-0.3129500.1607160.063940-0.032742-1.310611-0.029583-0.320912-1.2132950.082541-0.438037-0.140961-0.4171530.129375-0.3732540.1624620.426850-0.2946721.1966200.0344420.739189-0.334534-0.349723-0.0511910.1070430.9526030.1994570.0227680.199969...-0.0654890.030766-0.021506-0.0141760.0100880.000578-0.010665-0.002009-0.0000831.985665e-111.697024e-11-1.820959e-11-4.569093e-12-8.943151e-12-1.002888e-113.043135e-12-1.867900e-12-7.525301e-12-1.236942e-13-2.811725e-14-2.859341e-15-1.245108e-146.380007e-15-3.271522e-146.700829e-143.538613e-14-3.039974e-14-1.604190e-14-5.531218e-157.315701e-15-9.227129e-15-2.709105e-15-3.293959e-154.693389e-15-3.784732e-157.904892e-15-1.024321e-14-7.866356e-15-6.322116e-16-2.619343e-16
21.2152700.370168-3.248606-2.1238991.229951-2.5599450.9842910.088488-0.209300-0.715159-0.2439961.168680-0.1361000.4912520.358669-0.462415-1.4945700.114951-0.160159-0.8894620.678651-0.0022220.162761-0.738769-0.8445790.332651-0.0146020.525549-0.1347050.832489-0.3668750.429854-0.639612-0.112777-0.1140590.2588930.9746110.1678550.177374-0.033658...-0.0371080.019828-0.0322030.0032940.0061820.000272-0.0083070.0002100.000053-3.011104e-11-3.448156e-11-2.696771e-12-1.342672e-113.055270e-11-1.853116e-116.526787e-121.171080e-112.918130e-111.978506e-14-6.917647e-15-8.690510e-153.585682e-15-4.658132e-15-8.145799e-15-4.673181e-16-5.639147e-15-2.337729e-15-5.838861e-152.205696e-15-2.530473e-15-4.543976e-16-6.528784e-15-2.303640e-15-2.500232e-152.893038e-152.086186e-151.598883e-153.318875e-158.989284e-16-3.788372e-17
32.8218371.723711-4.375157-1.4793430.085327-1.7550500.710440-0.0648430.487051-0.175074-0.9478110.273949-0.083829-0.606772-0.0587910.293943-1.3190741.225816-0.688633-0.437567-0.155818-0.9341890.0707810.0828820.259157-0.305200-0.1574190.136505-0.6786510.363593-0.4972620.4535850.0991060.302715-0.3191960.502472-0.0562090.0439860.2844940.152548...0.051131-0.0164790.032716-0.001735-0.006142-0.0000830.0032330.0003690.0000471.570527e-11-2.956002e-11-4.246039e-11-3.625665e-11-3.904595e-11-8.910011e-122.530238e-127.069996e-123.740412e-138.286938e-156.592696e-16-1.280837e-159.213680e-16-3.869037e-171.861092e-16-3.535306e-162.137629e-15-3.969571e-16-1.665115e-152.604798e-15-3.388406e-153.325411e-16-1.605029e-15-2.185016e-15-2.579443e-153.379958e-151.414309e-15-3.038426e-15-1.618005e-15-2.137277e-16-7.535854e-16
4-1.570106-0.878362-3.3070620.785881-2.3104003.881736-0.6459520.464725-0.0921470.4395020.6804271.297333-2.1765270.873973-1.2587290.078789-1.274484-1.278863-0.049121-1.107579-1.3157070.183007-0.463981-0.126541-0.632876-0.4903560.2270400.4487140.3620580.192815-0.0611160.4236520.0602510.0662550.0872480.049826-0.007892-0.222354-0.0177750.482700...0.0295080.017652-0.0079010.005932-0.0081800.0011590.0049480.003858-0.000114-1.210293e-12-7.386035e-131.444818e-12-7.904880e-13-9.223507e-14-6.033953e-135.752033e-14-3.907023e-138.020451e-13-3.283658e-135.266361e-143.634224e-151.832897e-144.621295e-14-3.589585e-14-1.776807e-14-2.737603e-14-8.598189e-15-3.794475e-14-1.916136e-14-8.228730e-15-6.056303e-15-1.204971e-14-1.099331e-147.764073e-15-3.602489e-159.824194e-153.711774e-155.388211e-15-7.548762e-16-5.272142e-17
\n", + "

5 rows × 99 columns

\n", + "
" + ], + "text/plain": [ + " 0 1 2 ... 96 97 98\n", + "0 -2.576570 -1.376127 -1.253835 ... 6.081237e-15 -5.551242e-16 -7.942743e-16\n", + "1 2.040643 -0.988061 -2.237999 ... -7.866356e-15 -6.322116e-16 -2.619343e-16\n", + "2 1.215270 0.370168 -3.248606 ... 3.318875e-15 8.989284e-16 -3.788372e-17\n", + "3 2.821837 1.723711 -4.375157 ... -1.618005e-15 -2.137277e-16 -7.535854e-16\n", + "4 -1.570106 -0.878362 -3.307062 ... 5.388211e-15 -7.548762e-16 -5.272142e-17\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 22 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RQx7UvsucIrL" + }, + "source": [ + "# Stretch Goals\n", + "\n", + "## 1) Perform further data exploration on the HADS national dataset (the version before we one-hot encoded it) Make scatterplots and see if you can see any resemblance between the original scatterplots and the plot of the principal components that you made in 7.1. \n", + "\n", + "(You may or may not not see very much resemblance depending on the variables you choose, and that's ok!)\n", + "\n", + "## 2) Study \"Scree Plots\" and then try and make one for your PCA dataset. How many principal conponents do you need to retain in order for your PCs to contain 90% of the explained variance? \n", + "\n", + "We will present this topic formally at the beginning of tomorrow's lecture, so if you figure this stretch goal out, you're ahead of the game. \n", + "\n", + "## 3) Explore further the intuition behind eigenvalues and eigenvectors by creating your very own eigenfaces:\n", + "\n", + "Prioritize self-study over this stretch goal if you are not semi-comfortable with the topics of PCA, Eigenvalues, and Eigenvectors.\n", + "\n", + "![Eigenfaces](https://i.pinimg.com/236x/1c/f1/01/1cf101a9859437a5d096a04b05be06b4--faces-tattoo.jpg)\n", + "\n", + "You don't necessarily have to use this resource, but this will get you started: \n", + "[Eigenface Tutorial](https://sandipanweb.wordpress.com/2018/01/06/eigenfaces-and-a-simple-face-detector-with-pca-svd-in-python/)" + ] + } + ] +} \ No newline at end of file diff --git a/module4-clustering/Jacob_Torres_LS_DS_134_Clustering_Assignment.ipynb b/module4-clustering/Jacob_Torres_LS_DS_134_Clustering_Assignment.ipynb new file mode 100644 index 00000000..e5b7cd31 --- /dev/null +++ b/module4-clustering/Jacob_Torres_LS_DS_134_Clustering_Assignment.ipynb @@ -0,0 +1,2570 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Jacob_Torres_LS_DS_134_Clustering_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y-3rVFtGLMJM" + }, + "source": [ + "# K-Means Clustering" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_VS3FFSFLR3a" + }, + "source": [ + "# 1) Use the \"Breast Cancer Wisconsin (Diagnostic) Data Set\" from Kaggle to try and cluster types of cancer cells. \n", + "\n", + "Here's the original dataset for your reference:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "899RK3bBn4OE" + }, + "source": [ + "## This is a supervised learning dataset\n", + "\n", + "(Because it has **labels** - The \"diagnosis\" column.)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ws5R9X6hLJQ2", + "outputId": "4778414d-a7a1-45fa-954f-e727910bffad", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + } + }, + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.decomposition import PCA # You don't necessarily have to use this\n", + "from sklearn.cluster import KMeans # You don't necessarily have to use this\n", + "from sklearn.preprocessing import StandardScaler # You don't necessarily have to use this\n", + "\n", + "df_original = pd.read_csv(\"https://raw.githubusercontent.com/ryanleeallred/datasets/master/Cancer_Cells.csv\")\n", + "print(df_original.shape)\n", + "df_original.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(569, 33)\n" + ], + "name": "stdout" + }, + { + "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", + "
iddiagnosisradius_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_worstUnnamed: 32
0842302M17.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.11890NaN
1842517M20.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.08902NaN
284300903M19.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.08758NaN
384348301M11.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.17300NaN
484358402M20.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.07678NaN
\n", + "
" + ], + "text/plain": [ + " 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]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 250 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IHDDqaU-ove4" + }, + "source": [ + "## Now it's an unsupervised learning dataset\n", + "\n", + "(Because we've removed the diagnosis label) - Use this version." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "86MHoPJon_aC", + "outputId": "92b1badf-3389-4a71-edac-1b2457d5c4f5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 236 + } + }, + "source": [ + "df = df_original.drop(columns=['diagnosis', 'Unnamed: 32'])\n", + "df.head()" + ], + "execution_count": null, + "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", + "
idradius_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
084230217.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.11890
184251720.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.08902
28430090319.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.08758
38434830111.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.17300
48435840220.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.07678
\n", + "
" + ], + "text/plain": [ + " id radius_mean ... symmetry_worst fractal_dimension_worst\n", + "0 842302 17.99 ... 0.4601 0.11890\n", + "1 842517 20.57 ... 0.2750 0.08902\n", + "2 84300903 19.69 ... 0.3613 0.08758\n", + "3 84348301 11.42 ... 0.6638 0.17300\n", + "4 84358402 20.29 ... 0.2364 0.07678\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 251 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rskC80k3OKMA" + }, + "source": [ + "## Let's do it!\n", + "\n", + "- You might want to do some data exploration to see if you can find specific columns that will help you find distinct clusters of cells\n", + "- You might want to use the elbow method to decide on the number of clusters to use.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "U92Y3jNKPpjJ", + "outputId": "6bb313a9-9dfb-498d-df2b-136c10c2da9e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 579 + } + }, + "source": [ + "df.dtypes" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "id int64\n", + "radius_mean float64\n", + "texture_mean float64\n", + "perimeter_mean float64\n", + "area_mean float64\n", + "smoothness_mean float64\n", + "compactness_mean float64\n", + "concavity_mean float64\n", + "concave points_mean float64\n", + "symmetry_mean float64\n", + "fractal_dimension_mean float64\n", + "radius_se float64\n", + "texture_se float64\n", + "perimeter_se float64\n", + "area_se float64\n", + "smoothness_se float64\n", + "compactness_se float64\n", + "concavity_se float64\n", + "concave points_se float64\n", + "symmetry_se float64\n", + "fractal_dimension_se float64\n", + "radius_worst float64\n", + "texture_worst float64\n", + "perimeter_worst float64\n", + "area_worst float64\n", + "smoothness_worst float64\n", + "compactness_worst float64\n", + "concavity_worst float64\n", + "concave points_worst float64\n", + "symmetry_worst float64\n", + "fractal_dimension_worst float64\n", + "dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 252 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EpsV4xHDlb3P", + "outputId": "cbd37d0d-da32-40f7-fa3c-8f063133725f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 327 + } + }, + "source": [ + "df = df.drop('id', axis=1)\n", + "df.describe()" + ], + "execution_count": null, + "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", + "
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
count569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000
mean14.12729219.28964991.969033654.8891040.0963600.1043410.0887990.0489190.1811620.0627980.4051721.2168532.86605940.3370790.0070410.0254780.0318940.0117960.0205420.00379516.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946
std3.5240494.30103624.298981351.9141290.0140640.0528130.0797200.0388030.0274140.0070600.2773130.5516482.02185545.4910060.0030030.0179080.0301860.0061700.0082660.0026464.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061
min6.9810009.71000043.790000143.5000000.0526300.0193800.0000000.0000000.1060000.0499600.1115000.3602000.7570006.8020000.0017130.0022520.0000000.0000000.0078820.0008957.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.055040
25%11.70000016.17000075.170000420.3000000.0863700.0649200.0295600.0203100.1619000.0577000.2324000.8339001.60600017.8500000.0051690.0130800.0150900.0076380.0151600.00224813.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.071460
50%13.37000018.84000086.240000551.1000000.0958700.0926300.0615400.0335000.1792000.0615400.3242001.1080002.28700024.5300000.0063800.0204500.0258900.0109300.0187300.00318714.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.080040
75%15.78000021.800000104.100000782.7000000.1053000.1304000.1307000.0740000.1957000.0661200.4789001.4740003.35700045.1900000.0081460.0324500.0420500.0147100.0234800.00455818.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080
max28.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.2012000.3040000.0974402.8730004.88500021.980000542.2000000.0311300.1354000.3960000.0527900.0789500.02984036.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... symmetry_worst fractal_dimension_worst\n", + "count 569.000000 569.000000 ... 569.000000 569.000000\n", + "mean 14.127292 19.289649 ... 0.290076 0.083946\n", + "std 3.524049 4.301036 ... 0.061867 0.018061\n", + "min 6.981000 9.710000 ... 0.156500 0.055040\n", + "25% 11.700000 16.170000 ... 0.250400 0.071460\n", + "50% 13.370000 18.840000 ... 0.282200 0.080040\n", + "75% 15.780000 21.800000 ... 0.317900 0.092080\n", + "max 28.110000 39.280000 ... 0.663800 0.207500\n", + "\n", + "[8 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 253 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OUWrdtgbYyjy", + "outputId": "a635f544-3584-4da3-90b1-96834f752c8f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 310 + } + }, + "source": [ + "# Subset the data for kmeans clustering\n", + "df = df.copy()[\n", + " ['radius_mean', 'texture_mean', 'perimeter_mean', 'area_mean', 'smoothness_mean', 'compactness_mean',\n", + " 'radius_worst', 'texture_worst', 'perimeter_worst', 'area_worst', 'smoothness_worst', 'compactness_worst']\n", + "]\n", + "df.describe()" + ], + "execution_count": null, + "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", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worst
count569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000
mean14.12729219.28964991.969033654.8891040.0963600.10434116.26919025.677223107.261213880.5831280.1323690.254265
std3.5240494.30103624.298981351.9141290.0140640.0528134.8332426.14625833.602542569.3569930.0228320.157336
min6.9810009.71000043.790000143.5000000.0526300.0193807.93000012.02000050.410000185.2000000.0711700.027290
25%11.70000016.17000075.170000420.3000000.0863700.06492013.01000021.08000084.110000515.3000000.1166000.147200
50%13.37000018.84000086.240000551.1000000.0958700.09263014.97000025.41000097.660000686.5000000.1313000.211900
75%15.78000021.800000104.100000782.7000000.1053000.13040018.79000029.720000125.4000001084.0000000.1460000.339100
max28.11000039.280000188.5000002501.0000000.1634000.34540036.04000049.540000251.2000004254.0000000.2226001.058000
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... smoothness_worst compactness_worst\n", + "count 569.000000 569.000000 ... 569.000000 569.000000\n", + "mean 14.127292 19.289649 ... 0.132369 0.254265\n", + "std 3.524049 4.301036 ... 0.022832 0.157336\n", + "min 6.981000 9.710000 ... 0.071170 0.027290\n", + "25% 11.700000 16.170000 ... 0.116600 0.147200\n", + "50% 13.370000 18.840000 ... 0.131300 0.211900\n", + "75% 15.780000 21.800000 ... 0.146000 0.339100\n", + "max 28.110000 39.280000 ... 0.222600 1.058000\n", + "\n", + "[8 rows x 12 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 254 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Lm2lCM9Z3n-8", + "outputId": "7a7b1dcd-11c6-4c62-fa13-6e285b0181fe", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 316 + } + }, + "source": [ + "# Find the best value for k:\n", + "sum_of_squared_distances = []\n", + "K = range(1, 13)\n", + "for k in K:\n", + " km = KMeans(n_clusters=k)\n", + " km = km.fit(df)\n", + " sum_of_squared_distances.append(km.inertia_)\n", + "\n", + "# Print the inertia values\n", + "print(sum_of_squared_distances)\n", + "\n", + "# Plot the elbow graph\n", + "plt.xlabel('Number of clusters (K)')\n", + "plt.ylabel('Sum of squared distances (in millions)')\n", + "plt.xticks(ticks=range(1, 13))\n", + "plt.yticks(ticks=range(0, 350, 50))\n", + "plt.plot(K, sum_of_squared_distances, 'bx-')\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[255499233.1336417, 77282652.76919657, 46878484.46069864, 28781127.702141505, 20180353.514803693, 16176871.156065524, 12859545.712581772, 10952676.698887236, 9164492.365829851, 8167911.523061521, 7315384.09659356, 6536910.992331707]\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "g2c9yWOyIb-G", + "outputId": "7223c5cb-44c7-493b-cf75-6367599a49a8", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# Audio graph imports\n", + "!pip install sonipy\n", + "from sonipy.sonify import SonifyTool" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Requirement already satisfied: sonipy in /usr/local/lib/python3.6/dist-packages (1.0)\n", + "Requirement already satisfied: pydub in /usr/local/lib/python3.6/dist-packages (from sonipy) (0.24.1)\n", + "Requirement already satisfied: seaborn in /usr/local/lib/python3.6/dist-packages (from sonipy) (0.11.0)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (from sonipy) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.16 in /usr/local/lib/python3.6/dist-packages (from sonipy) (1.18.5)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.6/dist-packages (from sonipy) (3.2.2)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.6/dist-packages (from sonipy) (1.1.2)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.6/dist-packages (from matplotlib->sonipy) (0.10.0)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->sonipy) (1.2.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->sonipy) (2.4.7)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.6/dist-packages (from matplotlib->sonipy) (2.8.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.6/dist-packages (from pandas->sonipy) (2018.9)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from cycler>=0.10->matplotlib->sonipy) (1.15.0)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1G7AlDcZIm89" + }, + "source": [ + "# Audio graph\n", + "duration_args = {'time_total': 3000}\n", + "\n", + "# Uncomment the line below to play the audio graph\n", + "#SonifyTool(x=K, y=sum_of_squared_distances, duration_args=duration_args).play()" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "TjpOhJjLHuCQ", + "outputId": "15fe2709-d415-48d1-fe78-ad09d81b218e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "# Perform kmeans clustering with k=2\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(df)\n", + "df['clusters'] = kmeans.labels_\n", + "df['clusters'].value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1 439\n", + "0 130\n", + "Name: clusters, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 258 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I4gKoEpZpOCR", + "outputId": "4b87f9da-e9ae-4aff-dbd3-9c855ff782bb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# Visualize the clusters\n", + "plt.scatter(x=df['radius_mean'], y=df['radius_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "n4hhaq_yk2l2", + "outputId": "793f0c43-73d4-438b-c422-95576863371c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "plt.scatter(x=df['texture_mean'], y=df['texture_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "IHktbyTVrXEW", + "outputId": "a5e48808-88bf-4dec-f86d-e413e7189a97", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "plt.scatter(x=df['area_mean'], y=df['area_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "uC-XZp_7j_3k", + "outputId": "7e8151f8-c9c9-477c-98c3-f8f770abca03", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "plt.scatter(x=df['perimeter_mean'], y=df['perimeter_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "dyq2jHY0tkpJ", + "outputId": "93e5c466-1915-409f-f539-fc0ec44454b6", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "plt.scatter(x=df['smoothness_mean'], y=df['smoothness_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "N5UYIYrM67NY", + "outputId": "1e043c1b-c513-4adc-fe07-feeebf98ef59", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "plt.scatter(x=df['compactness_mean'], y=df['compactness_worst'], c=df['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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" + }, + "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", + "outputId": "24e91b4b-8be6-46b9-e701-1d40bb0b4dc7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 219 + } + }, + "source": [ + "df['diagnosis'] = df_original['diagnosis']\n", + "df.head()" + ], + "execution_count": null, + "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", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstclustersdiagnosis
017.9910.38122.801001.00.118400.2776025.3817.33184.602019.00.16220.66560M
120.5717.77132.901326.00.084740.0786424.9923.41158.801956.00.12380.18660M
219.6921.25130.001203.00.109600.1599023.5725.53152.501709.00.14440.42450M
311.4220.3877.58386.10.142500.2839014.9126.5098.87567.70.20980.86631M
420.2914.34135.101297.00.100300.1328022.5416.67152.201575.00.13740.20500M
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... clusters diagnosis\n", + "0 17.99 10.38 ... 0 M\n", + "1 20.57 17.77 ... 0 M\n", + "2 19.69 21.25 ... 0 M\n", + "3 11.42 20.38 ... 1 M\n", + "4 20.29 14.34 ... 0 M\n", + "\n", + "[5 rows x 14 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 265 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gCATuBE5Jfgk", + "outputId": "83e3c2b4-c0c8-4e79-ce05-a4dc88133b5f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "df['diagnosis'].value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "B 357\n", + "M 212\n", + "Name: diagnosis, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 266 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "TIwU2tnDKQg0", + "outputId": "128920b1-e642-417c-c027-c8e31af74319", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 169 + } + }, + "source": [ + "(pd.crosstab(index=df['clusters'],\n", + " columns=df['diagnosis'],\n", + " normalize=True, margins=True)) * 100" + ], + "execution_count": null, + "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", + "
diagnosisBMAll
clusters
00.17574722.67135322.8471
162.56590514.58699577.1529
All62.74165237.258348100.0000
\n", + "
" + ], + "text/plain": [ + "diagnosis B M All\n", + "clusters \n", + "0 0.175747 22.671353 22.8471\n", + "1 62.565905 14.586995 77.1529\n", + "All 62.741652 37.258348 100.0000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 284 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BedOTS0eJ9_K" + }, + "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", + "outputId": "a8a10ac5-aa89-4d44-f8b1-83555977c275", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 217 + } + }, + "source": [ + "# Standardize the data\n", + "principle_components = df.drop('diagnosis', axis=1)\n", + "scaler = StandardScaler()\n", + "pca = PCA(n_components=0.9)\n", + "Z = scaler.fit_transform(principle_components)\n", + "principle_components = pd.DataFrame(pca.fit_transform(Z))\n", + "\n", + "print(principle_components.shape)\n", + "principle_components.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(569, 4)\n" + ], + "name": "stdout" + }, + { + "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", + "
0123
05.0695692.399980-3.4321811.555644
13.747829-2.669786-1.423654-0.560089
24.4239040.135107-0.756282-0.089172
31.3433766.9033620.1784111.265439
43.438885-1.149978-2.827432-0.460856
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3\n", + "0 5.069569 2.399980 -3.432181 1.555644\n", + "1 3.747829 -2.669786 -1.423654 -0.560089\n", + "2 4.423904 0.135107 -0.756282 -0.089172\n", + "3 1.343376 6.903362 0.178411 1.265439\n", + "4 3.438885 -1.149978 -2.827432 -0.460856" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 268 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yo-6WlnFm10p", + "outputId": "67bc147a-0b3f-4443-eb29-6ecba171a5c0", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 199 + } + }, + "source": [ + "# Rename principle component columns\n", + "pc_cols = []\n", + "for i in principle_components.columns:\n", + " pc_cols.append(f\"PC{i+1}\")\n", + "\n", + "principle_components.columns = pc_cols\n", + "principle_components.head()" + ], + "execution_count": null, + "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
05.0695692.399980-3.4321811.555644
13.747829-2.669786-1.423654-0.560089
24.4239040.135107-0.756282-0.089172
31.3433766.9033620.1784111.265439
43.438885-1.149978-2.827432-0.460856
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 PC4\n", + "0 5.069569 2.399980 -3.432181 1.555644\n", + "1 3.747829 -2.669786 -1.423654 -0.560089\n", + "2 4.423904 0.135107 -0.756282 -0.089172\n", + "3 1.343376 6.903362 0.178411 1.265439\n", + "4 3.438885 -1.149978 -2.827432 -0.460856" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 269 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "RM7MFu70wZLY", + "outputId": "f3ea05be-7532-4208-db6e-127e0bf03aeb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 290 + } + }, + "source": [ + "principle_components.describe()" + ], + "execution_count": null, + "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", + "
PC1PC2PC3PC4
count5.690000e+025.690000e+025.690000e+025.690000e+02
mean-7.024258e-17-1.139491e-16-4.760886e-173.258475e-17
std2.778672e+001.519665e+001.284437e+007.701293e-01
min-4.260721e+00-3.246944e+00-3.432181e+00-1.693007e+00
25%-2.054315e+00-1.073269e+00-8.626120e-01-5.033166e-01
50%-1.008188e+00-2.037317e-01-1.121198e-01-7.409345e-02
75%1.625827e+009.362490e-017.179154e-014.322451e-01
max1.116828e+016.903362e+004.707096e+003.152067e+00
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 PC4\n", + "count 5.690000e+02 5.690000e+02 5.690000e+02 5.690000e+02\n", + "mean -7.024258e-17 -1.139491e-16 -4.760886e-17 3.258475e-17\n", + "std 2.778672e+00 1.519665e+00 1.284437e+00 7.701293e-01\n", + "min -4.260721e+00 -3.246944e+00 -3.432181e+00 -1.693007e+00\n", + "25% -2.054315e+00 -1.073269e+00 -8.626120e-01 -5.033166e-01\n", + "50% -1.008188e+00 -2.037317e-01 -1.121198e-01 -7.409345e-02\n", + "75% 1.625827e+00 9.362490e-01 7.179154e-01 4.322451e-01\n", + "max 1.116828e+01 6.903362e+00 4.707096e+00 3.152067e+00" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 270 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bGxXcvPxxCFf", + "outputId": "be89c6b6-1cc0-4d05-fc7b-d858ceaf0ba5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "print(f\"\"\"\n", + "Variance percentages: {pca.explained_variance_ratio_ *100}\n", + "\"\"\")" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "Variance percentages: [59.28804874 17.7332576 12.66829158 4.55428267]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "N4gc7OWqxTHd", + "outputId": "49c56380-ce0f-42e3-8aba-0488da14b012", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 316 + } + }, + "source": [ + "# Perform kmeans clustering of the principle components, just the first two\n", + "first_two_pcs = principle_components[['PC1', 'PC2']]\n", + "\n", + "# Find best value of k\n", + "K = range(1, 11)\n", + "sum_of_squared_distances = []\n", + "for k in K:\n", + " km = KMeans(n_clusters=k)\n", + " km = km.fit(first_two_pcs)\n", + " sum_of_squared_distances.append(km.inertia_)\n", + "\n", + "# Print the inertia values\n", + "print(sum_of_squared_distances)\n", + "\n", + "# Plot the inertia values\n", + "plt.plot(K, sum_of_squared_distances, 'bx-')\n", + "plt.xticks(ticks=range(0, 11))\n", + "plt.yticks(ticks=range(0, 6))\n", + "plt.xlabel('Number of Clusters (K)')\n", + "plt.ylabel('Sum of Squared Distances (in thousands)')\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[5697.266029995058, 2423.676286604752, 1713.8943983617223, 1375.3921122569516, 1114.4039466094957, 936.8421262303988, 832.7017907802748, 739.0867598940645, 675.184734885664, 610.2855450466519]\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Rw-kjyyuuD0o" + }, + "source": [ + "# Audio graph\n", + "# Uncomment the line below to play the audio graph\n", + "#SonifyTool(x=K, y=sum_of_squared_distances, duration_args=duration_args).play()" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "xKkW1XX6OtNt", + "outputId": "07c6e9c2-a487-44a1-8d58-70c1f3422237", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "# Perform kmeans clustering\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(first_two_pcs)\n", + "principle_components['clusters'] = kmeans.labels_\n", + "principle_components['clusters'].value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1 413\n", + "0 156\n", + "Name: clusters, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 273 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "W-un6yCp98ZA", + "outputId": "3f39633f-ad65-4239-e942-969e74c8b60f", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + } + }, + "source": [ + "# Perform kmeans clustering on all components\n", + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(principle_components)\n", + "principle_components['clusters'] = kmeans.labels_\n", + "principle_components['clusters'].value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1 413\n", + "0 156\n", + "Name: clusters, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 274 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z92hsuqBDsqN", + "outputId": "6ced3a8e-effe-4df0-9337-7c796944e4eb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 169 + } + }, + "source": [ + "principle_components['diagnosis'] = df_original['diagnosis']\n", + "\n", + "# Crosstab of clusters and diagnosis\n", + "(pd.crosstab(index=principle_components['clusters'],\n", + " columns=principle_components['diagnosis'],\n", + " normalize=True, margins=True)) * 100" + ], + "execution_count": null, + "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", + "
diagnosisBMAll
clusters
00.00000027.41652027.41652
162.7416529.84182872.58348
All62.74165237.258348100.00000
\n", + "
" + ], + "text/plain": [ + "diagnosis B M All\n", + "clusters \n", + "0 0.000000 27.416520 27.41652\n", + "1 62.741652 9.841828 72.58348\n", + "All 62.741652 37.258348 100.00000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 275 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BIixS1Nry87O", + "outputId": "bbce4913-0fd2-470d-a412-99fb29d79b93", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + } + }, + "source": [ + "# Visualize the clusters\n", + "plt.scatter(x=principle_components['PC1'], y=principle_components['PC2'],\n", + " c=principle_components['clusters'])\n", + "plt.show()" + ], + "execution_count": null, + "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": "PkrfbzfBROpP" + }, + "source": [ + "## Check your work: \n", + "\n", + "- Compare your PC1, PC2 clustering scatterplot to the clustering scatterplots you made on the raw data\n", + "- Calculate accuracy scores for both the PC1,PC2 Principal component clustering and the 90% of explained variance clustering.\n", + "\n", + "How do your accuracy scores -when preprocessing the data with PCA- compare to the accuracy when simply clustering on the raw data?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "LLc95J3ChKkN" + }, + "source": [ + "The crosstabs above show the split between cells labeled B (benign) and cells labeled M (malignant,) as it relates to the clusters that kmeans placed them in.\n", + "\n", + "The first table was produced using the raw data, and shows slightly less accuracy in the kmeans clusters than the second table, which was produced using the principle components. In table 1, about 0.2% of benign cells and about 15% of the malignant cells were placed in the wrong cluster. In table 2, all benign cells were clustered correctly. Only about 10% of malignant cells were misplaced as opposed to 15." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wKBwVaGOOYsq" + }, + "source": [ + "# Stretch Goals:\n", + "\n", + "- Study for the Sprint Challenge\n", + "- Work on your Data Storytelling Project" + ] + } + ] +} \ No newline at end of file