From c77d7399b74434e4c30443cb0c6f268d296c5ebb Mon Sep 17 00:00:00 2001 From: Nick A Date: Mon, 17 Aug 2020 17:15:01 -0500 Subject: [PATCH 1/4] Created using Colaboratory --- ..._131_Vectors_and_Matrices_Assignment.ipynb | 733 ++++++++++++++++-- 1 file changed, 678 insertions(+), 55 deletions(-) diff --git a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb index 87fc432d..7a4f5dc0 100644 --- a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb +++ b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices_Assignment.ipynb @@ -5,7 +5,8 @@ "colab": { "name": "LS_DS_131_Vectors_and_Matrices_Assignment.ipynb", "provenance": [], - "collapsed_sections": [] + "collapsed_sections": [], + "include_colab_link": true }, "kernelspec": { "name": "python3", @@ -13,6 +14,16 @@ } }, "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, { "cell_type": "markdown", "metadata": { @@ -40,13 +51,38 @@ "metadata": { "id": "XNqjzQzrkVG7", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "5b29f47a-ef8e-4eec-8bc5-fa6c311dfc39" }, "source": [ - "" + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "vect2d = [.7, .3]\n", + "\n", + "plt.arrow(0,0, vect2d[0], vect2d[1], head_width=.03, head_length= .03, color='red')\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 8, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -63,13 +99,45 @@ "metadata": { "id": "atUEd3T6llKm", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "80b6cd5d-7a28-4d78-f014-124b2dbfe0b1" }, "source": [ - "" + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "vect3d = np.array([0, 0, 0, 3, 2, 3])\n", + "\n", + "X, Y, Z, U, V, W = vect3d\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X, Y, Z, U, V, W, length=1)\n", + "ax.set_xlim([0, 3])\n", + "ax.set_ylim([0, 3])\n", + "ax.set_zlim([0, 3])\n", + "ax.set_xlabel('X')\n", + "ax.set_ylabel('Y')\n", + "ax.set_zlabel('Z')\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 65, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -86,18 +154,19 @@ "metadata": { "id": "ah6zMSLJdJwL", "colab_type": "code", - "outputId": "b1ccb836-02b8-4d42-a7db-6c34f010f6c6", "colab": { "base_uri": "https://localhost:8080/", - "height": 52 - } + "height": 51 + }, + "outputId": "0c6dd376-edd4-4597-d210-0d72255f3295" }, "source": [ + "import math\n", "from math import e, pi\n", "print(e)\n", "print(pi)" ], - "execution_count": 0, + "execution_count": 13, "outputs": [ { "output_type": "stream", @@ -114,13 +183,43 @@ "metadata": { "id": "3qpwDlzXkVf5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "b652989d-8496-4bf6-fa14-a7f153594b4a" }, "source": [ - "" + "one = np.multiply(5, vect2d)\n", + "two = np.multiply(math.pi, vect2d)\n", + "three = np.multiply(math.e, vect2d)\n", + "\n", + "plt.arrow(0,0, vect2d[0], vect2d[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, one[0], one[1],head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, two[0], two[1],head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, three[0], three[1],head_width=.05, head_length=0.05, color ='orange')\n", + "\n", + "plt.xlim(-.5,4)\n", + "plt.ylim(-.5,2) \n", + " \n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -143,13 +242,39 @@ "metadata": { "id": "I1BGXA_skV-b", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "7df83105-52bf-4743-9c19-bda1ed41a2d9" }, "source": [ - "" + "a = np.array([5, 7])\n", + "b = np.array([3, 4])\n", + "\n", + "plt.arrow(0 ,0 , a[0], a[1], head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0 ,0 , b[0], b[1], head_width=.05, head_length=0.05, color ='blue')\n", + "plt.xlim(0,6) \n", + "plt.ylim(0,8)\n", + "\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 27, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -166,13 +291,68 @@ "metadata": { "id": "68sWHIOPkXp5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "0402c38c-45e5-476c-e42a-97dd907cf169" }, "source": [ - "" + "c = a-b\n", + "c" ], - "execution_count": 0, - "outputs": [] + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([2, 3])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0jT_hLCg8jzp", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "c8c9e132-f877-400f-96f2-7a58e66e4837" + }, + "source": [ + "plt.arrow(0 ,0 , a[0], a[1], head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0 ,0 , b[0], b[1], head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0 ,0 , c[0], c[1], head_width=.05, head_length=0.05, color ='green')\n", + "plt.xlim(0,6) \n", + "plt.ylim(0,8)\n", + "\n", + "plt.show()" + ], + "execution_count": 30, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -195,13 +375,32 @@ "metadata": { "id": "2_cZQFCskYNr", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "ab2e7f7c-bf53-4b03-ef46-7882ecbb1aaa" }, "source": [ - "" + "c = np.array([7,22,4,16])\n", + "d = np.array([12,6,2,9])\n", + "np.vdot(c,d)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 32, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "368" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 32 + } + ] }, { "cell_type": "markdown", @@ -224,13 +423,32 @@ "metadata": { "id": "ku-TdCKAkYs8", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "dc4327b5-5894-42b6-8e18-116de0f16ee8" }, "source": [ - "" + "e = np.array([5,7,2])\n", + "f = np.array([3,4,6])\n", + "e*f" ], - "execution_count": 0, - "outputs": [] + "execution_count": 33, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([15, 28, 12])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 33 + } + ] }, { "cell_type": "markdown", @@ -253,13 +471,74 @@ "metadata": { "id": "-5VKOMKBlgaA", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "989b58d6-b732-4926-fbdd-f60756117798" }, "source": [ - "" + "g = np.array([1,1,1,8])\n", + "\n", + "np.sqrt((g**2).sum())" ], - "execution_count": 0, - "outputs": [] + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "8.18535277187245" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mtCCr6NQ-rGX", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "bdc6bdfd-fb62-4a85-a8a1-a0ac21badada" + }, + "source": [ + "h = np.array([3,3,3,3,])\n", + "\n", + "np.sqrt((h**2).sum())" + ], + "execution_count": 36, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "6.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 36 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GxI5bboZ-8vo", + "colab_type": "text" + }, + "source": [ + "# The norm of g is longer." + ] }, { "cell_type": "markdown", @@ -316,9 +595,14 @@ "colab": {} }, "source": [ - "" + "# A (3,2), B (1,3), C = (2,3), D = (3,3), E = (2,2)\n", + "# A*C, A*E\n", + "# B*A, B*D\n", + "# C*A, C*D\n", + "# D*A\n", + "# E*C" ], - "execution_count": 0, + "execution_count": null, "outputs": [] }, { @@ -339,11 +623,117 @@ "colab": {} }, "source": [ - "" + "# create each matrix\n", + "A = np.array([[1,2],\n", + " [3,4],\n", + " [5,6]])\n", + "B = np.array([2,4,6])\n", + "C = np.array([[9,6,3],\n", + " [4,7,11]])\n", + "D = np.array([[1,0,0],\n", + " [0,1,0],\n", + " [0,0,1]])\n", + "E = np.array([[1,3],\n", + " [5,7]])" ], - "execution_count": 0, + "execution_count": 40, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "UaT7CGSQA-1B", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "3bfcba4a-e9d5-40e1-abf6-e5bceff41d36" + }, + "source": [ + "# CD is a (2,3) matrix, which matches the \"outside\" dimensions of the factor matrices\n", + "np.matmul(C,D)" + ], + "execution_count": 41, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 9, 6, 3],\n", + " [ 4, 7, 11]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "aNOFHUPjBjuR", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "9c27ffa0-7590-4d1a-b522-177362dc6e96" + }, + "source": [ + "# AE is a (3,2) matrix\n", + "np.matmul(A,E)" + ], + "execution_count": 43, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[11, 17],\n", + " [23, 37],\n", + " [35, 57]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "uAxcKXHyBtWt", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "a04e0766-25b7-41bd-ab1c-920c9a03d577" + }, + "source": [ + "np.matmul(B,A)" + ], + "execution_count": 44, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([44, 56])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -370,13 +760,41 @@ "metadata": { "id": "Wl3ElwgLqaAn", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "outputId": "4330a00c-36d3-4327-8306-ec9db69eb843" }, "source": [ - "" + "# F is a (5,4) matrix and its transpose is (4,5).\n", + "# The main diagonal is the same for both matrices\n", + "F = np.array([[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", + "# To transpose F\n", + "F.T" ], - "execution_count": 0, - "outputs": [] + "execution_count": 47, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[20, 16, 12, 8, 4],\n", + " [19, 15, 11, 7, 3],\n", + " [18, 14, 10, 6, 2],\n", + " [17, 13, 9, 5, 1]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 47 + } + ] }, { "cell_type": "markdown", @@ -385,6 +803,7 @@ "colab_type": "text" }, "source": [ + "\n", "# Part 3 - Square Matrices" ] }, @@ -413,13 +832,35 @@ "metadata": { "id": "ZnqvZBOYqar3", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "1ae3984f-a53e-43da-96c6-04e505df3016" }, "source": [ - "" + "G = np.array([[13,14],\n", + " [21,12]])\n", + "I = np.array([[1,0],\n", + " [0,1]])\n", + "np.matmul(I,G)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 45, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[13, 14],\n", + " [21, 12]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 45 + } + ] }, { "cell_type": "markdown", @@ -454,11 +895,75 @@ "colab": {} }, "source": [ - "" + "H = np.array([[12,11],\n", + " [7,10]])\n", + "J = np.array([[0,1,2],\n", + " [7,10,4],\n", + " [3,2,0]])" ], - "execution_count": 0, + "execution_count": 48, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "TtqJavIoDi3J", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "fcb889b7-eb1b-430d-e436-cb0042e1c76e" + }, + "source": [ + "np.linalg.det(H)" + ], + "execution_count": 49, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "43.000000000000014" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 49 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dWtcRFjsFLTu", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "e6ca6056-3dea-4154-9a64-e0426c7a736c" + }, + "source": [ + "np.linalg.det(J)" + ], + "execution_count": 50, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-19.999999999999996" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 50 + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -474,13 +979,63 @@ "metadata": { "id": "nyX6De2-rio1", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "b47adf30-397d-4b79-fcb8-db448c2129d1" }, "source": [ - "" + "np.linalg.inv(H)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 51, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 0.23255814, -0.25581395],\n", + " [-0.1627907 , 0.27906977]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 51 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "XYiY51d0F9dY", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "7f908459-1ed3-4bbd-bd42-4e0631c456dc" + }, + "source": [ + "np.linalg.inv(J)" + ], + "execution_count": 52, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 0.4 , -0.2 , 0.8 ],\n", + " [-0.6 , 0.3 , -0.7 ],\n", + " [ 0.8 , -0.15, 0.35]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 52 + } + ] }, { "cell_type": "markdown", @@ -494,6 +1049,74 @@ "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": "9mKI6PRuGPfs", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "2cf2881e-d6a4-47b4-a0c0-55ee2f5e2818" + }, + "source": [ + "HI = np.linalg.inv(H)\n", + "np.matmul(H, HI)\n", + "# this would be an Identity Matrix, but there are Python rounding errors." + ], + "execution_count": 59, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[1.00000000e+00, 5.55111512e-16],\n", + " [2.22044605e-16, 1.00000000e+00]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 59 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YzqG--FWHmvP", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "34497d73-4f00-4fac-e6b7-29525e13f9f2" + }, + "source": [ + "JI = np.linalg.inv(J)\n", + "np.matmul(JI,J)\n", + "# this also returns an Identity Matrix, even though their order is swapped.\n", + "# I would not count them as equal as their dimensions are different not compatible" + ], + "execution_count": 60, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 1.00000000e+00, 2.22044605e-16, 0.00000000e+00],\n", + " [-1.11022302e-16, 1.00000000e+00, 0.00000000e+00],\n", + " [-1.66533454e-16, -1.11022302e-16, 1.00000000e+00]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 60 + } + ] + }, { "cell_type": "markdown", "metadata": { From 22a2a2c4b87e89e5013057161029227f262a2f87 Mon Sep 17 00:00:00 2001 From: Nick A Date: Tue, 18 Aug 2020 18:07:06 -0500 Subject: [PATCH 2/4] Created using Colaboratory --- ...termediate_Linear_Algebra_Assignment.ipynb | 1559 +++++++++++++++++ 1 file changed, 1559 insertions(+) create mode 100644 LS_module2-intermediate-linear-algebra/_132_Intermediate_Linear_Algebra_Assignment.ipynb diff --git a/LS_module2-intermediate-linear-algebra/_132_Intermediate_Linear_Algebra_Assignment.ipynb b/LS_module2-intermediate-linear-algebra/_132_Intermediate_Linear_Algebra_Assignment.ipynb new file mode 100644 index 00000000..3a84fb2f --- /dev/null +++ b/LS_module2-intermediate-linear-algebra/_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -0,0 +1,1559 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true, + "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", + "colab_type": "text" + }, + "source": [ + "# Statistics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3d4izUhQvh2_", + "colab_type": "text" + }, + "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": "w1iZfYvBtEA1", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ], + "execution_count": 17, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "C6H9nK7uATnu", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "500b8d1a-0758-4e53-f693-450c6e18b9af" + }, + "source": [ + "sales = np.array([3505, 2400, 3027, 2798, 3700, 3250, 2689])\n", + "\n", + "# creating a mean function\n", + "def meanfunc(list):\n", + " mean = list.sum() / len(list)\n", + " return mean\n", + "\n", + "# finding the mean for each variable\n", + "salesmean = meanfunc(sales)\n", + "salesmean" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3052.714285714286" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 35 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mWZZL2mpeQaZ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "1a29494e-69d9-434d-b2fe-e63aa0fad3ca" + }, + "source": [ + "# finding the diffence between sales and mean for each variable\n", + "difsales = sales - salesmean\n", + "difsales" + ], + "execution_count": 37, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 452.28571429, -652.71428571, -25.71428571, -254.71428571,\n", + " 647.28571429, 197.28571429, -363.71428571])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 37 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "98CplGmtLfuJ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "6b8f4664-32ea-4430-95f9-4a2edfdec520" + }, + "source": [ + "# squaring the difference of each value\n", + "squaresales = difsales**2\n", + "\n", + "# sum of each difference squared over 1 less the length of the data\n", + "varsales = squaresales.sum() / (len(sales - 1))\n", + "varsales" + ], + "execution_count": 38, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "183761.06122448976" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 38 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "TQcGESsgfoTb", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "a828824a-bda2-41cd-f52e-1d07f7e66455" + }, + "source": [ + "# standard deviation\n", + "STDsales = np.sqrt(varsales)\n", + "STDsales" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "428.67360686714756" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oh63KaOctEp_", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 111 + }, + "outputId": "1443604c-9cf1-4b21-8176-927870b1052d" + }, + "source": [ + "# making the 'customer' array\n", + "customers = np.array([127, 80, 105, 92, 120, 115, 93])\n", + "\n", + "# converting the arrays into a dataframe\n", + "frame = {\"sales\":sales, \"customers\":customers}\n", + "df = pd.DataFrame(frame)\n", + "\n", + "# using the .cov() function for covariance.\n", + "df.cov()" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
salescustomers
sales214387.9047627604.357143
customers7604.357143290.952381
\n", + "
" + ], + "text/plain": [ + " sales customers\n", + "sales 214387.904762 7604.357143\n", + "customers 7604.357143 290.952381" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 20 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J9SbUY9mt66I", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "8deca2d8-a043-4f89-9f86-9c237a357165" + }, + "source": [ + "# collapsing the steps from above into one line\n", + "STDcust = np.sqrt(((customers - customers.mean())**2).sum() / (len(customers)-1))\n", + "STDcust" + ], + "execution_count": 44, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "17.057326313123664" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nKkb3wd6hXyO", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 111 + }, + "outputId": "c1e93a81-9acd-415d-cb2a-197fefcb31c7" + }, + "source": [ + "df.corr()" + ], + "execution_count": 45, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
salescustomers
sales1.0000000.962834
customers0.9628341.000000
\n", + "
" + ], + "text/plain": [ + " sales customers\n", + "sales 1.000000 0.962834\n", + "customers 0.962834 1.000000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 45 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IbZVf7nmujPJ", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "d365d928-2b08-4753-dfd3-65f6241b5aab" + }, + "source": [ + "!wget https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv" + ], + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "text": [ + "--2020-08-18 21:49:06-- https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 137509 (134K) [text/plain]\n", + "Saving to: ‘titanic_clean.csv’\n", + "\n", + "\rtitanic_clean.csv 0%[ ] 0 --.-KB/s \rtitanic_clean.csv 100%[===================>] 134.29K --.-KB/s in 0.02s \n", + "\n", + "2020-08-18 21:49:06 (5.28 MB/s) - ‘titanic_clean.csv’ saved [137509/137509]\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CGpKT2BfjB-n", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289 + }, + "outputId": "1858d6f2-d94c-4f80-8b9a-61213cf786d9" + }, + "source": [ + "titanic = pd.read_csv('titanic_clean.csv')\n", + "titanic.head()" + ], + "execution_count": 55, + "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", + "
Unnamed: 0pclasssurvivednamesexagesibspparchticketfarecabinembarkedboatbodyhome.desthas_cabin_number
011.01.0Allen, Miss. Elisabeth Waltonfemale29.00000.00.024160211.3375B5S2NaNSt Louis, MO1
121.01.0Allison, Master. Hudson Trevormale0.91671.02.0113781151.5500C22 C26S11NaNMontreal, PQ / Chesterville, ON1
231.00.0Allison, Miss. Helen Lorainefemale2.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
341.00.0Allison, Mr. Hudson Joshua Creightonmale30.00001.02.0113781151.5500C22 C26SNaN135.0Montreal, PQ / Chesterville, ON1
451.00.0Allison, Mrs. Hudson J C (Bessie Waldo Daniels)female25.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 pclass ... home.dest has_cabin_number\n", + "0 1 1.0 ... St Louis, MO 1\n", + "1 2 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "2 3 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "3 4 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "4 5 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "\n", + "[5 rows x 16 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 55 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SyXupYY5jfA0", + "colab_type": "code", + "colab": {} + }, + "source": [ + "titanic = titanic.drop('Unnamed: 0', axis=1)" + ], + "execution_count": 56, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "rgtsNSukj9tH", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "outputId": "842908ef-29db-4426-95d4-aba8d2c713a8" + }, + "source": [ + "titanic.corr()" + ], + "execution_count": 53, + "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": 53 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4uhksLVxkB5z", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "outputId": "b6f307ec-16e1-4f7c-b552-663c3614838c" + }, + "source": [ + "titanic.cov()" + ], + "execution_count": 54, + "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": 54 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7K0Xfh8MvYkl", + "colab_type": "text" + }, + "source": [ + "# Orthogonality" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pe3eOZ2fvdZ-", + "colab_type": "text" + }, + "source": [ + "## 2.1 Plot two vectors that are orthogonal to each other. What is a synonym for orthogonal?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YLSBk7hJvvCx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 269 + }, + "outputId": "8e8082bf-fbb2-48d8-96fd-f7a075b9b4d2" + }, + "source": [ + "# Perpendicular is a synonym for orthogonal\n", + "a = [3,3]\n", + "b = [-3,3]\n", + "\n", + "plt.arrow(0, 0, a[0], a[1], head_width=.5, head_length=.5, color='blue')\n", + "plt.arrow(0, 0, b[0], b[1], head_width=.5, head_length=.5, color='red')\n", + "plt.xlim(-3,3) \n", + "plt.ylim(0,3)\n", + "plt.show()" + ], + "execution_count": 64, + "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": "7AS4V1Nhvvxz", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "0fc659cd-3d47-420f-eae1-2b4f5db434c0" + }, + "source": [ + "# They are NOT orthogonal because the dot product is not zero.\n", + "a = np.array([-5,3,7])\n", + "b = np.array([6,-8,2])\n", + "np.vdot(a,b)" + ], + "execution_count": 65, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-40" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 65 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MiNjyqiEz5SG", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": {} + }, + "source": [ + "c = np.array([2,-15,6,20])" + ], + "execution_count": 66, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "nhlaFtv3nl5y", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "330456e7-ca93-4f4f-c777-96c8f3f581de" + }, + "source": [ + "# squaring the norm\n", + "(np.sqrt((c**2).sum()))**2" + ], + "execution_count": 71, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "665.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 71 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "59HUe6V6ncPY", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "c1e2b1e3-55aa-42b6-9645-588071cc9a00" + }, + "source": [ + "# dot product\n", + "np.vdot(c,c)" + ], + "execution_count": 67, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "665" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 67 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "FEEOT6NOnoLp", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "f52e07c0-4842-4b25-aa6a-3cde22bf539d" + }, + "source": [ + "# multiplying by the inverse doesn't show much initally\n", + "# but the sum matches the other values\n", + "cT = c.T\n", + "print(cT*c)\n", + "print((cT*c).sum())" + ], + "execution_count": 74, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[ 4 225 36 400]\n", + "665\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MK_TpWqk1Evk", + "colab_type": "text" + }, + "source": [ + "# Unit Vectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kpit6WWO1b8l", + "colab_type": "text" + }, + "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", + "colab_type": "text" + }, + "source": [ + "Your text here" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dAdUQuep1_yJ", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o39UyP-I5lpP", + "colab_type": "text" + }, + "source": [ + "# Linear Independence / Dependence " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ajfBqYe45sT5", + "colab_type": "text" + }, + "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": "markdown", + "metadata": { + "id": "TrJ0MT_n3SvO", + "colab_type": "text" + }, + "source": [ + "# Span" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "86iXLzwM2z8l", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l1deylUj4IHH", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBqe7X1732kX", + "colab_type": "text" + }, + "source": [ + "# Basis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YeUZVHRM6PpT", + "colab_type": "text" + }, + "source": [ + "## 6.1 Graph two vectors that form a basis for $\\mathbb{R}^2$\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "utvF3Pkt8NP6", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "20yPFBDUxxnS", + "colab_type": "text" + }, + "source": [ + "## 6.2 What does it mean to form a basis?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3w4tEayT8M0o", + "colab_type": "text" + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EHmUxbcY6vD3", + "colab_type": "text" + }, + "source": [ + "# Rank" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IpJwt9kw6v8U", + "colab_type": "text" + }, + "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": "markdown", + "metadata": { + "id": "jGqFMBYY7mHD", + "colab_type": "text" + }, + "source": [ + "## 7.2 What does the rank of a matrix tell us?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vjg1IiCD8nnP", + "colab_type": "text" + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0Db2sc_V8QD6", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TKkrPwRM-Oar", + "colab_type": "text" + }, + "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", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 347 + }, + "outputId": "12502200-eafe-4e20-bfb7-2d539c6027cb" + }, + "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": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdkAAAFKCAYAAABRtSXvAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAGBhJREFUeJzt3X9s1IX9x/FXe9craXvKlR4VDPgD\nvOFGjDXRBcVfBCWCWQIbtusQFxcnqWy6yAargHxDXALZEicSYfz4Y1sWO1GxS1QMvzK38CNIg+ki\nlrJsK20p1/YGJ6XH9XrfP/jSL3MtV9p73+fu4/PxF+U++fT9Tn88+/lcf+Qlk8mkAABA2uU7PQAA\nAG5FZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAw4k33CcPhaLpPqUCgSJFIT9rPm2lu2UNyzy5u2UNi\nl2zklj0kdrmaYNA/5GM5cSXr9XqcHiEt3LKH5J5d3LKHxC7ZyC17SOwyUjkRWQAAchGRBQDACJEF\nAMAIkQUAwAiRBQDACJEFAMAIkQUAwAiRBQDASMrf+HT+/HktX75cZ8+eVTwe13PPPaf7778/E7MB\nGKZYPKH2zvNKxBMqLHDPLw0A0i3THyspI/vuu+/qlltu0YsvvqiOjg499dRT+vDDD80HA5Baor9f\ndXub1dAUVnc0plJ/oSpCQVXOmipPPjeqgMuc+lhJGdlAIKDPP/9cknTu3DkFAgGzYQBcm7q9zdp9\n5NTAy13nYgMvV88OOTUWkHWc+lhJme958+apra1NjzzyiBYtWqTly5ebDQNg+GLxhBqawoM+1tDU\nqVg8keGJgOzk5MdKyivZ9957TxMnTtS2bdt0/Phx1dbW6p133hny+ECgyOSXL1/trxzkErfsIbln\nl1zdo73zvLqjsUEfi0R75fEVKFhWnOGp0idX3y5f5pY9pNzdxcmPlZSRPXr0qGbOnClJmjZtms6c\nOaNEIiGPZ/CQWvwppGDQb/In9DLNLXtI7tkll/dIxBMq9Req69x/f/II+McocTGes7vl8tvlSm7Z\nQ8rtXaw/Vkb1p+5uuukmHTt2TJLU2tqq4uLiIQMLIHMKCzyqCAUHfawiVMZ3GQP/x8mPlZRXspWV\nlaqtrdWiRYvU19enNWvWmA0D4NpUzpoq6dLzSpForwL+MaoIlQ38P4BLnPpYyUsmk8l0ntDidkIu\n36a4klv2kNyzi1v2iMUT8vgKlLgYd8UVrFveLm7ZQ3LPLhYfK6O6XQwg+xUWeDShrNgVgQUsZfpj\nhcgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITI\nAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIAYITIAgBghMgCAGCEyAIA\nYITIAgBgxJvqgLfeekv19fUDLzc2NqqhocF0KAAA3CBlZBcuXKiFCxdKkg4fPqwPPvjAfCgAANzg\nmm4Xb9y4UTU1NVazAADgKsOO7KeffqoJEyYoGAxazgMAgGvkJZPJ5HAOXL16tebNm6dvfvObVz2u\nry8hr9eTluEAAMhlw47snDlz9Kc//Uk+n++qx4XD0bQMdqVg0G9y3kxzyx6Se3Zxyx4Su2Qjt+wh\nsUuq8w1lWLeLOzo6VFxcnDKwAADg/w0rsuFwWKWlpdazAADgKsOK7PTp07V161brWQAAcBV+4xMA\nAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABG\niCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogs\nAABGiCwAAEaGFdn6+np961vf0oIFC7R//37jkQAAcIeUkY1EItq4caP+8Ic/aNOmTdqzZ08m5gIA\nIOd5Ux1w4MABzZgxQyUlJSopKdHatWszMRcAADkv5ZXsqVOn1NvbqyVLlqi6uloHDhzIxFwAAOS8\nvGQymbzaAb/5zW909OhRvf7662pra9PixYu1b98+5eXlDXp8X19CXq/HZFgAAHJJytvF48aNU0VF\nhbxeryZPnqzi4mJ1d3dr3Lhxgx4fifSkfchg0K9wOJr282aaW/aQ3LOLW/aQ2CUbuWUPiV1SnW8o\nKW8Xz5w5UwcPHlR/f78ikYh6enoUCATSNhwAAG6V8kq2vLxcc+bM0RNPPCFJWrlypfLz+fFaAABS\nSRlZSaqqqlJVVZX1LAAAuAqXpAAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAY\nIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgAAGCGy\nAAAYIbIAABghsgAAGCGyAAAYIbIAABghsgBgIBZPqL3zvGLxhNOjwEHeVAccOnRIzz//vG677TZJ\nUigU0qpVq8wHA4BclOjvV93eZjU0hdUdjanUX6iKUFCVs6bKk891zVdNyshK0j333KPXXnvNehYA\nyHl1e5u1+8ipgZe7zsUGXq6eHXJqLDiEL6sAIE1i8YQamsKDPtbQ1Mmt46+gYV3JNjc3a8mSJTp7\n9qyWLl2q++67b8hjA4Eieb2etA14WTDoT/s5neCWPST37OKWPSR2cVp753l1R2ODPhaJ9srjK1Cw\nrDjDU6VPLr5NhpKpXVJG9uabb9bSpUv12GOPqaWlRYsXL9ZHH30kn8836PGRSE/ahwwG/QqHo2k/\nb6a5ZQ/JPbu4ZQ+JXbJBIp5Qqb9QXef+O7QB/xglLsZzci8pd98mg0n3LlcLdsrbxeXl5Zo7d67y\n8vI0efJklZWVqaOjI23DAYBbFBZ4VBEKDvpYRahMhQXpv8uH7JbySra+vl7hcFg/+MEPFA6H1dXV\npfLy8kzMBgA5p3LWVEmXnoONRHsV8I9RRahs4P/x1ZIysrNmzdKyZcu0Z88exeNxrVmzZshbxQDw\nVefJz1f17JC+/eAUeXwFSlyMcwX7FZYysiUlJdq0aVMmZgEA1ygs8ChYVuya5zExMvwIDwAARogs\nAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAA\nRogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEay\nPrKxeELtnecViyecHgUAgGviHc5Bvb29evzxx1VTU6MFCxZYzyRJSvT3q25vsxqawuqOxlTqL1RF\nKKjKWVPlyc/6rw0AABheZN944w1df/311rP8h7q9zdp95NTAy13nYgMvV88OZXQWAABGIuUl4cmT\nJ9Xc3KyHHnooA+NcEosn1NAUHvSxhqZObh0DAHJCyivZdevWadWqVdq5c+ewThgIFMnr9YxqqPbO\n8+qOxgZ9LBLtlcdXoGBZ8aheh1OCQb/TI6SNW3Zxyx4Su2Qjt+whsctIXDWyO3fu1J133qlJkyYN\n+4SRSM+oh0rEEyr1F6rr3H+HNuAfo8TFuMLh6KhfT6YFg/6cnHswbtnFLXtI7JKN3LKHxC6pzjeU\nq0Z2//79amlp0f79+3X69Gn5fD7dcMMNuvfee9M23GAKCzyqCAX/4znZyypCZSosGN2VMgAAmXDV\nyL766qsD/96wYYNuvPFG88BeVjlrqqRLz8FGor0K+MeoIlQ28P8AAGS7YX13sRM8+fmqnh3Stx+c\nIo+vQImLca5gAQA5ZdiR/dGPfmQ5x5AKCzwKlhW75rkAAMBXB7/VAQAAI0QWAAAjRBYAACNEFgAA\nI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNE\nFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI0QWAAAjRBYAACNEFgAAI95UB1y4cEEr\nVqxQV1eXYrGYampq9PDDD2diNgAAclrKyO7bt0/Tp0/XM888o9bWVj399NNEFgCAYUgZ2blz5w78\nu729XeXl5aYDAQDgFnnJZDI5nAOrqqp0+vRpbdq0SdOmTRvyuL6+hLxeT9oGBAAgVw07spL02Wef\n6Wc/+5nq6+uVl5c36DHhcDRtw10WDPpNzptpbtlDcs8ubtlDYpds5JY9JHZJdb6hpPzu4sbGRrW3\nt0uSbr/9diUSCXV3d6dtOAAA3CplZI8cOaLt27dLkjo7O9XT06NAIGA+GAAAuS5lZKuqqtTd3a3q\n6mr98Ic/1OrVq5Wfz4/XAgCQSsrvLh4zZox+9atfZWIWAABchUtSAACMEFkAAIwQWQAAjBBZAACM\nEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZ\nAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjBBZAACMEFkAAIwQWQAAjHiHc9D69ev1ySefqK+v\nT88++6weffRR67kAc9Gei2o7EZbfly9/kc/pcQC4UMrIHjx4UCdOnFBdXZ0ikYjmz59PZJHTLvb1\n6ZXfHlVr+Av1J6X8POnGYIleWnyXfN5hfd0JAMOS8nbx3XffrV//+teSpOuuu04XLlxQIpEwHwyw\n8spvj6rlzKXASlJ/Umo584Ve+e1RZwcD4DopI+vxeFRUVCRJ2rFjhx544AF5PB7zwQAL0Z6Lag1/\nMehjreEvFO25mOGJALjZsO+N7d69Wzt27ND27duvelwgUCSvN/0RDgb9aT+nE9yyh5Sbu7SdCA9c\nwX5Zf1KKXuzXrTfl3l6X5eLbZChu2cUte0jsMhLDiuzHH3+sTZs2aevWrfL7rz5YJNKTlsGuFAz6\nFQ5H037eTHPLHlLu7uL35Ss/T4OGNj/v0uO5uJeUu2+TwbhlF7fsIbFLqvMNJeXt4mg0qvXr12vz\n5s0aO3Zs2oYCnOAv8unGYMmgj90YLOG7jAGkVcrIvv/++4pEInrhhRf05JNP6sknn1RbW1smZgNM\nvLT4Lk0aX6L8vEsv5+dJk8Zf+u5iAEinlLeLKysrVVlZmYlZgIzweb36n6fvUbTnoqIX+/k5WQBm\n+KFAfGX5i3y69Sb3PM8EIPvwaxUBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEA\nMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwQmQBADBC\nZAEAMEJkAQAwQmQBADBCZAEAMEJkAQAwMqzINjU1afbs2fr9739vPQ8AAK6RMrI9PT1au3atZsyY\nkYl5AABwjZSR9fl82rJli8aPH5+JeQAAcA1vygO8Xnm9KQ8DAABfkvZ6BgJF8no96T6tgkF/2s/p\nBLfsIblnF7fsIbFLNnLLHhK7jETaIxuJ9KT7lAoG/QqHo2k/b6a5ZQ/JPbu4ZQ+JXbKRW/aQ2CXV\n+YbCj/AAAGAk5ZVsY2Oj1q1bp9bWVnm9Xu3atUsbNmzQ2LFjMzEfAAA5K2Vkp0+frt/97neZmAUA\nAFfhdjEAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAA\nRogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaILAAARogsAABGiCwAAEaI\nLAAARogsAABGiCwAAEa8wznoF7/4hY4dO6a8vDzV1tbqjjvusJ4LWSwWT6i987wS8YQKCzxOjwMA\nWStlZA8fPqx//vOfqqur08mTJ1VbW6u6urpMzIYsk+jvV93eZjU0hdUdjanUX6iKUFCVs6bKk89N\nEQD4spSfGQ8cOKDZs2dLkqZMmaKzZ8/qiy++MB8M2adub7N2HzmlrnMxJZNS17mYdh85pbq9zU6P\nBgBZKWVkOzs7FQgEBl4uLS1VOBw2HQrZJxZPqKFp8Ld7Q1OnYvFEhicCgOw3rOdkr5RMJq/6eCBQ\n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\nrkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EZTA6Tj6BGDb", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file From 415f1caa6e52bd7a3baee72b3e72a296ff3790c1 Mon Sep 17 00:00:00 2001 From: Nick A Date: Wed, 19 Aug 2020 17:24:48 -0500 Subject: [PATCH 3/4] Created using Colaboratory --- ...133_High_Dimensional_Data_Assignment.ipynb | 613 +++++++++++------- 1 file changed, 387 insertions(+), 226 deletions(-) diff --git a/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb b/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb index d0417b2e..320cf83f 100644 --- a/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb +++ b/module3-dimensionality-reduction/LS_DS_133_High_Dimensional_Data_Assignment.ipynb @@ -5,7 +5,8 @@ "colab": { "name": "LS_DS_133_High_Dimensional_Data_Assignment.ipynb", "provenance": [], - "collapsed_sections": [] + "collapsed_sections": [], + "include_colab_link": true }, "kernelspec": { "name": "python3", @@ -13,6 +14,16 @@ } }, "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, { "cell_type": "markdown", "metadata": { @@ -41,11 +52,85 @@ "colab": {} }, "source": [ - "" + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" ], - "execution_count": 0, + "execution_count": 5, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "c23TbBRN4wbB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "266c7b4c-b4b8-4aef-f836-b622621b749c" + }, + "source": [ + "a = np.array([[1,2,3,4],\n", + " [1,5,3,4]])\n", + "\n", + "plt.plot(0, 0, a[0], a[1])\n", + "plt.title('Passes Vertical Line Test')\n", + "plt.show()" + ], + "execution_count": 9, + "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": "Rya9ihqL5eg4", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "c6e81cdd-dae9-4580-e6b9-96d931a7c773" + }, + "source": [ + "a = np.array([[1,2,1,4],\n", + " [1,5,3,4]])\n", + "\n", + "plt.plot(0, 0, a[0], a[1])\n", + "plt.title('Does Not Pass Vertical Line Test')\n", + "plt.show()" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -63,7 +148,7 @@ "colab_type": "text" }, "source": [ - "" + "Because they have repeated x values." ] }, { @@ -98,6 +183,16 @@ "\\end{align}" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "WLyEgkSS3XeQ", + "colab_type": "text" + }, + "source": [ + "Relation 1 is the only one that is a function as is has no repeated x values." + ] + }, { "cell_type": "markdown", "metadata": { @@ -124,6 +219,17 @@ "\\end{align}" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "GYPI_qv87HxU", + "colab_type": "text" + }, + "source": [ + "The first equation has 3 input dimensions and 3 output dimensions.\n", + "The second equation has 4 input dimensions and 2 output dimensions." + ] + }, { "cell_type": "markdown", "metadata": { @@ -131,7 +237,14 @@ "colab_type": "text" }, "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." + "## 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.##\n", + "\n", + "I suppose if we increased the number of outputs of our function then we would add dimensionality to our data.\n", + "\n", + "\\begin{align}\n", + "m(𝑥_1,𝑥_2,𝑥_3)=(x_1+x_2, x_1+x_3, x_2+x_3, x_2x_3, x_1x_2)\n", + "\\\\\n", + "\\end{align}" ] }, { @@ -161,6 +274,46 @@ "\\end{align}" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "GsEtLLsrM0Qu", + "colab_type": "text" + }, + "source": [ + "##For the first function##\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", + "p(\\begin{bmatrix}1 \\\\ 0 \\end{bmatrix}) = \\begin{bmatrix} 1 \\\\ -1 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "p(\\begin{bmatrix}0 \\\\ 1 \\end{bmatrix}) = \\begin{bmatrix} 3 \\\\ 2 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "T = \\begin{bmatrix} 1 & 3 \\\\ -1 & 2 \\\\ \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GKlCSpsqPasM", + "colab_type": "text" + }, + "source": [ + "##The second function##\n", + "\\begin{align}\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", + "\\\\\n", + "q(\\begin{bmatrix}1 \\\\ 0 \\\\ 0\\\\ \\end{bmatrix}) = \\begin{bmatrix} 4 \\\\ -1 \\\\ 5 \\end{bmatrix}\n", + "\\\\\n", + "q(\\begin{bmatrix}0 \\\\ 1 \\\\ 0\\\\ \\end{bmatrix}) = \\begin{bmatrix} 1 \\\\ 2 \\\\ 1 \\end{bmatrix}\n", + "\\\\\n", + "q(\\begin{bmatrix}0 \\\\ 0 \\\\ 1\\\\ \\end{bmatrix}) = \\begin{bmatrix} 2 \\\\ 3 \\\\ -2 \\end{bmatrix}\n", + "\\\\\n", + "T = \\begin{bmatrix} 4 & -1 & 5 \\\\ 1 & 2 & 1 \\\\ 2 & 3 & -2 \\\\ \\end{bmatrix}\n", + "\\end{align}" + ] + }, { "cell_type": "markdown", "metadata": { @@ -171,6 +324,32 @@ "## 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": "markdown", + "metadata": { + "id": "aGcLNrZVUAij", + "colab_type": "text" + }, + "source": [ + "\\begin{align}\n", + "T = \\begin{bmatrix} 1 & 3 \\\\ -1 & 2 \\\\ \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wpKwVDYkUmsd", + "colab_type": "text" + }, + "source": [ + "\\begin{align}\n", + "p(\\begin{bmatrix}3 \\\\ 4 \\end{bmatrix}) = \\begin{bmatrix} -1 \\\\ 17 \\end{bmatrix}\n", + "\\\\\n", + "\\begin{bmatrix} 1 & 3 \\\\ -1 & 2 \\end{bmatrix} \\begin{bmatrix} 3 \\\\ 4 \\end{bmatrix} = \\begin{bmatrix} -1 \\\\ 17 \\end{bmatrix}\n", + "\\end{align}" + ] + }, { "cell_type": "code", "metadata": { @@ -181,7 +360,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": null, "outputs": [] }, { @@ -201,7 +380,9 @@ "colab_type": "text" }, "source": [ - "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors." + "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors.\n", + "\n", + "Eigenvectors are any vectors that do not change direction during a transformation. Eigenvalues are scalars that apply to these eigenvectors." ] }, { @@ -231,7 +412,9 @@ "colab_type": "text" }, "source": [ - "## 6.2 What is the rule of thumb for how many observations you should have compared to parameters in your model?" + "## 6.2 What is the rule of thumb for how many observations you should have compared to parameters in your model?\n", + "\n", + "Best practice is having 5 times the number of observations as parameters in a model." ] }, { @@ -269,9 +452,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 351 + "height": 355 }, - "outputId": "974e831f-cd76-41ed-c225-8ab4d1fea275" + "outputId": "17ad7200-a6f0-4ae9-81d3-095fd5095ca8" }, "source": [ "from urllib.request import urlopen\n", @@ -296,7 +479,7 @@ "print(national.shape)\n", "national.head()" ], - "execution_count": 2, + "execution_count": 16, "outputs": [ { "output_type": "stream", @@ -850,7 +1033,7 @@ "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 16 } ] }, @@ -859,91 +1042,41 @@ "metadata": { "id": "O5zrMTud2qFU", "colab_type": "code", - "outputId": "22a279ad-ad46-46ba-82c4-47ff31864e01", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 - } + "height": 221 + }, + "outputId": "12e5c653-4c72-4a38-b296-22988fa60fad" }, "source": [ "# Look at datatypes\n", "# a lot of object datatypes even though they seem to be strings of numbers.\n", "national.dtypes" ], - "execution_count": 3, + "execution_count": 17, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL object\n", - "AGE1 int64\n", - "METRO3 object\n", - "REGION object\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS object\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE object\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ object\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT object\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ object\n", - "FMTMETRO3 object\n", - "FMTBUILT object\n", - "FMTSTRUCTURETYPE object\n", - "FMTBEDRMS object\n", - "FMTOWNRENT object\n", - "FMTCOST06RELPOVCAT object\n", - "FMTCOST08RELPOVCAT object\n", - "FMTCOST12RELPOVCAT object\n", - "FMTCOSTMEDRELPOVCAT object\n", - "FMTINCRELPOVCAT object\n", - "FMTCOST06RELFMRCAT object\n", - "FMTCOST08RELFMRCAT object\n", - "FMTCOST12RELFMRCAT object\n", - "FMTCOSTMEDRELFMRCAT object\n", - "FMTINCRELFMRCAT object\n", - "FMTCOST06RELAMICAT object\n", - "FMTCOST08RELAMICAT object\n", - "FMTCOST12RELAMICAT object\n", - "FMTCOSTMEDRELAMICAT object\n", - "FMTINCRELAMICAT object\n", - "FMTASSISTED object\n", - "FMTBURDEN object\n", - "FMTREGION object\n", - "FMTSTATUS object\n", + "CONTROL object\n", + "AGE1 int64\n", + "METRO3 object\n", + "REGION object\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT object\n", + "FMTASSISTED object\n", + "FMTBURDEN object\n", + "FMTREGION object\n", + "FMTSTATUS object\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 3 + "execution_count": 17 } ] }, @@ -952,17 +1085,17 @@ "metadata": { "id": "yIrOjVmd2yLz", "colab_type": "code", - "outputId": "d855cbbd-42ba-47a2-aba9-584813e9c5ab", "colab": { "base_uri": "https://localhost:8080/", - "height": 35 - } + "height": 34 + }, + "outputId": "8f2ebc07-57ad-408b-cede-f7c1be5f5f70" }, "source": [ "# check for null values\n", "national.isnull().sum().any()" ], - "execution_count": 4, + "execution_count": 18, "outputs": [ { "output_type": "execute_result", @@ -974,7 +1107,7 @@ "metadata": { "tags": [] }, - "execution_count": 4 + "execution_count": 18 } ] }, @@ -983,11 +1116,11 @@ "metadata": { "id": "2u9tdmwX3KL_", "colab_type": "code", - "outputId": "ce3e8bc6-7571-4b9b-8b4f-b8ae7c94f837", "colab": { "base_uri": "https://localhost:8080/", - "height": 52 - } + "height": 51 + }, + "outputId": "b005b2df-4b68-4ff1-e135-44b5fd00b417" }, "source": [ "# check for number of categorical vs numeric columns\n", @@ -997,7 +1130,7 @@ "print(f'{len(cat_cols)} categorical columns')\n", "print(f'{len(num_cols)} numerical columns')" ], - "execution_count": 5, + "execution_count": 19, "outputs": [ { "output_type": "stream", @@ -1014,11 +1147,11 @@ "metadata": { "id": "UMHOtOs_3gcL", "colab_type": "code", - "outputId": "9194fefa-217a-49e4-cd81-b2d416d77b19", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 - } + "height": 221 + }, + "outputId": "84d8a9d2-15bf-44d6-b82d-c14ac93eeafd" }, "source": [ "# We're making a copy of our data in case we mess something up.\n", @@ -1033,80 +1166,30 @@ "\n", "national_processed.dtypes" ], - "execution_count": 6, + "execution_count": 20, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL category\n", - "AGE1 int64\n", - "METRO3 category\n", - "REGION category\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS category\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE category\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ category\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT category\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ category\n", - "FMTMETRO3 category\n", - "FMTBUILT category\n", - "FMTSTRUCTURETYPE category\n", - "FMTBEDRMS category\n", - "FMTOWNRENT category\n", - "FMTCOST06RELPOVCAT category\n", - "FMTCOST08RELPOVCAT category\n", - "FMTCOST12RELPOVCAT category\n", - "FMTCOSTMEDRELPOVCAT category\n", - "FMTINCRELPOVCAT category\n", - "FMTCOST06RELFMRCAT category\n", - "FMTCOST08RELFMRCAT category\n", - "FMTCOST12RELFMRCAT category\n", - "FMTCOSTMEDRELFMRCAT category\n", - "FMTINCRELFMRCAT category\n", - "FMTCOST06RELAMICAT category\n", - "FMTCOST08RELAMICAT category\n", - "FMTCOST12RELAMICAT category\n", - "FMTCOSTMEDRELAMICAT category\n", - "FMTINCRELAMICAT category\n", - "FMTASSISTED category\n", - "FMTBURDEN category\n", - "FMTREGION category\n", - "FMTSTATUS category\n", + "CONTROL category\n", + "AGE1 int64\n", + "METRO3 category\n", + "REGION category\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT category\n", + "FMTASSISTED category\n", + "FMTBURDEN category\n", + "FMTREGION category\n", + "FMTSTATUS category\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 6 + "execution_count": 20 } ] }, @@ -1117,9 +1200,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 265 + "height": 270 }, - "outputId": "02fe0fad-81bb-404c-a4cd-92242cfe4c6c" + "outputId": "c23a01de-0b25-48c9-db0a-1d0f30187c7c" }, "source": [ "# Replace all category cell values with their numeric category codes\n", @@ -1129,7 +1212,7 @@ "print(national_processed.shape)\n", "national_processed.head()" ], - "execution_count": 7, + "execution_count": 21, "outputs": [ { "output_type": "stream", @@ -1683,7 +1766,7 @@ "metadata": { "tags": [] }, - "execution_count": 7 + "execution_count": 21 } ] }, @@ -1694,88 +1777,38 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 + "height": 221 }, - "outputId": "3cbe9b8e-05e4-4126-f072-030c8d2ac7b4" + "outputId": "d79d7a6c-0039-438f-e3a1-447604ffd5e4" }, "source": [ "# Now we only ahve numeric columns (ints and floats)\n", "national_processed.dtypes" ], - "execution_count": 10, + "execution_count": 22, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "CONTROL int32\n", - "AGE1 int64\n", - "METRO3 int8\n", - "REGION int8\n", - "LMED int64\n", - "FMR int64\n", - "L30 int64\n", - "L50 int64\n", - "L80 int64\n", - "IPOV int64\n", - "BEDRMS int64\n", - "BUILT int64\n", - "STATUS int8\n", - "TYPE int64\n", - "VALUE int64\n", - "VACANCY int64\n", - "TENURE int8\n", - "NUNITS int64\n", - "ROOMS int64\n", - "WEIGHT float64\n", - "PER int64\n", - "ZINC2 int64\n", - "ZADEQ int8\n", - "ZSMHC int64\n", - "STRUCTURETYPE int64\n", - "OWNRENT int8\n", - "UTILITY float64\n", - "OTHERCOST float64\n", - "COST06 float64\n", - "COST12 float64\n", - " ... \n", - "COSTMedRELAMICAT int64\n", - "COSTMedRELPOVPCT float64\n", - "COSTMedRELPOVCAT int64\n", - "COSTMedRELFMRPCT float64\n", - "COSTMedRELFMRCAT int64\n", - "FMTZADEQ int8\n", - "FMTMETRO3 int8\n", - "FMTBUILT int8\n", - "FMTSTRUCTURETYPE int8\n", - "FMTBEDRMS int8\n", - "FMTOWNRENT int8\n", - "FMTCOST06RELPOVCAT int8\n", - "FMTCOST08RELPOVCAT int8\n", - "FMTCOST12RELPOVCAT int8\n", - "FMTCOSTMEDRELPOVCAT int8\n", - "FMTINCRELPOVCAT int8\n", - "FMTCOST06RELFMRCAT int8\n", - "FMTCOST08RELFMRCAT int8\n", - "FMTCOST12RELFMRCAT int8\n", - "FMTCOSTMEDRELFMRCAT int8\n", - "FMTINCRELFMRCAT int8\n", - "FMTCOST06RELAMICAT int8\n", - "FMTCOST08RELAMICAT int8\n", - "FMTCOST12RELAMICAT int8\n", - "FMTCOSTMEDRELAMICAT int8\n", - "FMTINCRELAMICAT int8\n", - "FMTASSISTED int8\n", - "FMTBURDEN int8\n", - "FMTREGION int8\n", - "FMTSTATUS int8\n", + "CONTROL int32\n", + "AGE1 int64\n", + "METRO3 int8\n", + "REGION int8\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT int8\n", + "FMTASSISTED int8\n", + "FMTBURDEN int8\n", + "FMTREGION int8\n", + "FMTSTATUS int8\n", "Length: 99, dtype: object" ] }, "metadata": { "tags": [] }, - "execution_count": 10 + "execution_count": 22 } ] }, @@ -1784,13 +1817,141 @@ "metadata": { "id": "WAJ8bjVcEwhA", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "outputId": "b5eac946-89ef-4b73-c481-1f46d114ceec" }, "source": [ - "### Your Code Here" + "from numpy import array\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA\n", + "\n", + "# Standardize the Data\n", + "# Instantiate a Standard Scaler object\n", + "scaler = StandardScaler()\n", + "# Use the object to fit_transform our data\n", + "Z = scaler.fit_transform(national_processed)\n", + "print(\"\\n Standardized Data: \\n\", Z)\n", + "# create the PCA instance\n", + "pca = PCA(2)\n", + "# fit on data\n", + "pca.fit(Z)\n", + "# access values and vectors\n", + "print(\"\\n Eigenvectors: \\n\", pca.components_)\n", + "print(\"\\n Eigenvalues: \\n\",pca.explained_variance_)\n", + "# transform data\n", + "B = pca.transform(Z)\n", + "print(\"\\n Projected Data: \\n\", B)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 27, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + " Standardized Data: \n", + " [[-1.73202397 1.48807451 0.60878419 ... 0.54947295 -0.46210707\n", + " 0. ]\n", + " [-1.73197029 0.08881241 2.18426992 ... -0.54470863 -0.46210707\n", + " 0. ]\n", + " [-1.73191661 0.21999323 2.18426992 ... 1.64365453 -0.46210707\n", + " 0. ]\n", + " ...\n", + " [ 1.73191661 -1.09181499 -0.17895868 ... 1.64365453 2.16400067\n", + " 0. ]\n", + " [ 1.73197029 0.39490099 -0.96670154 ... -0.54470863 2.16400067\n", + " 0. ]\n", + " [ 1.73202397 0.78844346 1.39652706 ... -0.54470863 -0.46210707\n", + " 0. ]]\n", + "\n", + " Eigenvectors: \n", + " [[-0.01762294 0.04564172 0.00224448 -0.0056805 0.04142715 0.08969161\n", + " 0.06498292 0.0649871 0.06422065 0.06147403 0.08585244 0.01801879\n", + " -0.05896537 -0.01528452 0.13234213 -0.05711476 -0.03969967 -0.02559715\n", + " 0.09915137 0.02420272 0.06848524 0.10804133 0.02549375 0.12591589\n", + " -0.0686994 -0.09686185 0.09495694 0.06829523 0.13890808 0.13843111\n", + " 0.13897851 0.138511 0.0905027 -0.07741872 0.04142715 0.06498292\n", + " 0.0649871 0.06422065 0.07923954 0.0921104 0.09210336 0.09490276\n", + " 0.08739559 0.00091387 0.10149966 0.10199758 0.1018149 0.08553625\n", + " 0.09217413 0.0781451 0.13215061 0.14670343 0.1335704 0.09089986\n", + " 0.12974258 0.12772056 0.13365417 0.14824806 0.13368685 0.0902927\n", + " 0.13209618 0.12802126 0.13470573 0.1470892 0.13320525 0.08919073\n", + " 0.13411974 0.12560459 0.13025193 0.14427022 0.13314257 0.09127039\n", + " 0.1269716 0.12604755 0.02549375 -0.02868194 0.02198791 -0.06878637\n", + " 0.08502306 -0.09686185 0.12430766 0.1236005 0.12184815 0.12455057\n", + " 0.10357345 0.12772056 0.12802126 0.12560459 0.12604755 0.09767683\n", + " 0.14670343 0.14824806 0.1470892 0.14427022 0.11025228 -0.08541172\n", + " 0.00320622 0.01421383 -0. ]\n", + " [-0.00232268 -0.12881974 0.02787248 0.02355993 -0.05103525 -0.03833234\n", + " -0.10241577 -0.10242769 -0.10406663 -0.16868994 -0.01158043 0.02224373\n", + " 0.22379537 0.00406118 0.07554282 0.22202935 -0.17613669 0.01102132\n", + " -0.00219947 -0.00774407 -0.20946021 -0.03104596 -0.16686104 -0.0276374\n", + " 0.00239875 -0.02138781 -0.01017962 0.03905815 0.08279444 0.08127423\n", + " 0.08232351 0.08302786 -0.03769061 -0.10264061 -0.05103525 -0.10241577\n", + " -0.10242769 -0.10406663 -0.20229415 -0.04714243 -0.0472246 -0.04437527\n", + " -0.04544984 -0.00410633 -0.0243843 -0.17315565 -0.02241456 -0.20463355\n", + " -0.03479403 -0.21272755 0.102165 0.0761984 0.04409669 -0.19809081\n", + " 0.10852792 0.07185395 0.10098787 0.07256343 0.04730334 -0.19897927\n", + " 0.10684339 0.06898156 0.09847618 0.06586526 0.05166391 -0.20021042\n", + " 0.10334089 0.06413585 0.10281403 0.07875107 0.04107962 -0.19724869\n", + " 0.10950206 0.07374035 -0.16686104 -0.00998768 0.02400899 0.00247039\n", + " -0.01286988 -0.02138781 -0.10647349 -0.10987843 -0.11449743 -0.10326949\n", + " -0.11457314 0.07185395 0.06898156 0.06413585 0.07374035 -0.12050048\n", + " 0.0761984 0.07256343 0.06586526 0.07875107 -0.07724314 -0.09534592\n", + " -0.09249567 -0.00290366 -0. ]]\n", + "\n", + " Eigenvalues: \n", + " [33.37004789 14.1535396 ]\n", + "\n", + " Projected Data: \n", + " [[-2.57657018 -1.37612733]\n", + " [ 2.04064284 -0.98806144]\n", + " [ 1.21527025 0.37016816]\n", + " ...\n", + " [ 1.83162816 -2.95570212]\n", + " [-5.02514474 -2.52857815]\n", + " [-9.89816404 -0.80284267]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bQlxccnDsM8j", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "outputId": "41f2a630-e5d6-45ee-b0e1-0868c96e6907" + }, + "source": [ + "plt.scatter(B[:,0], B[:,1])\n", + "plt.xlabel(\"PC1\")\n", + "plt.ylabel(\"PC2\")\n", + "plt.title(\"PC1 vs PC2\")\n", + "plt.show()" + ], + "execution_count": 41, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEWCAYAAACNJFuYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dfZicZX0v8O93JxOYBXWTuqVhZAlFmxxiZFe2Ek17HZOqQai4oJJS4rGnL7Q9ek6Tcu3VoGkJNp6kJ+Wlp6enp/HgkRbE8OYYjDUiSauiQRN3Y4iQSxEIDCmshUVIFtjs/s4f8zyb2Znneeb9eZn5fq5rr+w+MztzT3bm+T33ff/u300zg4iISLGuqBsgIiLxo+AgIiJlFBxERKSMgoOIiJRRcBARkTIKDiIiUkbBQUREyig4SFsj+QTJCZIvk3yW5OdJnl50+yqS3yT5Eskxkv9K8lLntgUkd5B8hqSRXBhCezeSnHTaO07yOyTfWXT7ApK3kDzqtPlRkteTPI3kL5K8w2nviyQfJHlhq9ss7UnBQTrBB8zsdABvBzAIYAMAkPwwgLsA/COANwE4A8BfAPiA83vTAL4G4EMht3e7095eAN8GcC8L5gP4LoAMgHea2esAvBdAD4BzAZwO4PsALgAwH8CtAHYWB0ORalErpKWdkXwCwO+b2Tecn7cC+A8oBIAnAfytmW2t8BhzAEwCOMfMnvC5z58B+FUz+3DRsb9B4TP230j+DgqBpxfAzwBsMLPbPR5nI4A3m9ka5+clAB52fm8tgA8CON/Mpqt8/T8HsMLM9ldzfxGXeg7SMUieBeBiACMAFgE4C8DdTXr4LwK4mOTrnOdKAbgCwBdIngbgfwJ4v3O1/y4Ao1W09xQAvwPgKTP7GYD3ALi3hsDQD2AugJ/U/nKk0yk4SCfIkRxHYYjmXwH8dwC/4Nx2tBlPYGZPAvgBgMucQysBHDezvc7P0wDeSjJjZkfN7FDAw13htPcpFIaI3Mf8hWrbS/L1AP4JwPVm9mJtr0ZEwUE6w5CZ9ZjZ2Wb2X8xsAsC/O7ctaOLzfAHAlc73v+38DDM7BmA1gD8CcJTkTpKLAx7nTqe9v2hmK4uGhP69mvaSzAC4D8BeM9tc52uRDqfgIJ3qMApX5s2cbL4LwLtJvgmFq/0vuDeY2S4zey8KJ/dHAXy2jsf/BoDLSPp+bp2hqByApwH8YR3PIQJAwUE6lBUyMf4UwJ+T/M8kX0+yi+Svkdzm3o/kqQBOcX48xfnZ7zHHAPwLgP8H4HEze8R5jDNIftCZe3gVwMsoDDPV6kYArwdwK8mzncfOkryR5NtIplGYQ5kA8LFq5yZEvCg4SMcys7tRGO75XQDPAHgWwCYAXy662wQKJ3OgcMU/UeFhv4DCxPEXio51oRCIngHwPID/COCP62jv8yhMZk8CeIjkSwAeAPAiCpPO7wLwmwDeB2DcWSvxMslfr/W5RJTKKiIiZdRzEBGRMgoOIiJSRsFBRETKKDiIiEiZOVE3oBne+MY32sKFC6NuhohIouzfv/9nZtbrdVtbBIeFCxdi3759UTdDRCRRSD7pd5uGlUREpIyCg4iIlFFwEBGRMgoOIiJSJrLgQPJUkt8jeYDkIZLXO8fPIfkQyZ+Q3E5yblRtFBHpVFH2HF4FsNLMzgfQD+AikssA/BWAm8zszQBeAPB7EbZRpGPkRvJYvmU3zlm/E8u37EZuJB91kyRCkQUHK3CrXaadL0NhBy1368ZbAQxF0DyRjpIbyePaew8iPz4BA5Afn8C19x5UgOhgkc45kEyRHAXwHID7ATwGYNzMTjh3eRpANqr2iXSKrbsOY2JyataxickpbN11OKIWSdQiDQ5mNmVm/QDeBOAdAIK2TpyF5NUk95HcNzY21rI2inSCZ8a9t6nwOy7tLxbZSmY2DmAPgHcC6CHprtx+EwDPfq2ZbTOzQTMb7O31XP0tIlU6sydT03Fpf1FmK/WS7HG+zwB4L4BHUAgSH3bu9jHM3pVLRFpgeNUiZNKpWccy6RSGVy2KqEUStShrKy1AYS/cFApB6k4z+wrJHwH4IslNAEYA3BJhG0U6wtBAYWpv667DeGZ8Amf2ZDC8atHMcek8bbFN6ODgoKnwnohIbUjuN7NBr9tiMecgIiLxouAgIiJl2mI/BxEpyI3kNW8gTaHgINIm3FXO7mI2d5UzAAUIqZmGlUTaQG4kj2vuPKBVztI06jmIJJzbY5jyyTx8ZnxCw01SMwUHkQRzewx+gQEAerrTGm6Smik4iCTMhtxB3PHQU4EBwZVJp2AG3+EmBQfxozkHkQTZkDuI2/YeqSowpEhsvnwpXpyY9LxdRfUkiIKDSILc8dBTVd0vk07hhivOx9BAVkX1pC4KDiIJUkuPwR0yUlE9qYfmHEQSJEUGBohMOjUrMAAqqif1UXAQSZArLzwLt+094nnbvO40rvvAEs+T/tBAVsFAaqLgIJIgm4aWAgBu33sEpf2HVyanw2+QtC3NOYjEXG4kj+VbduOc9TuxfMtuDJ4933MyWauhpZnUcxCJMb96SaXrFlxKT5VmUc9BJMa27jrsuYAtRXreX+mp0ixR7iF9Fsk9JH9E8hDJP3GObySZJznqfF0cVRtFopQbySPv0xOYMlN6qrRUlD2HEwCuMbPzACwD8HGS5zm33WRm/c7XV6Nrokg03OEkP9meDDZfvhTZngxY9LMykqRZIptzMLOjAI46379E8hEAemeLwHs4yeX2EJSeKq0UizkHkgsBDAB4yDn0CZI/JPk5kvN8fudqkvtI7hsbGwuppSLh8BtOAoBT5sTiYyttLvJ3GcnTAdwDYK2Z/RzA3wM4F0A/Cj2LG7x+z8y2mdmgmQ329vaG1l6RVsuN5OE93VwwPjGJa+89iNxIPrQ2SeeJNJWVZBqFwHC7md0LAGb2bNHtnwXwlYiaJxKa4s14usiyBW6lVHJbWi2y4ECSAG4B8IiZ3Vh0fIEzHwEAlwF4OIr2iYQlN5LH8N0HMDlVCAnVFNcDtKZBWivKnsNyAB8FcJDkqHPskwCuJNkPwAA8AeAPo2meSDiuv+/QTGCohdY0SCtFma30bcBzaFWpq9JRXjjuvRlPEK1pkFZT+QyRCBTPMVSS7clgxeJe7Hl0TCW3JTQKDiIhK62XFIQAHly/svWNEikReSqrSKcJWuBWqoucqcaq1FUJk3oOIiGrJcvIzVxyq7EC0HCShEI9B5GQ9XSn6/o97dcgYVJwEAlZlcsYPGltg4RFwUEkZOMTtaeuurS2QcKi4CASolomlUsXAWltg4RJwUEkRBt3HKrqfpl0Clct69N+DRIZZSuJhKiaIaUUqUDQYYoXRcZlkaOCg0iMZNIpBYYOU7ooMi5pyxpWEglBbiSP5Vt2V7yfAkPn8VoUGYe0ZfUcJFbi2L1uVLXlMrI9mcS/VqmdX3py1GnLCg4SG3HtXjeq2nIZykTqTD3dac/KvFGnLWtYSWIjrt3rRlVzBbhmWV+iA6DUJzeSx8uvnCg7nk4x8osF9RwkNuLavW7UGzJp3yylbJsMnUl9tu46jMnp8iXzp82dE/ieCGP4VcFBYuPMngzyHoEg6u51I3IjeRx7zePKsIvY+pHzFRQ6nN+Fz4sBKc9hDb9GNqxE8iySe0j+iOQhkn/iHJ9P8n6SP3b+nRdVGyUcbiZPfnyi7VYFb9112HML0NNPDb4ylM7gd+ETdEEU1vBrlHMOJwBcY2bnAVgG4OMkzwOwHsADZvYWAA84P0ubcq+C3B6D4WTZiHZYFex3ZThex9ag0n6GVy1CJp2adazSBVFYw69R7iF9FMBR5/uXSD4CIAvggwDe7dztVgD/AuDPImiitFhuJI9r7jwws2eBy1AIDEnfAS03kkcXWfb6gGQPlUnzuBc+tcwfhDX8Gos5B5ILAQwAeAjAGU7gAIB/A3CGz+9cDeBqAOjr62t9I6Wp3B6D14kTKFwFJXnNQ9DrS/pQmTTX0EC2pvf18KpFZetmWvGeijw4kDwdwD0A1prZz8mTo85mZiQ9zx5mtg3ANgAYHBxsoEK+tErQyb1S7n9PdzrRax78Xp/qJnWGVl7Y1NPbqEek6xxIplEIDLeb2b3O4WdJLnBuXwDguajaJ/UrnkswFE7ua7ePov/6ryM3kg8cH82kUzBDotc8+L2+aTMFhjbn9d6/9t6DTd0DfGggi+FVi3BmTwbPjE9g667DTd9jPMpsJQK4BcAjZnZj0U07AHzM+f5jAL4cdtukcX5XzuMTk1i3fRRzfN557pW1Xypf3hluirt6slAkntxsunPW78TyLbsrvv/CyCYKIwBF2XNYDuCjAFaSHHW+LgawBcB7Sf4YwHucnyVhgnoGBmByuvx4OkXccEUh9z/oJLpu+yg25A42oZWtU08WisRPpZOwV+AII5sojAAUZbbSt1G+2ZXrN8JsizSfX0ZFEHdVaG4kj2Ovli8ccxmA2/ceweDZ8wG0fuy1HmGNC0trVToJe82LhVErKYwAFPmEtLQnr4yKSsYnJquuYGoo7Kr26onp2E5a15qFIvETdBL2CxynzOlCJp1qaTZRGOmsKrwnLTE0kMXmy5ciXcM7jKi+gilQCCZJnrSW+AuaOwoqfbH58qUt3eI1jGFL9RykaYrT9zLpLhz3mlgI4I7pNirphfokGl7pp0FrCrbuOux79V5Nr7H0+VYs7sWeR8eqGoYMY9iS5rMIKUkGBwdt3759UTejo1U7HNQsmXQKp6a7PMd222F1tYTL6/3rbtkKeJ+Eg37H6yRdHAx6utN4+ZUTnhVZq3msZiG538wGvW5Tz0GaopbhoEYQmPmAAghlpai0v6CJ5wfXr/Q8Qddy9V4aSLwuakq5zx/VvJWCgzRFGEM5pT2C3Egep6a7Zj5wPZk0Nl66RJPAUjO/4czS97XX0FM1vdR6L56iHCLVhLQ0RasXd5X2CNwrseIrsFdP1DbHIQIU3kt+OfXF7+tGFp7Ve5KPctGkgoM0xYrFvS177Hnd6bKx13bdUlTCt3XXYXiN/BOz9/Vu5D1Xz0k+6iFSDStJzby61jt/eLTyL9ap22PLxHbdUlTC5/eeMRQCwrrto4GLOvPjE1i+ZXfgvMPwqkUYvvvArI2fUl3E606ZgxcnJvGGTBqTU9M49lp8hkgVHKQmG3IHcfveIzNXWm5BvVby+vC245aiEg2/9xJxci7C3aXQr4dRfL/ihZjuhZTX43cB2HjpEgDliRVxGCLVsJJULTeSnxUYwuJ1wlftImkWr/eSVyDwe9+XHneHmkp3OSw1OW3YuutwbIdI1XOQGbmRPDbuOIRxpyLqvO40rvvAEux78nnc8dBTvhvztJLfCV+1i6QRpe/17nQX5nWnMX58sq66YKX8ymt43a+e28KgRXAdxm8TktxIHsN3HQhclBOFm1f364QvTRX0Xl+zrA+DZ8/Huu2jDfWQUz7bw5bKOr1ir2AUxmJOLYITAOULcfLjE1i3fRR37TuC7zz2fOjDRZVknTIEIo0qvijy29cbKFT7/cqBow1/FqoJDMW94jgu5lRw6CBe3VwD8OBjz0fToABx+HBIeyi9KAo6cRswM9TUSlmPYdC4DZEqOLQRryEjALPGVuPM7Yp7fXBE6hVWaZdqpLuIrR85v+y9Hcfy7goObcJryGj47gOYmjJEnxRXnSkz9GTSgYGhlRu3S3uKemK3mJuhlIT3bKSprCQ/R/I5kg8XHdtIMl+ydahU4HV1NJmgwOAan5jE8F0HPEsShLFvriSX317PcVv7EqdgFSTqdQ6fB3CRx/GbzKzf+fpqyG1KpKS84arhXl2Vims+uERvQ+4g1m4fnXXhMHx34SIjbnNXfsHKL7hFJdJhJTP7JsmFUbahXbwhk07EvEK1vFL7VDJDvORG8rht75Gy45NThnV3jgLmvagtCn6JFl7DwlFveRt1z8HPJ0j+0Bl2mud1B5JXk9xHct/Y2FjY7Ysd+pWVTCgCZVdOQVs2SucK6jmaFYJCHAJD0HahcewVxzE4/D2AcwH0AzgK4AavO5nZNjMbNLPB3t7WVQRNgtxIvqrNQ5LELXpWTCUzxEsUPUcCOG1uquL9ejJp3Ly6H09sucR30yAgnr3i2GUrmdmz7vckPwvgKxE2J3ZyI3lcf9+htgsGXko/GCqZIV56utOhfx5uWt1fseBkLZVV41hIMnbBgeQCM3PrP18G4OGg+3eK0lowncAALN+ye1YAiGM+uEQnN5LHy6+cCP15t+46jC4CQdVm3Mw7oPK8wfCqRbFbJR1pcCB5B4B3A3gjyacBXAfg3ST7UTg3PAHgDyNrYERKc/m753bhx88di7pZDXEnBCt9oErFYWJO4ik3ksc1dx5oWUHIuSnCgFl7MLiqLcxX7bqGOPaKVXgvRjqxd1CtMIqQSXKUZvfEGQE8vuWSqJvhSYX3Yqx4M5C4pNvFkdJV69OuK8rjVBKjklrmDeL091JwiFDp1Y8Cgz+lq9YujrnzzZKUi4V0F6ueN4jb3yuOqawdI0lXP2HpyaSVrtokccydb5YkXCz0ZNKeRfb8VkLH7e+lnkPINuQOeq7mlEIQcPfUjUvXOsnimDvfLCsW98byc1RpbiyodxC3v5eCQ4gUGMq5ZbpT5MxV0vCqRZp8boI45s43y55Ho6+KUJp5V00PN6h3ELe/l4JDixVPMGlOYbZMOoUPXZDFPfvzsRlnbSdeufNE4ao7rqqdkI1D78dQ6Cl4bbnr9xqCegc3re6P1VoHzTm0UGmJ6U42rzuN5efOR8opApUi8aELstjz6FisxlnbydBAFh+6IIvislsG4J79+cgrfnqppSR7HHo/ZvAMDEGvIag+2NBAFpsvX4psTwZEcC2mMGidQ5MVp6bKSekuApy9oCiTTvlOyMc5NzxJlm/ZHdnm9bWqpa1xW+eQSaew+fKlvp999zXkRvIYvvvArM9BOkVs/XD5xHUYtM4hJBtyB3H73iMd30vwMumxLHpicmpmzqFUHK4M20HcJjmDVGpr6XDN2/veEJv9z93eblX/36Vv95ieMBQcGpAbyeOT9/4QxyeTtt9afEyZlfUglLraPHGb5AwS1FavLJ9m9c5TBDwqZNTsmfEJ3yKAPd1pAIUJ6dILpbhuHVpxzoHk60me63H8ba1pUvzlRvI478//GWu3jyowNMgdV43LOGu7SVKZc6+2plPEC8dexdrto00fQiKA5efOb0pgAApBzG+U3j2epJ5cYM+B5BUAbgbwHMk0gN8xs+87N38ewNtb27z4yY3kMXzXAc9hEvHOQAL85xzciTwFg9pVk9kTx4Jufkrb2tOdxosTk56F75rBAHynicNSKxb34nafVPUXnXppfjs2xrEnV2lY6ZMALjCzoyTfAeCfSF5rZl8C0GZ7jwXTRHO5FIkrLzwLex4dKzvxDJ49v+yEBCTjJJUEtZRaSFLwLW7r8i27W75PQzPDzp5HxyoOjR17rby8eC0lNsJUKTik3L0VzOx7JFcA+ArJsxDbaZTmU2/B27QZNg0t9bzN74SUlJNU3AUtpkrS/3E9awLiqtJaha27Dnv2gk4/dU4s/2aVgsNLJM81s8cAwOlBvBtADsCSVjcuLjbuOKTA4CGOXeFOkaSxaz9BvR8A6PLJZIvCvO40Xn5lEkFTjO5aBcC7h7zOZ+e48Zju6lgpOPwxSoaPzOwlkhcBuKJlrQqZ39WLuyWn9lco10XEsiscF60uvZykLCQ/fr2fjTsO4dUT07EIDERhS9ChgazvOgxg9iS/X685aX+zStlKxwCc4XH8HQD2Nr854fNa0bh2+ygWrt+JtdtHO2Kv5nq8IZOOZVc4DmpZ6VuvsLOQ/CqJNsKvlzM+MRmbxW0GVDXMVU2GXZIyx4DKweFmAD/3OP5z57aGkPwcyedIPlx0bD7J+0n+2Pl3XqPP48fdZjAub8QkiWtXOA7CKL0cZqmFVgW7uF4xF8sWtdGvvdmi4aQgcSuPUUmlYaUzzOxg6UEzO0hyYROe//MA/heAfyw6th7AA2a2heR65+c/a8JzzeIuY49D1zXO/HanS8IHOyqNzgdUOyQVVhZSqya/vQoDxs3CXzj5Pvdqb61X/knKHKvUc+gJuK3hs4OZfRNAaaLxBwHc6nx/K4ChRp/Hy/X3HWpZ/nQSEMCaZX2B+cgpElct60tUVzgOgoqrVVLPVXorhnyKtWry272S7smkG3qcVvrOY8/P/H8m7cq/UZWCwz6Sf1B6kOTvA9jfmibhDDd9FsC/wXvOAySvJrmP5L6xsdpru3fyXEKKxE2r+7FpaKnvCYsAbrjifGwaWtpRH4hm8BpbrrZUdq1DUmHMbzQS7CoZGsjitFPiW8XHgFn/90MDWTy4fiUe33IJHly/sq0/B5X+KmsBfInkVTgZDAYBzAVwWSsbBgBmZiQ9L+/NbBuAbUChKmstjxvHcsVhcatHum9qv5r/Vy3rm7lPkrrCcTA0kMW+J5+fVYTRLZU9ePb8wJr/tV6lh7HeoRnDKUGCeiB+w5phSlJ6cDMFBgczexbAu5zFb291Du80s90tbNOzJBc4ayoWAHiu2U/QqXsFdLE8qyJJ5RWSZM+jY2UnteIegF9+f63pjmGsd2j1e8TvNadI3HBFoZT1udd+NbL5QXd1c6d9RirVVjoVwB8BeDOAgwBuMbPy9d/NtQPAxwBscf79crOfoBOvBLoI3HhFf6QTm50k6KTtd7V/zZ3eCRJBV+lh5c638j3i1zMpvpCJKjBk0imsWNwbuFivXYNGpTmHW1EYRjoI4P0A/rqZT07yDgDfBbCI5NMkfw+FoPBekj8G8B7n56bqtEyb7nSXb2CQ1ggap/cLHF4nQAL40AX+J+ak5c57qWaiNxvBZzZFYvPlS313K7z+vkMtn++JUqU5h/PMbCkAkLwFwPea+eRmdqXPTb/RzOcpNbxqUVvVSiKBd/3yfPzgyIuecwd+9Y+kdfzSNPPjEzVVrDQUhqj8eA35rFjci627DmPd9tGZn72KI8ZJUM8kN5LH2EuvhNyik8HaL5h7JbUksb6Vn8BtQkn+wMze7vdzXNSzTWhuJI9120cjn+xqRBeB377w5Mm/E8dFoxb0f54byWPjjsbLr/htmer13AAqrh1IdxGnnzoH48cnY/0+KWRi/RATEe6ZUs+EeJK2uA3aJrRScJhCoYQGUHjNGQDHne/NzF7f5LbWpd49pHMjeaz1KYaVFKVjsxKOoBNXcY8tqB5PisS0WcUCc9XuoZxJp3DKnK6ag1Ec30Nxr4Qc9H8dx/25/QQFh8A5BzNLmdnrna/Xmdmcou9jERgaMTSQjfUCnGo0uyyDVOaeuPyuaA3AbXuPYMlffC1w/49pMzy+5RJceeFZvkNNfvMHfpPa9fRS4vge8tpOMy7cOZGNly5J/HxPkIrbhLY7rz9w0nRi9lUY/FYeV3viOvZacFmIM3sy2JA7OGs9RLHudBdeOTGFtdtHce61X8WG3MkMmWb/zfPjEy1ZXV2vuG6qRWBm8Vu7r5gOHFZKinqHlVxJ3+UtSd3YpPAatmm2Ncv6fANDkFQL9zloxRBTrXNhcZ4PbLfPWt3DSp3CXRL/xJZLQk2ZSzfhf7+durFx4jVs02y31REYgPpy/jNVvtmaPcRUT3mPrbsOxzIwdNpnTcGhhFfeeKtMTgOnzKn+T5AisWZZX9t2Y+MkaUN1KQYnyNaS8ZMfnygbSqu3uF+1taKKHz+OPfhO/KzFt+JVRErzxnu60y0t0vfqieo+tHHMKGkXXsMefiuP46rZw0zFV/n7nnwe9+zPe64QrvR+rKa8R7VDeFnnb9NIhmFPJo1jr50oq8jsl7JavBNcp9GcQxU25A7itr1Hmv64XQSC5jXdVMc456InndeJKZ0i5nQx0vz6OAma48gGvDfdzbS8frd47D4o3bdUI4X41jjpxUFJAF6eSMiahXoEzTmo51CFTUNLMXj2/KYsaCpWKeHFTXWU1vEa9picsrbe66M73YXjNQS+oF6JXy/CDbrV1IqqZQivkb/K7Q8dweDZ8z2LIvqJomxHXGjOoUpDA1mMXvc+PLHlEty8ur/i+oiuWmok+Oi0GlBRSNrcQjPMO+0U3Ly6v+I8RbW85hD8JvTdekXFgSSs97kZZibHq+E3Ad3qzZXiQj2HOlRTobLW9NjS7nKnZUZEJWlzC82QH5+Yef82K123NMj6Bd1ps7LPTpjbhU5MTvkOk/Vk0jjtlDmBKbelw5C1zL8kjYJDixQHkIXrdwbe1x23VV2k1iudfF6xuHfWZGunWL5lN4ZXLcLmy5c2pYRM6dV/pVLipX+HD12QnSkOWKmcSKP8Hvs3z19QsUhlGJsrxYWCQwiyAVenbg9Beyq0llcRvPz4BO7Zn585MXVSDyI/PoG120cxrztd8yRvJp2quCtc0O5xXlff9+zPzww3tXoBol/PIaj6rSuMzZXiQnMOIfBbOzGvO6301AblRvIY+PTXsXD9TixcvxP913991hhwbiSP/uu/jrXbRz2TCSYmp7Dn0TE8uH5lTaW028ULxydrCgxuvn+ltTZBpSUqrX0o/d1m1j/LpFO+PYdqTvCt3E87btRzCIG24myN3Egew3cfmJVZND4xieG7Dsz8XM0VqHtS6MT5h1qkU8SxV0/M7BNRKf/frzccdPVdOtzkPsfAp7/elPVGp8zpwqnpLs/HquYE3+r9tOMktsGB5BMAXgIwBeCEXy5uUmjYqPm27jrsmXI6OW0zV6HVDE10kciN5LFicW9L1rO0g3ndabz8yomZ3lcjE7F+QbinO+072TvepIWo4xOTSHcR6RRnvXeqPcF30oVebBfBOcFh0Mx+Vum+rV4EJ/HQrM1zpDbZngyOv3bC82q7nkJ0te5F4a41aGavrprMpE6gRXCSeHHf/KVdpVMM7FHVMxHrd/W9zidr6pnxCdy0ur+pk9QvTkxi9Lr3NeWx2lWcg4MB+DpJA/APZrYt6gZJa1RT0jnOm78kWaVMpdPmzgnM4umeW1+RSq9hVr91QWf2ZGYFlPz4xEzGUbYng+65Xfjxc8fKfi9IO04gN1uch5WyZpYn+YsA7gfwX83sm0W3Xw3gagDo6+u74Mknn4yopdIIz9pGztOVJPEAABCHSURBVB7HLxyfbKiWjvirZaim0t/g5iYVpvMbbqqU0VdLbaZqH7NTJHI/BzPLO/8+B+BLAN5Rcvs2Mxs0s8He3t4omihN4FnbaNpmxrcVGJov3UUMr1pU1ZBQiqx4ld2s/R+KU1jd53ZTXINKVFTzOuh8dWLp7XrFcliJ5GkAuszsJef79wH4dMTNkgb4DR0pdTQCzoKOalJ3p8xm5gP8AnUzF4B5lfWolBlV6XV0ctntRsS153AGgG+TPADgewB2mtnXIm6T1CloN7BmFX+T6k1OFVJ9q9nYKuuM91+1rM/3Ps0ev692gyBXpddhaL+6R2GIZc/BzH4K4Pyo2yHNsXHHIc8PezNq+kh98uMT2LrrcGDpkHSKM7n/bs2h0n0QWrEArNYSFe6JP2jvCKldXHsO0gbc0hValxBP+fEJ3Lb3CI6/dgJrlvWVlZmfKskO2zS0FDet7m/5NrX1lKgYGsjihivOL+tBtOvq5TDEsucgyedV2kLi6YXjk57rGKYNuP6+QzPF8LzKWrRCvSUqOmn1chgUHKQhxSeNN2TSINHSPbclXC8cnwx9D4NGTvIqU9M8sV3nUAuVz4iGVi13Br+S8/WUzpB4UfkMaapad7mT5OrJpDtqDwM5ScFBKioeOupxqnOqt9AZNl66JLCshbQvBQcJrG1UOt6s+YTO4rfXtLKA2p+CQ4fzm2zc9+TzHbd1pszmrg8onSDu6U7DDFi3fXRmMZ0mgduPgkObK+0VrFjcO7OR+5lOnX6vBWra9KYzEMAbMmkce+1E4OY3bhZQ2JlLEh0FhzZWutbAXfTkUq+gsxVnG1VTNh0ILm2h4NBeFBzaVG4kj3V3jqINMpWlBYpLYwDVrw9Q5lLnUHBIGL80UhK46sI+bBpaig25g2U1cESKrf7Vs+q60vergKrMpfaj4BCxwhjuDzExOQ2gMAacSXfh+OQ0ulgoYVANM+C2vUfw+NjLePCx51vXYGkLQbu7Bam3tIUkj4JDSDbkDuKOh57ClBlSJJb98jz84Mj4TFBwGYDjzrF6lhIoMEg18uMTyI3ka+49qH5R51BwCMFVn/3urJP2lJlO4hK5erOMVL+oM6hkd4ttyB1UIJBYCtpAR0Q9hybTZLAkibKMxE9sgwPJiwD8DYAUgP9rZlsiblJFF37mfjz70mtRN0OkasoyEj+xHFYimQLwdwDeD+A8AFeSPC/aVgW76rPfVWCQRCGgLCPxFcvgAOAdAH5iZj81s9cAfBHAByNuUyDNK0iSEMBVy/o0sSy+4jqslAXwVNHPTwO4sPgOJK8GcDUA9PX1hdeyIsXpqSJJ0ZNJY+OlSxQYJFBcg0NFZrYNwDagsBNc2M+/IXdQxekkkV49cXJtTbU1laTzxDU45AGcVfTzm5xjsXHHQ09VvpNIDE1MTmHjjkMAoAqr4iuucw7fB/AWkueQnAvgtwDsiLhNs2goSZJsfGIS1993yLfCqkgsew5mdoLkJwDsQiGV9XNmdijiZs2SIhUgJNH8dvXT2gcB4ttzgJl91cx+xczONbPPRN2eUldeeFblO4kkkNY+CBDj4BB3m4aWYs2yPqTIqJsiUpeeTBqZdGrWMVVYFZeCQwM2DS3FY5svxtyUAoQkSyadwsZLl2Dz5UuR7cmAKOwMt/nypZqMFgAxnXNIktxIXrutSWQIeO4N7v6cH58AgVm1vgjgQxecrKzq/uumta7bPqq0VlFwaNTWXYcxWc/GCyINKt4DGpi9ZmHPo2MYXrXIc9dAQ/lmP4VNp5TWKicpODRImR0SlRWLe2e+z43kMXz3AUxOFS5U8uMTs34ulR+fwPItu2d6GsdePeGb1qrg0Jk059AgZXZIVIqv/q+/71BZIJicMnT5TIcRhQBhzr/jE0prldkUHBo0vGpRWcaHSBiKh4v81ixMG8ren6VzEEF08dO5FBwaNDSQnZXxIRIWojCcVElpRlK1gUFprZ1Ncw5NULyn7vItu8smAEVawYCZOYGeTNpzaKgnky7b89nvPTqvO43uuXNUhE8AqOfQdLrSkjC5cwIbL12CdMkEQ7qL2HjpkrLf8RoKzaRTuO4DS/Dg+pV4fMsleHD9SgWGDqfg0GRDA1msWRbN/hLSedw5gaGBLLZ+5PxZw0dbP3K+5wm+dChUi9/EC60NVnANDg7avn37om7GLNrvQRrRk0lj9Lr3zaxd8FrMlkmndFKXhpDcb2aDXrdpzqFFNg0txeDZ87FxxyHfNEERL25pC2D2fJY25pEwqecQgoXrd0bdBEkItxR8Vid/CUFQz0FzDiHIKldcquTuEeKWr6gmVVWkFRQcQqAMJqmHdmWTKCk4hEAZTFIvla+QqMQuOJDcSDJPctT5ujjqNjXDpqGluHl1v4aYpCYqXyFRiWu20k1m9tdRN6LZSleqaqJaXOkUAcOs8u8qXyFRil3PoZPcvLq/bFWrtLdsTwZPbLlkphc5s2Dtw+eXLWLTGgaJUlx7Dp8g+Z8A7ANwjZm9UHoHklcDuBoA+vqSOZ7vfvDXbR+tuhiaJJs7h1Dai3QpGEhcRLLOgeQ3APySx02fArAXwM9QWAz6lwAWmNnvBj1e3Nc5VJIbyeOauw5gSjvKtb0UiWkzLWKTWIjdCmkze0819yP5WQBfaXFzIueeID71pYM49tpUhXtLVGrZB8FP6ToGQL0FiafYzTmQXFD042UAHo6qLWEaGsji0KcvUsprTPVk0rhqWZ/vnh1dKJS8Jgq9g2poHYPEWeyCA4D/QfIgyR8CWAFgXdQNCtOmoaXaNCiGNl66BHseHfPsOaRI/PayPnTPLXTEX5+ZU3WigdYxSFzFLjiY2UfNbKmZvc3MLjWzo1G3KWzKbY+X5efOx9BA1vdEPmWGe/bnZ/ZkfuH4JMBCb6MS/a0lrmIXHET7UsfND468iNxI3vdEniIxMTl7rmhyqtDHCFr0qHUMEmcKDjFUuhlLtWPYUp9K/7vu3IDfDmpTPhl/4xOTWLG41zPQ92TSWscgsabgEFNDA9mZLRun26CsepxV87/7zPiE7w5qQb2DPY+Olf3Ozav7MXrd+xQYJNbiughOipzZk/HcEF7CU7wdp9dJfe32Uc/fc4OKAoEkjYJDAgyvWuR78pFwrFjcO+vn0l3ZutNdOD45XfZ7mnCWpNKwUgIMDWSx/Nz5UTcjMYhC3aontlyCJ7ZcgjXL+tBoCas9j47NfJ8byePaew/OZCflxycwOW1l6auacJYkU3BIiNv/4J1Ys6xPk9NVMMxedbxpaCl+urlQ7K6a9FIvxWmsW3cd9sxOOv3UOSqcJ21De0gnWG4kj+G7Dswq8xxXXiWpWyloD+biIaEuZ8/mah7vwfUrAQDnrN/pOYlNAI9vuaTBlouER3tIt6mhgSxOP9V72sgt5RAHxSWpwxK0B3NxJtgNV5xfcU1J6fBQT7d378PvuEgSKTgk3PjxSd/jN63urztANGPHOnfvggfXr5zJ2AlzJ7xqahd5paeuWdYXODzk19Fog064yAxlKyWcX5rrmT0ZDA1k68pycq+Ut+463FAKrVe5ieFVi/Cnd46imaNL87rThZIVVbahVK2ppi9OeD+X33GRJFLPIeH8Vu26wyBBV+opEkTh5NqTSZddKTdaxsMrjXNoIIsbr+hHd/rkW48s1C+qdbKdANYs68PIX7zP93W2IpXU7zGVtirtRD2HhHOveItz7osnYoPWSEybBU6glj520ORt6V4HQWmcflfq51Sxp7bfZjnDqxbh2nsPzsoialUqaZjPJRIVBYc2EDQsMjSQxcYdhzDuMeRRzZVu8WO7+f2lJ8XNly8F4B+gqlVpJbj7XEHbazbahmqE+VwiUVEqawcIOqnXekIrXRnczJOiVzvdHklQaqqI1Cd224RKuJp5pdvKOkG6IheJD/UcREQ6VOwWwZH8CMlDJKdJDpbcdi3Jn5A8THJVFO0TEel0UQ0rPQzgcgD/UHyQ5HkAfgvAEgBnAvgGyV8xs6nyhxARkVaJpOdgZo+YmdfS1Q8C+KKZvWpmjwP4CYB3hNs6ERGJ2yK4LICnin5+2jlWhuTVJPeR3Dc2NuZ1FxERqVPLhpVIfgPAL3nc9Ckz+3Kjj29m2wBsAwoT0o0+noiInNSy4GBm76nj1/IAzir6+U3OsUD79+//Gckn63i+MLwRwM+ibkTI9Jo7g15z8p3td0Pc1jnsAPAFkjeiMCH9FgDfq/RLZtZb6T5RIbnPL1WsXek1dwa95vYWVSrrZSSfBvBOADtJ7gIAMzsE4E4APwLwNQAfV6aSiEj4Iuk5mNmXAHzJ57bPAPhMuC0SEZFicctWakfbom5ABPSaO4Necxtri/IZIiLSXOo5iIhIGQUHEREpo+DQIp1aXJDkRc7r+gnJ9VG3pxVIfo7kcyQfLjo2n+T9JH/s/DsvyjY2E8mzSO4h+SPnPf0nzvF2fs2nkvweyQPOa77eOX4OyYec9/d2knOjbmurKDi0jltc8JvFB0uKC14E4H+TrH+j5hhxXsffAXg/gPMAXOm83nbzeRT+dsXWA3jAzN4C4AHn53ZxAsA1ZnYegGUAPu78Xdv5Nb8KYKWZnQ+gH8BFJJcB+CsAN5nZmwG8AOD3ImxjSyk4tEiHFhd8B4CfmNlPzew1AF9E4fW2FTP7JoDnSw5/EMCtzve3AhgKtVEtZGZHzewHzvcvAXgEhZpn7fyazcxedn5MO18GYCWAu53jbfWaSyk4hK/q4oIJ1M6vrZIzzOyo8/2/ATgjysa0CsmFAAYAPIQ2f80kUyRHATwH4H4AjwEYN7MTzl3a+v0dt/IZidLq4oKSTGZmJNsuR5zk6QDuAbDWzH5Ocua2dnzNTnWGfpI9KCzaXRxxk0Kl4NCAMIsLJkQ7v7ZKniW5wMyOklyAwtVm2yCZRiEw3G5m9zqH2/o1u8xsnOQeFMr99JCc4/Qe2vr9rWGl8O0A8FskTyF5DqosLpgQ3wfwFiejYy4KE+87Im5TWHYA+Jjz/ccAtE3PkYUuwi0AHjGzG4tuaufX3Ov0GEAyA+C9KMy17AHwYedubfWaS2mFdIuQvAzA3wLoBTAOYNTMVjm3fQrA76KQBbLWzP45soY2GcmLAdwMIAXgc06trLZC8g4A70ahfPOzAK4DkEOhaGQfgCcBXGFmpZPWiUTy1wB8C8BBANPO4U+iMO/Qrq/5bShMOKdQuIi+08w+TfKXUUi0mA9gBMAaM3s1upa2joKDiIiU0bCSiIiUUXAQEZEyCg4iIlJGwUFERMooOIiISBkFB5EGkJwiOUryYZJ3kex2jv8SyS+SfIzkfpJfJfkrzm1fIzlO8ivRtl7En4KDSGMmzKzfzN4K4DUAf+QsGvsSgH8xs3PN7AIA1+Jk7aGtAD4aTXNFqqPgINI83wLwZgArAEya2f9xbzCzA2b2Lef7BwC8FE0TRaqj4CDSBCTnoLCPxUEAbwWwP9oWiTRGwUGkMRmnrPM+AEdQqEEkkniqyirSmAkz6y8+QPIQThZnE0kk9RxEmm83gFNIXu0eIPk2kr8eYZtEaqLgINJkVqhmeRmA9ziprIcAbEZhtzSQ/BaAuwD8BsmnSa6KrrUi3lSVVUREyqjnICIiZRQcRESkjIKDiIiUUXAQEZEyCg4iIlJGwUFERMooOIiISJn/D90OOb6AerVaAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", From 1f13a16c50c24dfb74be71279d75829add5be72d Mon Sep 17 00:00:00 2001 From: Nick A Date: Thu, 20 Aug 2020 18:15:36 -0500 Subject: [PATCH 4/4] Created using Colaboratory --- .../LS_DS_134_Clustering_Assignment.ipynb | 2847 ++++++++++++++++- 1 file changed, 2718 insertions(+), 129 deletions(-) diff --git a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb index 3342efb0..39bfdb16 100644 --- a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb +++ b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb @@ -5,7 +5,8 @@ "colab": { "name": "LS_DS_134_Clustering_Assignment.ipynb", "provenance": [], - "collapsed_sections": [] + "collapsed_sections": [], + "include_colab_link": true }, "kernelspec": { "name": "python3", @@ -13,6 +14,16 @@ } }, "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, { "cell_type": "markdown", "metadata": { @@ -54,11 +65,11 @@ "metadata": { "id": "ws5R9X6hLJQ2", "colab_type": "code", - "outputId": "078a0dfa-1b57-4a70-b7dd-6747910059c9", "colab": { "base_uri": "https://localhost:8080/", - "height": 278 - } + "height": 258 + }, + "outputId": "bfc998dd-fe93-458c-ef05-592d08509513" }, "source": [ "import pandas as pd\n", @@ -68,11 +79,11 @@ "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 = pd.read_csv(\"https://raw.githubusercontent.com/ryanleeallred/datasets/master/Cancer_Cells.csv\")\n", - "print(df.shape)\n", - "df.head()" + "df_orig = pd.read_csv(\"https://raw.githubusercontent.com/ryanleeallred/datasets/master/Cancer_Cells.csv\")\n", + "print(df_orig.shape)\n", + "df_orig.head()" ], - "execution_count": 0, + "execution_count": 57, "outputs": [ { "output_type": "stream", @@ -113,7 +124,19 @@ " compactness_mean\n", " concavity_mean\n", " concave points_mean\n", - " ...\n", + " symmetry_mean\n", + " fractal_dimension_mean\n", + " radius_se\n", + " texture_se\n", + " perimeter_se\n", + " area_se\n", + " smoothness_se\n", + " compactness_se\n", + " concavity_se\n", + " concave points_se\n", + " symmetry_se\n", + " fractal_dimension_se\n", + " radius_worst\n", " texture_worst\n", " perimeter_worst\n", " area_worst\n", @@ -139,7 +162,19 @@ " 0.27760\n", " 0.3001\n", " 0.14710\n", - " ...\n", + " 0.2419\n", + " 0.07871\n", + " 1.0950\n", + " 0.9053\n", + " 8.589\n", + " 153.40\n", + " 0.006399\n", + " 0.04904\n", + " 0.05373\n", + " 0.01587\n", + " 0.03003\n", + " 0.006193\n", + " 25.38\n", " 17.33\n", " 184.60\n", " 2019.0\n", @@ -163,7 +198,19 @@ " 0.07864\n", " 0.0869\n", " 0.07017\n", - " ...\n", + " 0.1812\n", + " 0.05667\n", + " 0.5435\n", + " 0.7339\n", + " 3.398\n", + " 74.08\n", + " 0.005225\n", + " 0.01308\n", + " 0.01860\n", + " 0.01340\n", + " 0.01389\n", + " 0.003532\n", + " 24.99\n", " 23.41\n", " 158.80\n", " 1956.0\n", @@ -187,7 +234,19 @@ " 0.15990\n", " 0.1974\n", " 0.12790\n", - " ...\n", + " 0.2069\n", + " 0.05999\n", + " 0.7456\n", + " 0.7869\n", + " 4.585\n", + " 94.03\n", + " 0.006150\n", + " 0.04006\n", + " 0.03832\n", + " 0.02058\n", + " 0.02250\n", + " 0.004571\n", + " 23.57\n", " 25.53\n", " 152.50\n", " 1709.0\n", @@ -211,7 +270,19 @@ " 0.28390\n", " 0.2414\n", " 0.10520\n", - " ...\n", + " 0.2597\n", + " 0.09744\n", + " 0.4956\n", + " 1.1560\n", + " 3.445\n", + " 27.23\n", + " 0.009110\n", + " 0.07458\n", + " 0.05661\n", + " 0.01867\n", + " 0.05963\n", + " 0.009208\n", + " 14.91\n", " 26.50\n", " 98.87\n", " 567.7\n", @@ -235,7 +306,19 @@ " 0.13280\n", " 0.1980\n", " 0.10430\n", - " ...\n", + " 0.1809\n", + " 0.05883\n", + " 0.7572\n", + " 0.7813\n", + " 5.438\n", + " 94.44\n", + " 0.011490\n", + " 0.02461\n", + " 0.05688\n", + " 0.01885\n", + " 0.01756\n", + " 0.005115\n", + " 22.54\n", " 16.67\n", " 152.20\n", " 1575.0\n", @@ -249,44 +332,15 @@ " \n", " \n", "\n", - "

5 rows × 33 columns

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

5 rows × 32 columns

\n", "" ], "text/plain": [ - " id radius_mean texture_mean perimeter_mean area_mean \\\n", - "0 842302 17.99 10.38 122.80 1001.0 \n", - "1 842517 20.57 17.77 132.90 1326.0 \n", - "2 84300903 19.69 21.25 130.00 1203.0 \n", - "3 84348301 11.42 20.38 77.58 386.1 \n", - "4 84358402 20.29 14.34 135.10 1297.0 \n", - "\n", - " smoothness_mean compactness_mean concavity_mean concave points_mean \\\n", - "0 0.11840 0.27760 0.3001 0.14710 \n", - "1 0.08474 0.07864 0.0869 0.07017 \n", - "2 0.10960 0.15990 0.1974 0.12790 \n", - "3 0.14250 0.28390 0.2414 0.10520 \n", - "4 0.10030 0.13280 0.1980 0.10430 \n", - "\n", - " symmetry_mean ... texture_worst perimeter_worst area_worst \\\n", - "0 0.2419 ... 17.33 184.60 2019.0 \n", - "1 0.1812 ... 23.41 158.80 1956.0 \n", - "2 0.2069 ... 25.53 152.50 1709.0 \n", - "3 0.2597 ... 26.50 98.87 567.7 \n", - "4 0.1809 ... 16.67 152.20 1575.0 \n", - "\n", - " smoothness_worst compactness_worst concavity_worst concave points_worst \\\n", - "0 0.1622 0.6656 0.7119 0.2654 \n", - "1 0.1238 0.1866 0.2416 0.1860 \n", - "2 0.1444 0.4245 0.4504 0.2430 \n", - "3 0.2098 0.8663 0.6869 0.2575 \n", - "4 0.1374 0.2050 0.4000 0.1625 \n", - "\n", - " symmetry_worst fractal_dimension_worst Unnamed: 32 \n", - "0 0.4601 0.11890 NaN \n", - "1 0.2750 0.08902 NaN \n", - "2 0.3613 0.08758 NaN \n", - "3 0.6638 0.17300 NaN \n", - "4 0.2364 0.07678 NaN \n", + " id radius_mean ... fractal_dimension_worst Unnamed: 32\n", + "0 842302 17.99 ... 0.11890 NaN\n", + "1 842517 20.57 ... 0.08902 NaN\n", + "2 84300903 19.69 ... 0.08758 NaN\n", + "3 84348301 11.42 ... 0.17300 NaN\n", + "4 84358402 20.29 ... 0.07678 NaN\n", "\n", "[5 rows x 32 columns]" ] @@ -540,7 +631,7 @@ "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 58 } ] }, @@ -562,55 +653,1518 @@ "metadata": { "id": "U92Y3jNKPpjJ", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "b67c06ff-ab52-42cf-b56b-48c2f7b7bba9" }, "source": [ - "# Perform K-Means Clustering on the Dataset" + "df = df.drop(['id','Unnamed: 32'], axis=1)\n", + "df.head()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 59, + "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", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.11890
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.08902
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.08758
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.17300
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... symmetry_worst fractal_dimension_worst\n", + "0 17.99 10.38 ... 0.4601 0.11890\n", + "1 20.57 17.77 ... 0.2750 0.08902\n", + "2 19.69 21.25 ... 0.3613 0.08758\n", + "3 11.42 20.38 ... 0.6638 0.17300\n", + "4 20.29 14.34 ... 0.2364 0.07678\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 59 + } + ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "7ghqYSxrP_FE", - "colab_type": "text" + "id": "ddKrgwvJ1Vcd", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "outputId": "adb74fde-d3ff-439d-b4d9-a50911a64fb0" }, "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}" + "df.plot.scatter('radius_mean','compactness_mean')\n", + "plt.show()" + ], + "execution_count": 60, + "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": "OIG7-yGLP-eA", + "id": "Zs1BJFySViDn", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "outputId": "2165ecb1-ac39-448a-c2e3-d369636c5896" }, "source": [ - "# Your Code Here" + "df.plot.scatter('perimeter_se', 'perimeter_worst')\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 61, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "BedOTS0eJ9_K", - "colab_type": "text" + "id": "1T8FQ4B5eVu7", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 + }, + "outputId": "9aac1b85-7601-4e10-f4ff-79ce2d891458" }, "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" + "df.plot.scatter('radius_mean', 'radius_se')\n", + "plt.show()" + ], + "execution_count": 62, + "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": "vByXws03efGu", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 280 + }, + "outputId": "db52ddb5-3a58-4fb3-ed7a-704611eeace3" + }, + "source": [ + "df.plot.scatter('radius_se', 'radius_worst')\n", + "plt.show()" + ], + "execution_count": 63, + "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": "oVcDQA52qtXB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 476 + }, + "outputId": "687baa93-0d1a-4b1f-b0f2-217049ad576e" + }, + "source": [ + "kmeans = KMeans(2)\n", + "kmeans.fit(df)\n", + "kmeans.labels_" + ], + "execution_count": 64, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0,\n", + " 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0,\n", + " 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1,\n", + " 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,\n", + " 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0,\n", + " 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0,\n", + " 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0,\n", + " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,\n", + " 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", + " 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0],\n", + " dtype=int32)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 64 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OCN6X9wers-x", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "outputId": "c070d45d-5601-4c16-b6bd-ae3ef9903cc6" + }, + "source": [ + "df.values" + ], + "execution_count": 65, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[1.799e+01, 1.038e+01, 1.228e+02, ..., 2.654e-01, 4.601e-01,\n", + " 1.189e-01],\n", + " [2.057e+01, 1.777e+01, 1.329e+02, ..., 1.860e-01, 2.750e-01,\n", + " 8.902e-02],\n", + " [1.969e+01, 2.125e+01, 1.300e+02, ..., 2.430e-01, 3.613e-01,\n", + " 8.758e-02],\n", + " ...,\n", + " [1.660e+01, 2.808e+01, 1.083e+02, ..., 1.418e-01, 2.218e-01,\n", + " 7.820e-02],\n", + " [2.060e+01, 2.933e+01, 1.401e+02, ..., 2.650e-01, 4.087e-01,\n", + " 1.240e-01],\n", + " [7.760e+00, 2.454e+01, 4.792e+01, ..., 0.000e+00, 2.871e-01,\n", + " 7.039e-02]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 65 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5qUaIUfAuE7_", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "a2720ae0-144d-4e54-a022-08d64d62c6a5" + }, + "source": [ + "average_squared_distance = []\n", + "\n", + "for k in range (1,11):\n", + " kmeans=KMeans(n_clusters=k)\n", + " kmeans.fit(df)\n", + " average_squared_distance.append(kmeans.inertia_)\n", + "\n", + "print(average_squared_distance)" + ], + "execution_count": 66, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[256677243.9542025, 77943099.87829883, 47285926.90370672, 29226541.651979793, 20535235.908362117, 16563278.384730052, 13282943.218135815, 11212990.021952674, 9447295.181026846, 8480125.858934658]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Pi32m4XkwBDa", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "outputId": "414a90f7-6d3a-4339-91d9-fc1b5335ee12" + }, + "source": [ + "plt.plot(average_squared_distance, 'bx-')\n", + "plt.xlabel('k')\n", + "plt.ylabel('Sum of squared distances')\n", + "plt.title('Elbow Method')\n", + "plt.show()" + ], + "execution_count": 67, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7ghqYSxrP_FE", + "colab_type": "text" + }, + "source": [ + "## Check you work: \n", + "\n", + "This is something that in a truly unsupervised learning situation **WOULD NOT BE POSSIBLE**. But for educational purposes go back and grab the true diagnosis column (label) from the original dataset. Take your cluster labels and compare them to the original diagnosis column. You can make scatterplots for each to see how they compare or you can calculate a percent accuracy score like: \n", + "\\begin{align}\n", + "\\frac{\\text{Num Correct Labels}}{\\text{Num Total Observations}}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "j4rz7m3_zzRn", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "c8e18c0d-1628-445c-f5c1-1f02fd6b4d4a" + }, + "source": [ + "kmeans = KMeans(2)\n", + "kmeans.fit(df)\n", + "kmeans.labels_\n", + "df['clusters'] = kmeans.labels_\n", + "df.head()" + ], + "execution_count": 68, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstclusters
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.118901
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.089021
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.087581
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.173000
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.076781
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... fractal_dimension_worst clusters\n", + "0 17.99 10.38 ... 0.11890 1\n", + "1 20.57 17.77 ... 0.08902 1\n", + "2 19.69 21.25 ... 0.08758 1\n", + "3 11.42 20.38 ... 0.17300 0\n", + "4 20.29 14.34 ... 0.07678 1\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 68 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OIG7-yGLP-eA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "a214f944-e156-4b56-cfb5-5aa70d3cbff5" + }, + "source": [ + "df['diagnosis'] = df_orig['diagnosis']\n", + "df.head()" + ], + "execution_count": 69, + "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", + "
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_worstclustersdiagnosis
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.118901M
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.089021M
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.087581M
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.173000M
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.076781M
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... clusters diagnosis\n", + "0 17.99 10.38 ... 1 M\n", + "1 20.57 17.77 ... 1 M\n", + "2 19.69 21.25 ... 1 M\n", + "3 11.42 20.38 ... 0 M\n", + "4 20.29 14.34 ... 1 M\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 69 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_lQmqH-x1BIy", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "ce12a0a9-251e-43ef-8150-cfc0987757d4" + }, + "source": [ + "df['diagnosis'].value_counts()" + ], + "execution_count": 70, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "B 357\n", + "M 212\n", + "Name: diagnosis, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 70 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OS8wXOFU0lAd", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "3f22ad06-b0ea-4d21-be86-6fbb50cb9e79" + }, + "source": [ + "df['diagnosis'] = df['diagnosis'].replace({'M':1, 'B':0})\n", + "df.head()" + ], + "execution_count": 71, + "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", + "
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_worstclustersdiagnosis
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.1189011
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.0890211
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.0875811
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.1730001
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.0767811
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... clusters diagnosis\n", + "0 17.99 10.38 ... 1 1\n", + "1 20.57 17.77 ... 1 1\n", + "2 19.69 21.25 ... 1 1\n", + "3 11.42 20.38 ... 0 1\n", + "4 20.29 14.34 ... 1 1\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 71 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Fg9JjqTR1NbZ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "040302c3-72b3-4963-f045-48853fffa50a" + }, + "source": [ + "(df['clusters'] == df['diagnosis']).value_counts()" + ], + "execution_count": 72, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True 486\n", + "False 83\n", + "dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 72 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "reEODnIf2RkL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "123b9d11-c0f8-4771-f4b7-f579facc853a" + }, + "source": [ + "df.shape[0]" + ], + "execution_count": 74, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "569" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 74 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EbB4Tt7h2K5q", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "82d132ac-bea1-47b3-cb35-b1089d08824b" + }, + "source": [ + "# correct labels over total observations\n", + "(df['clusters'] == df['diagnosis']).value_counts()[1] / df.shape[0]" + ], + "execution_count": 73, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.8541300527240774" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 73 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BedOTS0eJ9_K", + "colab_type": "text" + }, + "source": [ + "# 2) Perform PCA on your dataset first and *then* use k-means clustering. \n", + "\n", + "- You need to standardize your data before PCA.\n", + "- First try clustering just on PC1 and PC2 so that you can make a scatterplot of your clustering.\n", + "- Then use use a scree plot to decide how many principal components to include in your clustering, and use however many principal components you need in order to retain 90% of the variation of the original dataset\n", + "\n" ] }, { @@ -618,13 +2172,1048 @@ "metadata": { "id": "dW1AeAK8PNah", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 258 + }, + "outputId": "826cc3a3-407a-444c-ef6a-23d93e6f2d34" + }, + "source": [ + "dataset = pd.read_csv(\"https://raw.githubusercontent.com/ryanleeallred/datasets/master/Cancer_Cells.csv\")\n", + "print(dataset.shape)\n", + "dataset.head()" + ], + "execution_count": 75, + "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": 75 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "55CuwWpD3ggg", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "4cab6157-21f4-49b5-8817-dfea014f9649" + }, + "source": [ + "df = dataset.drop(['id', 'diagnosis', 'Unnamed: 32'], axis=1)\n", + "\n", + "df.head()" + ], + "execution_count": 76, + "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", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.11890
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.08902
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.08758
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.17300
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... symmetry_worst fractal_dimension_worst\n", + "0 17.99 10.38 ... 0.4601 0.11890\n", + "1 20.57 17.77 ... 0.2750 0.08902\n", + "2 19.69 21.25 ... 0.3613 0.08758\n", + "3 11.42 20.38 ... 0.6638 0.17300\n", + "4 20.29 14.34 ... 0.2364 0.07678\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 76 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "XvvT67eh3l3g", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "outputId": "c916bd87-5f03-4b2a-ce4d-f58fd65ff230" + }, + "source": [ + "scalar = StandardScaler()\n", + "Z = scalar.fit_transform(df)\n", + "\n", + "Z" + ], + "execution_count": 79, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 1.09706398, -2.07333501, 1.26993369, ..., 2.29607613,\n", + " 2.75062224, 1.93701461],\n", + " [ 1.82982061, -0.35363241, 1.68595471, ..., 1.0870843 ,\n", + " -0.24388967, 0.28118999],\n", + " [ 1.57988811, 0.45618695, 1.56650313, ..., 1.95500035,\n", + " 1.152255 , 0.20139121],\n", + " ...,\n", + " [ 0.70228425, 2.0455738 , 0.67267578, ..., 0.41406869,\n", + " -1.10454895, -0.31840916],\n", + " [ 1.83834103, 2.33645719, 1.98252415, ..., 2.28998549,\n", + " 1.91908301, 2.21963528],\n", + " [-1.80840125, 1.22179204, -1.81438851, ..., -1.74506282,\n", + " -0.04813821, -0.75120669]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 79 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AoKhvWGR4r-z", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "9285afef-9db6-4260-f28e-f9d2ea3e0571" }, "source": [ - "##### Your Code Here #####" + "pca = PCA(.9)\n", + "pca_features = pca.fit_transform(Z)\n", + "\n", + "pca_features.shape" ], - "execution_count": 0, - "outputs": [] + "execution_count": 81, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(569, 7)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 81 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "XElTIGxb47vc", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "83395a2e-7e1f-4078-9a37-6458ed963dd1" + }, + "source": [ + "pca_features = pd.DataFrame(pca_features)\n", + "pca_features.head()" + ], + "execution_count": 82, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0123456
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370
12.387802-3.768172-0.5292931.1182640.6217750.0286560.013358
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.668166
37.12295310.275589-3.2327900.152547-2.9608783.0534221.429911
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.936213
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4 5 6\n", + "0 9.192837 1.948583 -1.123166 3.633731 -1.195110 1.411424 2.159370\n", + "1 2.387802 -3.768172 -0.529293 1.118264 0.621775 0.028656 0.013358\n", + "2 5.733896 -1.075174 -0.551748 0.912083 -0.177086 0.541452 -0.668166\n", + "3 7.122953 10.275589 -3.232790 0.152547 -2.960878 3.053422 1.429911\n", + "4 3.935302 -1.948072 1.389767 2.940639 0.546747 -1.226495 -0.936213" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 82 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "smJDC-iC50zs", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "17a3d6f4-d5d5-4be1-d3e4-b7059a61cf15" + }, + "source": [ + "pca_features.columns = ['pc1', 'pc2', 'pc3', 'pc4', 'pc5', 'pc6', 'pc7']\n", + "pca_features.head()" + ], + "execution_count": 83, + "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", + "
pc1pc2pc3pc4pc5pc6pc7
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370
12.387802-3.768172-0.5292931.1182640.6217750.0286560.013358
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.668166
37.12295310.275589-3.2327900.152547-2.9608783.0534221.429911
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.936213
\n", + "
" + ], + "text/plain": [ + " pc1 pc2 pc3 pc4 pc5 pc6 pc7\n", + "0 9.192837 1.948583 -1.123166 3.633731 -1.195110 1.411424 2.159370\n", + "1 2.387802 -3.768172 -0.529293 1.118264 0.621775 0.028656 0.013358\n", + "2 5.733896 -1.075174 -0.551748 0.912083 -0.177086 0.541452 -0.668166\n", + "3 7.122953 10.275589 -3.232790 0.152547 -2.960878 3.053422 1.429911\n", + "4 3.935302 -1.948072 1.389767 2.940639 0.546747 -1.226495 -0.936213" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 83 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "J1NH0LbE69wt", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 476 + }, + "outputId": "53b26f65-df74-46f5-adc3-f65e84eaf44c" + }, + "source": [ + "kmeans = KMeans(2)\n", + "kmeans.fit(pca_features)\n", + "\n", + "kmeans.labels_" + ], + "execution_count": 86, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0,\n", + " 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1,\n", + " 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1,\n", + " 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,\n", + " 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1,\n", + " 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0,\n", + " 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0,\n", + " 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1,\n", + " 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1,\n", + " 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0,\n", + " 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0,\n", + " 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,\n", + " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1,\n", + " 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1,\n", + " 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0,\n", + " 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0,\n", + " 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,\n", + " 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n", + " 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0,\n", + " 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0],\n", + " dtype=int32)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 86 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3LMSd3Lp7SL6", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "47c61ee0-34cf-4729-8120-fcb5f56754dd" + }, + "source": [ + "pca_features['clusters'] = kmeans.labels_\n", + "\n", + "pca_features.head()" + ], + "execution_count": 87, + "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", + "
pc1pc2pc3pc4pc5pc6pc7clusters
09.1928371.948583-1.1231663.633731-1.1951101.4114242.1593701
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133581
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681661
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362131
\n", + "
" + ], + "text/plain": [ + " pc1 pc2 pc3 ... pc6 pc7 clusters\n", + "0 9.192837 1.948583 -1.123166 ... 1.411424 2.159370 1\n", + "1 2.387802 -3.768172 -0.529293 ... 0.028656 0.013358 1\n", + "2 5.733896 -1.075174 -0.551748 ... 0.541452 -0.668166 1\n", + "3 7.122953 10.275589 -3.232790 ... 3.053422 1.429911 1\n", + "4 3.935302 -1.948072 1.389767 ... -1.226495 -0.936213 1\n", + "\n", + "[5 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 87 + } + ] }, { "cell_type": "markdown", @@ -664,7 +3253,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": null, "outputs": [] } ]