From e8c941856fc25107a483c5201e75f9c2f37053a5 Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Mon, 14 Sep 2020 14:08:25 -0400 Subject: [PATCH 1/9] Filled in lecture notes --- .../LS_DS_131_Vectors_and_Matrices.ipynb | 2442 ++++++++--------- 1 file changed, 1106 insertions(+), 1336 deletions(-) diff --git a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb index 10e636c5..41b1636e 100644 --- a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb +++ b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb @@ -3,9 +3,10 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_131_Vectors_and_Matrices.ipynb", + "name": "Vectors & Matrices (DS20).ipynb", "provenance": [], "collapsed_sections": [], + "toc_visible": true, "include_colab_link": true }, "kernelspec": { @@ -21,70 +22,73 @@ "colab_type": "text" }, "source": [ - "\"Open" + "\"Open" ] }, { "cell_type": "markdown", "metadata": { - "id": "8XRzC5P9s48F", + "id": "8ItqEpV-DlUV", "colab_type": "text" }, "source": [ - "Lambda School Data Science\n", + "# Vectors & Matrices\n", "\n", - "*Unit 1, Sprint 3, Module 1*\n", + "## Objectives: \n", "\n", - "---\n", - "\n" + "- Explain **why we care about linear algebra** in the scope of data science\n", + "- **Graph vectors**, identify their **dimensionality**, calculate their length (**norm**), and take the **dot product of two vectors**.\n", + "- Identify the **dimensionality of matrices**, multiply them, identify when **matrix multiplication** is a legal operation, and **transpose a matrix**.\n", + "- Identify special types of square matrices including the **identity matrix**, as well as find the **determinant** and **inverse of a matrix**.\n", + "- Use **NumPy** to perform basic **Linear Algebra operations** with Python." ] }, { "cell_type": "markdown", "metadata": { - "id": "lSw1x2fks8dO", + "id": "wo-wWSfPHpih", "colab_type": "text" }, "source": [ - "# Vectors and Matrices\n", - "\n", - "- Student can illustrate why we care about linear algebra in the scope of data science.\n", - "- Student can graph vectors, identify their dimensionality, calculate their length (norm), and take the dot product of two vectors.\n", - "- Student can identify the dimensionality of matrices, multiply them, identify when matrix multiplication is a legal operation, and transpose a matrix.\n", - "- Student can identify special types of square matrices including the identity matrix, as well as find the determinant and inverse of a matrix.\n", - "- Student can use NumPy to perform basic Linear Algebra operations with Python." + "## Why Linear Algebra?" ] }, { "cell_type": "markdown", "metadata": { - "id": "M6Bw-os-tETt", + "id": "TZ1nkVGpZyH5", "colab_type": "text" }, "source": [ - "# [Why Linear Algebra?](#why-linear-algebra)\n", + "Linear algebra is a mathematical discipline concerning **vectors** and **matrices** and how to go about using them.\n", "\n", - "Student can illustrate why we care about linear algebra in the scope of data science." + "> The study of linear systems (finite sets of linear equations) and representing them in \"**vector spaces**\"." ] }, { "cell_type": "markdown", "metadata": { - "id": "U5Vt7Q_N80pJ", + "id": "diEooxiXJgn2", "colab_type": "text" }, "source": [ - "## Overview\n", - "\n", "Data Science, Machine Learning, and Artificial intelligence is all about getting computers to do things for us better, cheaper, and faster than we could do them ourselves.\n", "\n", - "How do we do that? Computers are good at doing small repetitive tasks (like arithmetic). if we tell them what small repetitive tasks to do in the right order then sometimes all of those combined behaviors will result in something that looks like a human's behavior (or at least the decisions/output look like something a human might decide to do/create).\n", - "\n", - "\"Le\n", + "How do we do that? Computers are good at doing small repetitive tasks (like arithmetic). If we tell them what small repetitive tasks to do in the right order then sometimes all of those combined behaviors will result in something that looks like a human's behavior (or at least the decisions/output look like something a human might decide to do/create)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7UgOdBGdbz9t", + "colab_type": "text" + }, + "source": [ + "**Algorithm** = A set of instructions that we give to a computer to complete certain tasks.\n", "\n", - "[Le Comte de Belamy](https://obvious-art.com/le-comte-de-belamy.htm)\n", + "**Data Structure** = The method that we use to organize and store our set of instructions so that the computer can do them super fast.\n", "\n", - "The set of instructions that we give to a computer to complete certain tasks is called an **algorithm**. The better that we can organize the set of instructions, the faster that computers can do them. The method that we use to organize and store our set of instructions so that the computer can do them super fast is called a **data structure**. The practice of optimizing the organization of our data structures so that they run really fast and efficiently is called **computer science**. (This is why we will have a unit dedicated solely to computer science in a few months). Data Scientists should care how fast computers can process their sets of instructions (algorithms)." + "**Computer Science** = The practice of optimizing the organization of our data structures so that they run really fast and efficiently." ] }, { @@ -94,8 +98,6 @@ "colab_type": "text" }, "source": [ - "## Follow Along\n", - "\n", "Here's a simple data structure, in Python it's known as a **list**. It's one of the simplest ways that we can store things (data) and maintain their order. When giving instructions to a computer, it's important that the computer knows in what order to execute them." ] }, @@ -123,517 +125,371 @@ "\n", "# We'll have self-driving cars next week for sure. NBD" ], - "execution_count": 0, + "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { - "id": "6eXxjBbS9Z9y", + "id": "0dKKkG2mcn-9", "colab_type": "text" }, "source": [ - "# Maintaining the order of our sets of ordered instruction-sets\n", - "Here's another data structure we can make by putting lists inside of lists, this is called a two-dimensional list. Sometimes it is also known as a two-dimensional array or --if you put some extra methods on it-- a dataframe. As you can see things are starting to get a little bit more complicated." + "### Common Applications of Linear Algebra in Data Science:\n", + "\n", + "- GANs\n", + "- Convolutional Neural Networks (Image Recognition)\n", + "- PCA" ] }, { - "cell_type": "code", + "cell_type": "markdown", "metadata": { - "id": "78yTEOYU9c2K", - "colab_type": "code", - "colab": {} + "id": "bjDL_TdYNVK1", + "colab_type": "text" }, "source": [ - "holdMyData = [\n", - " [1,2,3],\n", - " [4,5,6],\n", - " [7,8,9]\n", - "]\n", + "So why linear algebra? Because the mathematical principles behinds **vectors** and **matrices** (lists and 2D lists) will help us understand how we can tell computers how to do an insane number of calculations in a very short amount of time.\n", "\n", - "# Disregard the quality of these bad instructions" - ], - "execution_count": 0, - "outputs": [] + "Remember when we said that computers are really good at doing small and repetitive tasks very quickly?" + ] }, { "cell_type": "markdown", "metadata": { - "id": "Qx4kuaV29eXE", + "id": "ew_3eKta2h3W", "colab_type": "text" }, "source": [ - "## Linear Algebra - organize and execute big calculations/operations really fast\n", - "\n", - "So why linear algebra? Because the mathematical principles behinds **vectors** and **matrices** (lists and 2D lists) will help us understand how we can tell computers how to do an insane number of calculations in a very short amount of time.\n", - "\n", - "Remember when we said that computers are really good at doing small and repetitive tasks very quickly?\n", - "\n", - "## I Give You... Matrix Multiplication:\n", - "\n", - "\n", - "\n", - "If you mess up any of those multiplications or additions you're up a creek.\n", - "\n", - "## I Give You... Finding the Determinant of a Matrix: (an introductory linear algebra topic)\n", - "\n", - "## 2x2 Matrix\n", - "\n", - "\n", - "Just use the formula!\n", - "\n", - "## 3x3 Matrix\n", - "\n", - "\n", - "Just calculate the determinant of 3 different 2x2 matrices and multiply them by 3 other numbers and add it all up.\n", - " \n", - "## 4x4 Matrix\n", - "\n", - "\n", - "Just calculate 3 diferent 3x3 matrix determinants which will require the calculating of 9 different 2x2 matrix determinants, multiply them all by the right numbers and add them all up. And if you mess up any of those multiplications or additions you're up a creek.\n", - "\n", - "## 5x5 Matrix! \n", - "\n", - "\n", - "## ...\n", + "### Are we going to learn to do Linear Algebra by hand?\n", "\n", + "Let me quote your seventh grade math teacher:\n", "\n", - "## ...\n", + "> \"**ArE yOu GoInG To CaRrY a CaLcUlAtOr ArOuNd wItH yOu EvErYwHeRe YoU gO???**\"\n", "\n", - "Just kidding, any linear algebra professor who assigns the hand calculation of a 5x5 matrix determinant (or larger) is a sadist. This is what computers were invented for! Why risk so much hand calculation in order to do something that computers **never** make a mistake at?\n", + "Of course you're going to carry a calculator around everywhere, so mostly **NO**, we're not going to do a lot of hand calculating. We're going to try and refrain from calculating things by hand unless it is absolutely necessary in order to understand and implement the concepts.\n", "\n", - "By the way, when was the last time that you worked with a dataframe that was 4 rows x 4 columns or smaller?\n", + "We're not trying to re-invent the wheel.\n", "\n", - "Quick, find the determinant of this 42837x42837 dataframe by hand!" + "We're learning how to **use** the wheel. " ] }, { "cell_type": "markdown", "metadata": { - "id": "vKQG-YvM9ihY", + "id": "Xai2ZKruXLCo", "colab_type": "text" }, "source": [ - "### Common Applications of Linear Algebra in Data Science:\n", - "\n", - "### Vectors: Rows, Columns, lists, arrays\n", - "\n", - "### Matrices: tables, spreadsheets, dataframes\n", - "\n", - "### Linear Regression: (You might remember from the intro course)\n", - "\n", - "" + "## NumPy" ] }, { - "cell_type": "code", + "cell_type": "markdown", "metadata": { - "id": "-MaY3bJj9mgj", - "colab_type": "code", - "outputId": "801f4ead-e4ff-4591-c24d-c1cb02b3d6ac", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 52 - } + "id": "cZLPRupx14SX", + "colab_type": "text" }, "source": [ - "# Linear Regression Example\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import pandas as pd\n", - "\n", - "# Read CSV\n", - "df = pd.read_csv('https://raw.githubusercontent.com/ryanleeallred/datasets/master/Ice_Cream_Sales.csv')\n", - "\n", - "# Create Column of 1s\n", - "df['Ones'] = np.ones(11)\n", - "\n", - "# Format X and Y Matrices\n", - "X = df[['Ones', 'Farenheit']].values\n", - "Y = df['Dollars'].values.reshape(-1, 1)\n", "\n", - "# Calculate Beta Values\n", - "beta = np.matmul(np.linalg.inv(np.matmul(np.transpose(X), X)), np.matmul(np.transpose(X), Y))\n", + "NumPy is at the core of many types of scientific computing and is the main tool that we will use to perform Linear Algebra operations with Python. \n", "\n", - "print(beta)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "[[-596.20648399]\n", - " [ 24.68849397]]\n" - ], - "name": "stdout" - } + "We have talked about how vectors are a lot like Python Lists, however we will mostly use NumPy arrays instead of Python lists as the main data structure. Lets demonstrate some of the main differences betwen Python lists and NumPy Arrays." ] }, { "cell_type": "code", "metadata": { - "id": "mLvWT6lj9yhn", + "id": "xAXZXcZF1wFA", "colab_type": "code", - "outputId": "3ab2179e-05ba-47bb-9532-6d14da79f5d4", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 295 - } + "colab": {} }, "source": [ - "# Assign Beta Values to Variables\n", - "beta_0 = beta[0,0]\n", - "beta_1 = beta[1,0]\n", - "\n", - "# Plot points with line of best fit\n", - "plt.scatter(df['Farenheit'], df['Dollars'])\n", - "axes = plt.gca()\n", - "x_vals = np.array(axes.get_xlim())\n", - "y_vals = beta_0 + beta_1 * x_vals\n", - "plt.plot(x_vals, y_vals, '-', color='b')\n", - "plt.title('Ice Cream Sales Regression Line')\n", - "plt.xlabel('Farenheit')\n", - "plt.ylabel('Dollars')\n", - "plt.show()" + "import numpy as np" ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\ngg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] + "execution_count": 2, + "outputs": [] }, { "cell_type": "markdown", "metadata": { - "id": "YQPzGmQ292_k", + "id": "IZd2jkfPXY_X", "colab_type": "text" }, "source": [ - "### Dimensionality Reduction Techniques: Principle Component Analysis (PCA) and Singular Value Decomposition (SVD)\n", - "\n", - "Take a giant dataset and distill it down to its important parts. (typically as a pre-processing step for creating visualizations or putting into other models.)\n", - "\n", - "" + "- Why not Python lists? (Array broadcasting)\n", + "- 1-Dimensional vs 2-Dimensional NumPy Arrays\n", + "- If I explicitly want a row of column vector then I need to use a 2D NumPy Array\n", + "- Only use NumPy Arrans, DO NOT use the NumPy Matrix class." ] }, { "cell_type": "markdown", "metadata": { - "id": "LNys1ivi-KKJ", + "id": "ANtP3EcMXXiL", "colab_type": "text" }, "source": [ - "### Deep Learning: Convolutional Neural Networks, (Image Recognition)\n", - "\n", - "\"Convolving\" is the process of passing a filter/kernel (small matrix) over the pixels of an image, multiplying them together, and using the result to create a new matrix. The resulting matrix will be a new image that has been modified by the filter to emphasize certain qualities of an image. This is entirely a linear algebra-based process. A convolutional neural network learns the filters that help it best identify certain aspects of images and thereby classify immages more accurately. \n", - "\n", - "" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Z7jkvntP-h5P", - "colab_type": "code", - "outputId": "f4d20ee0-2a09-432a-9274-132eee0c54a3", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 86 - } - }, - "source": [ - "!pip install imageio" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Requirement already satisfied: imageio in /usr/local/lib/python3.6/dist-packages (2.4.1)\n", - "Requirement already satisfied: pillow in /usr/local/lib/python3.6/dist-packages (from imageio) (4.3.0)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from imageio) (1.17.4)\n", - "Requirement already satisfied: olefile in /usr/local/lib/python3.6/dist-packages (from pillow->imageio) (0.46)\n" - ], - "name": "stdout" - } + "Remember that you'll need many functions from [the documentation](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.linalg.html) in order to complete the assignment" ] }, { "cell_type": "code", "metadata": { - "id": "3WVBNlbp-lc7", + "id": "3FJDPjwytDfZ", "colab_type": "code", - "outputId": "d6982c2e-1f55-47f3-e0d8-65ab7694cb6c", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 34 + }, + "outputId": "4f52ec83-ff6d-43ac-bf0f-bb3cf157b307" }, "source": [ - "# Convolution in action\n", - "import imageio\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import scipy.ndimage as nd\n", - "from skimage.exposure import rescale_intensity\n", - "from skimage import color\n", + "### What will happen when I add the two Python lists together?\n", + "\n", + "a = [1, 2, 3]\n", "\n", - "img = imageio.imread('https://www.dropbox.com/s/dv3vtiqy439pzag/all_the_things.png?raw=1')\n", - "plt.axis('off')\n", - "plt.imshow(img);" + "b = [4, 5, 6]\n", + "\n", + "a + b" ], - "execution_count": 0, + "execution_count": 1, "outputs": [ { - "output_type": "display_data", + "output_type": "execute_result", "data": { - "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ - "
" + "[1, 2, 3, 4, 5, 6]" ] }, "metadata": { "tags": [] - } + }, + "execution_count": 1 } ] }, { "cell_type": "code", "metadata": { - "id": "eqJTWxqo-oE6", + "id": "N7S-i-CAZv67", "colab_type": "code", - "outputId": "80a37336-4c6c-4dd9-94d7-6f05472d83af", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 164 + }, + "outputId": "625c33c0-335b-4871-b9fd-239e264c44a6" }, "source": [ - "# Convert I to grayscale, so it will be MxNx1 instead of MxNx4\n", - "grayscale = color.rgb2gray(img)\n", - "plt.axis('off')\n", - "plt.imshow(grayscale, cmap=plt.cm.gray);" + "a * b" ], - "execution_count": 0, + "execution_count": 3, "outputs": [ { - "output_type": "display_data", - "data": { - "image/png": "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\nAAAAAElFTkSuQmCC\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } + "output_type": "error", + "ename": "TypeError", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'list'" + ] } ] }, { "cell_type": "code", "metadata": { - "id": "RoIS6JGD-qap", + "id": "SFtJF1symxuY", "colab_type": "code", - "outputId": "a5110c43-cd27-49c1-9107-abb0678f1436", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 51 + }, + "outputId": "a4fbb926-a1fb-4099-9eaa-a3b92d95afe9" }, "source": [ - "laplacian = np.array([[0,0,1,0,0],\n", - " [0,0,2,0,0],\n", - " [1,2,-16,2,1],\n", - " [0,0,2,0,0],\n", - " [0,0,1,0,0]])\n", + "# Lets create two 1-Dimensional NumPy arrays and add them together?\n", + "# What do you think the result will be?\n", "\n", + "# Array Broadcasting\n", + "# Doing some arithmetic operation to vectors \"element-wise\"\n", + "\n", + "np_a = np.array(a)\n", "\n", - "laplacian_image = nd.convolve(grayscale, laplacian)\n", - "plt.axis('off')\n", - "plt.imshow(laplacian_image, cmap=plt.cm.gray);" + "np_b = np.array(b)\n", + "\n", + "print(np_a)\n", + "print(np_b)" ], - "execution_count": 0, + "execution_count": 5, "outputs": [ { - "output_type": "display_data", - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } + "output_type": "stream", + "text": [ + "[1 2 3]\n", + "[4 5 6]\n" + ], + "name": "stdout" } ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "wVuKmynAm5qF", + "colab_type": "text" + }, + "source": [ + "What we have just demonstrated is one of the primary benefits of NumPy and it is called \"**Array Broadcasting**\" This means that arithmetic operations happen \"element-wise\"." + ] + }, { "cell_type": "code", "metadata": { - "id": "jLun623Y-sWC", + "id": "dIOBi3uznKnx", "colab_type": "code", - "outputId": "9857ad90-9a74-4b40-a1dd-6ebb166af4d3", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 34 + }, + "outputId": "7f264b13-0571-4596-f531-3b3a08a47558" }, "source": [ - "sobel_x = np.array([\n", - " [-1,0,1],\n", - " [-2,0,2],\n", - " [-1,0,1]\n", - "])\n", - "\n", - "sobel_x_image = nd.convolve(grayscale, sobel_x)\n", - "plt.axis('off')\n", - "plt.imshow(sobel_x_image, cmap=plt.cm.gray);" + "np_a + np_b" ], - "execution_count": 0, + "execution_count": 6, "outputs": [ { - "output_type": "display_data", + "output_type": "execute_result", "data": { - "image/png": "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\n", "text/plain": [ - "
" + "array([5, 7, 9])" ] }, "metadata": { "tags": [] - } + }, + "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { - "id": "G_viT0Bv-wzd", + "id": "Qd5bsOXUnNL2", "colab_type": "code", - "outputId": "9cb75335-fd4f-42a0-fef7-0d31f0e5426d", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 34 + }, + "outputId": "e0567f28-54e7-49f3-d837-3524bae8f467" }, "source": [ - "sobel_y = np.array([\n", - " [1,2,1],\n", - " [0,0,0],\n", - " [-1,-2,-1]\n", - "])\n", - "\n", - "sobel_y_image = nd.convolve(grayscale, sobel_y)\n", - "plt.axis('off')\n", - "plt.imshow(sobel_y_image, cmap=plt.cm.gray);" + "# multiplying np arrays\n", + "np_a * np_b" ], - "execution_count": 0, + "execution_count": 7, "outputs": [ { - "output_type": "display_data", + "output_type": "execute_result", "data": { - "image/png": "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\nagAAAABJRU5ErkJggg==\n", "text/plain": [ - "
" + "array([ 4, 10, 18])" ] }, "metadata": { "tags": [] - } + }, + "execution_count": 7 } ] }, { - "cell_type": "markdown", - "metadata": { - "id": "KcM-_FNV-1kg", - "colab_type": "text" - }, - "source": [ - "## Are we going to learn to do Linear Algebra by hand?\n", - "\n", - "Let me quote your seventh grade math teacher:\n", - "\n", - "> \"ArE yOu GoInG To CaRrY a CaLcUlAtOr ArOuNd wItH yOu EvErYwHeRe YoU gO???\"\n", - "\n", - "Of course you're going to carry a calculator around everywhere, so mostly **NO**, we're not going to do a lot of hand calculating. We're going to try and refrain from calculating things by hand unless it is absolutely necessary in order to understand and implement the concepts.\n", - "\n", - "We're not trying to re-invent the wheel.\n", - "\n", - "We're learning how to **use** the wheel. " - ] - }, - { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "hYIVs-Kz-7lG", - "colab_type": "text" + "id": "vLSUyDEYnPMo", + "colab_type": "code", + "colab": {} }, "source": [ - "## Challenge\n", - "\n", - "I hope that this teaser helps you be excited about how studying Linear Algebra will help us build the intuition and skills to unlock some of the most exciting and valuable tools and techniques in machine learning. Over the next two modules we are going start building up to the concept of PCA which as you'll see will require a firm understanding of many important linear algebra intuitions." - ] + "" + ], + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", "metadata": { - "id": "-utHeu0B8LMr", + "id": "-CaNxeTao4ZQ", "colab_type": "text" }, "source": [ - "# [Salars and Vectors](#scalars-and-vectors)\n", + "### Only use NumPy Arrans, DO NOT use the NumPy Matrix class.\n", "\n", - "Student can graph vectors, identify their dimensionality, calculate their length (norm), and take the dot product of two vectors.\n" + "NumPy has a matrix class which can be used for representing matrices. However, I don't want you to use that datatype because it will be removed from NumPy in the future. However, I want you to be aware that this other datatype exists so that you don't get confused when you look at stack overflow posts or other tutorials that use the matrix datatype. Keep an eye out for resources that use it and just know that they will soon be outdated. Anything that can be done with the matrix class can also be done with simple NumPY arrays." ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "zGBf-YtS81I4", - "colab_type": "text" + "id": "omwR_dinrAzW", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "16ba78ec-07a9-46cc-d932-ba01024c2ca3" }, "source": [ - "## Overview\n", + "# Do NOT work with this datatype\n", + "# This will be removed from NumPy in the future\n", "\n", - "Scalars and vectors are the basic building blocks of linear algebra. Scalars are just numbers stored as a variable, and when vectors or matrices are multiplied by them they will be scaled according to the size of the number. Vectors are a lot like lists of values in Python or like rows/columns in a dataframe many of the principles and intuitions that we learn here can be tied back to our datasets. Understanding vectors is important because matrices can be thought of as a set of vectors just like a dataframe can be thought of as a group of columns or rows. " + "matrix = np.mat('1 2 ; 4 5')\n", + "matrix" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "matrix([[1, 2],\n", + " [4, 5]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } ] }, { "cell_type": "markdown", "metadata": { - "id": "NrSWzSsFAUxM", + "id": "vLhyGxURJTmV", "colab_type": "text" }, "source": [ - "## Follow Along" + "## Scalars & Vectors" ] }, { "cell_type": "markdown", "metadata": { - "id": "ENo5DQOUB3MV", + "id": "khawZAeo2N1P", "colab_type": "text" }, "source": [ "### Scalars\n", "\n", - "A single number. Variables representing scalars are typically written in lower case.\n", + "A simple, singular value. In the context of linear algebra scalars are usually quantities that **scale** vectors.\n", "\n", - "Scalars can be whole numbers or decimals.\n", + "- Variables representing scalars are typically written in lower case.\n", + "\n", + "- Scalars can be whole numbers or decimals.\n", "\n", "\\begin{align}\n", "a = 2\n", @@ -641,7 +497,7 @@ "b = 4.815162342\n", "\\end{align}\n", "\n", - "They can be positive, negative, 0 or any other real number.\n", + "- They can be positive, negative, 0 or any other real number.\n", "\n", "\\begin{align}\n", "c = -6.022\\mathrm{e}{+23}\n", @@ -651,68 +507,21 @@ ] }, { - "cell_type": "code", + "cell_type": "markdown", "metadata": { - "id": "PNTsHRWXB8n8", - "colab_type": "code", - "outputId": "d70350ff-0772-4360-c7ba-dd339d5ea93f", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 281 - } + "id": "updpWOo74b82", + "colab_type": "text" }, "source": [ - "import math\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", + "### Vectors\n", "\n", - "# Start with a simple vector\n", - "blue = [.5, .5]\n", + "A quantity possessing both magnitude and direction\n", "\n", - "# Then multiply it by a scalar\n", + "A vector of dimension $n$ is an **ordered** collection of $n$ elements, which are called **components**\n", "\n", - "green = np.multiply(2, blue)\n", - "\n", - "red = np.multiply(math.pi, blue)\n", - "\n", - "orange = np.multiply(-0.5, blue)\n", - "\n", - "# Plot the Scaled Vectors\n", - "plt.arrow(0,0, red[0], red[1],head_width=.05, head_length=0.05, color ='red')\n", - "plt.arrow(0,0, green[0], green[1],head_width=.05, head_length=0.05, color ='green')\n", - "plt.arrow(0,0, blue[0], blue[1],head_width=.05, head_length=0.05, color ='blue')\n", - "plt.arrow(0,0, orange[0], orange[1],head_width=.05, head_length=0.05, color ='orange')\n", - "plt.xlim(-1,2) \n", - "plt.ylim(-1,2)\n", - "plt.title(\"Scaled Vectors\")\n", - "plt.show()" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "display_data", - "data": { - "image/png": "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\nAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "tags": [] - } - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9XDUsS1kB-i0", - "colab_type": "text" - }, - "source": [ - "### Vectors:\n", + "- *Note, the components of a vector are **not** referred to as \"scalars\"*\n", "\n", - "A vector of dimension *n* is an **ordered** collection of *n* elements, which are called **components** (Note, the components of a vector are **not** referred to as \"scalars\"). Vector notation variables are commonly written as a bold-faced lowercase letters or italicized non-bold-faced lowercase characters with an arrow (→) above the letters:\n", + "- Vector notation variables are commonly written as a bold-faced lowercase letters or italicized non-bold-faced lowercase characters with an arrow (→) above the letters:\n", "\n", "Written: $\\vec{v}$ \n", "\n", @@ -746,1320 +555,1281 @@ " \\end{bmatrix}\n", "\\end{align}\n", "\n", - "The above vectors have dimensions 2, 3, 1, and 4 respectively.\n", + "The above vectors have dimensions 2, 3, 1, and 4 respectively." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0AEyK-J3gEVe", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yh5x6DXVouPW", + "colab_type": "text" + }, + "source": [ + "### Vectors in NumPy\n", + "\n", + "One dimensional NumPy arrays can be used to represent vectors but cannot be used to differentiate between row and column vectors.\n", + "\n", + "\\begin{align}\n", + "\\text{column vector} = \\begin{bmatrix}1 \\\\ 2 \\\\ 3\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "\\begin{align}\n", + "\\text{row vector} = \\begin{bmatrix} 1 & 2 & 3\\end{bmatrix}\n", + "\\end{align}\n", "\n", - "Why do the vectors below only have two components?" + "Notice that one dimensional arrays do not have a second element listed for their shape. so that there is no way to tell if they represent column vectors or row vectors" ] }, { "cell_type": "code", "metadata": { - "id": "COePyv9DCFgB", + "id": "clrA_q4PpXgk", "colab_type": "code", - "outputId": "c95519ba-63f8-42b4-c305-07094be5192d", "colab": { "base_uri": "https://localhost:8080/", - "height": 281 - } + "height": 34 + }, + "outputId": "622f45fa-158c-4196-c975-f7c08d99e2e4" }, "source": [ - "# Vector Examples \n", - "yellow = [.5, .5]\n", - "red = [.2, .1]\n", - "blue = [.1, .3]\n", - "\n", - "# Coordinate Pairs for where the arrowheads are\n", - "# yellow = (.5, .5)\n", - "# red = (.2, .1)\n", - "# blue = (.1, .3)\n", - "\n", - "plt.arrow(0, 0, .5, .5, head_width=.02, head_length=0.01, color = 'y')\n", - "plt.arrow(0, 0, .2, .1, head_width=.02, head_length=0.01, color = 'r')\n", - "plt.arrow(0, 0, .1, .3, head_width=.02, head_length=0.01, color = 'b')\n", - "plt.title('Vector Examples')\n", - "plt.show()" + "c = np.array([1, 2, 3, 4, 5])\n", + "c" ], - "execution_count": 0, + "execution_count": 10, "outputs": [ { - "output_type": "display_data", + "output_type": "execute_result", "data": { - "image/png": "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\ntZvqR0t6AToAAAAASUVORK5CYII=\n", "text/plain": [ - "
" + "array([1, 2, 3, 4, 5])" ] }, "metadata": { "tags": [] - } + }, + "execution_count": 10 } ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "DNj5IvzrCHnX", - "colab_type": "text" + "id": "RrmCLJXlqZLb", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "ab565f2e-ea88-42b5-91f4-f74aead1d539" }, "source": [ - "In domains such as physics it is emphasized that vectors have two properties: direction and magnitude. It's rare that we talk about them in that sense in Data Science unless we're specifically in a physics context. We just note that the length of the vector is equal to the number of dimensions of the vector. \n", - "\n", - "What happens if we add a third component to each of our vectors?" + "# Notice how only the number of items in the array is listed\n", + "c.shape" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(5,)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } ] }, { "cell_type": "code", "metadata": { - "id": "hF1kRxu6CKtG", + "id": "Dt6h6fMQqy6N", "colab_type": "code", - "outputId": "69bf36e6-2128-4a6f-ff42-115ef9a68848", "colab": { "base_uri": "https://localhost:8080/", - "height": 248 - } + "height": 34 + }, + "outputId": "cb768077-7e10-42cf-b7d8-9105f1836f7e" }, "source": [ - "from mpl_toolkits.mplot3d import Axes3D\n", - "import numpy as np\n", - "\n", - "yellow = [.5, .5, .5]\n", - "red = [.2, .1, .0]\n", - "blue = [.1, .3, .3]\n", - "\n", - "vectors = np.array([[0, 0, 0, .5, .5, .5], \n", - " [0, 0, 0, .2, .1, .0],\n", - " [0, 0, 0, .1, .3, .3]])\n", - "\n", - "X, Y, Z, U, V, W = zip(*vectors)\n", - "fig = plt.figure()\n", - "ax = fig.add_subplot(111, projection='3d')\n", - "ax.quiver(X, Y, Z, U, V, W, length=1)\n", - "ax.set_xlim([0, 1])\n", - "ax.set_ylim([0, 1])\n", - "ax.set_zlim([0, 1])\n", - "ax.set_xlabel('X')\n", - "ax.set_ylabel('Y')\n", - "ax.set_zlabel('Z')\n", - "plt.show()" + "# And if we swap rows and columns the shape does not change\n", + "c.T" ], - "execution_count": 0, + "execution_count": 12, "outputs": [ { - "output_type": "display_data", + "output_type": "execute_result", "data": { - "image/png": "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\n", "text/plain": [ - "
" + "array([1, 2, 3, 4, 5])" ] }, "metadata": { "tags": [] - } + }, + "execution_count": 12 } ] }, { "cell_type": "markdown", "metadata": { - "id": "Xra4GxduCNXE", + "id": "LXOIB20Lq2j0", "colab_type": "text" }, "source": [ - "### Norm of a Vector (Magnitude or length)\n", - "\n", - "The *Norm* or *Magnitude* of a vector is nothing more than the **length** of the vector. Since a vector is just a line (essentially) if you treat it as the hypotenuse of a triangle you could use the pythagorean theorem to find the equation for the norm of a vector. We're essentially just generalizing the equation for the hypotenuse of a triangle that results from the pythagorean theorem to n dimensional space.\n", - "\n", - "We denote the norm of a vector by wrapping it in double pipes (like double absolute value signs)\n", - "\n", - "\\begin{align}\n", - "||v|| = \n", - "\\sqrt{v_{1}^2 + v_{2}^2 + \\ldots + v_{n}^2}\n", - "\\\\\n", - "\\vec{a} = \n", - "\\begin{bmatrix}\n", - "3 & 7 & 2 & 4\n", - "\\end{bmatrix}\n", - "\\\\\n", - "||a|| = \\sqrt{3^2 + 7^2 + 2^2 + 4^2} \\\\\n", - "||a|| = \\sqrt{9 + 49 + 4 + 16} \\\\\n", - "||a|| = \\sqrt{78}\n", - "\\end{align}\n", - "\n", - "The Norm is the square root of the sum of the squared elements of a vector.\n", - "\n", - "Properties of the Norm:\n", - "\n", - "The norm is always positive or zero $||x|| \\geq 0$ \n", - "\n", - "The norm is only equal to zero if all of the elements of the vector are zero.\n", - "\n", - "The Triangle Inequality: $|| x + y ||\\leq ||x|| + ||y||$\n" + "**If you explicitly want a row of column vector then you need to use a 2D NumPy Array**" ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "IUmSOT3PCaTo", - "colab_type": "text" + "id": "CAMZw2Eqq6e5", + "colab_type": "code", + "colab": {} }, "source": [ - "### The Equation for the norm of a vector is just Pythagorean Theorem extended to more than two dimensions.\n", - "\n", - "$a^2 + b^2 = c^2$\n", - "\n", - "a = one side of a right triangle\n", - "\n", - "b = the other side\n", - "\n", - "c = the \"hypotenuse\" of a right triangle (We consider the vector that we're looking at to be the hypotenuse of a triangle\n", - "\n", - "![Pythagorean Theorem](http://mathworld.wolfram.com/images/eps-gif/PythagoreanTheoremFigure_1000.gif)\n", + "c_row = np.array([[1, 2, 3, 4, 5]])\n", "\n", - "$c = \\sqrt{a^2 + b^2}$" - ] + "c_column = np.array([[1], \n", + " [2], \n", + " [3], \n", + " [4],\n", + " [5]])" + ], + "execution_count": 14, + "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "-INEoYRRCJep", - "colab_type": "text" + "id": "SJpV0Y09eibh", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "bd257e45-9e12-404c-a19f-e5152a9887cb" }, "source": [ - "### Dot Product\n", - "\n", - "The dot product of two vectors $\\vec{a}$ and $\\vec{b}$ is a scalar quantity that is equal to the sum of pair-wise products of the components of vectors a and b. An example will make this make much more sense:\n", - "\n", - "\\begin{align} \\vec{a} \\cdot \\vec{b} = (a_{1} \\times b_{1}) + (a_{2} \\times b_{2}) + \\ldots + ( a_{n} \\times b_{n}) \\end{align}\n", - "\n", - "Example:\n", - "\n", - "\\begin{align}\n", - "\\vec{a} = \n", - "\\begin{bmatrix}\n", - "3 & 7 & 2 & 4\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "\\vec{b} = \n", - "\\begin{bmatrix}\n", - "4 & 1 & 12 & 6\n", - "\\end{bmatrix}\n", - "\\end{align}\n", - "\n", - "The dot product of two vectors would be:\n", - "\\begin{align}\n", - "a \\cdot b = (3)(4) + (7)(1) + (2)(12) + (4)(6) \\\\ \n", - "= 12 + 7 + 24 + 24 \\\\\n", - "= 67\n", - "\\end{align}\n", - "\n", - "The dot product is commutative: $ a \\cdot b = b \\cdot a$\n", - "\n", - "The dot product is distributive: $a \\cdot (b + c) = a \\cdot b + a \\cdot c$\n", - "\n", - "Two vectors must have the same number of components in order for the dot product to exist. If they lengths differ the dot product is undefined." + "print(c_row.shape)\n", + "print(c_row)" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(1, 5)\n", + "[[1 2 3 4 5]]\n" + ], + "name": "stdout" + } ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "POUdW_9A-8Wy", - "colab_type": "text" + "id": "Vi3CK8Fnen2P", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 119 + }, + "outputId": "8b0caad9-464e-4a5d-a5b6-ecb458cfb479" }, "source": [ - "## Challenge\n", - "\n", - "Being able to calculate the length of a vector is vital as a vector's length is one of the key attributes that defines it. Likewise taking the dot product of two vectors is a process that you **need** to be comfortable with as it is involved in many more complex linear algebra processes. You will practice both of these concepts as well as graphing vectors on your assignment this afternoon." + "print(c_column.shape)\n", + "print(c_column)" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(5, 1)\n", + "[[1]\n", + " [2]\n", + " [3]\n", + " [4]\n", + " [5]]\n" + ], + "name": "stdout" + } ] }, { "cell_type": "markdown", "metadata": { - "id": "LiAs3-Mh8Lw5", + "id": "QFyj54ln6q2Z", "colab_type": "text" }, "source": [ - "# [Matrices](#matrices)\n", - "\n", - "Student can identify the dimensionality of matrices, multiply them, identify when matrix multiplication is a legal operation, and transpose a matrix.\n", - "\n", - "A **matrix** is a rectangular grid of numbers arranged in rows and columns. Variables that represent matrices are typically written as capital letters (boldfaced as well if you want to be super formal).\n", - "\n", - "\\begin{align}\n", - "A = \n", - " \\begin{bmatrix}\n", - " 1 & 2 & 3\\\\\n", - " 4 & 5 & 6\\\\\n", - " 7 & 8 & 9\n", - " \\end{bmatrix}\n", - " \\qquad\n", - " B = \\begin{bmatrix}\n", - " 1 & 2 & 3\\\\\n", - " 4 & 5 & 6\n", - " \\end{bmatrix}\n", - " \\end{align}\n", - "\n", - "You'll notice that we arrange our dataframes in a similar grid-like pattern meaning that anything we learn about matrices also applies to the dataframes that we work with in Pandas" + "### Plotting Vectors" ] }, { - "cell_type": "markdown", - "metadata": { - "id": "78ApIswA813p", - "colab_type": "text" - }, - "source": [ - "## Overview" - ] - }, - { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "OeCWWaWmDPSn", - "colab_type": "text" + "id": "PNTsHRWXB8n8", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "2eed3224-506e-41b4-be7b-d378f789a98b" }, "source": [ - "A **matrix** is a rectangular grid of numbers arranged in rows and columns. Variables that represent matrices are typically written as capital letters (boldfaced as well if you want to be super formal).\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", "\n", - "\\begin{align}\n", - "A = \n", - " \\begin{bmatrix}\n", - " 1 & 2 & 3\\\\\n", - " 4 & 5 & 6\\\\\n", - " 7 & 8 & 9\n", - " \\end{bmatrix}\n", - " \\qquad\n", - " B = \\begin{bmatrix}\n", - " 1 & 2 & 3\\\\\n", - " 4 & 5 & 6\n", - " \\end{bmatrix}\n", - " \\end{align}\n", + "# Start with a simple vector\n", + "blue = [.5, .5]\n", + "\n", + "# Then multiply it by a scalar\n", + "\n", + "green = np.multiply(2, blue)\n", + "\n", + "red = np.multiply(math.pi, blue)\n", + "\n", + "orange = np.multiply(-0.5, blue)\n", "\n", - "You'll notice that we arrange our dataframes in a similar grid-like pattern meaning that anything we learn about matrices also applies to the dataframes that we work with in Pandas" + "# Plot the Scaled Vectors\n", + "plt.arrow(0,0, red[0], red[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, green[0], green[1],head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, blue[0], blue[1],head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, orange[0], orange[1],head_width=.05, head_length=0.05, color ='orange')\n", + "plt.xlim(-1,2) \n", + "plt.ylim(-1,2)\n", + "plt.title(\"Scaled Vectors\")\n", + "plt.show()" + ], + "execution_count": 26, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } ] }, { "cell_type": "code", "metadata": { - "id": "Qe8hTDkDDg1Y", + "id": "COePyv9DCFgB", "colab_type": "code", - "outputId": "ede8892f-c32a-40e1-fda0-14d2529336f6", "colab": { "base_uri": "https://localhost:8080/", - "height": 155 - } + "height": 298 + }, + "outputId": "13e6f1d7-1860-4043-b2f7-4202ca366927" }, "source": [ - "import pandas as pd\n", + "# Plotting Vectors\n", + "yellow = np.array([[.5, .5]])\n", + "red = np.array([[.2, .1]])\n", + "blue = np.array([[.1, .3]])\n", + "\n", + "# Coordinate Pairs for where the arrowheads are\n", + "# yellow = (.5, .5)\n", + "# red = (.2, .1)\n", + "# blue = (.1, .3)\n", "\n", - "df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})\n", + "plt.arrow(0, 0, .5, .5, head_width=0.02, head_length=0.01, color='y')\n", + "# can also do:\n", + "# plt.arrow(0, 0, yellow[0][0], yellow[0][1])\n", + "plt.arrow(0, 0, 0.1, 0.3, head_width=0.02, head_length=0.01, color='b')\n", + "plt.arrow(0, 0, 0.2, 0.1, head_width=0.02, head_length=0.01, color='r')\n", "\n", - "print(df.shape)\n", - "df.head()" + "\n", + "plt.title('Vector Examples')\n", + "plt.show" ], - "execution_count": 0, + "execution_count": 32, "outputs": [ - { - "output_type": "stream", - "text": [ - "(3, 2)\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", - "
ab
014
125
236
\n", - "
" - ], "text/plain": [ - " a b\n", - "0 1 4\n", - "1 2 5\n", - "2 3 6" + "" ] }, "metadata": { "tags": [] }, "execution_count": 32 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } } ] }, { - "cell_type": "markdown", - "metadata": { - "id": "-ICxVWUBAWJJ", - "colab_type": "text" - }, - "source": [ - "## Follow Along" - ] - }, - { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "edqRmcp3Diqd", - "colab_type": "text" + "id": "hF1kRxu6CKtG", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "7917dc98-b05e-4ec4-ab6e-bcda8f60b84f" }, "source": [ - "### Dimensionality\n", + "# Plotting in 3D\n", "\n", - "The number of rows and columns that a matrix has is called its **dimension**.\n", + "from mpl_toolkits.mplot3d import Axes3D\n", + "import numpy as np\n", "\n", - "When listing the dimension of a matrix we always list rows first and then columns. \n", + "yellow = [.5, .5, .5]\n", + "red = [.2, .1, .0]\n", + "blue = [.1, .3, .3]\n", "\n", - "The dimension of matrix A is 3x3. (Note: This is read \"Three by Three\", the 'x' isn't a multiplication sign.)\n", + "vectors = np.array([[0, 0, 0, .5, .5, .5], \n", + " [0, 0, 0, .2, .1, .0],\n", + " [0, 0, 0, .1, .3, .3]])\n", "\n", - "What is the Dimension of Matrix B?" + "X, Y, Z, U, V, W = zip(*vectors)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X, Y, Z, U, V, W, length=1)\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.set_zlim([0, 1])\n", + "ax.set_xlabel('X')\n", + "ax.set_ylabel('Y')\n", + "ax.set_zlabel('Z')\n", + "plt.show()" + ], + "execution_count": 33, + "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": "_nFQuzwpDkgi", + "id": "0j15soxH6ujQ", "colab_type": "text" }, "source": [ - "### Matrix Equality\n", + "### Norm of a Vector (Magnitude or Length)\n", "\n", - "In order for two Matrices to be equal the following conditions must be true:\n", + "The **Norm** or **Magnitude** of a vector is nothing more than the **length** of the vector.\n", "\n", - "1) They must have the same dimensions.\n", "\n", - "2) Corresponding elements must be equal.\n", + "- We denote the norm of a vector by wrapping it in double pipes (like double absolute value signs):\n", "\n", - "\\begin{align}\n", - " \\begin{bmatrix}\n", - " 1 & 4\\\\\n", - " 2 & 5\\\\\n", - " 3 & 6 \n", - " \\end{bmatrix} \n", - " \\neq\n", - " \\begin{bmatrix}\n", - " 1 & 2 & 3\\\\\n", - " 4 & 5 & 6\n", - " \\end{bmatrix}\n", - "\\end{align}" + "Written: $||v||$ " ] }, { "cell_type": "markdown", "metadata": { - "id": "EpmtZFFTDoqh", + "id": "f6lwR9Nz9MJW", "colab_type": "text" }, "source": [ - "### Matrix Multiplication\n", - "\n", - "You can multipy any two matrices where the number of columns of the first matrix is equal to the number of rows of the second matrix.\n", + "- Since a vector is just a line (essentially) if you treat it as the hypotenuse of a triangle you could use the pythagorean theorem to find the equation for the norm of a vector.\n", "\n", - "The unused dimensions of the factor matrices tell you what the dimensions of the product matrix will be.\n", - "\n", - "![Matrix Multiplication Dimensions](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRunZv20HXxTMUgrkfdER06lPnMj0HpwDU_2i4IEHsBM5098440Jw)\n", + "- We're essentially just generalizing the equation for the hypotenuse of a triangle that results from the pythagorean theorem to $n$ dimensional space.\n", "\n", - "There is no commutative property of matrix multiplication (you can't switch the order of the matrices and always get the same result). \n", + "\\begin{align}\n", + "||v|| = \n", + "\\sqrt{v_{1}^2 + v_{2}^2 + \\ldots + v_{n}^2}\n", + "\\\\\n", + "\\vec{a} = \n", + "\\begin{bmatrix}\n", + "3 & 7 & 2 & 4\n", + "\\end{bmatrix}\n", + "\\\\\n", + "||a|| = \\sqrt{3^2 + 7^2 + 2^2 + 4^2} \\\\\n", + "||a|| = \\sqrt{9 + 49 + 4 + 16} \\\\\n", + "||a|| = \\sqrt{78}\n", + "\\end{align}\n", "\n", - "Matrix multiplication is best understood in terms of the dot product. Remember:\n", + "- The Norm is the square root of the sum of the squared elements of a vector.\n", "\n", - "\\begin{align} \\vec{a} \\cdot \\vec{b} = (a_{1} \\times b_{1}) + (a_{2} \\times b_{2}) + \\ldots + ( a_{n} \\times b_{n}) \\end{align}\n", + "- Properties of the Norm:\n", "\n", - "To multiply to matrices together, we will take the dot product of each row of the first matrix with each column of the second matrix. The position of the resulting entries will correspond to the row number and column number of the row and column vector that were used to find that scalar. Lets look at an example to make this more clear.\n", + " - The norm is always positive or zero $||x|| \\geq 0$ \n", "\n", - "![Dot Product Matrix Multiplication](https://www.mathsisfun.com/algebra/images/matrix-multiply-a.svg)\n", + " - The norm is only equal to zero if all of the elements of the vector are zero.\n", "\n", - "\\begin{align}\n", - "\\begin{bmatrix}\n", - "1 & 2 & 3 \\\\\n", - "4 & 5 & 6\n", - "\\end{bmatrix} \n", - "\\begin{bmatrix}\n", - "7 & 8 \\\\\n", - "9 & 10 \\\\\n", - "11 & 12\n", - "\\end{bmatrix} \n", - "=\n", - "\\begin{bmatrix}\n", - "(1)(7)+(2)(9)+(3)(11) & (1)(8)+(2)(10)+(3)(12)\\\\\n", - "(4)(7)+(5)(9)+(6)(11) & (4)(8)+(5)(10)+(6)(12)\n", - "\\end{bmatrix}\n", - "=\n", - "\\begin{bmatrix}\n", - "(7)+(18)+(33) & (8)+(20)+(36)\\\\\n", - "(28)+(45)+(66) & (32)+(50)+(72)\n", - "\\end{bmatrix}\n", - "=\n", - "\\begin{bmatrix}\n", - "58 & 64\\\\\n", - "139 & 154\n", - "\\end{bmatrix}\n", - "\\end{align}" + " - The Triangle Inequality: $|| x + y ||\\leq ||x|| + ||y||$" ] }, { "cell_type": "markdown", "metadata": { - "id": "zUHeGSPGDsR8", + "id": "IUmSOT3PCaTo", "colab_type": "text" }, "source": [ - "## Transpose\n", + "**The Equation for the norm of a vector is just Pythagorean Theorem extended to more than two dimensions**:\n", "\n", - "A transposed matrix is one whose rows are the columns of the original and whose columns are the rows of the original.\n", + "$a^2 + b^2 = c^2$\n", "\n", - "Common notation for the transpose of a matrix is to have a capital $T$ superscript or a tick mark:\n", - "\n", - "\\begin{align}\n", - "B^{T}\n", - "\\qquad\n", - "B^{\\prime}\n", - "\\end{align}\n", + "a = one side of a right triangle\n", "\n", - "The first is read \"B transpose\" the second is sometimes read as \"B prime\" but can also be read as \"B transpose\".\n", + "b = the other side\n", "\n", - "The transpose of any matrix can be found easily by fixing the elements on the main diagonal and flipping the placement of all other elements across that diagonal.\n", + "c = the \"hypotenuse\" of a right triangle (We consider the vector that we're looking at to be the hypotenuse of a triangle\n", "\n", - "![Matrix Transpose](http://xaktly.com/Images/Mathematics/MatrixAlgebra/MatrixOperations/MatrixTranspose.png)\n", - " \n", - "\\begin{align}\n", - " B = \n", - "\\begin{bmatrix}\n", - " 1 & 2 & 3 \\\\\n", - " 4 & 5 & 6\n", - "\\end{bmatrix}\n", - " \\qquad\n", - " B^{T} = \n", - " \\begin{bmatrix}\n", - " 1 & 4 \\\\\n", - " 2 & 5 \\\\\n", - " 3 & 6\n", - " \\end{bmatrix}\n", - "\\end{align}\n", + "![Pythagorean Theorem](http://mathworld.wolfram.com/images/eps-gif/PythagoreanTheoremFigure_1000.gif)\n", "\n", - "![Matrix Transpose](https://upload.wikimedia.org/wikipedia/commons/e/e4/Matrix_transpose.gif)" + "$c = \\sqrt{a^2 + b^2}$" ] }, { "cell_type": "code", "metadata": { - "id": "jLTfBIRqDxtS", + "id": "Fr43SJ2KjOyC", "colab_type": "code", - "outputId": "9a98b11a-d2de-4d6e-9c44-2a4564e03ed9", "colab": { "base_uri": "https://localhost:8080/", - "height": 138 - } + "height": 51 + }, + "outputId": "258c71c3-c2a2-451a-ecf2-336a6d2bae37" }, "source": [ - "df" + "h = np.array([[1],\n", + " [1],\n", + " [1],\n", + " [8]])\n", + "\n", + "j = np.array([[3],\n", + " [3],\n", + " [3],\n", + " [3]])\n", + "\n", + "# using the norm method\n", + "norm_h = np.linalg.norm(h)\n", + "norm_j = np.linalg.norm(j)\n", + "\n", + "print(norm_h)\n", + "print(norm_j)" ], - "execution_count": 0, + "execution_count": 35, "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", - "
ab
014
125
236
\n", - "
" - ], - "text/plain": [ - " a b\n", - "0 1 4\n", - "1 2 5\n", - "2 3 6" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 33 + "output_type": "stream", + "text": [ + "8.18535277187245\n", + "6.0\n" + ], + "name": "stdout" } ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "gRDqhvVT681g", + "colab_type": "text" + }, + "source": [ + "### Dot Product\n", + "\n", + "The dot product of two vectors $\\vec{a}$ and $\\vec{b}$ is a...\n", + "\n", + "\\begin{align} \\vec{a} \\cdot \\vec{b} = (a_{1} \\times b_{1}) + (a_{2} \\times b_{2}) + \\ldots + ( a_{n} \\times b_{n}) \\end{align}\n", + "\n", + "Example:\n", + "\n", + "\\begin{align}\n", + "\\vec{a} = \n", + "\\begin{bmatrix}\n", + "3 & 7 & 2 & 4\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "\\vec{b} = \n", + "\\begin{bmatrix}\n", + "4 & 1 & 12 & 6\n", + "\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "The dot product of two vectors would be:\n", + "\\begin{align}\n", + "a \\cdot b = (3)(4) + (7)(1) + (2)(12) + (4)(6) \\\\ \n", + "= 12 + 7 + 24 + 24 \\\\\n", + "= 67\n", + "\\end{align}\n", + "\n", + "The dot product is commutative: $ a \\cdot b = b \\cdot a$\n", + "\n", + "The dot product is distributive: $a \\cdot (b + c) = a \\cdot b + a \\cdot c$\n", + "\n", + "Two vectors must have the same number of components in order for the dot product to exist. If they lengths differ the dot product is undefined." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iqjRIRFItg3X", + "colab_type": "text" + }, + "source": [ + "**Follow Along**\n", + "\n", + "Lets calculate a dot product. What do we need to do? We need to multiply two vectors \"element-wise\" and them sum up all of those products" + ] + }, { "cell_type": "code", "metadata": { - "id": "v31YheDkDyPC", + "id": "ZcGlUN55qoGt", "colab_type": "code", - "outputId": "03feef30-301e-4146-99b1-2d2201ca7dce", "colab": { "base_uri": "https://localhost:8080/", - "height": 108 - } + "height": 51 + }, + "outputId": "adfc5328-2a42-42b4-c51a-e7d8a045cc18" }, "source": [ - "# Transposing a dataframe switches its rows and columns\n", - "df.T" + "# Find the dot product of vectors a and b\n", + "\n", + "a = np.array([7, 22, 4, 16])\n", + "b = np.array([12, 6, 2, 9])\n", + "\n", + "# Dot Product\n", + "print(\"Dot product: \", (a * b).sum())\n", + "\n", + "# using the numpy method\n", + "print(\"Dot product: \", np.dot(a, b))" ], - "execution_count": 0, + "execution_count": 39, "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", - "
012
a123
b456
\n", - "
" - ], - "text/plain": [ - " 0 1 2\n", - "a 1 2 3\n", - "b 4 5 6" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 34 + "output_type": "stream", + "text": [ + "Dot product: 368\n", + "Dot product: 368\n" + ], + "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { - "id": "raeSObVN-9Fa", + "id": "p1BE4P3lnr1-", "colab_type": "text" }, "source": [ - "## Challenge\n", - "\n", - "Throughout the week we will be learning how the princples of mathematical matrices apply to our datasets. We'll be focusing mostly on math topics and techniques but as the week goes on we will be making more and more connections back to how we think about and work with our datasets.\n" + "We can also use provided linear algebra functions from the [np.linalg](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.linalg.html) documentation in order to perform Linear Algebra processes." ] }, { "cell_type": "markdown", "metadata": { - "id": "gRXqzzUE8L87", + "id": "K7Ah6ZU5mXbt", "colab_type": "text" }, "source": [ - "# [Square Matrices](#square-matrices)\n", + "### Cross Product\n", + "\n", + "- A measure of difference of the vectors\n", "\n", - "Student can identify special types of square matrices including the identity matrix, as well as find the determinant and inverse of a matrix." + "Notation: $\\vec{a} \\times \\vec{b}$\n", + "\n", + "np.cross" ] }, { "cell_type": "markdown", "metadata": { - "id": "Xqc2Eejw82eD", + "id": "B6bWZVc6JkiX", "colab_type": "text" }, "source": [ - "## Overview\n", - "\n", - "In a traditional linear algebra class after the first few weeks you would deal almost exclusively with square matrices. They have very nice properties that their lopsided sisters and brothers just don't possess. \n", - "\n", - "A square matrix is any matrix that has the same number of rows as columns:\n", + "## Matrices\n", "\n", - "\\begin{align}\n", - "A =\n", - "\\begin{bmatrix}\n", - " a_{1,1}\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "B =\n", - "\\begin{bmatrix}\n", - "b_{1,1} & b_{1,2} \\\\\n", - "b_{2,1} & b_{2,2}\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "C =\n", - "\\begin{bmatrix}\n", - "c_{1,1} & c_{1,2} & c_{1,3} \\\\\n", - "c_{2,1} & c_{2,2} & c_{2,3} \\\\\n", - "c_{3,1} & c_{3,2} & c_{3,3} \n", - "\\end{bmatrix}\n", - "\\end{align}" + "A matrix is a rectangular grid of numbers arranged in rows and columns. Variables that represent matrices are typically written as capital letters (boldfaced as well if you want to be super formal)." ] }, { "cell_type": "markdown", "metadata": { - "id": "RcB6ruT3AYUt", + "id": "_Ud_7rF-TrUd", "colab_type": "text" }, "source": [ - "## Follow Along\n", + "### Matrix Dimensionality\n", "\n", - "### Special Kinds of Square Matrices\n", + "The number of rows and columns that a matrix has is called its **dimension**.\n", "\n", - "**Diagonal:** Values on the main diagonal, zeroes everywhere else.\n", + "When listing the dimension of a matrix we always list rows first and then columns. \n", "\n", - "\\begin{align}\n", - "A =\n", - "\\begin{bmatrix}\n", - "a_{1,1} & 0 & 0 \\\\\n", - "0 & a_{2,2} & 0 \\\\\n", - "0 & 0 & a_{3,3} \n", - "\\end{bmatrix}\n", - "\\end{align}\n", - "\n", - "**Upper Triangular:** Values on and above the main diagonal, zeroes everywhere else.\n", - "\n", - "\\begin{align}\n", - "B =\n", - "\\begin{bmatrix}\n", - "b_{1,1} & b_{1,2} & b_{1,3} \\\\\n", - "0 & b_{2,2} & b_{2,3} \\\\\n", - "0 & 0 & b_{3,3} \n", - "\\end{bmatrix}\n", - "\\end{align}\n", - "\n", - "**Lower Triangular:** Values on and below the main diagonal, zeroes everywhere else.\n", - "\n", - "\\begin{align}\n", - "C =\n", - "\\begin{bmatrix}\n", - "c_{1,1} & 0 & 0 \\\\\n", - "c_{2,1} & c_{2,2} & 0 \\\\\n", - "c_{3,1} & c_{3,2} & c_{3,3} \n", - "\\end{bmatrix}\n", - "\\end{align}\n", - "\n", - "**Identity Matrix:** A diagonal matrix with ones on the main diagonal and zeroes everywhere else. The product of the any square matrix and the identity matrix is the original square matrix $AI == A$. Also, any matrix multiplied by its inverse will give the identity matrix as its product. $AA^{-1} = I$\n", - "\n", - "\\begin{align}\n", - "D =\n", - "\\begin{bmatrix}\n", - " 1\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "E =\n", - "\\begin{bmatrix}\n", - "1 & 0 \\\\\n", - "0 & 1\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "F =\n", - "\\begin{bmatrix}\n", - "1 & 0 & 0 \\\\\n", - "0 & 1 & 0 \\\\\n", - "0 & 0 & 1 \n", - "\\end{bmatrix}\n", - "\\end{align}\n", - "\n", - "**Symmetric:** The numbers above the main diagonal are mirrored below/across the main diagonal.\n", - "\n", - "\\begin{align}\n", - "G =\n", - "\\begin{bmatrix}\n", - "1 & 4 & 5 \\\\\n", - "4 & 2 & 6 \\\\\n", - "5 & 6 & 3 \n", - "\\end{bmatrix}\n", - "\\end{align}\n", + "The dimension of matrix A is 3x3. (Note: This is read \"Three by Three\", the 'x' isn't a multiplication sign.)\n", "\n", - "\n" + "What is the Dimension of Matrix B?" ] }, { "cell_type": "markdown", "metadata": { - "id": "yXN3mVFdFNpL", + "id": "_nFQuzwpDkgi", "colab_type": "text" }, "source": [ - "### Determinant\n", - "\n", - "The determinant is a property that all square matrices possess and is denoted $det(A)$ or using pipes (absolute value symbols) $|A|$\n", - "\n", - "The equation given for finding the determinant of a 2x2 matrix is as follows:\n", - "\n", - "\\begin{align}\n", - "A = \\begin{bmatrix}\n", - "a & b \\\\\n", - "c & d\n", - "\\end{bmatrix}\n", - "\\qquad\n", - "|A| = ad-bc\n", - "\\end{align}\n", + "### Matrix Equality\n", "\n", - "The determinant of larger square matrices recursively by finding the determinats of the smaller matrics that make up the large matrix.\n", + "In order for two Matrices to be equal the following conditions must be true:\n", "\n", - "For example:\n", + "1) They must have the same dimensions.\n", "\n", - "
\n", + "2) Corresponding elements must be equal.\n", "\n", - "The above equation is **very** similar to the equation that we use to find the cross-product of a 3x3 matrix. " + "\\begin{align}\n", + " \\begin{bmatrix}\n", + " 1 & 4\\\\\n", + " 2 & 5\\\\\n", + " 3 & 6 \n", + " \\end{bmatrix} \n", + " \\neq\n", + " \\begin{bmatrix}\n", + " 1 & 2 & 3\\\\\n", + " 4 & 5 & 6\n", + " \\end{bmatrix}\n", + "\\end{align}" ] }, { "cell_type": "markdown", "metadata": { - "id": "c6DsBxGmFOvA", + "id": "EpmtZFFTDoqh", "colab_type": "text" }, "source": [ - "### Inverse\n", + "### Matrix Multiplication\n", "\n", - " There are multiple methods that we could use to find the inverse of a matrix by hand. I would suggest you explore those methods --if this content isn't already overwhelming enough. The inverse is like the reciprocal of the matrix that was used to generate it. Just like $\\frac{1}{8}$ is the reciprocal of 8, $A^{-1}$ acts like the reciprocal of $A$. The equation for finding the determinant of a 2x2 matrix is as follows:\n", - " \n", - " \\begin{align}\n", - "A = \\begin{bmatrix}\n", - "a & b \\\\\n", - "c & d\n", + "You can multipy any two matrices where the number of columns of the first matrix is equal to the number of rows of the second matrix.\n", + "\n", + "The unused dimensions of the factor matrices tell you what the dimensions of the product matrix will be.\n", + "\n", + "![Matrix Multiplication Dimensions](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRunZv20HXxTMUgrkfdER06lPnMj0HpwDU_2i4IEHsBM5098440Jw)\n", + "\n", + "There is no commutative property of matrix multiplication (you can't switch the order of the matrices and always get the same result). \n", + "\n", + "Matrix multiplication is best understood in terms of the dot product. Remember:\n", + "\n", + "\\begin{align} \\vec{a} \\cdot \\vec{b} = (a_{1} \\times b_{1}) + (a_{2} \\times b_{2}) + \\ldots + ( a_{n} \\times b_{n}) \\end{align}\n", + "\n", + "To multiply to matrices together, we will take the dot product of each row of the first matrix with each column of the second matrix. The position of the resulting entries will correspond to the row number and column number of the row and column vector that were used to find that scalar. Lets look at an example to make this more clear.\n", + "\n", + "![Dot Product Matrix Multiplication](https://www.mathsisfun.com/algebra/images/matrix-multiply-a.svg)\n", + "\n", + "\\begin{align}\n", + "\\begin{bmatrix}\n", + "1 & 2 & 3 \\\\\n", + "4 & 5 & 6\n", + "\\end{bmatrix} \n", + "\\begin{bmatrix}\n", + "7 & 8 \\\\\n", + "9 & 10 \\\\\n", + "11 & 12\n", + "\\end{bmatrix} \n", + "=\n", + "\\begin{bmatrix}\n", + "(1)(7)+(2)(9)+(3)(11) & (1)(8)+(2)(10)+(3)(12)\\\\\n", + "(4)(7)+(5)(9)+(6)(11) & (4)(8)+(5)(10)+(6)(12)\n", "\\end{bmatrix}\n", - "\\qquad\n", - "A^{-1} = \\frac{1}{ad-bc}\\begin{bmatrix}\n", - "d & -b\\\\\n", - "-c & a\n", + "=\n", + "\\begin{bmatrix}\n", + "(7)+(18)+(33) & (8)+(20)+(36)\\\\\n", + "(28)+(45)+(66) & (32)+(50)+(72)\n", + "\\end{bmatrix}\n", + "=\n", + "\\begin{bmatrix}\n", + "58 & 64\\\\\n", + "139 & 154\n", "\\end{bmatrix}\n", "\\end{align}" ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "ByOCfNwyFTN7", - "colab_type": "text" + "id": "R8-wwG1AoTKa", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "9ecc1f82-bcf4-44e2-9bda-39160a3e2b5e" }, "source": [ - " ### What happens if we multiply a matrix by its inverse?\n", + "# matrices are represented by capital letters\n", "\n", - "The product of a matrix multiplied by its inverse is the identity matrix of the same dimensions as the original matrix. There is no concept of \"matrix division\" in linear algebra, but multiplying a matrix by its inverse is very similar since $8\\times\\frac{1}{8} = 1$. \n", + "A = np.array([[9, 6, 3], [4, 7, 11]])\n", + "# 2 by 3\n", "\n", - "\\begin{align}\n", - "A^{-1}A = I \n", - "\\end{align}\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "oSoPNVMeFVsP", - "colab_type": "text" - }, - "source": [ - "### Not all matrices are invertible\n", + "B = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])\n", + "# 3 by 3\n", "\n", - "Matrices that are not square are not invertible.\n", - " \n", - " A matrix is invertible if and only if its determinant is non-zero. You'll notice that the fraction on the left side of the matrix is $\\frac{1}{det(A)}$.\n", - " \n", - " As you know, dividing anything by 0 leads to an undefined quotient. Therefore, if the determinant of a matrix is 0, then the entire inverse becomes undefined. " + "# using the matmul method\n", + "\n", + "np.matmul(A, B)\n", + "# resulting matrix is 2 by 3" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 9, 6, 3],\n", + " [ 4, 7, 11]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } ] }, { "cell_type": "markdown", "metadata": { - "id": "CpZ-2b5HFYpM", + "id": "zUHeGSPGDsR8", "colab_type": "text" }, "source": [ - "### What leads to a 0 determinant?\n", - " \n", - " A square matrix that has a determinant of 0 is known as a \"singular\" matrix. One thing that can lead to a matrix having a determinant of 0 is if two rows or columns in the matrix are perfectly collinear. Another way of saying this is that the determinant will be zero if the rows or columns of a matrix are not linearly dependent. \n", - " \n", - "One of the most common ways that a matrix can end up having rows that are linearly dependent is if one column a multiple of another column. Lets look at an example:\n", + "## Transpose\n", + "\n", + "A transposed matrix is one whose rows are the columns of the original and whose columns are the rows of the original.\n", + "\n", + "Common notation for the transpose of a matrix is to have a capital $T$ superscript or a tick mark:\n", "\n", "\\begin{align}\n", - "C =\\begin{bmatrix}\n", - " 1 & 5 & 2 \\\\\n", - " 2 & 7 & 4 \\\\\n", - " 3 & 2 & 6\n", - "\\end{bmatrix}\n", + "B^{T}\n", + "\\qquad\n", + "B^{\\prime}\n", "\\end{align}\n", "\n", - "Look at the columns of the above matrix, column 3 is exactly double column 1. (could be any multiple or fraction) Think about if you had some measure in a dataset of distance in miles, but then you also wanted to convert its units to feet, so you create another column and multiply the mile measure by 5,280 (Thanks Imperial System). But then you forget to drop one of the columns so you end up with two columns that are linearly dependent which causes the determinant of your dataframe to be 0 and will cause certain algorithms to fail. We'll go deeper into this concept next week (this can cause problems with linear regression) so just know that matrices that have columns that are a multiple or fraction of another column will cause the determinant of that matrix to be 0." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "2Q0YqSGF-9vI", - "colab_type": "text" - }, - "source": [ - "## Challenge\n", - "\n", - "Square Matrices have many important properties like the inverse and determinant that we will be using in the future. For more details about the implications of a square matrix having an inverse you can try googling the \"Invertible Matrix Theorem\" mastering and proving the different partso of this theorem is one of the main focuses of traditional linear algebra education." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "z_fYkKbT8MGj", - "colab_type": "text" - }, - "source": [ - "# [Doing Linear Algebra with NumPy](#linear-algebra-NumPy)\n", + "The first is read \"B transpose\" the second is sometimes read as \"B prime\" but can also be read as \"B transpose\".\n", "\n", - "Student can use NumPy to perform basic Linear Algebra operations with Python.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VL30GAl-tcpl", - "colab_type": "text" - }, - "source": [ - "## Overview\n", + "The transpose of any matrix can be found easily by fixing the elements on the main diagonal and flipping the placement of all other elements across that diagonal.\n", "\n", - "NumPy is at the core of many types of scientific computing and is the main tool that we will use to perform Linear Algebra operations with Python. \n", + "![Matrix Transpose](http://xaktly.com/Images/Mathematics/MatrixAlgebra/MatrixOperations/MatrixTranspose.png)\n", + " \n", + "\\begin{align}\n", + " B = \n", + "\\begin{bmatrix}\n", + " 1 & 2 & 3 \\\\\n", + " 4 & 5 & 6\n", + "\\end{bmatrix}\n", + " \\qquad\n", + " B^{T} = \n", + " \\begin{bmatrix}\n", + " 1 & 4 \\\\\n", + " 2 & 5 \\\\\n", + " 3 & 6\n", + " \\end{bmatrix}\n", + "\\end{align}\n", "\n", - "We have talked about how vectors are a lot like Python Lists, however we will mostly use NumPy arrays instead of Python lists as the main data structure. Lets demonstrate some of the main differences betwen Python lists and NumPy Arrays." + "![Matrix Transpose](https://upload.wikimedia.org/wikipedia/commons/e/e4/Matrix_transpose.gif)" ] }, { "cell_type": "code", "metadata": { - "id": "3FJDPjwytDfZ", + "id": "jLTfBIRqDxtS", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 138 + }, + "outputId": "9a98b11a-d2de-4d6e-9c44-2a4564e03ed9" }, "source": [ - "### What will happen when I add the two Python lists together?\n" + "df" ], - "execution_count": 0, - "outputs": [] + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab
014
125
236
\n", + "
" + ], + "text/plain": [ + " a b\n", + "0 1 4\n", + "1 2 5\n", + "2 3 6" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 33 + } + ] }, { "cell_type": "code", "metadata": { - "id": "SFtJF1symxuY", + "id": "v31YheDkDyPC", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 108 + }, + "outputId": "03feef30-301e-4146-99b1-2d2201ca7dce" }, "source": [ - "# Lets create two 1-Dimensional NumPy arrays and add them together?\n", - "# What do you think the result will be?\n", - "\n", - "# Array Broadcasting\n", - "# Doing some arithmetic operation to vectors \"element-wise\"\n" + "# Transposing a dataframe switches its rows and columns\n", + "df.T" ], - "execution_count": 0, - "outputs": [] + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
012
a123
b456
\n", + "
" + ], + "text/plain": [ + " 0 1 2\n", + "a 1 2 3\n", + "b 4 5 6" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 34 + } + ] }, { "cell_type": "markdown", "metadata": { - "id": "wVuKmynAm5qF", + "id": "1ljuvruQJrFt", "colab_type": "text" }, "source": [ - "What we have just demonstrated is one of the primary benefits of NumPy and it is called \"Array Broadcasting\" This means that arithmetic operations happen \"element-wise\"" + "## Square Matrices\n", + "\n", + "In a traditional linear algebra class after the first few weeks you would deal almost exclusively with square matrices. They have very nice properties that their lopsided sisters and brothers just don't possess. \n", + "\n", + "A square matrix is any matrix that has the same number of rows as columns:\n", + "\n", + "\\begin{align}\n", + "A =\n", + "\\begin{bmatrix}\n", + " a_{1,1}\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "B =\n", + "\\begin{bmatrix}\n", + "b_{1,1} & b_{1,2} \\\\\n", + "b_{2,1} & b_{2,2}\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "C =\n", + "\\begin{bmatrix}\n", + "c_{1,1} & c_{1,2} & c_{1,3} \\\\\n", + "c_{2,1} & c_{2,2} & c_{2,3} \\\\\n", + "c_{3,1} & c_{3,2} & c_{3,3} \n", + "\\end{bmatrix}\n", + "\\end{align}" ] }, - { - "cell_type": "code", - "metadata": { - "id": "dIOBi3uznKnx", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Qd5bsOXUnNL2", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "vLSUyDEYnPMo", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "metadata": { - "id": "iqjRIRFItg3X", + "id": "RcB6ruT3AYUt", "colab_type": "text" }, "source": [ - "## Follow Along\n", + "### Special Kinds of Square Matrices\n", + "\n", + "**Diagonal:** Values on the main diagonal, zeroes everywhere else.\n", + "\n", + "\\begin{align}\n", + "A =\n", + "\\begin{bmatrix}\n", + "a_{1,1} & 0 & 0 \\\\\n", + "0 & a_{2,2} & 0 \\\\\n", + "0 & 0 & a_{3,3} \n", + "\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "**Upper Triangular:** Values on and above the main diagonal, zeroes everywhere else.\n", + "\n", + "\\begin{align}\n", + "B =\n", + "\\begin{bmatrix}\n", + "b_{1,1} & b_{1,2} & b_{1,3} \\\\\n", + "0 & b_{2,2} & b_{2,3} \\\\\n", + "0 & 0 & b_{3,3} \n", + "\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "**Lower Triangular:** Values on and below the main diagonal, zeroes everywhere else.\n", + "\n", + "\\begin{align}\n", + "C =\n", + "\\begin{bmatrix}\n", + "c_{1,1} & 0 & 0 \\\\\n", + "c_{2,1} & c_{2,2} & 0 \\\\\n", + "c_{3,1} & c_{3,2} & c_{3,3} \n", + "\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "**Identity Matrix:** A diagonal matrix with ones on the main diagonal and zeroes everywhere else. The product of any square matrix and the identity matrix is the original square matrix $AI == A$. Also, any matrix multiplied by its inverse will give the identity matrix as its product. $AA^{-1} = I$\n", + "\n", + "\\begin{align}\n", + "D =\n", + "\\begin{bmatrix}\n", + " 1\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "E =\n", + "\\begin{bmatrix}\n", + "1 & 0 \\\\\n", + "0 & 1\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "F =\n", + "\\begin{bmatrix}\n", + "1 & 0 & 0 \\\\\n", + "0 & 1 & 0 \\\\\n", + "0 & 0 & 1 \n", + "\\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "**Symmetric:** The numbers above the main diagonal are mirrored below/across the main diagonal.\n", + "\n", + "\\begin{align}\n", + "G =\n", + "\\begin{bmatrix}\n", + "1 & 4 & 5 \\\\\n", + "4 & 2 & 6 \\\\\n", + "5 & 6 & 3 \n", + "\\end{bmatrix}\n", + "\\end{align}\n", "\n", - "Lets calculate a dot product. What do we need to do? We need to multiply two vectors \"element-wise\" and them sum up all of those products" + "\n" ] }, - { - "cell_type": "code", - "metadata": { - "id": "ZcGlUN55qoGt", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Find the dot product of vectos a and b\n", - "\n", - "# Dot Product\n" - ], - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "metadata": { - "id": "p1BE4P3lnr1-", + "id": "jrx56SQRW7pl", "colab_type": "text" }, "source": [ - "We can also use provided linear algebra functions from the [np.linalg](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.linalg.html) documentation in order to perform Linear Algebra processes." + "### Determinant\n", + "\n", + "The determinant is a property that all square matrices possess and is denoted $det(A)$ or using pipes (absolute value symbols) $|A|$\n", + "\n", + "The equation given for finding the determinant of a 2x2 matrix is as follows:\n", + "\n", + "\\begin{align}\n", + "A = \\begin{bmatrix}\n", + "a & b \\\\\n", + "c & d\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "|A| = ad-bc\n", + "\\end{align}\n", + "\n", + "The determinant of larger square matrices recursively by finding the determinats of the smaller matrics that make up the large matrix.\n", + "\n", + "For example:\n", + "\n", + "
\n", + "\n", + "The above equation is **very** similar to the equation that we use to find the cross-product of a 3x3 matrix. " ] }, { "cell_type": "code", "metadata": { - "id": "cqDPG2GCoFFR", + "id": "d8fW27Ctx7nL", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "11c48d41-6262-4b6a-c237-6f16db47a7c8" }, "source": [ - "" + "P = np.array([[5,4], [5,2]])\n", + "print(\"Determinant of P: \" + str(np.linalg.det(P)))" ], - "execution_count": 0, - "outputs": [] + "execution_count": 46, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Determinant of P: -9.999999999999998\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", "metadata": { - "id": "yh5x6DXVouPW", + "id": "ihd9Co1jgkuU", "colab_type": "text" }, "source": [ - "### 1-Dimensional vs 2-Dimensional NumPy Arrays\n", - "\n", - "One dimensional NumPy arrays can be used to represent vectors but cannot be used to differentiate between row and column vectors.\n", - "\n", - "\\begin{align}\n", - "\\text{column vector} = \\begin{bmatrix}1 \\\\ 2 \\\\ 3\\end{bmatrix}\n", - "\\end{align}\n", + "**What leads to a 0 determinant?**\n", + " \n", + " A square matrix that has a determinant of 0 is known as a \"singular\" matrix. One thing that can lead to a matrix having a determinant of 0 is if two rows or columns in the matrix are perfectly collinear. Another way of saying this is that the determinant will be zero if the rows or columns of a matrix are not linearly dependent. \n", + " \n", + "One of the most common ways that a matrix can end up having rows that are linearly dependent is if one column a multiple of another column. Lets look at an example:\n", "\n", "\\begin{align}\n", - "\\text{row vector} = \\begin{bmatrix} 1 & 2 & 3\\end{bmatrix}\n", + "C =\\begin{bmatrix}\n", + " 1 & 5 & 2 \\\\\n", + " 2 & 7 & 4 \\\\\n", + " 3 & 2 & 6\n", + "\\end{bmatrix}\n", "\\end{align}\n", "\n", - "Notice that one dimensional arrays do not have a second element listed for their shape. so that there is no way to tell if they represent column vectors or row vectors" + "Look at the columns of the above matrix, column 3 is exactly double column 1. (could be any multiple or fraction) Think about if you had some measure in a dataset of distance in miles, but then you also wanted to convert its units to feet, so you create another column and multiply the mile measure by 5,280 (Thanks Imperial System). But then you forget to drop one of the columns so you end up with two columns that are linearly dependent which causes the determinant of your dataframe to be 0 and will cause certain algorithms to fail. We'll go deeper into this concept next week (this can cause problems with linear regression) so just know that matrices that have columns that are a multiple or fraction of another column will cause the determinant of that matrix to be 0." ] }, - { - "cell_type": "code", - "metadata": { - "id": "clrA_q4PpXgk", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "RrmCLJXlqZLb", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Notice how only the number of items in the array is listed\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Dt6h6fMQqy6N", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# And if we swap rows and columns the shape does not change\n" - ], - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "metadata": { - "id": "LXOIB20Lq2j0", + "id": "fBRh1YLyW-C_", "colab_type": "text" }, "source": [ - "### If I explicitly want a row of column vector then I need to use a 2D NumPy Array" + "### Inverse\n", + "\n", + "There are multiple methods that we could use to find the inverse of a matrix by hand. I would suggest you explore those methods --if this content isn't already overwhelming enough. The inverse is like the reciprocal of the matrix that was used to generate it. Just like $\\frac{1}{8}$ is the reciprocal of 8, $A^{-1}$ acts like the reciprocal of $A$. The equation for finding the determinant of a 2x2 matrix is as follows:\n", + " \n", + " \\begin{align}\n", + "A = \\begin{bmatrix}\n", + "a & b \\\\\n", + "c & d\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "A^{-1} = \\frac{1}{ad-bc}\\begin{bmatrix}\n", + "d & -b\\\\\n", + "-c & a\n", + "\\end{bmatrix}\n", + "\\end{align}" ] }, - { - "cell_type": "code", - "metadata": { - "id": "CAMZw2Eqq6e5", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, { "cell_type": "markdown", "metadata": { - "id": "-CaNxeTao4ZQ", + "id": "oSoPNVMeFVsP", "colab_type": "text" }, "source": [ - "### Only use NumPy Arrans, DO NOT use the NumPy Matrix class.\n", + "**Not all matrices are invertible**\n", "\n", - "NumPy has a matrix class which can be used for representing matrices. However, I don't want you to use that datatype because it will be removed from NumPy in the future. However, I want you to be aware that this other datatype exists so that you don't get confused when you look at stack overflow posts or other tutorials that use the matrix datatype. Keep an eye out for resources that use it and just know that they will soon be outdated. Anything that can be done with the matrix class can also be done with simple NumPY arrays." + "Matrices that are not square are not invertible.\n", + " \n", + " A matrix is invertible if and only if its determinant is non-zero. You'll notice that the fraction on the left side of the matrix is $\\frac{1}{det(A)}$.\n", + " \n", + " As you know, dividing anything by 0 leads to an undefined quotient. Therefore, if the determinant of a matrix is 0, then the entire inverse becomes undefined. " ] }, { "cell_type": "code", "metadata": { - "id": "omwR_dinrAzW", - "colab_type": "code", - "colab": {} - }, - "source": [ - "# Do not work with this datatype\n", - "# This will be removed from NumPy in the future\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Jc0AVYysrCnu", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "mJuJLkWBrEae", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "82IobIitrGVD", + "id": "QjYQMp2ku_tT", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "e5b4fea8-3b94-4ea5-fea3-6ded22dd76ec" }, "source": [ - "# Matrix as a NumPy Array\n", + "L = np.array([[0, 1, 2], \n", + " [7, 10, 4], \n", + " [3, 2, 0]])\n", "\n", - "# ndarrays\n" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "irmsHsjOrJM4", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "SaEc-xYyrNLi", - "colab_type": "code", - "colab": {} - }, - "source": [ - "" + "L_inverse = np.linalg.inv(L)\n", + "\n", + "L_inverse" ], - "execution_count": 0, - "outputs": [] + "execution_count": 51, + "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": 51 + } + ] }, { "cell_type": "code", "metadata": { - "id": "uXEg00GGs4hA", + "id": "0P8FXm00vbzb", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "c42bb67c-4db3-4854-ccca-deed36332bac" }, "source": [ - "" + "L * L_inverse" ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YX3kcdK9tjIy", - "colab_type": "text" - }, - "source": [ - "## Challenge\n", - "\n", - "In your afternoon assignment you will perform many different linear algebra functions using NumPy. Many of which will be done easily by using these [Helpful NumPy Linear Algebra Functions](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.linalg.html) found in the NumPy documentation." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Q0YtPR54tmW0", - "colab_type": "text" - }, - "source": [ - "# Review\n", - "\n", - "Lets good at working with vectors and matrices with NumPy!\n", - "\n", - "Remember that you'll need many functions from [the documentation](https://docs.scipy.org/doc/numpy-1.15.1/reference/routines.linalg.html) in order to complete the assignment\n", - "\n", - "Remember to use 2D NumPy arrays to represent row/column vectors as well as matrices and please share any helpful resources that you find in the cohort channel." + "execution_count": 52, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 0. , -0.2, 1.6],\n", + " [-4.2, 3. , -2.8],\n", + " [ 2.4, -0.3, 0. ]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 52 + } ] } ] From 2d0d53bf5788d0c3a540d409fffccd015045e659 Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Mon, 14 Sep 2020 16:52:14 -0400 Subject: [PATCH 2/9] Fixed matrix multiplication --- .../LS_DS_131_Vectors_and_Matrices.ipynb | 71 +++++++++---------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb index 41b1636e..c41c9172 100644 --- a/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb +++ b/module1-vectors-and-matrices/LS_DS_131_Vectors_and_Matrices.ipynb @@ -6,7 +6,6 @@ "name": "Vectors & Matrices (DS20).ipynb", "provenance": [], "collapsed_sections": [], - "toc_visible": true, "include_colab_link": true }, "kernelspec": { @@ -207,7 +206,7 @@ "source": [ "import numpy as np" ], - "execution_count": 2, + "execution_count": 4, "outputs": [] }, { @@ -242,7 +241,7 @@ "base_uri": "https://localhost:8080/", "height": 34 }, - "outputId": "4f52ec83-ff6d-43ac-bf0f-bb3cf157b307" + "outputId": "7648854b-8e80-473e-d788-6471fb4fcdef" }, "source": [ "### What will happen when I add the two Python lists together?\n", @@ -253,7 +252,7 @@ "\n", "a + b" ], - "execution_count": 1, + "execution_count": 9, "outputs": [ { "output_type": "execute_result", @@ -265,7 +264,7 @@ "metadata": { "tags": [] }, - "execution_count": 1 + "execution_count": 9 } ] }, @@ -278,12 +277,12 @@ "base_uri": "https://localhost:8080/", "height": 164 }, - "outputId": "625c33c0-335b-4871-b9fd-239e264c44a6" + "outputId": "790fcbe3-9dbc-45e8-f827-2445f23933f0" }, "source": [ "a * b" ], - "execution_count": 3, + "execution_count": 10, "outputs": [ { "output_type": "error", @@ -292,7 +291,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mTypeError\u001b[0m: can't multiply sequence by non-int of type 'list'" ] } @@ -323,7 +322,7 @@ "print(np_a)\n", "print(np_b)" ], - "execution_count": 5, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -359,7 +358,7 @@ "source": [ "np_a + np_b" ], - "execution_count": 6, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -390,7 +389,7 @@ "# multiplying np arrays\n", "np_a * np_b" ], - "execution_count": 7, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -449,7 +448,7 @@ "matrix = np.mat('1 2 ; 4 5')\n", "matrix" ], - "execution_count": 8, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -608,7 +607,7 @@ "c = np.array([1, 2, 3, 4, 5])\n", "c" ], - "execution_count": 10, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -639,7 +638,7 @@ "# Notice how only the number of items in the array is listed\n", "c.shape" ], - "execution_count": 11, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -670,7 +669,7 @@ "# And if we swap rows and columns the shape does not change\n", "c.T" ], - "execution_count": 12, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -712,7 +711,7 @@ " [4],\n", " [5]])" ], - "execution_count": 14, + "execution_count": null, "outputs": [] }, { @@ -730,7 +729,7 @@ "print(c_row.shape)\n", "print(c_row)" ], - "execution_count": 19, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -757,7 +756,7 @@ "print(c_column.shape)\n", "print(c_column)" ], - "execution_count": 20, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -792,7 +791,7 @@ "base_uri": "https://localhost:8080/", "height": 281 }, - "outputId": "2eed3224-506e-41b4-be7b-d378f789a98b" + "outputId": "9f180516-9034-4470-9b02-79d92c6d50e0" }, "source": [ "import math\n", @@ -820,7 +819,7 @@ "plt.title(\"Scaled Vectors\")\n", "plt.show()" ], - "execution_count": 26, + "execution_count": 3, "outputs": [ { "output_type": "display_data", @@ -869,7 +868,7 @@ "plt.title('Vector Examples')\n", "plt.show" ], - "execution_count": 32, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -935,7 +934,7 @@ "ax.set_zlabel('Z')\n", "plt.show()" ], - "execution_count": 33, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -1056,7 +1055,7 @@ "print(norm_h)\n", "print(norm_j)" ], - "execution_count": 35, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1144,7 +1143,7 @@ "# using the numpy method\n", "print(\"Dot product: \", np.dot(a, b))" ], - "execution_count": 39, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1319,7 +1318,7 @@ "np.matmul(A, B)\n", "# resulting matrix is 2 by 3" ], - "execution_count": 42, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -1687,7 +1686,7 @@ "P = np.array([[5,4], [5,2]])\n", "print(\"Determinant of P: \" + str(np.linalg.det(P)))" ], - "execution_count": 46, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1771,7 +1770,7 @@ "base_uri": "https://localhost:8080/", "height": 68 }, - "outputId": "e5b4fea8-3b94-4ea5-fea3-6ded22dd76ec" + "outputId": "dc081a9a-57a1-4c6c-fd63-98abdebec4e6" }, "source": [ "L = np.array([[0, 1, 2], \n", @@ -1782,7 +1781,7 @@ "\n", "L_inverse" ], - "execution_count": 51, + "execution_count": 6, "outputs": [ { "output_type": "execute_result", @@ -1796,7 +1795,7 @@ "metadata": { "tags": [] }, - "execution_count": 51 + "execution_count": 6 } ] }, @@ -1809,26 +1808,26 @@ "base_uri": "https://localhost:8080/", "height": 68 }, - "outputId": "c42bb67c-4db3-4854-ccca-deed36332bac" + "outputId": "521e6c76-31a0-4c3e-f5a8-6a248d4b8d20" }, "source": [ - "L * L_inverse" + "np.matmul(L, L_inverse).round(5)" ], - "execution_count": 52, + "execution_count": 8, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "array([[ 0. , -0.2, 1.6],\n", - " [-4.2, 3. , -2.8],\n", - " [ 2.4, -0.3, 0. ]])" + "array([[ 1., -0., 0.],\n", + " [ 0., 1., 0.],\n", + " [ 0., 0., 1.]])" ] }, "metadata": { "tags": [] }, - "execution_count": 52 + "execution_count": 8 } ] } From f063bcad5a3841c18fc1ef5c5d6d883f3efbc8ce Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Mon, 14 Sep 2020 16:53:20 -0400 Subject: [PATCH 3/9] Completed Assignment --- ..._131_Vectors_and_Matrices_Assignment.ipynb | 778 ++++++++++++++++-- 1 file changed, 724 insertions(+), 54 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..baacf7c3 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 @@ -3,9 +3,11 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_131_Vectors_and_Matrices_Assignment.ipynb", + "name": "DS_131_Vectors_and_Matrices_Assignment.ipynb", "provenance": [], - "collapsed_sections": [] + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true }, "kernelspec": { "name": "python3", @@ -13,6 +15,16 @@ } }, "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, { "cell_type": "markdown", "metadata": { @@ -40,13 +52,41 @@ "metadata": { "id": "XNqjzQzrkVG7", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "56b19f39-fa31-46b1-f52d-9e8090718f38" }, "source": [ - "" + "import numpy as np\n", + "import math\n", + "import matplotlib.pyplot as plt\n", + "\n", + "green = np.array([[0.7, 0.7]])\n", + "\n", + "plt.arrow(0, 0, green[0][0], green[0][1], head_width=0.02, head_length=0.01, color='g')\n", + "\n", + "plt.title(\"2D Vector\")\n", + "\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 40, + "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 +103,47 @@ "metadata": { "id": "atUEd3T6llKm", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "4b6b722d-e447-40aa-e9ea-2bb2922d96bf" }, "source": [ - "" + "from mpl_toolkits.mplot3d import Axes3D\n", + "\n", + "green2 = np.array([[0, 0, 0, 0.7, 0.7, 0.7]])\n", + "\n", + "X, Y, Z, U, V, W = zip(*green2)\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X, Y, Z, U, V, W, length=1)\n", + "\n", + "ax.set_xlim([0, 1])\n", + "ax.set_ylim([0, 1])\n", + "ax.set_zlim([0, 1])\n", + "ax.set_xlabel('X')\n", + "ax.set_ylabel('Y')\n", + "ax.set_zlabel('Z')\n", + "\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 41, + "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 +160,18 @@ "metadata": { "id": "ah6zMSLJdJwL", "colab_type": "code", - "outputId": "b1ccb836-02b8-4d42-a7db-6c34f010f6c6", "colab": { "base_uri": "https://localhost:8080/", - "height": 52 - } + "height": 51 + }, + "outputId": "3ab84c47-5e96-4b94-a6b1-e61b2ff5c593" }, "source": [ "from math import e, pi\n", "print(e)\n", "print(pi)" ], - "execution_count": 0, + "execution_count": 42, "outputs": [ { "output_type": "stream", @@ -114,13 +188,76 @@ "metadata": { "id": "3qpwDlzXkVf5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "5bb8cb14-2c33-403d-9802-b91ac3dbbaa7" }, "source": [ - "" + "print(green * 5)\n", + "print(green * pi)\n", + "print(green * -e)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 43, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[3.5 3.5]]\n", + "[[2.19911486 2.19911486]]\n", + "[[-1.90279728 -1.90279728]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ORS4VXAnD5lw", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "edf108e1-bb0a-4316-a593-534d5afed8af" + }, + "source": [ + "green = [0.7, 0.7]\n", + "\n", + "\n", + "blue = np.multiply(5, green)\n", + "\n", + "red = np.multiply(pi, green)\n", + "\n", + "orange = np.multiply(-e, green)\n", + "\n", + "plt.arrow(0,0, blue[0], blue[1],head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, red[0], red[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, green[0], green[1],head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, orange[0], orange[1],head_width=.05, head_length=0.05, color ='orange')\n", + "plt.xlim(-3,4) \n", + "plt.ylim(-3,4)\n", + "plt.title(\"Scaled Vectors\")\n", + "plt.show()" + ], + "execution_count": 45, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -146,11 +283,54 @@ "colab": {} }, "source": [ - "" + "a = np.array([[5],\n", + " [7]])\n", + "\n", + "b = np.array([[3],\n", + " [4]])" ], - "execution_count": 0, + "execution_count": 46, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "zmSfZ14bIiht", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "e92f3ae3-7bde-4428-de8c-3e4b95c6e00d" + }, + "source": [ + "plt.arrow(0, 0, a[0][0], a[1][0], head_width=0.2, head_length=0.1, color='y')\n", + "plt.arrow(0, 0, b[0][0], b[1][0], head_width=0.2, head_length=0.1, color='r')\n", + "\n", + "plt.title(\"Vectors a and b\")\n", + "\n", + "plt.xlim(0,10) \n", + "plt.ylim(0,10)\n", + "\n", + "plt.show()" + ], + "execution_count": 53, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -166,13 +346,74 @@ "metadata": { "id": "68sWHIOPkXp5", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "05f60824-ab31-40d4-e6b4-b5a32f600e30" }, "source": [ - "" + "z = a-b\n", + "z" ], - "execution_count": 0, - "outputs": [] + "execution_count": 57, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[2],\n", + " [3]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 57 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Yhh_BG6gJ-tC", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "72372c96-f73b-4326-e90c-75d1a23195ce" + }, + "source": [ + "plt.arrow(0, 0, a[0][0], a[1][0], head_width=0.2, head_length=0.1, color='y')\n", + "plt.arrow(0, 0, b[0][0], b[1][0], head_width=0.2, head_length=0.1, color='r')\n", + "plt.arrow(0, 0, z[0][0], z[1][0], head_width=0.2, head_length=0.1, color='g')\n", + "\n", + "plt.title(\"Vectors a, b, and a-b\")\n", + "\n", + "plt.xlim(0,10) \n", + "plt.ylim(0,10)\n", + "\n", + "plt.show()\n", + "\n", + "# Vector a-b, when added to vector b, is equal to vector a." + ], + "execution_count": 61, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEICAYAAACktLTqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAeXUlEQVR4nO3deXxU9bnH8c+ThDWAQKVBFAGtCmqvIAFBFrVaK2qrYq1aN2wr1Xu1WotetYvWVq+22ta2VsUNF9wR911EhUqQgDWEHVS2AAFRIgkQyHP/OAcIkSXMTHJmznzfr1demTnrcw7w5czvnN9vzN0REZF4yYm6ABERST2Fu4hIDCncRURiSOEuIhJDCncRkRhSuIuIxJDCXaQWMzvazBZHXQeAmY0ysz+maFs3mNmjqdiWZAaFu2zDzF4zsxu3M/0UM1tmZnkJbjdlQSUiu6Zwl7oeAs41M6sz/TxgtLtvjKAmzCw3iv2KZCqFu9T1HPANYNDmCWbWDjgZeNjMcszsGjObb2arzOwpM2tfa9mBZvZvM/vCzBaZ2TAzGw6cA1xtZl+Z2Yvhsj3MbHy4bKmZ/aDWdkaZ2V1m9oqZrQWOMbMTzWyGmVWY2RIzG7G9AzCz/c1sXFjfSjMbbWZtd+ckmNl14bqfmtk5u7HeHeFxrzGzYjOrfR5vCM/Xw+ExlJpZYa35vcxsajjvSaD5TvaTyDE2N7Mnw+1PNbPD6ntcknkU7rINd68CngLOrzX5R8Asd/8PcBlwKnAU0AlYDdwJYGZdgFeBfwAdgJ7AR+4+EhgN/MndW7n7982sCfAi8AbwzXC7o83soFr7/TFwE9AamADcD/zc3VsDhwLjdnAYBvxfWF8PoDNww26cho7AnsDewAXAyDp17cyHBMfdHngMeNrMaof0D4AngLbAC8A/AcysKcF/rI+E6z4NnL6T/SRyjKeE291c23Phn4PEkbvrRz/b/AADgS+A5uH7icAvw9czgWNrLbsXUA3kAdcCY3ewzVHAH2u9HwQsA3JqTXscuKHW8g/X2cZC4OdAm908nlOBafVc9mhgI5Bfa9pTwG8TPJergcPC1zcAb9WadzBQFb4eDCwFrNb8f9c+Z8kcY7jvSbXe5wBlwKCo/77pp2F+dOUuX+PuE4CVwKlmtj/Ql+BKD6ALMDZsSvmCIOw3AQUEV4/z67mbTsAid6+pNe0zgqvlzRbVWed04ETgMzN718z6b2/DZlZgZk+ETTdrgEcJrsTra7W7r61TV6f6rGhmI8xsppl9GZ6fPerse1mt15UETSV54faXeJi8tfa7o/3s8BjN7Jyw+esrM3u11mpbzmd43hfX97gk8yjcZUceJmiaORd43d2Xh9MXAUPcvW2tn+buviSct/8Otld3+NGlQGczq/13cF9gyY7WcfcP3f0Ugmac5wiuqLfn5nDdb7t7m/AY6t4g3pl2ZpZfp66lu1opbF+/mqAZq527twW+rOe+y4C969zI3ncny+/wGN19tAfNX63cfUitdTrXqjUH2Kc+xyWZSeEuO/IwcBxwEcETNJvdDdwUtq9jZh3M7JRw3mjgODP7kZnlmdk3zKxnOG85sF+t7RQRXLlebWZNzOxo4PsE7dFfY2ZNwyvSPdy9GlgD1GxvWYI2+q+AL81sb+CqOtsaZWajdnH8vw/3OYjgZvLT4brDzOzTnex3I1AO5JnZ74A2u9jPZh+E6/4iPB9DCT4x7chOj3EHepvZ0PCTwhXAemBSPeuTDKNwl+1y908J2nzzCW78bXZH+P4NM6sgCIcjwnUWEjSb/Ar4HPgI2PxExv3AwWFzznPuvoEgzIcQNAH9Czjf3WftpKzzgE/DZoiLCZ7A2Z7fA4cTXDW/DDxbZ35ngvsIO7KMoK18KcF/WBfXqmtn674OvAbMIWhSWcfXm5a2KzwfQ4FhBOfuzO3UXduujnF7ng+3u5rgXA4N/6OUGLJtm/hE4i18KuU/wH8lEmxm9gZwubvPTHlxIimkcBcRiaFdNsuY2QNmtsLMptea1t7M3jSzueHvdg1bpoiI7I76tLmPAk6oM+0a4G13PwB4O3wvIiJpol7NMmbWFXjJ3Q8N388Gjnb3MjPbCxjv7vXtwSciIg0soRH+gAJ3LwtfLyPowLJdFowrMhwgPz+/d/fu3RPcpYhIdiouLl7p7h12Z51Ew30Ld3cz2+HlvwfjiowEKCws9ClTpiS7SxGRrGJmO+ytvCOJPue+PGyOIfy9IsHtiIhIA0g03F8gGC2P8PfzqSlHRERSoT6PQj5O0DX6IDNbbGY/BW4Bvmtmcwm6qN/SsGWKiMju2GWbu7ufvYNZx6a4FhERSRGNLSMiEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcBcRiSGFu4hIDCncRURiSOEuIhJDCncRkRhSuIuIxJDCXUQkhhTuIiIxpHAXEYkhhbuISAwp3EVEYkjhLiISQwp3EZEYUriLiMSQwl1EJIYU7iIiMaRwFxGJIYW7iEgMKdxFRGJI4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcBcRiSGFu4hIDCncRURiSOEuIhJDCncRkRhSuIuIxFBS4W5mvzSzUjObbmaPm1nzVBUmIiKJSzjczWxv4BdAobsfCuQCZ6WqMBERSVyyzTJ5QAszywNaAkuTL0lERJKVcLi7+xLgNmAhUAZ86e5v1F3OzIab2RQzm1JeXp54pSIiUm/JNMu0A04BugGdgHwzO7fucu4+0t0L3b2wQ4cOiVcqIiL1lkyzzHHAJ+5e7u7VwLPAkakpS0REkpFMuC8E+plZSzMz4FhgZmrKEhGRZCTT5l4EPANMBUrCbY1MUV0iIpKEvGRWdvfrgetTVIuIiKSIeqiKiMSQwl1EJIYU7iIiMaRwFxGJIYW7iEgMKdxFRGJI4S4iEkMKdxGRGFK4i4jEkMJdRCSGFO4iIjGkcBcRiSGFu4hIDCU1KqRIJlu3bhFr105n/frFrF+/kKqqebRrdzx77XVh1KWJJE3hLllrwYJrWbFiNJALbAJg9ep3FO4SC2qWkazVvfsoevR4jM3BDrBx42rWrfssuqJEUkThLlnLLIeZM38MwH77/YnWrfvivoGKiikRVyaSPDXLSFaqqVnPe+81B6BPnxnk5/dg332vYu3aWbRseWDE1YkkT+EuWae6+nMmTvwGAP37l9GsWcct8/Lzu0dVlkhKKdwlq1RVfUJR0X4ADBxYQV5eq4grEmkYCnfJGmvWTGHq1D4ADB5cTU6O/vpLfOmGqmSFlStfYurUPuTmtuGoo2oU7BJ7CneJvSVL7mL69O/Tps2RDBr0JWYWdUkiDU7hLrE2b94I5s79bzp2vJDDD58YdTkijUafTSW2Skp+wKpVL9Kt2//Rpcs1UZcj0qgU7hJLkyZ9i3Xr5tOjx2MUFJwddTkijU7hLrHiXsO77+YC0LPneNq2PSriikSioXCX2Nher1ORbKVwl1iorl7NxIntga/3OhXJRgp3yXhVVZ9SVNQNUK9Tkc0U7pLRKiqKKS4uBNTrVKQ2PecuGWvlypcoLi4kN7e1ep2K1KFwl4y0ZMndtXqdrlGvU5E6FO6ScebNu4q5cy9Rr1ORnUgq3M2srZk9Y2azzGymmfVPVWEi21NScgqLF99Gt2430737A1GXI5K2km2kvAN4zd1/aGZNgZYpqElku4qKDqCqah49eoymoODHUZcjktYSDncz2wMYDAwDcPcNwIbUlCWylXqdiuy+ZJplugHlwINmNs3M7jOz/LoLmdlwM5tiZlPKy8uT2J1ko5qa9VuCvU+fUgW7SD0lE+55wOHAXe7eC1gLfG3oPXcf6e6F7l7YoUOHJHYn2aa6evWW4QT69y8jP//giCsSyRzJhPtiYLG7F4XvnyEIe5GkVVV9umU4gYEDKzScgMhuSjjc3X0ZsMjMDgonHQvMSElVktUqKoq3DCcweHC1hhMQSUCyT8tcBowOn5RZAFyYfEmSzVatepmSkpPJzW3NwIH6SjyRRCUV7u7+EVCYolokyy1Zcjdz515CmzZHqnOSSJLUQ1XSwvz5V6vXqUgKaaQliVxJyamsWvU83brdRJcu10VdjkgsKNwlUkVFB1JVNVe9TkVSTOEukajd6/Sww96hXbujoy1IJGYU7tLotv2u01J1ThJpAAp3aVTbftfpUpo12yviikTiSeEujWbdus+YNKkroO86FWloCndpFPquU5HGpefcpcGtWvUyxcWF5OTk67tORRqJwl0a1NKl91BScjKtW/dj8OCvNJyASCNRuEuDmT//aubMuZiOHYfRu/cHUZcjklX0+VgahHqdikRL4S4pV1R0EFVVc+jR41EKCs6JuhyRrKRwl5RRr1OR9KFwl5TYttfpdPLzD4m4IpHspnCXpKnXqUj6UbhLUtTrVCQ9KdwlYRUVUyku7g2o16lIutFz7pKQVateobi4t3qdiqQphbvstqDX6UnqdSqSxhTuslvmz/9f9ToVyQD6LC31Nn36aaxc+Rzduv2RLl1+HXU5IrITCnepl6Ki7lRVzaZ790fo2PHcqMsRkV1QuMtObdvrdBzt2h0TcUUiUh8Kd9kh9ToVyVwKd9mu6uovmDixHaBepyKZSOEuX6NepyKZT+Eu21CvU5F40HPussWqVa+q16lITCjcBYClS0dSUnIirVsfoV6nIjGgcBfmz7+GOXN+TkHBMHr3nhR1OSKSAvrcneWmTx/KypVj1etUJGYU7lls8uQeVFbOUq9TkRhSuGchd+fdd4MWOfU6FYknhXuWqanZwHvvNQPU61QkzpIOdzPLBaYAS9z95ORLkoZSXf0FEye0I68C+nYZT9PJK2DZx7D//tC3b9TliUgKpeLK/XJgJtAmBduSBrK51+m3/gH7jAWaHg8tWsCmTdC8OZSXR12iiKRQUo9Cmtk+wEnAfakpRxpCRcW0LcMJdLq7DEaMgA0bYM0a+OorqKiAsrJoixSRlEr2Ofe/AVcDNTtawMyGm9kUM5tSrqvDRhf0Oj2cnJwWQa/Tb3aEpUuDmQcdBPn5UF0Nk/R8u0icJBzuZnYysMLdi3e2nLuPdPdCdy/s0KFDoruTBCxdem/Y67QvgwdXYgB77w2PPQb33gszZwZB/5e/wIABUZcrIimUTJv7AOAHZnYi0BxoY2aPursemE4D8+dfy6JFt1BQcAE9eoyC9euDtnWACRO2hnmbNnD55ZHVKSINI+Erd3e/1t33cfeuwFnAOAV7epg+/XQWLbqFrl1vDIJ92bKtwb5woa7SRbKAnnOPmcmTD6aycibduz9Mx47nwZQp0KdPMHPtWmjZMtoCRaRRpCTc3X08MD4V25LEbNvr9G3atftO0LZ+zjnQqlXwZIxGehTJGhoVMgZqajZsCfY+faYHwT5iRBDsJ58cPOqoYBfJKmqWyXDbftfpEpo16wRHHgkffAA33QTXXRdxhSISBYV7Blu3biGTJnUBYODANeRZy61X6C++GFy1i0hWUrhnqIqKaRQXHw7A4MEbyKmohLbhH2dpKRx8cITViUjU1Oaegb7W63TeJ9C2bTDz888V7CKicM80W3ud9gl6nb7xRjCMAATDCLRrF22BIpIWFO4ZZP78a5kzZzgFBefTu/dkuP12OOEE6NkT3CFPrWwiElC4Z4jp039Yq9fpQ3DGGcHjjpdeCtOmRV2eiKQZXeplgMmTD6GyckbQ67TgXOjQAVauhAcfhGHDoi5PRNKQwj2Nfa3XaYsjISf8sPXBB9CvX4TViUg6U7inqdrfdVpYWEKrNe2hfYtg5uLFwdC9IiI7oDb3NFRd/cWWYO/ffwmtZlRuDfPKSgW7iOySwj3NrFu3cMtwAgMHrqHZU2/DEUdA+/ZQUxN876mIyC6oWaaRbKrZRHFZMZ+s/oQFqxdQWl7K6qrVPHTaQ+zZck9gO71Or7wK7rgDhg6FMWOiLF9EMozCvZEs/HIh/e7rh+PkWi6bfBPN85ozduZYLup9EatWvUZJyRBycpozaFAl1qcPFBfDrbfC1VdHXb6IZBg1yzSSbu26Me8X8zjxgBO3BPu6jet4tOTRsNfpEFq3LmTwgK+wnJwg2F95RcEuIglRuDeidRvX8crcVwC45dhb6NSqEx+VTWbW7OEUFJxH7/3f3NrLdNYsGDIkwmpFJJOpWaaR/GfZf+h5T08Aan5Xg5nxnVbvM3fpGLp1vYFu68/cOi7M6tVbBwITEUmAwr0RfLjkQ/re15dcy6X6t9WYGZMnH0plZSlH/tdDdJy6J5zUI1h440bIzY22YBHJeGqWaWATF06k7319adu8LRt/txGA8eONyspSDjvsLTo+VAYnnRR8ibW7gl1EUkLh3oDGfTKOgQ8OpHObzqz+39XbfNdpYWEJ7X7yT7jmGrjiCpg8OeJqRSRO1CzTQF6d+yonPnYiPfbswYz/mcHGjV8yYULQjt6/3yKaFRwCa9bAI4/AuedGXK2IxI3CvQE8N+s5TnvyNPp26kvRRUXbftdp7+XktSgIFiwqgr59I6xUROJK4Z5iT0x/grPHnM0xXY9h3AXjqKj4iOLiXgAM3m8BOW3CYF+6FPbaK8JKRSTO1OaeQqM+GsXZY87mpANOYtwF41i16jWKi3th1oyjmk4kp8t+wYJVVQp2EWlQCvcUuXvK3Vz4/IWceciZvPTjlygru5+SkiG0atWboxbchQ0YAAUFweBfzZtHXa6IxJzCPQX++sFfueTlS7iw54U88cMnWLDg18ye/TMKCs6j8MEj4Cc/gTPPhGXLwCzqckUkC6jNPUk3v38zvx73ay7teyn/GPIPSkvPoLz8Gbp0uYFupz4LH38cfJH1lVdGXaqIZBGFexJ+M+433PT+TVx95NXc+t1bt/Q67f6t++nY+afBQq+/DscfH22hIpJ1FO4JuvL1K/nrpL9y/VHXc/1R1zN+fNDc0nPfZ2nbeWiw0Jw5cMABEVYpItlK4Z6Ai1+6mHuK7+HW425lRP8rtvQ67dNqLPn7nxYs9MUXsMceEVYpItlM4b6bzh97Po98/Ah/P+HvXNL7/C3fdTrg8wdpckwY7Br8S0QipqdldsPQJ4fyyMePcO/37+Wiw07dMpzAoPd/Q5PTL4QBAzT4l4ikBYV7PX3v0e8xdtZYHjntEc48oJBJk/YF4KjbTiT3d3+EESNgwoSIqxQRCSTcLGNmnYGHgQLAgZHufkeqCksngx4YxIRFE3j6jKf5TsfWQa9TmjL4xFys6hV4/HE466yoyxQR2SKZNveNwK/cfaqZtQaKzexNd5+RotrSQq+7e/HR8o944awXKGyzgo8/PoM2eb04fNC0YIEpU6B372iLFBGpI+Fwd/cyoCx8XWFmM4G9gdiE+wH/OIB5n8/j9XNf51v2LrNn30ynjadx4DFjgwWWLQuGFBARSTMpeVrGzLoCvYCi7cwbDgwH2HfffVOxu0bR8baOLF+7nPEXjGfPtXeysPxpDlxxIZ3OfDBYYN06aNYs2iJFRHYg6RuqZtYKGANc4e5r6s5395HuXujuhR06dEh2dw3O3cm/OZ/la5fz75/8m5bll1Fe/jS9pgwLgn2ffYLBvxTsIpLGkgp3M2tCEOyj3f3Z1JQUHXcn58YcKqsr+fBnH7J+/pGsXVtCv1EnscdVo4JvTFq0SIN/iUjaS+ZpGQPuB2a6+19SV1I0Ngc7wEfDi1k9O7hJOvjibuTMfhn+/ne47LIoSxQRqbdk2twHAOcBJWb2UTjtOnd/JfmyGleN15B7Y9DxaPrFH1I+sze2EY76LsAn8NZbcOyxkdYoIrI7knlaZgKQ8e0Tm2o2kfeH4DTM+Pn7LJ/ZhyZfwoBTwwXmzYP994+uQBGRBGT12DIbazbS5A9NAJh50WssmzWI/AXQJxytlzVroHXr6AoUEUlQ1g4/sGHThi3BXvqT0SybcwJ7TsjdGuybNinYRSRjZWW4r9u4jmZ/DB5lLDnvb6yYfw4Hju7Iob/dBEcfHQz+lZOVp0ZEYiLrEmzthrW0uKkFAMU/upKVC6+g8Ncd6XTfMrj2WnjnnYgrFBFJXla1ua9Zv4Y9bgm+QGPSKaexpuwvHHW8YZuWwVNPwRlnRFyhiEhqZE24r65aTfs/tQfg3eMPYX3ZWI4+EcBh2jTo2TPS+kREUikrwn1l5Uo6/DkY+uC1gdD0s1L6nR3OXL4cvvnN6IoTEWkAsQ/3ZV8tY6/b9wLg9UHQ4WPo9ctw5vr10LRpdMWJiDSQWN9QXbxm8ZZgf3MQdH0xDPb99gsG/1Kwi0hMxTbcP1n9CZ3/2hmAtwbDIbfBgX8Dhg2D+fM1+JeIxFosm2XmrJrDQf88CIC3B0H/c6HFUuBf/4JLLom2OBGRRhC7cC9dUcqhdx0KwDv94ejN4329807QQUlEJAvEKtynlU3j8JGHA/D+f8HA74UzFiyAbt2iK0xEpJHFJtyLFhfR7/5+NM3J5f2Om+g7NJxRUQGtWkVam4hIY4vFDdX3P3uffvf3o13TZkyt2UTf4QRjw2zapGAXkayU8eH+1oK3GDxqMHu1aMLUGes55AbguOOCYNfgXyKSpTI6/V6e8zLffeS7dMuH0ser6foo8NvfwptvRl2aiEikMrbN/dmZz3L6U6dzcGso/VU4ccwYGDp0p+uJiGSDjAz3x0oe45xnz6GwDXx4ZTjx44/h29+OtC4RkXSRceH+wLQH+OkLP2VwPry7OdjLy2HPPSOtS0QknWRUuN85+U4uffVShuTBK1eFEzdsgCZNIq1LRCTdZMwN1dv/fTuXvnopP1oHr/wG/KCDgsG/FOwiIl+TEeH+h3f/wIg3R3DRUnjyFuBnP8NmzdLgXyIiO5D2zTLXvnUtt0y8hRHF8OcXgXvugeHDoy5LRCStpXW4X/HaFdxRdAe/Hwe/ew947z0YNCjqskRE0l7ahvtFL17EfVPv47bX4VcfAJ9+Cl26RF2WiEhGSMtwP2fMOTw2/THufBn++0Ng7Vpo2TLqskREMkbahfupT5zC87Nf4IHnYNjs5lBTqRunIiK7Ka2eljn2oWN4fvYLjB4D5xccg1VWKdhFRBKQNuHe797ejPt0PGOehDNP/zW5r42LuiQRkYyVFs0yh955IKUr5/LSaBhy6zPknHZ61CWJiGS0yMO9y+0FLPxqBW8+DMc+X4IdemjUJYmIZLxIw/0bN+fzeXUl7z0Ag6atgvbtoyxHRCQ2Igl3d6fFjXmsp4ZJ98IRn1ZDXuQfIkREYqPRE9XdybkxuI9b9Gpb+i5e3dgliIjEXlJPy5jZCWY228zmmdk19dphGOyTF/el7yQFu4hIQ0g43M0sF7gTGAIcDJxtZgfvbJ3ipcUATG0zjD73FiW6axER2YVkrtz7AvPcfYG7bwCeAE7Z1Uqlvf9Mr18+mMRuRURkV5Jpc98bWFTr/WLgiLoLmdlwYPMYvesP+f5V0+Gquotloz2BlVEXkSZ0LrbSudhK52Krg3Z3hQa/oeruI4GRAGY2xd0LG3qfmUDnYiudi610LrbSudjKzKbs7jrJNMssATrXer9POE1ERCKWTLh/CBxgZt3MrClwFvBCasoSEZFkJNws4+4bzexS4HUgF3jA3Ut3sdrIRPcXQzoXW+lcbKVzsZXOxVa7fS7M3RuiEBERiVDaDPkrIiKpo3AXEYmhRgn3RIYpiCMz62xm75jZDDMrNbPLo64pamaWa2bTzOylqGuJkpm1NbNnzGyWmc00s/5R1xQVM/tl+O9jupk9bmbNo66psZjZA2a2wsym15rW3szeNLO54e929dlWg4d7IsMUxNhG4FfufjDQD/ifLD4Xm10OzIy6iDRwB/Cau3cHDiNLz4mZ7Q38Aih090MJHtY4K9qqGtUo4IQ6064B3nb3A4C3w/e71BhX7gkNUxBH7l7m7lPD1xUE/4D3jraq6JjZPsBJwH1R1xIlM9sDGAzcD+DuG9z9i2irilQe0MLM8oCWwNKI62k07v4e8HmdyacAD4WvHwJOrc+2GiPctzdMQdYG2mZm1hXoBWTzCGp/A64GaqIuJGLdgHLgwbCJ6j4zy4+6qCi4+xLgNmAhUAZ86e5vRFtV5ArcvSx8vQwoqM9KuqEaATNrBYwBrnD3NVHXEwUzOxlY4e7FUdeSBvKAw4G73L0XsJZ6fvSOm7A9+RSC//A6Aflmdm60VaUPD55dr9fz640R7hqmoBYza0IQ7KPd/dmo64nQAOAHZvYpQVPdd8zs0WhLisxiYLG7b/4U9wxB2Gej44BP3L3c3auBZ4EjI64pasvNbC+A8PeK+qzUGOGuYQpCZmYE7aoz3f0vUdcTJXe/1t33cfeuBH8nxrl7Vl6hufsyYJGZbR7571hgRoQlRWkh0M/MWob/Xo4lS28u1/ICcEH4+gLg+fqs1BijQiYyTEFcDQDOA0rM7KNw2nXu/kqENUl6uAwYHV4ALQAujLieSLh7kZk9A0wleLpsGlk0DIGZPQ4cDexpZouB64FbgKfM7KfAZ8CP6rUtDT8gIhI/uqEqIhJDCncRkRhSuIuIxJDCXUQkhhTuIiIxpHAXEYkhhbuISAz9P9VOA4n9QXpuAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -195,13 +436,34 @@ "metadata": { "id": "2_cZQFCskYNr", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "b667d3d2-9b5a-4bc2-b31c-ceffd43c43cb" }, "source": [ - "" + "c = np.array([7, 22, 4, 16])\n", + "d = np.array([12, 6, 2, 9])\n", + "\n", + "cd = c * d\n", + "cd" ], - "execution_count": 0, - "outputs": [] + "execution_count": 60, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 84, 132, 8, 144])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 60 + } + ] }, { "cell_type": "markdown", @@ -224,13 +486,41 @@ "metadata": { "id": "ku-TdCKAkYs8", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "d799ab96-0fb1-4ad3-b367-7308f67c73ff" }, "source": [ - "" + "e = np.array([[5],\n", + " [7],\n", + " [2]])\n", + "\n", + "f = np.array([[3],\n", + " [4],\n", + " [6]])\n", + "\n", + "ef = e * f\n", + "ef" ], - "execution_count": 0, - "outputs": [] + "execution_count": 63, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[15],\n", + " [28],\n", + " [12]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 63 + } + ] }, { "cell_type": "markdown", @@ -253,13 +543,42 @@ "metadata": { "id": "-5VKOMKBlgaA", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "1f7d1f0d-fe56-4649-c69a-21f2a34af7e8" }, "source": [ - "" + "g = np.array([[1],\n", + " [1],\n", + " [1],\n", + " [8]])\n", + "\n", + "h = np.array([[3],\n", + " [3],\n", + " [3],\n", + " [3]])\n", + "\n", + "norm_g = np.linalg.norm(g)\n", + "norm_h = np.linalg.norm(h)\n", + "\n", + "print(norm_g)\n", + "print(norm_h)\n", + "\n", + "# Since the norm or magnitude of g is greater, then vector g is longer than vector h." ], - "execution_count": 0, - "outputs": [] + "execution_count": 69, + "outputs": [ + { + "output_type": "stream", + "text": [ + "8.18535277187245\n", + "6.0\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -316,9 +635,20 @@ "colab": {} }, "source": [ - "" + "# Dimensions = rows x columns\n", + "\n", + "# A is 3x2\n", + "# B is 1x3\n", + "# C is 2x3\n", + "# D is 3x3\n", + "# E is 2x2\n", + "\n", + "# Remember: Matrices can be multiplied only when the number of columns\n", + "# of the first matrix is equal to the number of rows of the second matrix.\n", + "\n", + "# Thus, A*C, A*E, B*A, B*D, C*A, C*D, D*A, E*C are all legal combinations" ], - "execution_count": 0, + "execution_count": 70, "outputs": [] }, { @@ -339,9 +669,123 @@ "colab": {} }, "source": [ - "" + "A = np.array([[1, 2], [3, 4], [5, 6]])\n", + "B = np.array([2, 4, 6])\n", + "C = np.array([[9, 6, 3], [4, 7, 11]])\n", + "D = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])\n", + "E = np.array([[1, 3], [5, 7]])" ], - "execution_count": 0, + "execution_count": 71, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vjWZXqsYRqLY", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "78fa0a41-285d-4444-ba03-f4cfb63161dd" + }, + "source": [ + "np.matmul(C, D)\n", + "# Resulting matrix dimension = 2x3" + ], + "execution_count": 73, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 9, 6, 3],\n", + " [ 4, 7, 11]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 73 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ArmGSJhLRsWr", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "89265960-ddf5-4e7f-82ba-4380a0a2a4ba" + }, + "source": [ + "np.matmul(A, E)\n", + "# Resulting matrix dimension = 3x2" + ], + "execution_count": 74, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[11, 17],\n", + " [23, 37],\n", + " [35, 57]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 74 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "LDhFUdMaR17k", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "fc6dcd0b-743a-4a34-abdd-60f7df36b731" + }, + "source": [ + "np.matmul(B, A)\n", + "# Resulting matrix dimension = 1x2" + ], + "execution_count": 75, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([44, 56])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 75 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UqRdd1moTHlS", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Remember: The unused dimensions of the factor matrices determine \n", + "# the dimensions of the product matrix." + ], + "execution_count": null, "outputs": [] }, { @@ -370,13 +814,43 @@ "metadata": { "id": "Wl3ElwgLqaAn", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 85 + }, + "outputId": "340d7034-9cf6-4745-e0d1-5cd57cd6494c" }, "source": [ - "" + "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", + "\n", + "F.T\n", + "\n", + "# The numbers along the main diagonal stay the same. \n", + "# The dimensions of F: 5x4\n", + "# The dimensions of F**T: 4x5" ], - "execution_count": 0, - "outputs": [] + "execution_count": 78, + "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": 78 + } + ] }, { "cell_type": "markdown", @@ -413,13 +887,37 @@ "metadata": { "id": "ZnqvZBOYqar3", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "1d2a3020-e7aa-4fe0-f8c2-66d5ea034829" }, "source": [ - "" + "G = np.array([[13, 14],\n", + " [21, 12]])\n", + "\n", + "I = np.array([[1, 0],\n", + " [0, 1]])\n", + "\n", + "np.matmul(G, I)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 80, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[13, 14],\n", + " [21, 12]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 80 + } + ] }, { "cell_type": "markdown", @@ -454,11 +952,66 @@ "colab": {} }, "source": [ - "" + "H = np.array([[12, 11],\n", + " [7, 10]])\n", + "\n", + "J = np.array([[0, 1, 2],\n", + " [7, 10, 4],\n", + " [3, 2, 0]])" ], - "execution_count": 0, + "execution_count": 81, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "cAiX54nhXScj", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "5bcb8435-8bd7-432d-adf9-cc85d6f6be0b" + }, + "source": [ + "print(\"Determinant of H: \" + str(np.linalg.det(H)))" + ], + "execution_count": 84, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Determinant of H: 43.000000000000014\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NI0aTJsqXXy_", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "c33c8e9e-3611-4481-994b-d2687124814e" + }, + "source": [ + "print(\"Determinant of J: \" + str(np.linalg.det(J)))" + ], + "execution_count": 85, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Determinant of J: -19.999999999999996\n" + ], + "name": "stdout" + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -474,13 +1027,67 @@ "metadata": { "id": "nyX6De2-rio1", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "a3f47c72-2b06-49bb-abf1-de63d6badca9" }, "source": [ - "" + "H_inverse = np.linalg.inv(H)\n", + "\n", + "H_inverse" ], - "execution_count": 0, - "outputs": [] + "execution_count": 86, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 0.23255814, -0.25581395],\n", + " [-0.1627907 , 0.27906977]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 86 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "h4v1sWbJX8Q7", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "e313c0b1-3876-48df-b987-e3464bc1d98d" + }, + "source": [ + "J_inverse = np.linalg.inv(J)\n", + "\n", + "J_inverse" + ], + "execution_count": 87, + "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": 87 + } + ] }, { "cell_type": "markdown", @@ -494,6 +1101,69 @@ "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": "a2NknsdAYBSw", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "1f25f430-b812-433c-f6ad-35e7c054829d" + }, + "source": [ + "np.matmul(H, H_inverse).round(5)" + ], + "execution_count": 90, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[1., 0.],\n", + " [0., 1.]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 90 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z8ewW_8cYLaf", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "61e35b5f-17c5-4a43-dc55-38615dbef10c" + }, + "source": [ + "np.matmul(J, J_inverse).round(5)" + ], + "execution_count": 91, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 1., -0., 0.],\n", + " [ 0., 1., 0.],\n", + " [ 0., 0., 1.]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 91 + } + ] + }, { "cell_type": "markdown", "metadata": { From 3f632b85ec62e80b4ce427d27058e00f71690d24 Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Mon, 14 Sep 2020 17:28:07 -0400 Subject: [PATCH 4/9] Fixed final answer --- ..._131_Vectors_and_Matrices_Assignment.ipynb | 77 +++++++++++-------- 1 file changed, 45 insertions(+), 32 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 baacf7c3..76848266 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 @@ -71,7 +71,7 @@ "\n", "plt.show()" ], - "execution_count": 40, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -128,7 +128,7 @@ "\n", "plt.show()" ], - "execution_count": 41, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -171,7 +171,7 @@ "print(e)\n", "print(pi)" ], - "execution_count": 42, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -199,7 +199,7 @@ "print(green * pi)\n", "print(green * -e)" ], - "execution_count": 43, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -242,7 +242,7 @@ "plt.title(\"Scaled Vectors\")\n", "plt.show()" ], - "execution_count": 45, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -289,7 +289,7 @@ "b = np.array([[3],\n", " [4]])" ], - "execution_count": 46, + "execution_count": null, "outputs": [] }, { @@ -314,7 +314,7 @@ "\n", "plt.show()" ], - "execution_count": 53, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -356,7 +356,7 @@ "z = a-b\n", "z" ], - "execution_count": 57, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -398,7 +398,7 @@ "\n", "# Vector a-b, when added to vector b, is equal to vector a." ], - "execution_count": 61, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -449,7 +449,7 @@ "cd = c * d\n", "cd" ], - "execution_count": 60, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -504,7 +504,7 @@ "ef = e * f\n", "ef" ], - "execution_count": 63, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -568,7 +568,7 @@ "\n", "# Since the norm or magnitude of g is greater, then vector g is longer than vector h." ], - "execution_count": 69, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -648,7 +648,7 @@ "\n", "# Thus, A*C, A*E, B*A, B*D, C*A, C*D, D*A, E*C are all legal combinations" ], - "execution_count": 70, + "execution_count": null, "outputs": [] }, { @@ -675,7 +675,7 @@ "D = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])\n", "E = np.array([[1, 3], [5, 7]])" ], - "execution_count": 71, + "execution_count": null, "outputs": [] }, { @@ -693,7 +693,7 @@ "np.matmul(C, D)\n", "# Resulting matrix dimension = 2x3" ], - "execution_count": 73, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -725,7 +725,7 @@ "np.matmul(A, E)\n", "# Resulting matrix dimension = 3x2" ], - "execution_count": 74, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -758,7 +758,7 @@ "np.matmul(B, A)\n", "# Resulting matrix dimension = 1x2" ], - "execution_count": 75, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -833,7 +833,7 @@ "# The dimensions of F: 5x4\n", "# The dimensions of F**T: 4x5" ], - "execution_count": 78, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -902,7 +902,7 @@ "\n", "np.matmul(G, I)" ], - "execution_count": 80, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -959,7 +959,7 @@ " [7, 10, 4],\n", " [3, 2, 0]])" ], - "execution_count": 81, + "execution_count": null, "outputs": [] }, { @@ -976,7 +976,7 @@ "source": [ "print(\"Determinant of H: \" + str(np.linalg.det(H)))" ], - "execution_count": 84, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1001,7 +1001,7 @@ "source": [ "print(\"Determinant of J: \" + str(np.linalg.det(J)))" ], - "execution_count": 85, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -1038,7 +1038,7 @@ "\n", "H_inverse" ], - "execution_count": 86, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -1071,7 +1071,7 @@ "\n", "J_inverse" ], - "execution_count": 87, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -1115,7 +1115,7 @@ "source": [ "np.matmul(H, H_inverse).round(5)" ], - "execution_count": 90, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -1141,29 +1141,42 @@ "base_uri": "https://localhost:8080/", "height": 68 }, - "outputId": "61e35b5f-17c5-4a43-dc55-38615dbef10c" + "outputId": "ba8a672f-c9ec-4444-c36e-61d372b517d4" }, "source": [ - "np.matmul(J, J_inverse).round(5)" + "np.matmul(J_inverse, J).round(5)" ], - "execution_count": 91, + "execution_count": 92, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - "array([[ 1., -0., 0.],\n", - " [ 0., 1., 0.],\n", - " [ 0., 0., 1.]])" + "array([[ 1., 0., 0.],\n", + " [-0., 1., 0.],\n", + " [-0., -0., 1.]])" ] }, "metadata": { "tags": [] }, - "execution_count": 91 + "execution_count": 92 } ] }, + { + "cell_type": "code", + "metadata": { + "id": "xbYlPL6vgjyg", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# The resulting matrices are both identity matrices, but with different dimensions." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { From ef35b6b7a3df89adf729895d868489c72b99d6fb Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Tue, 15 Sep 2020 11:06:14 -0400 Subject: [PATCH 5/9] Fixed dot product and cross product --- ..._131_Vectors_and_Matrices_Assignment.ipynb | 154 ++++++++++-------- 1 file changed, 82 insertions(+), 72 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 76848266..3232f6c8 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 @@ -56,7 +56,7 @@ "base_uri": "https://localhost:8080/", "height": 281 }, - "outputId": "56b19f39-fa31-46b1-f52d-9e8090718f38" + "outputId": "16190374-edb6-4419-b621-6aec1270e874" }, "source": [ "import numpy as np\n", @@ -71,7 +71,7 @@ "\n", "plt.show()" ], - "execution_count": null, + "execution_count": 1, "outputs": [ { "output_type": "display_data", @@ -107,7 +107,7 @@ "base_uri": "https://localhost:8080/", "height": 248 }, - "outputId": "4b6b722d-e447-40aa-e9ea-2bb2922d96bf" + "outputId": "b70a332f-b0e0-44dc-f201-79f34dc84a5e" }, "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", @@ -128,7 +128,7 @@ "\n", "plt.show()" ], - "execution_count": null, + "execution_count": 2, "outputs": [ { "output_type": "display_data", @@ -164,14 +164,14 @@ "base_uri": "https://localhost:8080/", "height": 51 }, - "outputId": "3ab84c47-5e96-4b94-a6b1-e61b2ff5c593" + "outputId": "93e11aba-3946-4dc4-8099-98919ee3bcf7" }, "source": [ "from math import e, pi\n", "print(e)\n", "print(pi)" ], - "execution_count": null, + "execution_count": 3, "outputs": [ { "output_type": "stream", @@ -192,14 +192,14 @@ "base_uri": "https://localhost:8080/", "height": 68 }, - "outputId": "5bb8cb14-2c33-403d-9802-b91ac3dbbaa7" + "outputId": "e7e8fe55-6928-48ca-de3b-77c9b99fa087" }, "source": [ "print(green * 5)\n", "print(green * pi)\n", "print(green * -e)" ], - "execution_count": null, + "execution_count": 4, "outputs": [ { "output_type": "stream", @@ -221,7 +221,7 @@ "base_uri": "https://localhost:8080/", "height": 281 }, - "outputId": "edf108e1-bb0a-4316-a593-534d5afed8af" + "outputId": "3795ad3d-c13d-4f90-e508-b6257989f64a" }, "source": [ "green = [0.7, 0.7]\n", @@ -242,7 +242,7 @@ "plt.title(\"Scaled Vectors\")\n", "plt.show()" ], - "execution_count": null, + "execution_count": 5, "outputs": [ { "output_type": "display_data", @@ -289,7 +289,7 @@ "b = np.array([[3],\n", " [4]])" ], - "execution_count": null, + "execution_count": 6, "outputs": [] }, { @@ -301,7 +301,7 @@ "base_uri": "https://localhost:8080/", "height": 281 }, - "outputId": "e92f3ae3-7bde-4428-de8c-3e4b95c6e00d" + "outputId": "1a68e075-2e1b-45ea-ab8a-1e21ab3fe5fe" }, "source": [ "plt.arrow(0, 0, a[0][0], a[1][0], head_width=0.2, head_length=0.1, color='y')\n", @@ -314,7 +314,7 @@ "\n", "plt.show()" ], - "execution_count": null, + "execution_count": 7, "outputs": [ { "output_type": "display_data", @@ -350,13 +350,13 @@ "base_uri": "https://localhost:8080/", "height": 51 }, - "outputId": "05f60824-ab31-40d4-e6b4-b5a32f600e30" + "outputId": "91f391fa-d42e-4ae3-cd87-8d943ad0308d" }, "source": [ "z = a-b\n", "z" ], - "execution_count": null, + "execution_count": 8, "outputs": [ { "output_type": "execute_result", @@ -369,7 +369,7 @@ "metadata": { "tags": [] }, - "execution_count": 57 + "execution_count": 8 } ] }, @@ -382,7 +382,7 @@ "base_uri": "https://localhost:8080/", "height": 281 }, - "outputId": "72372c96-f73b-4326-e90c-75d1a23195ce" + "outputId": "b974738e-ff41-4d40-850d-e4ee35f46cf5" }, "source": [ "plt.arrow(0, 0, a[0][0], a[1][0], head_width=0.2, head_length=0.1, color='y')\n", @@ -398,7 +398,7 @@ "\n", "# Vector a-b, when added to vector b, is equal to vector a." ], - "execution_count": null, + "execution_count": 9, "outputs": [ { "output_type": "display_data", @@ -436,32 +436,37 @@ "metadata": { "id": "2_cZQFCskYNr", "colab_type": "code", + "colab": {} + }, + "source": [ + "c = np.array([7, 22, 4, 16])\n", + "d = np.array([12, 6, 2, 9])\n" + ], + "execution_count": 23, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "mdFCLxDiSGZt", + "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", "height": 34 }, - "outputId": "b667d3d2-9b5a-4bc2-b31c-ceffd43c43cb" + "outputId": "b9c586d4-bba2-46b2-ec81-29b18ae33b91" }, "source": [ - "c = np.array([7, 22, 4, 16])\n", - "d = np.array([12, 6, 2, 9])\n", - "\n", - "cd = c * d\n", - "cd" + "print(\"Dot product: \", np.dot(c, d))" ], - "execution_count": null, + "execution_count": 19, "outputs": [ { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([ 84, 132, 8, 144])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 60 + "output_type": "stream", + "text": [ + "Dot product: 368\n" + ], + "name": "stdout" } ] }, @@ -486,11 +491,7 @@ "metadata": { "id": "ku-TdCKAkYs8", "colab_type": "code", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 68 - }, - "outputId": "d799ab96-0fb1-4ad3-b367-7308f67c73ff" + "colab": {} }, "source": [ "e = np.array([[5],\n", @@ -499,26 +500,35 @@ "\n", "f = np.array([[3],\n", " [4],\n", - " [6]])\n", - "\n", - "ef = e * f\n", - "ef" + " [6]])\n" ], - "execution_count": null, + "execution_count": 24, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ul28VEZpSQf-", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "569521b8-9acb-4942-d254-3ecbd60213d3" + }, + "source": [ + "print(\"Cross product: \", np.cross(e, f, axis=0))" + ], + "execution_count": 22, "outputs": [ { - "output_type": "execute_result", - "data": { - "text/plain": [ - "array([[15],\n", - " [28],\n", - " [12]])" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 63 + "output_type": "stream", + "text": [ + "Cross product: [[ 34]\n", + " [-24]\n", + " [ -1]]\n" + ], + "name": "stdout" } ] }, @@ -547,7 +557,7 @@ "base_uri": "https://localhost:8080/", "height": 51 }, - "outputId": "1f7d1f0d-fe56-4649-c69a-21f2a34af7e8" + "outputId": "c715ebac-945d-40e7-aa13-510dccbfd3c9" }, "source": [ "g = np.array([[1],\n", @@ -568,7 +578,7 @@ "\n", "# Since the norm or magnitude of g is greater, then vector g is longer than vector h." ], - "execution_count": null, + "execution_count": 12, "outputs": [ { "output_type": "stream", @@ -648,7 +658,7 @@ "\n", "# Thus, A*C, A*E, B*A, B*D, C*A, C*D, D*A, E*C are all legal combinations" ], - "execution_count": null, + "execution_count": 13, "outputs": [] }, { @@ -675,7 +685,7 @@ "D = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])\n", "E = np.array([[1, 3], [5, 7]])" ], - "execution_count": null, + "execution_count": 14, "outputs": [] }, { @@ -687,13 +697,13 @@ "base_uri": "https://localhost:8080/", "height": 51 }, - "outputId": "78fa0a41-285d-4444-ba03-f4cfb63161dd" + "outputId": "4a52ebfa-9a3e-4032-af7a-cf11ae3058cd" }, "source": [ "np.matmul(C, D)\n", "# Resulting matrix dimension = 2x3" ], - "execution_count": null, + "execution_count": 15, "outputs": [ { "output_type": "execute_result", @@ -706,7 +716,7 @@ "metadata": { "tags": [] }, - "execution_count": 73 + "execution_count": 15 } ] }, @@ -719,13 +729,13 @@ "base_uri": "https://localhost:8080/", "height": 68 }, - "outputId": "89265960-ddf5-4e7f-82ba-4380a0a2a4ba" + "outputId": "916b1742-0744-44cf-c3e8-b96dfb6305ff" }, "source": [ "np.matmul(A, E)\n", "# Resulting matrix dimension = 3x2" ], - "execution_count": null, + "execution_count": 16, "outputs": [ { "output_type": "execute_result", @@ -739,7 +749,7 @@ "metadata": { "tags": [] }, - "execution_count": 74 + "execution_count": 16 } ] }, @@ -752,13 +762,13 @@ "base_uri": "https://localhost:8080/", "height": 34 }, - "outputId": "fc6dcd0b-743a-4a34-abdd-60f7df36b731" + "outputId": "83e84a7b-5e34-424a-c620-fae8e2503131" }, "source": [ "np.matmul(B, A)\n", "# Resulting matrix dimension = 1x2" ], - "execution_count": null, + "execution_count": 17, "outputs": [ { "output_type": "execute_result", @@ -770,7 +780,7 @@ "metadata": { "tags": [] }, - "execution_count": 75 + "execution_count": 17 } ] }, @@ -785,7 +795,7 @@ "# Remember: The unused dimensions of the factor matrices determine \n", "# the dimensions of the product matrix." ], - "execution_count": null, + "execution_count": 18, "outputs": [] }, { @@ -1146,7 +1156,7 @@ "source": [ "np.matmul(J_inverse, J).round(5)" ], - "execution_count": 92, + "execution_count": null, "outputs": [ { "output_type": "execute_result", From 34d219d685eef249236a8a80594c1cf725beecf4 Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Tue, 15 Sep 2020 13:46:33 -0400 Subject: [PATCH 6/9] Filled in lecture notes --- ...S_DS_132_Intermediate_Linear_Algebra.ipynb | 1109 ++++++++++++----- 1 file changed, 781 insertions(+), 328 deletions(-) diff --git a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra.ipynb b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra.ipynb index dcbb2170..3c42d575 100644 --- a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra.ipynb +++ b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra.ipynb @@ -3,9 +3,11 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_132_Intermediate_Linear_Algebra.ipynb", + "name": "Intermediate Linear Algebra (DS20).ipynb", "provenance": [], - "collapsed_sections": [] + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true }, "kernelspec": { "name": "python3", @@ -16,23 +18,70 @@ { "cell_type": "markdown", "metadata": { - "id": "5QG7znERi8TQ", + "id": "view-in-github", "colab_type": "text" }, "source": [ - "# First a little bit of statistics review:" + "\"Open" ] }, { "cell_type": "markdown", "metadata": { - "id": "1eF6horugVIl", + "id": "gnXl1s862Tai", "colab_type": "text" }, "source": [ - "# Variance\n", + "# Intermediate Linear Algebra\n", "\n", - "Variance is a measure of the spread of numbers in a dataset. Variance is the average of the squared differences from the mean. So naturally, you can't find the variance of something unless you calculate it's mean first. Lets get some data and find its variance." + "## Objectives: \n", + "\n", + "- Understand the differences in standardization between **variance and standard deviation** as well as **covariance and correlation** in preparation for learning about **variance-covariance matrices**\n", + "- Show when two vectors/matrices are **orthogonal** and explain the intuitive **implications of orthogonality**\n", + "- Rewrite any vector as a **linear combination of scalars and unit vectors**, give the definition for what makes a vector a \"unit\" vector and learn how to **turn any vector into a unit vector**.\n", + "- Calculate the **rank of a matrix** and use it to determine the **span and basis** for the vectors that the matrix is composed of\n", + "- Identify the space spanned by multiple vectors by learning to **identify linearly dependent vectors** in both their graphical and numeric representations.\n", + "- **Visualize orthogonal projections** in $R^2$ as being the \"shadow\" of a vector onto a subspace at a right angle." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dOaET7JZiMNN", + "colab_type": "text" + }, + "source": [ + "## Variance\n", + "\n", + "Variance is a measure of the spread of numbers in a dataset. Here is the formula for **population variance**:\n", + "\n", + "\\begin{align}\n", + "v = \\frac{\\sum{(X_{i} - \\overline{X})^{2}} }{N}\n", + "\\end{align}\n", + "\n", + "\n", + "\n", + "- $v$ = variance (sometimes referred as $\\sigma^{2}$)\n", + "\n", + "- $\\overline{X}$ = mean of the dataset.\n", + "\n", + "- $N$ = total number of observations.\n", + "\n", + "- $X_{i}$ = Any given data point" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fwsAxwkYoVmj", + "colab_type": "text" + }, + "source": [ + "**Sample Variance:** (Make sure to use this one!)\n", + "\n", + "\\begin{align}\n", + "s^2 = \\frac{\\sum{(X_{i} - \\overline{X})^{2}} }{N - 1}\n", + "\\end{align}" ] }, { @@ -40,11 +89,11 @@ "metadata": { "id": "syFvOD-sfbFK", "colab_type": "code", - "outputId": "a1846d06-02fc-4248-8696-b9f76c121133", "colab": { "base_uri": "https://localhost:8080/", - "height": 195 - } + "height": 204 + }, + "outputId": "10c12b45-b5b7-4e22-dcd7-066add8cfde1" }, "source": [ "import pandas as pd\n", @@ -66,7 +115,7 @@ "\n", "variance_df.head()" ], - "execution_count": 0, + "execution_count": 1, "outputs": [ { "output_type": "execute_result", @@ -98,32 +147,32 @@ " \n", " \n", " 0\n", - " 56\n", - " 11\n", + " 47\n", + " 50\n", " 0.0\n", " \n", " \n", " 1\n", - " 47\n", - " 29\n", + " 44\n", + " 50\n", " 0.0\n", " \n", " \n", " 2\n", - " 41\n", - " 8\n", + " 29\n", + " 10\n", " 0.0\n", " \n", " \n", " 3\n", - " 51\n", - " 93\n", + " 53\n", + " 81\n", " 0.0\n", " \n", " \n", " 4\n", - " 38\n", - " 31\n", + " 63\n", + " 25\n", " 0.0\n", " \n", " \n", @@ -132,11 +181,11 @@ ], "text/plain": [ " v1 v2 zeros\n", - "0 56 11 0.0\n", - "1 47 29 0.0\n", - "2 41 8 0.0\n", - "3 51 93 0.0\n", - "4 38 31 0.0" + "0 47 50 0.0\n", + "1 44 50 0.0\n", + "2 29 10 0.0\n", + "3 53 81 0.0\n", + "4 63 25 0.0" ] }, "metadata": { @@ -151,11 +200,11 @@ "metadata": { "id": "EWVbFiRZgrRI", "colab_type": "code", - "outputId": "b5d19562-86ed-4fbe-be1e-7d49cd5d4c84", "colab": { "base_uri": "https://localhost:8080/", "height": 545 - } + }, + "outputId": "80968b6d-5e90-4143-dc8e-c54ebe11103b" }, "source": [ "# Now some scatter plots\n", @@ -170,30 +219,32 @@ "plt.title(\"Plot Two\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 3, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "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\nNfn/p+JhmqpmF1IAAAAASUVORK5CYII=\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEICAYAAABMGMOEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAUkElEQVR4nO3dfbRldX3f8feHGdRRshgGR2RmGAdxip3GGsxZgMGmxAceTAw0kggxy2mqZWW1JlEbm6G44kMkYpr6tHTZRZEGbYoaozirqaWIWlsWUu5IUkQlIILM8DQ6DIUyisN8+8fZwxzvnHvv795zZu5c7/u11l337N/+7b2/58fvns/dD3dIVSFJ0kwOm+8CJEkLg4EhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBInSRfSfKG+a5DOlQZGFpUktyVZFeSR5M8kOTPkxwxy32sS1JJls7Qb0OSzUkeTvJIki8n+YXR3oE0fwwMLUavqqojgBcBPeBt4z5AkhOA64FbgOOBVcDngP+e5MXjPp50MBgYWrSqahvwBeBnJ69LcliStyW5O8mDST6e5Mhu9Ve77zu7M5VhAfAO4IaquriqdlTVI1X1IeATwHu7Y+w9U9mY5HtJvp/k4kk1bErynSQ/SPLpJCvGOATSrBgYWrSSHAe8Erh5yOp/2n39EvBc4Ajgw926X+y+L6+qI6rqhiHbvwL4yyHtnwZOS7JsoO0lwInAy4A/SvL3u/bfBc4F/jH9M5SHgI+0vDfpQDAwtBhdnWQn8L+A/wH8yZA+rwXeV1V3VtWjwEXA+TPdtxjwTOC+Ie330f+5GzxTeGdV7aqqvwX+Fnhh1/47wMVVtbWqfkT/rOW8WdQgjZUTT4vRuVX1xRn6rALuHli+m/7PyzGNx/g+cOyQ9mOBPfTPFp7Vtd0/sP4x+mczAM8BPpdkz8D6J7oatjXWIY2NZxjScPfS/8Deay2wG3gAaPknnr8I/PqQ9t+gf2/jsYZ93AOcXVXLB76e1t17kQ46A0Ma7irgzUmO7x67/RPgU1W1G9hO/yzhudNs/07gF5JckmRFkp9J8rvA64A/bKzh3wOXJHkOQJKVSc6Z6xuSRmVgSMNdQf+Jpq8C3wV+SP8mNN3ZwSXA9Ul2Jjl18sZVdTv9m9kvBO6if+/i1cCZVXV9Yw0fBDbTfxT3EeBrwCkjvCdpJPF/oCRJauEZhiSpiYEhSWpiYEiSmhgYkqQmC/IP9575zGfWunXr5rsMSVpQtmzZ8v2qWjnX7RdkYKxbt46JiYn5LkOSFpQkd8/ca2pekpIkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNRlLYCQ5K8ltSe5IsmnI+qcm+VS3/sYk6yatX5vk0SR/MI56JEnjN3JgJFkCfAQ4G9gAXJBkw6RurwceqqrnAe8H3jtp/fuAL4xaiyTpwBnHGcbJwB1VdWdVPQ58EjhnUp9zgCu7158BXpYkAEnOBb4L3DqGWiRJB8g4AmM1cM/A8taubWifqtoNPAwcneQI4A+Bd850kCQXJplIMrF9+/YxlC1Jmo35vun9DuD9VfXoTB2r6rKq6lVVb+XKlQe+MknST1g6hn1sA44bWF7TtQ3rszXJUuBI4AfAKcB5Sf4UWA7sSfLDqvrwGOqSJI3ROALjJmB9kuPpB8P5wG9O6rMZ2AjcAJwHfKmqCvhHezskeQfwqGEhSYemkQOjqnYneSNwDbAEuKKqbk3yLmCiqjYDHwM+keQOYAf9UJEkLSDp/6K/sPR6vZqYmJjvMiRpQUmypap6c91+vm96S5IWCANDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUZCyBkeSsJLcluSPJpiHrn5rkU936G5Os69pfkWRLklu67y8dRz2SpPEbOTCSLAE+ApwNbAAuSLJhUrfXAw9V1fOA9wPv7dq/D7yqql4AbAQ+MWo9kqQDYxxnGCcDd1TVnVX1OPBJ4JxJfc4BruxefwZ4WZJU1c1VdW/XfiuwLMlTx1CTJGnMxhEYq4F7Bpa3dm1D+1TVbuBh4OhJfV4NfL2qfjSGmiRJY7Z0vgsASPIP6F+mOmOaPhcCFwKsXbv2IFUmSdprHGcY24DjBpbXdG1D+yRZChwJ/KBbXgN8DnhdVX1nqoNU1WVV1auq3sqVK8dQtiRpNsYRGDcB65Mcn+QpwPnA5kl9NtO/qQ1wHvClqqoky4G/BjZV1fVjqEWSdICMHBjdPYk3AtcA3wI+XVW3JnlXkl/tun0MODrJHcBbgL2P3r4ReB7wR0n+pvt61qg1SZLGL1U13zXMWq/Xq4mJifkuQ5IWlCRbqqo31+39S29JUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1WTqOnSQ5C/ggsAS4vKounbT+qcDHgZ8HfgC8pqru6tZdBLweeAL4vaq6Zhw1aXpvu/oWrrrxHp6oYknCBaccx7vPfcF+/a6+eRv/9prbuHfnLlYtX8buJ57ggUcef3L90sPCE3uK5U8/nCp4eNePWbV8Gb/0/JV8+dvbuXfnLo5cdjgJ7Hysv+6tZ57IuSet3q8OgAAF+9U0WMfTn7KExx5/4sl+pz73KO76wS7u3blrvzoGjzW4jwB7Bt7n+mc9g2vfcvq04zS5vsHjTj7WVCaP51T1Tbdu2eGHsWv3HqoggWVLD2PXj/fst81r/8MNXP+dHfvVMF3t09UweX+nnbCCv/jnL96vvqcdfhg/2r2HPbX/f8e5jIsOHanuB2HOO0iWAH8HvALYCtwEXFBV3xzo8y+Af1hVv5PkfOCfVNVrkmwArgJOBlYBXwT+XlU9Md0xe71eTUxMjFT3Yva2q2/hP33te/u1/9apa3/iB/vqm7dx0WdvYdePp/3PMWvLDl/Ce37tBUzcvWNoHZNr6j1nxZzr2HssYMZ9TA6NqcZppmNN9UE3bDynq282tU/e5i8nvjc0LKbb7tU/v5q/2rJtaA1T7e+0E1bw6721M9Y3eW4Nmm5cDI3xSrKlqnpz3n4MgfFi4B1VdWa3fBFAVb1noM81XZ8bkiwF7gdWApsG+w72m+6YBsZoTrjovz75G/OgJQnfec8rn1w+7dIvsW3nrgNSw+rly7j/4R8OrWNyTc8+8mkj1bF6+TKApn3cdekvP/l6qnGa6VjXb3rp0HVTjed09c2m9sFt5jJeS5Kh73em/bUcb/LcGjTduEw1lpqbUQNjHJekVgP3DCxvBU6Zqk9V7U7yMHB01/61SdsO/ZUiyYXAhQBr164dQ9mL11QfgpPb7z1AYbF33y0fxU9UjVzHXLefbVjMdKyp1s1lm7nWMJ2p3u9M+2s53nRjOZdx0fxYMDe9q+qyqupVVW/lypXzXc6CtiRpal/V/XZ7IKxavmzKOgYtSUauY9XyZXPaR0t9w44123XT1TeX2uc6XlO935n213K86cZyuveuQ8s4AmMbcNzA8pqubWif7pLUkfRvfrdsqzG74JTjmtrfeuaJLDt8ydiPv+zwJbz1zBOnrGNyTaPUsfdYLftY/6xn7HfsuRxrKsNqmK6+2dQ+eZvTTlgx69ovOOW4KWuYan+nnbCiqb7pxnK6965DyzguSd0ErE9yPP0P+/OB35zUZzOwEbgBOA/4UlVVks3Af07yPvo3vdcD/3sMNWkae28+zvSU1N4bjgfqKam9+295Smqwjrk+JTW4j5anpCaP0+T6ZvuU1LDxnKq+6da1PCV17kmr5/SUVO85K4bWMGx/g09JDdY326ekWsZFh4aRb3oDJHkl8AH6j9VeUVWXJHkXMFFVm5M8DfgEcBKwAzi/qu7str0Y+GfAbuBNVfWFmY7nTW9Jmr15f0pqPhgYkjR7owbGgrnpLUmaXwaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpyUiBkWRFkmuT3N59P2qKfhu7Prcn2di1PT3JXyf5dpJbk1w6Si2SpANr1DOMTcB1VbUeuK5b/glJVgBvB04BTgbePhAsf1ZVzwdOAk5LcvaI9UiSDpBRA+Mc4Mru9ZXAuUP6nAlcW1U7quoh4FrgrKp6rKq+DFBVjwNfB9aMWI8k6QAZNTCOqar7utf3A8cM6bMauGdgeWvX9qQky4FX0T9LkSQdgpbO1CHJF4FnD1l18eBCVVWSmm0BSZYCVwEfqqo7p+l3IXAhwNq1a2d7GEnSiGYMjKp6+VTrkjyQ5Niqui/JscCDQ7ptA04fWF4DfGVg+TLg9qr6wAx1XNb1pdfrzTqYJEmjGfWS1GZgY/d6I/D5IX2uAc5IclR3s/uMro0k7waOBN40Yh2SpANs1MC4FHhFktuBl3fLJOkluRygqnYAfwzc1H29q6p2JFlD/7LWBuDrSf4myRtGrEeSdICkauFd3en1ejUxMTHfZUjSgpJkS1X15rq9f+ktSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJgaGJKmJgSFJamJgSJKaGBiSpCYGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlqYmBIkpoYGJKkJiMFRpIVSa5Ncnv3/agp+m3s+tyeZOOQ9ZuTfGOUWiRJB9aoZxibgOuqaj1wXbf8E5KsAN4OnAKcDLx9MFiS/Brw6Ih1SJIOsFED4xzgyu71lcC5Q/qcCVxbVTuq6iHgWuAsgCRHAG8B3j1iHZKkA2zUwDimqu7rXt8PHDOkz2rgnoHlrV0bwB8D/w54bKYDJbkwyUSSie3bt49QsiRpLpbO1CHJF4FnD1l18eBCVVWSaj1wkp8DTqiqNydZN1P/qroMuAyg1+s1H0eSNB4zBkZVvXyqdUkeSHJsVd2X5FjgwSHdtgGnDyyvAb4CvBjoJbmrq+NZSb5SVacjSTrkjHpJajOw96mnjcDnh/S5BjgjyVHdze4zgGuq6qNVtaqq1gEvAf7OsJCkQ9eogXEp8IoktwMv75ZJ0ktyOUBV7aB/r+Km7utdXZskaQFJ1cK7HdDr9WpiYmK+y5CkBSXJlqrqzXV7/9JbktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSEwNDktTEwJAkNTEwJElNDAxJUhMDQ5LUxMCQJDUxMCRJTQwMSVITA0OS1MTAkCQ1MTAkSU0MDElSk1TVfNcwa0keAW6b7zoOEc8Evj/fRRwiHIt9HIt9HIt9Tqyqn5nrxkvHWclBdFtV9ea7iENBkgnHos+x2Mex2Mex2CfJxCjbe0lKktTEwJAkNVmogXHZfBdwCHEs9nEs9nEs9nEs9hlpLBbkTW9J0sG3UM8wJEkHmYEhSWqyoAIjyVlJbktyR5JN813PwZTkuCRfTvLNJLcm+f2ufUWSa5Pc3n0/ar5rPViSLElyc5L/0i0fn+TGbn58KslT5rvGgyHJ8iSfSfLtJN9K8uLFOi+SvLn7+fhGkquSPG2xzIskVyR5MMk3BtqGzoP0fagbk/+T5EUtx1gwgZFkCfAR4GxgA3BBkg3zW9VBtRv4V1W1ATgV+Jfd+98EXFdV64HruuXF4veBbw0svxd4f1U9D3gIeP28VHXwfRD4b1X1fOCF9Mdk0c2LJKuB3wN6VfWzwBLgfBbPvPhz4KxJbVPNg7OB9d3XhcBHWw6wYAIDOBm4o6rurKrHgU8C58xzTQdNVd1XVV/vXj9C/0NhNf0xuLLrdiVw7vxUeHAlWQP8MnB5txzgpcBnui6LYiySHAn8IvAxgKp6vKp2skjnBf0/Rl6WZCnwdOA+Fsm8qKqvAjsmNU81D84BPl59XwOWJzl2pmMspMBYDdwzsLy1a1t0kqwDTgJuBI6pqvu6VfcDx8xTWQfbB4B/Dezplo8GdlbV7m55scyP44HtwH/sLs9dnuQZLMJ5UVXbgD8Dvkc/KB4GtrA458VeU82DOX2eLqTAEJDkCOCvgDdV1f8dXFf9Z6R/6p+TTvIrwINVtWW+azkELAVeBHy0qk4C/h+TLj8tonlxFP3fnI8HVgHPYP9LNIvWOObBQgqMbcBxA8trurZFI8nh9MPiL6rqs13zA3tPJbvvD85XfQfRacCvJrmL/qXJl9K/jr+8uxQBi2d+bAW2VtWN3fJn6AfIYpwXLwe+W1Xbq+rHwGfpz5XFOC/2mmoezOnzdCEFxk3A+u6Jh6fQv5m1eZ5rOmi6a/QfA75VVe8bWLUZ2Ni93gh8/mDXdrBV1UVVtaaq1tGfB1+qqtcCXwbO67otlrG4H7gnyYld08uAb7II5wX9S1GnJnl69/OydywW3bwYMNU82Ay8rnta6lTg4YFLV1NaUH/pneSV9K9dLwGuqKpL5rmkgybJS4D/CdzCvuv2/4b+fYxPA2uBu4HfqKrJN75+aiU5HfiDqvqVJM+lf8axArgZ+K2q+tF81ncwJPk5+jf/nwLcCfw2/V8GF928SPJO4DX0nyq8GXgD/WvzP/XzIslVwOn0/zn3B4C3A1czZB50gfph+pfsHgN+u6pm/JdsF1RgSJLmz0K6JCVJmkcGhiSpiYEhSWpiYEiSmhgYkqQmBoYkqYmBIUlq8v8BaE4Ygr5hi4YAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } }, { "output_type": "display_data", "data": { - "image/png": "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\n2aSQAAAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -201,25 +252,11 @@ { "cell_type": "markdown", "metadata": { - "id": "4zka9GhTguP5", + "id": "D4g4zeuMlPxy", "colab_type": "text" }, "source": [ - "Now I know this isn't complicated, but each of the above plots has the same number of points, but we can tell visually that \"Plot Two\" has the greater variance because its points are more spread out. What if we didn't trust our eyes though? Lets calculate the variance of each of these variables to prove it to ourselves\n", - "\n", - "$\\overline{X}$ is the symbol for the mean of the dataset.\n", - "\n", - "$N$ is the total number of observations.\n", - "\n", - "$v$ or variance is sometimes denoted by a lowercase v. But you'll also see it referred to as $\\sigma^{2}$.\n", - "\n", - "\\begin{align}\n", - "v = \\frac{\\sum{(X_{i} - \\overline{X})^{2}} }{N}\n", - "\\end{align}\n", - "\n", - "How do we calculate a simple average? We add up all of the values and then divide by the total number of values. this is why there is a sum in the numerator and N in the denomenator. \n", - "\n", - "However in this calculation, we're not just summing the values like we would if we were calculateing the mean, we are summing the squared difference between each point and the mean. (The squared distance between each point in the mean.)" + "In this calculation, we're not just summing the values like we would if we were calculating the mean, we are summing the **squared difference** between each point and the mean (the squared distance):" ] }, { @@ -227,11 +264,11 @@ "metadata": { "id": "XqNzgMPXgrga", "colab_type": "code", - "outputId": "0c07d30b-46e7-4b5b-d6a6-e80ab017141f", "colab": { "base_uri": "https://localhost:8080/", - "height": 229 - } + "height": 238 + }, + "outputId": "2f25a4f8-8109-4656-f320-c7e10a3b017c" }, "source": [ "# Since we generated these random values in a range centered around 50, that's \n", @@ -245,18 +282,18 @@ "\n", "# Find the distance between each point and its corresponding mean\n", "\n", - "variance_df['v1_distance'] = variance_df.v1-v1_mean\n", - "variance_df['v2_distance'] = variance_df.v2-v2_mean\n", + "variance_df['v1_distance'] = variance_df.v1 - v1_mean\n", + "variance_df['v2_distance'] = variance_df.v2 - v2_mean\n", "\n", "variance_df.head()" ], - "execution_count": 0, + "execution_count": 4, "outputs": [ { "output_type": "stream", "text": [ - "v1 mean: 49.08\n", - "v2 mean: 51.66\n" + "v1 mean: 47.52\n", + "v2 mean: 48.96\n" ], "name": "stdout" }, @@ -292,43 +329,43 @@ " \n", " \n", " 0\n", - " 56\n", - " 11\n", + " 47\n", + " 50\n", " 0.0\n", - " 6.92\n", - " -40.66\n", + " -0.52\n", + " 1.04\n", " \n", " \n", " 1\n", - " 47\n", - " 29\n", + " 44\n", + " 50\n", " 0.0\n", - " -2.08\n", - " -22.66\n", + " -3.52\n", + " 1.04\n", " \n", " \n", " 2\n", - " 41\n", - " 8\n", + " 29\n", + " 10\n", " 0.0\n", - " -8.08\n", - " -43.66\n", + " -18.52\n", + " -38.96\n", " \n", " \n", " 3\n", - " 51\n", - " 93\n", + " 53\n", + " 81\n", " 0.0\n", - " 1.92\n", - " 41.34\n", + " 5.48\n", + " 32.04\n", " \n", " \n", " 4\n", - " 38\n", - " 31\n", + " 63\n", + " 25\n", " 0.0\n", - " -11.08\n", - " -20.66\n", + " 15.48\n", + " -23.96\n", " \n", " \n", "\n", @@ -336,17 +373,17 @@ ], "text/plain": [ " v1 v2 zeros v1_distance v2_distance\n", - "0 56 11 0.0 6.92 -40.66\n", - "1 47 29 0.0 -2.08 -22.66\n", - "2 41 8 0.0 -8.08 -43.66\n", - "3 51 93 0.0 1.92 41.34\n", - "4 38 31 0.0 -11.08 -20.66" + "0 47 50 0.0 -0.52 1.04\n", + "1 44 50 0.0 -3.52 1.04\n", + "2 29 10 0.0 -18.52 -38.96\n", + "3 53 81 0.0 5.48 32.04\n", + "4 63 25 0.0 15.48 -23.96" ] }, "metadata": { "tags": [] }, - "execution_count": 3 + "execution_count": 4 } ] }, @@ -355,11 +392,11 @@ "metadata": { "id": "NEWaTv0mg3--", "colab_type": "code", - "outputId": "9850da36-dc19-4095-c7dd-9d638c4490ea", "colab": { "base_uri": "https://localhost:8080/", - "height": 195 - } + "height": 204 + }, + "outputId": "a326b0e4-7f29-45a1-fb32-ac9473ef90ee" }, "source": [ "# Now we'll square the distances from the means\n", @@ -370,7 +407,7 @@ "\n", "variance_df.head()" ], - "execution_count": 0, + "execution_count": 5, "outputs": [ { "output_type": "execute_result", @@ -406,53 +443,53 @@ " \n", " \n", " 0\n", - " 56\n", - " 11\n", + " 47\n", + " 50\n", " 0.0\n", - " 6.92\n", - " -40.66\n", - " 47.8864\n", - " 1653.2356\n", + " -0.52\n", + " 1.04\n", + " 0.2704\n", + " 1.0816\n", " \n", " \n", " 1\n", - " 47\n", - " 29\n", + " 44\n", + " 50\n", " 0.0\n", - " -2.08\n", - " -22.66\n", - " 4.3264\n", - " 513.4756\n", + " -3.52\n", + " 1.04\n", + " 12.3904\n", + " 1.0816\n", " \n", " \n", " 2\n", - " 41\n", - " 8\n", + " 29\n", + " 10\n", " 0.0\n", - " -8.08\n", - " -43.66\n", - " 65.2864\n", - " 1906.1956\n", + " -18.52\n", + " -38.96\n", + " 342.9904\n", + " 1517.8816\n", " \n", " \n", " 3\n", - " 51\n", - " 93\n", + " 53\n", + " 81\n", " 0.0\n", - " 1.92\n", - " 41.34\n", - " 3.6864\n", - " 1708.9956\n", + " 5.48\n", + " 32.04\n", + " 30.0304\n", + " 1026.5616\n", " \n", " \n", " 4\n", - " 38\n", - " 31\n", + " 63\n", + " 25\n", " 0.0\n", - " -11.08\n", - " -20.66\n", - " 122.7664\n", - " 426.8356\n", + " 15.48\n", + " -23.96\n", + " 239.6304\n", + " 574.0816\n", " \n", " \n", "\n", @@ -460,11 +497,11 @@ ], "text/plain": [ " v1 v2 zeros ... v2_distance v1_squared_distance v2_squared_distance\n", - "0 56 11 0.0 ... -40.66 47.8864 1653.2356\n", - "1 47 29 0.0 ... -22.66 4.3264 513.4756\n", - "2 41 8 0.0 ... -43.66 65.2864 1906.1956\n", - "3 51 93 0.0 ... 41.34 3.6864 1708.9956\n", - "4 38 31 0.0 ... -20.66 122.7664 426.8356\n", + "0 47 50 0.0 ... 1.04 0.2704 1.0816\n", + "1 44 50 0.0 ... 1.04 12.3904 1.0816\n", + "2 29 10 0.0 ... -38.96 342.9904 1517.8816\n", + "3 53 81 0.0 ... 32.04 30.0304 1026.5616\n", + "4 63 25 0.0 ... -23.96 239.6304 574.0816\n", "\n", "[5 rows x 7 columns]" ] @@ -472,7 +509,7 @@ "metadata": { "tags": [] }, - "execution_count": 4 + "execution_count": 5 } ] }, @@ -481,11 +518,11 @@ "metadata": { "id": "0OvbytzqhALh", "colab_type": "code", - "outputId": "c78c8f06-f5c5-4baf-fa42-bddb2fa9e161", "colab": { "base_uri": "https://localhost:8080/", - "height": 67 - } + "height": 68 + }, + "outputId": "250d6f5f-17dd-4eed-a9b2-008edb5415e3" }, "source": [ "# Now we'll sum the squared distances and divide by the number of observations.\n", @@ -498,14 +535,14 @@ "print(\"Variance One: \", Variance_One)\n", "print(\"Variance Two: \", Variance_Two)" ], - "execution_count": 0, + "execution_count": 6, "outputs": [ { "output_type": "stream", "text": [ "Number of Observations: 50\n", - "Variance One: 176.31360000000004\n", - "Variance Two: 1032.2644\n" + "Variance One: 202.68959999999998\n", + "Variance Two: 930.0384000000001\n" ], "name": "stdout" } @@ -530,23 +567,23 @@ "metadata": { "id": "JlyP6RX5hB-s", "colab_type": "code", - "outputId": "80a9d16c-4a83-4ec4-afb0-a5b530077fc5", "colab": { "base_uri": "https://localhost:8080/", "height": 34 - } + }, + "outputId": "6fc48946-2770-4272-8c9e-842c4978c450" }, "source": [ "print(\"How many times bigger is Variance_One than Variance_Two? \", Variance_Two/Variance_One)\n", "\n", - "# About 3.86 times bigger! Why is that? " + "# About 3.9 times bigger! Why is that? " ], - "execution_count": 0, + "execution_count": 7, "outputs": [ { "output_type": "stream", "text": [ - "How many times bigger is Variance_One than Variance_Two? 5.854706613670187\n" + "How many times bigger is Variance_One than Variance_Two? 4.588486039737609\n" ], "name": "stdout" } @@ -559,7 +596,7 @@ "colab_type": "text" }, "source": [ - "## A note about my code quality\n", + "## A note about code quality\n", "\n", "Why did I go to the trouble of calculating all of that by hand, and add a bunch of extra useless rows to my dataframe? That is some bad code! \n", "\n", @@ -571,23 +608,23 @@ "metadata": { "id": "1qO_uRm4hDWG", "colab_type": "code", - "outputId": "587b26b9-aab1-4a63-c1af-4ea7e6cf4187", "colab": { "base_uri": "https://localhost:8080/", - "height": 50 - } + "height": 51 + }, + "outputId": "6e4f2053-def0-42c1-d4c8-970ef9b78c31" }, "source": [ "print(variance_df.v1.var(ddof=1))\n", "print(variance_df.v2.var(ddof=1))" ], - "execution_count": 0, + "execution_count": 8, "outputs": [ { "output_type": "stream", "text": [ - "179.91183673469385\n", - "1053.3310204081633\n" + "206.82612244897965\n", + "949.018775510204\n" ], "name": "stdout" } @@ -620,23 +657,23 @@ "metadata": { "id": "kjV56K7lhO7v", "colab_type": "code", - "outputId": "12254159-09ec-4fce-c7ba-293e7787ec25", "colab": { "base_uri": "https://localhost:8080/", - "height": 50 - } + "height": 51 + }, + "outputId": "92774e6a-8b1b-4936-e127-6c96859e100d" }, "source": [ "print(variance_df.v1.var(ddof=0))\n", "print(variance_df.v2.var(ddof=0))" ], - "execution_count": 0, + "execution_count": 10, "outputs": [ { "output_type": "stream", "text": [ - "176.31359999999998\n", - "1032.2644\n" + "202.68960000000007\n", + "930.0383999999999\n" ], "name": "stdout" } @@ -645,15 +682,15 @@ { "cell_type": "markdown", "metadata": { - "id": "5kHEYk3Ziaad", + "id": "xsVgcu06icXo", "colab_type": "text" }, "source": [ - "# Standard Deviation\n", + "## Standard Deviation\n", "\n", - "If you understand how variance is calculated, then standard deviation is a cinch. The standard deviation is the square root $\\sqrt()$ of the variance.\n", + "The standard deviation is the square root $\\sqrt()$ of the variance.\n", "\n", - "## So why would we use one over the other?\n", + "### So why would we use one over the other?\n", "\n", "Remember how we squared all of the distances from the mean before we added them all up? Well then taking the square root of the variance will put our measures back in the same units as the mean. So the Standard Deviation is a measure of spread of the data that is expressed in the same units as the mean of the data. Variance is the average squared distance from the mean, and the Standard Deviation is the average distance from the mean. You'll remember that when we did hypothesis testing and explored the normal distribution we talked in terms of standard deviations, and not in terms of variance for this reason." ] @@ -663,23 +700,27 @@ "metadata": { "id": "7hSnkDQJiyev", "colab_type": "code", - "outputId": "e0e2d8be-5448-442c-8ef4-b39cf63c0c80", "colab": { "base_uri": "https://localhost:8080/", - "height": 50 - } + "height": 51 + }, + "outputId": "0277f4e9-52b6-4bdf-ff51-ad6ed79024c9" }, "source": [ "print(variance_df.v1.std(ddof=0))\n", - "print(variance_df.v2.std(ddof=0))" + "print(variance_df.v2.std(ddof=0))\n", + "\n", + "# When comparing the spread of the data, we prefer standard deviation vs \n", + "# variance because it is the \n", + "# same units as the mean of the data." ], - "execution_count": 0, + "execution_count": 11, "outputs": [ { "output_type": "stream", "text": [ - "13.27831314587813\n", - "32.128871751121295\n" + "14.236909777054853\n", + "30.496530950257274\n" ], "name": "stdout" } @@ -688,59 +729,62 @@ { "cell_type": "markdown", "metadata": { - "id": "VOFz37RxhX4N", + "id": "uSzeNw6jifsr", "colab_type": "text" }, "source": [ - "# Covariance\n", + "## Covariance\n", + "\n", + "Covariance is a measure of how changes in one variable are associated with changes in a second variable. It's a measure of how they Co (together) Vary (move) or how they move in relation to each other.\n", + "\n", + "![Covariance Equation](https://cdn1.byjus.com/wp-content/uploads/2019/02/Covariance-Formula.png)\n", "\n", - "Covariance is a measure of how changes in one variable are associated with changes in a second variable. It's a measure of how they Co (together) Vary (move) or how they move in relation to each other. For this topic we're not really going to dive into the formula, I just want you to be able to understand the topic intuitively. Since this measure is about two variables, graphs that will help us visualize things in two dimensions will help us demonstrate this idea. (scatterplots)\n", "\n", "![Covariance](https://www.statisticshowto.datasciencecentral.com/wp-content/uploads/2013/12/g-covariance.gif)\n", "\n", - "Lets look at the first scatterplot. the y variable has high values where the x variable has low values. This is a negative covariance because as one variable increases (moves), the other decreases (moves in the opposite direction).\n", "\n", - "In the second scatterplot we see no relation between high and low values of either variable, therefore this cloud of points has a near 0 covariance\n", + "### Interpreting Covariance\n", + "\n", + "A large positive or negative covariance indicates a strong relationship between two variables. \n", "\n", - "In the third graph, we see that the y variable takes on low values in the same range where the x value takes on low values, and simiarly with high values. Because the areas of their high and low values match, we would expect this cloud of points to have a positive covariance.\n", + "![move opposite](https://www.prosoundweb.com/images/uploads/PhasePolarFigure3.jpg)\n", "\n", - "![move opposite](https://activistshub.com/wp-content/uploads/2015/04/I15-43-cosinewave.jpg)\n", + "![spurious-correlation](https://raw.githubusercontent.com/ryanallredblog/ryanallredblog.github.io/master/img/spurious-correlations.png)\n", "\n", - " ![spurious-correlation](https://raw.githubusercontent.com/ryanallredblog/ryanallredblog.github.io/master/img/spurious-correlations.png)\n", + "[More spurious correlations](https://tylervigen.com)\n", "\n", - "Check out how popular this site is: \n", "\n", - "\n", + "- A large positive or negative covariance indicates a strong relationship between two variables. However, you can't necessarily compare covariances between sets of variables that have a different scale\n", "\n", - "" + "- Since covariance values are unbounded, they could take on arbitrarily high or low values. This means that you can't compare the covariances between variables that have a different scale.\n", + "\n", + "**Let's demonstrate this:**" ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "d0ztiA_iheG1", - "colab_type": "text" + "id": "xWO5Y6cbltOi", + "colab_type": "code", + "colab": {} }, "source": [ - "## Interpeting Covariance\n", - "\n", - "A large positive or negative covariance indicates a strong relationship between two variables. However, you can't necessarily compare covariances between sets of variables that have a different scale, since the covariance of variables that take on high values will always be higher than since covariance values are unbounded, they could take on arbitrarily high or low values. This means that you can't compare the covariances between variables that have a different scale. Two variablespositive covariance variable that has a large scale will always have a higher covariance than a variable with an equally strong relationship, yet smaller scale. This means that we need a way to regularlize\n", - "\n", - "One of the challenges with covariance is that its value is unbounded and variables that take on larger values will have a larger covariance irrespective of \n", - "\n", - "Let me show you what I mean:" - ] + "# In the sine wave graph, there is negative covariance.\n", + "# In the Nicholas Cage graph, there is positive covariance." + ], + "execution_count": null, + "outputs": [] }, { "cell_type": "code", "metadata": { "id": "6qa-a_AzhT7R", "colab_type": "code", - "outputId": "8d34be34-6c95-4afe-bead-deb2bcefdcde", "colab": { "base_uri": "https://localhost:8080/", - "height": 685 - } + "height": 521 + }, + "outputId": "f5cd2abd-5649-46d1-8cb8-916563b72877" }, "source": [ "a = [1,2,3,4,5,6,7,8,9]\n", @@ -762,30 +806,32 @@ "plt.ylim(0,100)\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 12, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "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\nOAAnqVM62oO9Mrx1XHNu++bF6e0/lDPHnmE7HICT0ikX7aFeGd4yuikto5vqvDoAGLpTJtquDAfg\nVHfKRNuV4QCc6oqPtivDARgpio22K8MBGGmKjbYrwwEYaYqKtivDARjJioi2K8MBoJBouzIcAE7y\naLsyHAA+cFJG25XhAPCvTspouzIcAP7VSRXtT7od7spwAEaSkyLan2Q73JXhAIxUJ0W0B7sd7spw\nAEaymkf7xz/+cbZu3ZqGhoYsX748F1544TFf33/w8KC3w10ZDsBIVtNo/+lPf8pf//rXdHR05PXX\nX8/y5cvT0dFxzN/Z815/3j3GlrjtcAD4u5pGu6urK1dccUWS5Pzzz8+ePXvy3nvvZezYj/52fObY\nMzJx3BlHPZdtOxwAPnBaLQ+2c+fOTJgwYeDniRMnpqfn2FvfZ5w+KjM+Uznqc/+zHS7YAFDnC9Gq\n1erHvqZSacl/LZyR0Z9qyvOvvJWdu3vz6fGfyv/9P/8r//H/PptRo2r6uWJEqlRahnsJI4I5158Z\n158Zn9xqGu22trbs3Llz4Od33nknlcrRv0X/o1GjTst/Lpia/1wwtZbLAYBTSk2/xn7uc5/Lhg0b\nkiR//vOf09bWdszz2QDA4NX0m/ZFF12Uz372s/n617+ehoaG/OhHP6rl4QFgRGuoDubEMwAw7Fzl\nBQCFEG0AKMSw3Xv8k97ulMFZtWpVXnzxxRw6dCjXX399pk6dmiVLluTw4cOpVCq5++6709Tkf0U7\nXn19ffnCF76QG2+8MTNnzjTjOli/fn3WrFmTxsbG3HzzzZkyZYo519D+/fuzdOnS7NmzJwcPHszi\nxYtTqVRy++23J0mmTJmSO+64Y3gXWbDXXnstN954Y775zW9m0aJFeeutt476/l2/fn2eeOKJnHba\naVm4cGGuueaaYx+4Ogw2b95c/c53vlOtVqvVbdu2VRcuXDgcyzjldHV1Vb/97W9Xq9Vq9d13361e\ndtll1WXLllWfeeaZarVarf70pz+t/vKXvxzOJZ4y7rnnnupXvvKV6lNPPWXGdfDuu+9W58+fX923\nb1+1u7u7umLFCnOusSeffLK6evXqarVarb799tvVq666qrpo0aLq1q1bq9Vqtfr973+/umnTpuFc\nYrH2799fXbRoUXXFihXVJ598slqtVo/6/t2/f391/vz51b1791Z7e3urV199dXXXrl3HPPawbI9/\n1O1OOT6XXHJJ7rvvviTJuHHj0tvbm82bN2fevHlJkrlz56arq2s4l3hKeP3117Nt27ZcfvnlSWLG\nddDV1ZWZM2dm7NixaWtry5133mnONTZhwoTs3r07SbJ3796MHz8+27dvH9j1NOOha2pqyqOPPpq2\ntraBx472/t26dWumTp2alpaWNDc356KLLsqWLVuOeexhifZQbnfKxxs1alRGjx6dJOns7Myll16a\n3t7egS3E1tZWc66BlStXZtmyZQM/m3Htvfnmm+nr68sNN9yQ9vb2dHV1mXONXX311dmxY0euvPLK\nLFq0KEuWLMm4ceMGnjfjoWtsbExzc/OHHjva+3fnzp2ZOHHiwGsG08KT4v/TrvpXZzX17LPPprOz\nM48//njmz58/8Lg5H79169Zl+vTpOeecc476vBnXzu7du/Pggw9mx44due666z40W3M+fk8//XQm\nTZqUxx57LK+++moWL16clpYPbmFqxvXzUbMdzMyHJdpDvd0pH++5557Lww8/nDVr1qSlpSWjR49O\nX19fmpub093d/aHtGj65TZs25Y033simTZvy9ttvp6mpyYzroLW1NTNmzEhjY2POPffcjBkzJqNG\njTLnGtqyZUtmz56dJLngggvS39+fQ4cODTxvxrV1tL8njtbC6dOnH/M4w7I97nan9bFv376sWrUq\njzzySMaPH58kmTVr1sCsN27cmDlz5gznEot377335qmnnsqvf/3rXHPNNbnxxhvNuA5mz56d559/\nPkeOHMmuXbty4MABc66xyZMnZ+vWrUmS7du3Z8yYMTn//PPzwgsvJDHjWjva+3fatGl5+eWXs3fv\n3uzfvz9btmzJxRdffMzjDNsd0VavXp0XXnhh4HanF1xwwXAs45TS0dGRBx54IOedd97AY3fddVdW\nrFiR/v7+TJo0KT/5yU9y+umnD+MqTx0PPPBAzj777MyePTtLly414xr71a9+lc7OziTJd7/73Uyd\nOtWca2j//v1Zvnx5/va3v+XQoUO55ZZbUqlUctttt+XIkSOZNm1afvCDHwz3Mov0yiuvZOXKldm+\nfXsaGxtz1llnZfXq1Vm2bNm/vH9///vf57HHHktDQ0MWLVqUL37xi8c8ttuYAkAh3BENAAoh2gBQ\nCNEGgEKINgAUQrQBoBCiDQCFEG0AKIRoA0Ah/j/7hJ9+gQdkeQAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } }, { "output_type": "display_data", "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD8CAYAAAB+UHOxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAREElEQVR4nO3db2xdd33H8fd3rmG3RcJtiaLG6dROVK4qIpbOYp1ACLVILn9ErQh1RQwi1ilP2PgjZFZvDxDSpAwZAUWaKkUtECZEYZ3lVmjCYqGI7QHdHIxwafAopaW5SRsj6oLYFU3Cdw/useOYuI3vsX3r+3u/JMv3/M45935z9PP55PzOuedEZiJJKs8fdLsASVJ3GACSVCgDQJIKZQBIUqEMAEkqlAEgSYV6yQCIiC9ExKmIeHRF2xUR8a2I+En1+/KqPSLi8xHxeET8MCJu3MziJUmdu5gjgC8Bt65quws4kpnXAUeqaYC3AddVPweAezamTEnSRnvJAMjM7wK/XNV8G3C4en0YGF3R/uVs+x4wEBFXbVSxkqSNc0mH6+3MzJPV62eAndXrQeDpFcsdr9pOskpEHKB9lMBll132p9dff32HpUhSmY4ePfqLzNzR6fqdBsCyzMyIWPf9JDLzEHAIYHh4OGdmZuqWIklFiYin6qzf6VVAzy4N7VS/T1XtTeDqFcvtrtokSS8znQbAQ8D+6vV+4MEV7e+vrga6CXh+xVCRJOll5CWHgCLiq8BbgNdExHHgE8A/AV+PiDuBp4Dbq8X/HXg78Djwf8AHNqFmSdIGeMkAyMz3rDHrlgssm8AH6xYlSdp8fhNYkgplAEhSoQwASSqUASBJhTIAJKlQBoAkFcoAkKRCGQCSVCgDQJIKZQBIUqEMAEkqlAEgSYUyACSpULWfCCZJpZiabTIxPc+JxRa7BhqMjQwxunew22V1zACQpIswNdtkfHKO1umzADQXW4xPzgFs2xBwCEiSLsLE9Pzyzn9J6/RZJqbnu1RRfQaAJF2EE4utdbVvBwaAJF2EXQONdbVvBwaAJF2EsZEhGv1957U1+vsYGxnqUkX1eRJYki7C0olerwKSpAKN7h3c1jv81RwCkqRCGQCSVCgDQJIKZQBIUqEMAEkqlAEgSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFqnU76Ij4KPDXQAJzwAeAq4D7gSuBo8D7MvOFmnVKKtzUbLOn7sX/ctDxEUBEDAIfAoYz83VAH3AH8Cngs5n5WuA54M6NKFRSuaZmm4xPztFcbJFAc7HF+OQcU7PNbpe2rdUdAroEaETEJcClwEngZuCBav5hYLTmZ0gq3MT0PK3TZ89ra50+y8T0fJcq6g0dB0BmNoFPAz+nveN/nvaQz2JmnqkWOw5c8BgtIg5ExExEzCwsLHRahqQCnFhsratdF6fOENDlwG3AtcAu4DLg1otdPzMPZeZwZg7v2LGj0zIkFWDXQGNd7bo4dYaA3gr8LDMXMvM0MAm8ERiohoQAdgMO0kmqZWxkiEZ/33ltjf4+xkaGulRRb6gTAD8HboqISyMigFuAx4CHgXdXy+wHHqxXoqTSje4d5OC+PQwONAhgcKDBwX17vAqopsjMzleO+CTwF8AZYJb2JaGDtC8DvaJq+8vM/O2Lvc/w8HDOzMx0XIcklSgijmbmcKfr1/oeQGZ+AvjEquYngDfUeV9J0ubzm8CSVCgDQJIKZQBIUqEMAEkqlAEgSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFqnU3UEm9b2q2ycT0PCcWW+waaDA2MuR9+HuEASBpTVOzTcYn55YfyN5cbDE+OQdgCPQAh4AkrWlien5557+kdfosE9PzXapIG8kAkLSmE4utdbVrezEAJK1p10BjXe3aXgwASWsaGxmi0d93Xlujv4+xkaEuVaSN5ElgSWtaOtHrVUC9yQCQ9KJG9w66w+9RDgFJUqEMAEkqlAEgSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFMgAkqVAGgCQVqtbdQCNiALgXeB2QwF8B88DXgGuAJ4HbM/O5WlVKhfKB7NpMdY8A7ga+mZnXA68HjgF3AUcy8zrgSDUtaZ2WHsjeXGyRnHsg+9Rss9ulqUd0HAAR8WrgzcB9AJn5QmYuArcBh6vFDgOjdYuUSuQD2bXZ6hwBXAssAF+MiNmIuDciLgN2ZubJaplngJ0XWjkiDkTETETMLCws1ChD6k0+kF2brU4AXALcCNyTmXuB37BquCczk/a5gd+TmYcyczgzh3fs2FGjDKk3+UB2bbY6AXAcOJ6Zj1TTD9AOhGcj4iqA6vepeiVKZfKB7NpsHQdAZj4DPB0RS73xFuAx4CFgf9W2H3iwVoVSoUb3DnJw3x4GBxoEMDjQ4OC+PV4FpA1T96Hwfwt8JSJeATwBfIB2qHw9Iu4EngJur/kZUrF8ILs2U60AyMwfAMMXmHVLnfeVJG0+vwksSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFMgAkqVAGgCQVygCQpEIZAJJUqLq3g5Z60tRsk4npeU4sttg10GBsZMjbMqvnGADSKlOzTcYn55YfyN5cbDE+OQdgCKinOAQkrTIxPb+881/SOn2Wien5LlUkbQ4DQFrlxGJrXe3SdmUASKvsGmisq13argwAaZWxkSEa/X3ntTX6+xgbGepSRdLm8CSwtMrSiV6vAlKvMwCkCxjdO+gOXz3PISBJKpQBIEmFMgAkqVAGgCQVygCQpEIZAJJUKANAkgplAEhSoQwASSqUASBJhTIAJKlQBoAkFcoAkKRCGQCSVKjat4OOiD5gBmhm5jsj4lrgfuBK4Cjwvsx8oe7nqBxTs03vxS9tgY04AvgwcGzF9KeAz2bma4HngDs34DNUiKnZJuOTczQXWyTQXGwxPjnH1Gyz26VJPadWAETEbuAdwL3VdAA3Aw9UixwGRut8hsoyMT1P6/TZ89pap88yMT3fpYqk3lX3COBzwMeB31XTVwKLmXmmmj4OXPDYPSIORMRMRMwsLCzULEO94sRia13tkjrXcQBExDuBU5l5tJP1M/NQZg5n5vCOHTs6LUM9ZtdAY13tkjpX5wjgjcC7IuJJ2id9bwbuBgYiYunk8m7AwVtdtLGRIRr9fee1Nfr7GBsZ6lJFUu/qOAAyczwzd2fmNcAdwLcz873Aw8C7q8X2Aw/WrlLFGN07yMF9exgcaBDA4ECDg/v2eBWQtAlqXwZ6AX8H3B8R/wjMAvdtwmeoh43uHXSHL22BDQmAzPwO8J3q9RPAGzbifSVJm8dvAktSoQwASSqUASBJhTIAJKlQBoAkFcoAkKRCGQCSVCgDQJIKZQBIUqEMAEkqlAEgSYUyACSpUAaAJBVqM24HrW1sarbJxPQ8JxZb7BpoMDYy5K2ZpR5lAGjZ1GyT8cm55YeyNxdbjE/OARgCUg9yCEjLJqbnl3f+S1qnzzIxPd+liiRtJgNAy04sttbVLml7MwC0bNdAY13tkrY3A0DLxkaGaPT3ndfW6O9jbGSoSxVJ2kyeBNaypRO9XgUklcEA0HlG9w66w5cK4RCQJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFMgAkqVAGgCQVygCQpEIZAJJUKANAkgplAEhSoTq+G2hEXA18GdgJJHAoM++OiCuArwHXAE8Ct2fmc/VL7W0+jF3SVqtzBHAG+Fhm3gDcBHwwIm4A7gKOZOZ1wJFqWi9i6WHszcUWybmHsU/NNrtdmqQe1nEAZObJzPx+9frXwDFgELgNOFwtdhgYrVtkr/Nh7JK6YUPOAUTENcBe4BFgZ2aerGY9Q3uI6ELrHIiImYiYWVhY2Igyti0fxi6pG2oHQES8Cvg34COZ+auV8zIzaZ8f+D2ZeSgzhzNzeMeOHXXL2NZ8GLukbqgVABHRT3vn/5XMnKyan42Iq6r5VwGn6pXY+3wYu6Ru6DgAIiKA+4BjmfmZFbMeAvZXr/cDD3ZeXhlG9w5ycN8eBgcaBDA40ODgvj1eBSRpU0V7lKaDFSPeBPwnMAf8rmr+e9rnAb4O/BHwFO3LQH/5Yu81PDycMzMzHdUhSaWKiKOZOdzp+h1/DyAz/wuINWbf0un7SpK2ht8ElqRCGQCSVCgDQJIKZQBIUqEMAEkqlAEgSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKlTHdwPtJVOzTSam5zmx2GLXQIOxkSHvxS+p5xUfAFOzTcYn55Yfyt5cbDE+OQdgCEjqacUPAU1Mzy/v/Je0Tp9lYnq+SxVJ0tYoPgBOLLbW1S5JvaL4ANg10FhXuyT1iuIDYGxkiEZ/33ltjf4+xkaGulSRJG2N4k8CL53o9SogSaUpPgCgHQLu8CWVpvghIEkqlQEgSYUyACSpUAaAJBXKAJCkQhkAklQoA0CSCmUASFKhDABJKpQBIEmFMgAkqVAGgCQVygCQpEIZAJJUqE0JgIi4NSLmI+LxiLhrMz5DklTPhgdARPQB/wy8DbgBeE9E3LDRnyNJqmczjgDeADyemU9k5gvA/cBtm/A5kqQaNuOJYIPA0yumjwN/tnqhiDgAHKgmfxsRj25CLdvRa4BfdLuIlwm3xTlui3PcFufUenh51x4JmZmHgEMAETGTmcPdquXlxG1xjtviHLfFOW6LcyJips76mzEE1ASuXjG9u2qTJL2MbEYA/A9wXURcGxGvAO4AHtqEz5Ek1bDhQ0CZeSYi/gaYBvqAL2Tmj15itUMbXcc25rY4x21xjtviHLfFObW2RWTmRhUiSdpG/CawJBXKAJCkQnU9AEq9bUREXB0RD0fEYxHxo4j4cNV+RUR8KyJ+Uv2+vNu1bpWI6IuI2Yj4RjV9bUQ8UvWNr1UXFfS8iBiIiAci4scRcSwi/rzUfhERH63+Ph6NiK9GxB+W1C8i4gsRcWrl96TW6gvR9vlqu/wwIm58qffvagAUftuIM8DHMvMG4Cbgg9W//S7gSGZeBxyppkvxYeDYiulPAZ/NzNcCzwF3dqWqrXc38M3MvB54Pe1tUly/iIhB4EPAcGa+jvZFJXdQVr/4EnDrqra1+sLbgOuqnwPAPS/15t0+Aij2thGZeTIzv1+9/jXtP/JB2v/+w9Vih4HR7lS4tSJiN/AO4N5qOoCbgQeqRYrYFhHxauDNwH0AmflCZi5SaL+gfaViIyIuAS4FTlJQv8jM7wK/XNW8Vl+4Dfhytn0PGIiIq17s/bsdABe6bcRgl2rpmoi4BtgLPALszMyT1axngJ1dKmurfQ74OPC7avpKYDEzz1TTpfSNa4EF4IvVcNi9EXEZBfaLzGwCnwZ+TnvH/zxwlDL7xUpr9YV170+7HQDFi4hXAf8GfCQzf7VyXrav0e3563Qj4p3Aqcw82u1aXgYuAW4E7snMvcBvWDXcU1C/uJz2/2qvBXYBl/H7wyFFq9sXuh0ARd82IiL6ae/8v5KZk1Xzs0uHbdXvU92qbwu9EXhXRDxJexjwZtrj4APVoT+U0zeOA8cz85Fq+gHagVBiv3gr8LPMXMjM08Ak7b5SYr9Yaa2+sO79abcDoNjbRlRj3PcBxzLzMytmPQTsr17vBx7c6tq2WmaOZ+buzLyGdh/4dma+F3gYeHe1WCnb4hng6YhYusvjLcBjFNgvaA/93BQRl1Z/L0vborh+scpafeEh4P3V1UA3Ac+vGCq6sMzs6g/wduB/gZ8C/9Dterbw3/0m2oduPwR+UP28nfbY9xHgJ8B/AFd0u9Yt3i5vAb5Rvf5j4L+Bx4F/BV7Z7fq2aBv8CTBT9Y0p4PJS+wXwSeDHwKPAvwCvLKlfAF+lff7jNO2jwzvX6gtA0L6q8qfAHO2rp170/b0VhCQVqttDQJKkLjEAJKlQBoAkFcoAkKRCGQCSVCgDQJIKZQBIUqH+H5cp2gU9VaSNAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -797,11 +843,24 @@ "colab_type": "text" }, "source": [ - "Which of the above sets of variables has a stronger relationship?\n", + "- Which of the above sets of variables has a stronger relationship?\n", "\n", - "Which has the stronger covariance?" + "- Which has the stronger covariance?" ] }, + { + "cell_type": "code", + "metadata": { + "id": "48HHLJH1mlPD", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# The second one has a stronger covariance" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -809,7 +868,7 @@ "colab_type": "text" }, "source": [ - "# The Variance-Covariance Matrix\n", + "## The Variance-Covariance Matrix\n", "\n", "In order to answer this problem we're going to use a tool called a variance-covariance matrix. \n", "\n", @@ -821,16 +880,16 @@ "metadata": { "id": "eouW-AEDhgtZ", "colab_type": "code", - "outputId": "6f27bc96-9b32-485f-a789-fdd13718a76d", "colab": { "base_uri": "https://localhost:8080/", - "height": 171 - } + "height": 173 + }, + "outputId": "f2cf0c3b-fa4e-4fa5-b1b3-253520ad828c" }, "source": [ "df.cov()" ], - "execution_count": 0, + "execution_count": null, "outputs": [ { "output_type": "execute_result", @@ -904,7 +963,7 @@ "metadata": { "tags": [] }, - "execution_count": 12 + "execution_count": 11 } ] }, @@ -915,15 +974,28 @@ "colab_type": "text" }, "source": [ - "What type of special square matrix is the variance-covariance matrix?\n", + "- What type of special square matrix is the variance-covariance matrix?\n", "\n", - "The two sets of variables above show relationships that are equal in their strength, yet their covariance values are wildly different. \n", + "- The two sets of variables above show relationships that are equal in their strength, yet their covariance values are wildly different. \n", "\n", - "How can we counteract this problem?\n", + "**How can we counteract this problem?**\n", "\n", - "What if there was some statistic of a distribution that represented how spread out the data was that we could use to standardize the units/scale of the variables?" + "- What if there was some statistic of a distribution that represented how spread out the data was that we could use to standardize the units/scale of the variables?" ] }, + { + "cell_type": "code", + "metadata": { + "id": "SKgVQEy1nVpX", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# These are symmetrical square matrices" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -931,26 +1003,36 @@ "colab_type": "text" }, "source": [ - "# Correlation Coefficient\n", - "\n", - "Well, it just so happens that we do have such a measure of spread of a variable. It's called the Standard Deviation! And we already learned about it. If we divide our covariance values by the product of the standard deviations of the two variables, we'll end up with what's called the Correlation Coefficient. (Sometimes just referred to as the correlation). \n", - "\n", - "Correlation Coefficients have a fixed range from -1 to +1 with 0 representing no linear relationship between the data. \n", + "## Correlation Coefficient\n", "\n", - "In most use cases the correlation coefficient is an improvement over measures of covariance because:\n", - "\n", - "- Covariance can take on practically any number while a correlation is limited: -1 to +1.\n", - "- Because of it’s numerical limitations, correlation is more useful for determining how strong the relationship is between the two variables.\n", - "- Correlation does not have units. Covariance always has units\n", - "- Correlation isn’t affected by changes in the center (i.e. mean) or scale of the variables\n", - "\n", - "[Statistics How To - Covariance](https://www.statisticshowto.datasciencecentral.com/covariance/)\n", + "If we divide our covariance values by the product of the standard deviations of the two variables, we'll end up with what's called the Correlation Coefficient. (Sometimes just referred to as the correlation).\n", "\n", "The correlation coefficient is usually represented by a lower case $r$.\n", "\n", "\\begin{align}\n", "r = \\frac{cov(X,Y)}{\\sigma_{X}\\sigma_{Y}}\n", - "\\end{align}" + "\\end{align}\n", + "\n", + "- $r$ = Correlation Coefficient\n", + "- $cov(X,Y)$ = A pair of covariance values\n", + "- $\\sigma_{X}\\sigma_{Y}$ = Standard deviations of $X$ and $Y$ multiplied\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_kQi8uRVAvn2", + "colab_type": "text" + }, + "source": [ + "### Why is correlation an improvement over measures of covariance?\n", + "\n", + "- Covariance can take on practically any number while a correlation has a bounded (fixed) range from -1 to +1.\n", + "- Correlation does not have units. Covariance always has units.\n", + "- Correlation isn’t affected by changes in the center (i.e. mean) or scale of the variables\n", + "- Allows direct comparison!\n", + "\n", + "[Statistics How To - Covariance](https://www.statisticshowto.datasciencecentral.com/covariance/)\n" ] }, { @@ -958,16 +1040,16 @@ "metadata": { "id": "CsptKUELhp9U", "colab_type": "code", - "outputId": "1b0ea814-4779-4105-9059-597f98826057", "colab": { "base_uri": "https://localhost:8080/", - "height": 171 - } + "height": 173 + }, + "outputId": "8baacd4c-0d16-4e46-f2ab-75ec8fd1ab79" }, "source": [ "df.corr()" ], - "execution_count": 0, + "execution_count": 13, "outputs": [ { "output_type": "execute_result", @@ -1065,6 +1147,19 @@ "Or take it to the next level with the [Datasaurus Dozen](https://www.autodeskresearch.com/publications/samestats)\n" ] }, + { + "cell_type": "code", + "metadata": { + "id": "MMbLg5Pzo9J7", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Correlation only measures the strength of the linear relationship between two variables." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -1072,7 +1167,7 @@ "colab_type": "text" }, "source": [ - "# Orthogonality\n", + "## Orthogonality\n", "\n", "Orthogonality is another word for \"perpendicularity\" or things (vectors or matrices) existing at right angles to one another. Two vectors that are perpendicular to one another are orthogonal." ] @@ -1084,7 +1179,7 @@ "colab_type": "text" }, "source": [ - "## How to tell if two vectors are orthogonal\n", + "### How to tell if two vectors are orthogonal\n", "\n", "Two vectors are orthogonal to each other if their dot product will be zero. \n", "\n", @@ -1096,11 +1191,11 @@ "metadata": { "id": "BO9JKzpDUqJN", "colab_type": "code", - "outputId": "e6a947e3-68b2-4b42-ffc5-539eb8fa7e40", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "372686dc-b3ff-47a6-a84b-bbc4f379597b" }, "source": [ "vector_1 = [0, 2]\n", @@ -1114,18 +1209,19 @@ "plt.title(\"Orthogonal Vectors\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 14, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "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\nR47UPffcczXqBwCgQbEV3AAAoH7w5DQAAAxCcAMAYBBbv+OuKzt37tQTTzyhmTNnqm/fvheNr1u3\nTsuXL1dAQIAeeOCBK/52e305d+6cUlJS9M033ygwMFCvvvqqbrjhBp91oqKifJ489+677yowMPDH\nLvWKzZw5U7m5uXI4HJo6dao6d+7sHcvKytIbb7yhwMBAxcbGauLEifVYqT3V9RcXF6fWrVt752nO\nnDlq1apVfZVqS15eniZMmKCHHnpII0eO9Bnzh/mrrj/T52/27Nn64osvVFFRoUcffVT9+/f3jvnD\n3FXXn+lzV1ZWppSUFB09elTfffedJkyY4JN5Vzx/Vj05dOiQNX78eGvChAnW1q1bLxo/ffq01b9/\nf+vUqVNWWVmZ9ctf/tI6fvx4PVR65dasWWNNnz7dsizL2rZtm/XEE09ctM7Pf/7zH7usWvvrX/9q\njRs3zrIsyzpw4ID1wAMP+IwPHDjQ+uabb6zKykpr+PDh1v79++ujTNtq6q9v375WaWlpfZRWJ06f\nPm2NHDnSeu6556wVK1ZcNG76/NXUn8nzl52dbf3617+2LMuyjh07ZvXu3dtn3PS5q6k/k+fOsixr\n/fr11uLFiy3LsqyCggKrf//+PuNXOn/1dqncnx+bmp2drfj4eEnSHXfcYUzdNcnOzla/fv0kSW3b\nttXJkydVWloqScrPz1doaKgiIiIUEBCg3r17Kzs7uz7LvWLV9ecPgoODlZqaKrfbfdGYP8xfdf2Z\nLjo6WvPmzZMkNW/eXGVlZaqsrJTkH3NXXX/+YNCgQXrkkUckSYcPH/a5WmBn/urtUrk/Pzb1h7UH\nBATI4XCovLxcwcHB3nXKy8uVnJyswsJCDRgwQA8//HB9lXvZiouLFRUV5V3+fk5CQkLk8Xgumq/8\n/Pz6KNO26vr73rRp01RYWKjbb79dycnJcjgc9VGqLUFBQQoKqvp/eX+Yv+r6+56p8xcYGKimTZtK\nktLT0xUbG+u9bOwPc1ddf98zde5+aNiwYfr222+1cOFC73t25u9HCe4f87GpP7aqesvNzfVZrqr2\np59+Wvfcc4/3d+7dunXTrbfeelVrrWvX6pzUlf/sb9KkSerVq5dCQ0M1ceJEZWRkKCEhoZ6qw5Xy\nh/nbsmWL0tPTtXTp0vou5aq4VH/+MHeStGrVKv3zn//UlClTtG7dOtsfPn6U4Pbnx6ZW1VtKSoo8\nHo86dOigc+fOybIsn7NtSRo+fLj3dY8ePZSXl3fNB3dVc+JyuaocKyoqMu6SZXX9SdLgwYO9r2Nj\nY5WXl2fkXx5V8Yf5q4np87dt2zYtXLhQ77zzjs8tRn+Zu0v1J5k/d3v27FF4eLgiIiLUsWNHVVZW\n6tixYwoPD7c1f9fsz8FMfmzpvfXMAAABsElEQVRqTEyMNm7cKEnKzMxU9+7dfcYPHjyo5ORkWZal\niooK5eTkqF27dvVR6hWJiYlRRkaGJGnv3r1yu93ey8iRkZEqLS1VQUGBKioqlJmZqZiYmPos94pV\n119JSYnGjh2r8vJySdKuXbuMmLPL5Q/zVx3T56+kpESzZ8/WokWL1KJFC58xf5i76vozfe4kaffu\n3d6rCMXFxTpz5oxatmwpyd781duT0/z5samVlZV67rnn9PXXXys4OFivvfaaIiIifHp7/fXXtWPH\nDgUEBCguLk6PPfZYfZd9WebMmaPdu3fL4XBo2rRp+sc//iGn06n4+Hjt2rVLc+bMkST1799fY8eO\nredqr1x1/S1fvlxr165V48aN1alTJz3//PNG3Wfbs2ePZs2apcLCQgUFBalVq1aKi4tTZGSkX8xf\nTf2ZPH9paWmaP3++2rRp432ve/fuat++vV/MXU39mTx3knT27Fk9++yzOnz4sM6ePavHH39cJ06c\nsP13J488BQDAINfspXIAAHAxghsAAIMQ3AAAGITgBgDAIAQ3AAAGIbgBADAIwQ0AgEEIbgAADPL/\nASKgXIYM/0RqAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1153,11 +1249,11 @@ "metadata": { "id": "g15k5VLkUtLC", "colab_type": "code", - "outputId": "c748edb4-fd11-4cc8-8ecb-691870d1c7a1", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "7632a6db-ebe5-42cd-e56e-a92d705ec85b" }, "source": [ "vector_1 = [-2, 2]\n", @@ -1171,18 +1267,19 @@ "plt.title(\"Orthogonal Vectors\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 15, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1205,6 +1302,19 @@ "\\end{align}\n" ] }, + { + "cell_type": "code", + "metadata": { + "id": "Hx_DzpxbrsMg", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# If variables are orthogonal, it means the two variables are independent of one another" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -1212,7 +1322,7 @@ "colab_type": "text" }, "source": [ - "# Unit Vectors\n", + "## Unit Vectors\n", "\n", "In Linear Algebra a unit vector is any vector of \"unit length\" (1). You can turn any non-zero vector into a unit vector by dividing it by its norm (length/magnitude).\n", "\n", @@ -1251,11 +1361,11 @@ "metadata": { "id": "j4x2-DCqK4bN", "colab_type": "code", - "outputId": "559cf272-dee6-4760-8146-2e0ebd5f875a", "colab": { "base_uri": "https://localhost:8080/", - "height": 417 - } + "height": 335 + }, + "outputId": "a6905346-bd9c-48a3-8f4b-3811356ce6fa" }, "source": [ "# Axis Bounds\n", @@ -1269,32 +1379,33 @@ "# Fix Axes\n", "plt.axes().set_aspect('equal')\n", "\n", - "# PLot Vectors\n", + "# Plot Vectors\n", "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", "plt.title(\"basis vectors in R^2\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 16, "outputs": [ { "output_type": "stream", "text": [ - "/usr/local/lib/python3.6/dist-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", - " warnings.warn(message, mplDeprecation, stacklevel=1)\n" + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " # Remove the CWD from sys.path while we load stuff.\n" ], "name": "stderr" }, { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVsAAAFZCAYAAAA2B4zmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHWdJREFUeJzt3H9Y1fX9//HH4RyxFMSO18G4ZmtW\nLJU0f4aJ4iIRdM3c0tAu1MyuZrOsLsqVcxdaDn+k/TKbZfZjuC2mmdtawWqxfigqjS5Lt12ULgMt\nPKQhCBOQ1/ePfT0fT5DoAV6Hc7rfrqvr4vA+532er/OOu2/enqPDGGMEAOhQEcEeAAC+DYgtAFhA\nbAHAAmILABYQWwCwgNgCgAXEFpKknTt3KjU1td32N2vWLO3du7fd9ncu/vCHP3TYvhcsWKC33nrr\nnB4zY8YMjR49Wunp6UpPT1dqaqrmzJmj//znP777NDQ0aO3atdqzZ4/vezU1Nbr33nuVnp6utLQ0\nPf744+22DtjnCvYACE8vvvhiUJ735MmTWrlypW688cYO2f/KlSsDetx9992n66+/3nd7/fr1euCB\nB/TSSy9JkrZu3ap9+/apqKhIGzdulCQ98sgj6tKli1577TXV1tZq8uTJGj58uJKSktq+EFjHmS38\nrFixQmlpaUpPT1dJSYkkqa6uTnfffbfS0tKUkpKiFStW+O7/+uuv67rrrtOECRP0ox/9SDt37pQk\npaSk6P3331djY6N+8YtfKC0tTampqbrjjjtUU1Pj95y//e1vNXfuXN/tkydPKjExUfv27dMXX3yh\nuXPnKi0tTWlpaXr77bd999u6davv+/fdd5/q6+s1e/ZsVVdXKz09XWVlZTp06JDmzJmjtLQ0XXfd\nddq6daskqby8XKNHj1ZOTo4yMzMlSY8++qhvfzNnzlRFRUWz12fGjBn64x//KEm6/PLLtXXrVk2e\nPFmjR4/WCy+8cNav87XXXqt///vfkqSmpiZt3LhRixYtUo8ePVRcXCxJSk1N1fz58xUREaGoqCj1\n69dPH3/88Vk/BzoZAxhjduzYYfr3729effVVY4wxeXl55vrrrzfGGLNhwwZz6623mqamJvPVV1+Z\nq666yhQXFxtjjElMTDTl5eXGGGOKi4tNTk6OMcaYa665xhQXF5vCwkIzc+ZM09TUZJqamsyjjz5q\n3nnnHb/nPnz4sBk8eLCpra01xhhTVFRkrrvuOmOMMTNnzjSPPvqoMcaYTz/91Fx11VXmyJEjpqys\nzIwcOdJ88cUXpqmpycybN8+sX7/elJWVmf79+/v2fcstt5h169YZY4wpLy83w4YNM2VlZaasrMwk\nJCSYLVu2GGOMKS0tNePHjzf19fXGGGN+85vfmFdeeaXZ65SZmWm2bt1qjDHm+9//vnn44YeNMcbs\n3r3bDBw40DQ2Np7xMcYY09DQYHJycszNN99sjDHm1VdfNUuWLDHGGPPBBx+YW265pdk+qqurzahR\no0xJSUmzbQgNnNnCp2vXrpowYYIkacKECfrXv/6lEydO6JZbbtFTTz0lh8OhmJgYxcfHq7y8XJLU\nq1cvvfTSSzp48KCGDx+uBx54wG+fbrdb+/bt0xtvvOE7Qx4zZozffTwejwYMGKBt27ZJkt58801N\nmDBBtbW12rlzp26++WZJ0sUXX6xhw4bp7bff1rZt2zRkyBD17t1bDodDq1ev9t3vlIaGBm3fvl03\n3XSTJOk73/mOEhMTtWPHDt/2U9epe/TooSNHjujPf/6zqqqqNGPGDE2ePLnV1+zUpYGEhASdOHFC\nX375ZYv3e/jhh33XXgcPHqxjx45p9erVMsbo2Wef1ezZsyVJgwcPVn19vT788EPfY+vr65WVlaWU\nlBQNGTKk1ZnQORFb+PTs2VMREf/7XyIqKkqSVFVVpU8//VR33nmnxo8fr/T0dO3Zs0dNTU2SpF//\n+teqrKzUT37yE02ePFm7du3y2+egQYO0aNEi5ebmKikpSVlZWTp27Fiz505LS/P9xdPf/vY3TZw4\nUdXV1TLGaNq0ab6/XNqzZ4+OHTumo0ePqkePHr7Hd+3aVS6X/19BfPXVVzLGKDo62ve9U1GVJKfT\n6Vtn7969tWbNGuXn5+sHP/iBbrvtNn3++eetvman9u10OiXJ97p83X333af8/HwVFBToiiuu0NCh\nQ+V2u+VwOPTKK6/ooosu8t03NzdXgwYNkiQdP35cc+fOldvt1pIlS1qdB50XsYVPVVWV7+tTQezZ\ns6cefPBBxcfH6/XXX1d+fr769evnu993v/tdLVu2TEVFRZo5c6aysrKa7Tc9PV25ubkqLCxUXV2d\nNmzY0Ow+p67HfvTRR4qJidH3vvc99erVS06nUy+//LLy8/OVn5+vd955RzNnztQFF1ygo0eP+h5f\nU1OjyspKv31ecMEFioiI8FvXV199pV69erW4/pEjR+qZZ57Rtm3bFBcXp1WrVp3lK3du7rnnHj3x\nxBOqq6s74/0aGxt1xx136LLLLtOyZct8fxAiNHH04PPf//5Xb7zxhiSpoKBAAwcOVGRkpL788kv1\n799fTqdT27Zt04EDB1RbW6sjR45o9uzZqqmpUUREhK688ko5HA6/fb788stau3atpP+F+5JLLmnx\nuXv37q2LLrpI69at813KcLlcGjt2rO9v7Ovq6vTAAw/o888/19ixY1VSUqLy8nIZY5Sdna3Nmzer\nS5cuampqUk1NjVwul0aPHq28vDxJ0meffab3339fo0aNavb87733npYsWaKmpiZ169ZN/fr1a7aW\n9pKYmKj4+PgW/9A5XW5urrp3766FCxd2yBywi7d+weeSSy7RBx98oNWrVysiIkLLly+XJN1+++1a\ntmyZnnrqKV177bW644479MQTT6h///4aM2aMbrjhBjmdTnXp0kW/+tWv/PZ57bXXauHChRo/fryc\nTqcuvvhi336/Li0tTcuXL9fPf/5z3/cWL16s7Oxsbdq0SZI0adIkxcXFSZIefPBBzZo1S06nUwMH\nDtTs2bPVpUsXDRs2TNdcc42efvppLVmyRIsWLdKWLVvUpUsXLV26VHFxcb5rzqeMGDFCf/nLX5SW\nlqbIyEi53W7l5OS022v7dffcc49mzpypjIwMeTyeFu/z0ksvqa6uTunp6b7vpaen6+677+6wudBx\nHMbw79kCQEfjMgIAWNCmywgrV67UP/7xDzU2NuqnP/2pxo8f79u2fft2PfLII3I6nUpOTta8efPa\nPCwAhKqAY7tjxw59/PHHysvL09GjR/XjH//YL7ZLly7Vhg0b1Lt3b2VmZiotLU2XXXZZuwwNAKEm\n4NiOGDHC917AHj16qK6uTidPnpTT6VRZWZliYmJ8f5ExduxYFRUVEVsA31oBX7N1Op3q1q2bJGnz\n5s1KTk72vbHb6/XK7Xb77ut2u+X1ets4KgCErja/9evNN9/U5s2b9dxzz7VpP8aYDntfIwAEW5ti\n++6772rdunV69tln/T4SGRsb6/dpnoqKCsXGxp5xXw6HQ15vdVvG6RQ8nmjW0YmEwzrCYQ1SeK0j\nEAFfRqiurtbKlSv19NNPq2fPnn7b+vTpo5qaGpWXl6uxsVGFhYX8G5wAvtUCPrN97bXXdPToUb9P\n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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQ8AAAEICAYAAABBKnGGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAUCElEQVR4nO3de5RdZX3G8e9DuElAbklJyIUIRANUCzhyS6tZXCqmLqKVNkFFYs1KsdJq66pFcSGwpKJYUQoVU0CCyEXRJQMGMVxSxDbAwAq3IJBElMSQTBJIiNwM/PrHfieeDOfM5T37XCZ5PmudNe/Z+z37/e0zZ55592USRQRmZoO1XasLMLOhyeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHg0i6WlJx5e8zY9I+nmZ2xwKJH1B0uVNGOcASedIOqTRY20NHB5DSER8PyL+stV1AEhaIGlWM8aKiH+PiKyxJF0l6VVJGyWtkzRf0qQq/UYBPweOBW6TNL7X+r+SdI+k5yU9K+lySbtl7dBWwuFhTadCMz97X4uIXYExwArgil71vBm4Ffh+RLwbuIgiQPau6LY78GVgX+CgtK0Lm1B723J4NNa7JC2W9Jyk70raGUDSnpJukdSd1t0iaWzPiyTNlLRM0guSfi3pIxXL70ltSbpI0mpJGyQ9IulPexcgabqkrl7L/llSZ2rvJOnrkn4raZWkyyS9qaLvNEmL0hhLJZ0o6XzgL4BL0m/0S1LfYyTdL2l9+npMxXYWSDpf0i+BF4H9a+1nlX04R9I1qT1BUkg6LdW8RtJZA/lmRMRLwA+AQyu2vRNwE/CDiDg79fsP4D+BWyQNT8uujYifRcSLEfEc8N/A5IGMu9WKCD8a8ACeBh4FxgF7Ab8EvpzW7Q18CNgF2A34IfCTtG44sAF4W3o+GjgktWcC96T2e4EHgD0AUfw2HF2ljl2AF4CJFcvuB2ak9kVAZ6pxN+Bm4Ctp3RHAeuAEil80Y4BJad0CYFbFNvcCngNOBbYHTknP967o/1vgkLR+91r7WWUfzgGuSe0JQFD88L4J+DPgFeCgGq+9quJ9Hw58D3iohO/vN4HrW/05a+lnvNUFbK2PFB6nVzyfCiyt0fdQ4LnUHg48n8LlTb36VYbHscCTwFHAdv3Ucg1wdmpPTGGySwqd3wMHVPQ9Gvh1an8HuKjGNnuHx6nAfb36/B8ws6L/eRXrau5nlbGqhcfYivX3kcKwymuvAl5OY70O/Bp4R53f2xNSML611Z+zVj582NJYz1S0f0NxvIykXSR9R9JvJG0A7gb2kDQsIn4PTAdOB1ZK+mm1E3wRcSdwCXApsFrSnHTsXs21FDMBgA9TzHJeBEZShMgD6UTg88DP0nIoZk1LB7iv+6Z9rPQbitlKj83vx0D3sw/PVrRfBHbto+/XI2IPiuB5CXjbIMbZgqSjKN7PkyPiydztbA0cHo01rqI9Hvhdan+W4gN8ZES8GXh3Wi6AiLgtIk6gmMr/imKK/gYRcXFEvBM4GHgr8K816pgPjJR0KEWIXJuWr6H4YTokIvZIj92jOLkIxQ/7ATW22fvPsX8H7Ndr2XiKE5RVXzPQ/SxLRPwW+DTwrcrzOgMl6TCKQ7y/i4g7yq5vqHF4NNanJI2VtBdwFnBDWr4bxQ/t82ndl3peIGmfdJJyOMWx/EaK6fYWJL1L0pGSdqA49Hi5Wj+AiPgDxXmVCynOTcxPy1+n+IG9SNKfpO2OkfTe9NIrgI9LOk7Sdmldz+xgFbB/xTDzgLdK+rCk7SVNpwi1W6rVNND9LFtEzKcIutmDeV06Gf0z4B8j4uZG1DbUODwa61qKeweWUUz/v5yWf5PiZN8aYCHFh7LHdsC/UHzA1wHvAT5ZZdtvpvjBf47i8GAtfV86vBY4HvhhRGyqWP5vwBJgYTqEup00rY+I+4CPU5xUXQ/8D3+cXXwLODldLbo4ItYC76eYVa0FPge8PyLW1KhnoPvZCBcCn0tXWgbqsxSHc1ekK0wbJT3WmPKGBqUTQGZmg+KZh5llqTs8JI2TdFe6GeoxSZ+u0keSLpa0RNLDkg6vd1wza63tS9jGJuCzEfGginv9H5A0PyIWV/R5H8X9BROBI4Fvp69mNkTVPfOIiJUR8WBqvwA8zpbX9gGmAVdHYSHFPQ2j6x3bzFqnjJnHZpImAIcB9/ZaNYYtb5hanpat7PX62aRLaMOHD3/npEmDuWfIzAbrgQceWBMRI/vv+UalhYekXYEfAZ+JiA0524iIOcAcgI6Ojujq6urnFWZWD0m97woesFKutqQblX5E8SfNP67SZQVb3m05li3vPDSzIaaMqy2iuBPx8Yj4Ro1uncDH0lWXo4D1EbGyRl8zGwLKOGyZTPEXlY9IWpSWfYHi7xqIiMsobl2eSnEn44sUdy2a2RBWd3hExD2kP+jqo08An6p3LDNrH77D1MyyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yylBIekq6UtFrSozXWT5G0XtKi9Di7jHHNrHXq/o+uk6uAS4Cr++jzi4h4f0njmVmLlTLziIi7gXVlbMvMhoZmnvM4WtJDkm6VdEgTxzWzBijrsKU/DwL7RcRGSVOBnwATe3eSNBuYDTB+/PgmlWZmOZoy84iIDRGxMbXnATtIGlGl35yI6IiIjpEjRzajNDPL1JTwkDRKklL7iDTu2maMbWaNUcphi6TrgCnACEnLgS8BOwBExGXAycAnJW0CXgJmRESUMbaZtUYp4RERp/Sz/hKKS7lmtpXwHaZmlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhYWZZHB5mlsXhMUS99lqrK7BtncNjiPrud2HBglZXYduyUv7HOGuuV1+F88+HCRNgypRWV2PbKs88hqCrr4anny5mHp59WKs4PIaYnllHj3PPbV0ttm0rJTwkXSlptaRHa6yXpIslLZH0sKTDyxh3W9Qz6+jh2Ye1Slkzj6uAE/tY/z5gYnrMBr5d0rjblN6zjh6efVgrlBIeEXE3sK6PLtOAq6OwENhD0ugyxt6W9J519PDsw1qhWec8xgDPVDxfnpZtQdJsSV2Surq7u5tU2tBQa9bRw7MPa7a2ulQbEXOAOQAdHR3R4nLayoYNcMEFRXvGjC3XXX998fXll2HnnZtbl227mhUeK4BxFc/HpmU2QCNGwPTpRbsyPA444I/LzZqpWYctncDH0lWXo4D1EbGySWObWQOUMvOQdB0wBRghaTnwJWAHgIi4DJgHTAWWAC8CHy9jXDNrnVLCIyJO6Wd9AJ8qYywzaw++w9TMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMsjg8zCyLw8PMspQSHpJOlPSEpCWSzqyyfqakbkmL0mNWGeOaWevU/R9dSxoGXAqcACwH7pfUGRGLe3W9ISLOqHc8M2sPZcw8jgCWRMSyiHgVuB6YVsJ2zayNlREeY4BnKp4vT8t6+5CkhyXdKGlctQ1Jmi2pS1JXd3d3CaWZWaM064TpzcCEiHgHMB+YW61TRMyJiI6I6Bg5cmSTSjOzHGWExwqgciYxNi3bLCLWRsQr6enlwDtLGNfMWqiM8LgfmCjpLZJ2BGYAnZUdJI2ueHoS8HgJ45pZC9V9tSUiNkk6A7gNGAZcGRGPSToP6IqITuCfJJ0EbALWATPrHdfMWqvu8ACIiHnAvF7Lzq5ofx74fBljmVl78B2mZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbF4WFmWRwetvXp7oaZM2HJklZXslUrJTwknSjpCUlLJJ1ZZf1Okm5I6++VNKGMcc2qev11mDsXJk1yiDRQ3f/RtaRhwKXACcBy4H5JnRGxuKLbJ4DnIuJASTOArwLT6x3bgBdegGtuanUV7WXVquLra68VIXLNNfDRj8IXvwgHHtja2rYidYcHcASwJCKWAUi6HpgGVIbHNOCc1L4RuESSIiJKGH/btnoVnHpqq6tobw6RhijjsGUM8EzF8+VpWdU+EbEJWA/s3XtDkmZL6pLU1d3dXUJpW6e/PfDBze3p3NDCSoaYnhCZNQvWrGl1NUNeW50wjYg5EdERER0jR45sdTlt66CxL/D2HX/F23mYA1ja6nKGjsmT4fbb4a67YMSIVlcz5JVx2LICGFfxfGxaVq3PcknbA7sDa0sYe5t0zl3v2XwMCFemh222ahWMGvXH55Mnw7nnwrHHgtS6urYyZcw87gcmSnqLpB2BGUBnrz6dwGmpfTJwp893WMP1zDR+8Qs47jgHR8nqnnlExCZJZwC3AcOAKyPiMUnnAV0R0QlcAXxP0hJgHUXAmDXGLrsUoeGZRkOpXScAHR0d0dXV1eoyzLZqkh6IiI6c17bVCVMzGzocHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlkcHmaWxeFhZlnqCg9Je0maL+mp9HXPGv1ek7QoPTrrGdPM2kO9M48zgTsiYiJwR3pezUsRcWh6nFTnmGbWBuoNj2nA3NSeC3ygzu2Z2RBRb3jsExErU/tZYJ8a/XaW1CVpoSQHjNlWYPv+Oki6HRhVZdVZlU8iIiRFjc3sFxErJO0P3CnpkYhYWmWs2cBsgPHjx/dbvJm1Tr/hERHH11onaZWk0RGxUtJoYHWNbaxIX5dJWgAcBrwhPCJiDjAHoKOjo1YQmVkbqPewpRM4LbVPA27q3UHSnpJ2Su0RwGRgcZ3jmlmL1RseFwAnSHoKOD49R1KHpMtTn4OALkkPAXcBF0SEw8NsiOv3sKUvEbEWOK7K8i5gVmr/L/D2esYxs/bjO0zNLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yyODzMLIvDw8yy1BUekv5G0mOSXpfU0Ue/EyU9IWmJpDPrGdPM2kO9M49Hgb8G7q7VQdIw4FLgfcDBwCmSDq5zXDNrse3reXFEPA4gqa9uRwBLImJZ6ns9MA1YXM/YZtZadYXHAI0Bnql4vhw4slpHSbOB2enpK5IebXBtgzUCWNPqIiq4nr61Wz3QfjW9LfeF/YaHpNuBUVVWnRURN+UOXE1EzAHmpHG7IqLmeZRWaLeaXE/f2q0eaL+aJHXlvrbf8IiI43M3nqwAxlU8H5uWmdkQ1oxLtfcDEyW9RdKOwAygswnjmlkD1Xup9oOSlgNHAz+VdFtavq+keQARsQk4A7gNeBz4QUQ8NoDNz6mntgZpt5pcT9/arR5ov5qy61FElFmImW0jfIepmWVxeJhZlrYJj3a81V3SXpLmS3oqfd2zRr/XJC1Kj9JPBve3z5J2knRDWn+vpAll1zDIemZK6q54T2Y1uJ4rJa2udV+QCheneh+WdHiL65kiaX3F+3N2g+sZJ+kuSYvTz9inq/QZ/HsUEW3xAA6iuGFlAdBRo88wYCmwP7Aj8BBwcANr+hpwZmqfCXy1Rr+NDayh330G/gG4LLVnADe0uJ6ZwCVN/Oy8GzgceLTG+qnArYCAo4B7W1zPFOCWJr4/o4HDU3s34Mkq37NBv0dtM/OIiMcj4ol+um2+1T0iXgV6bnVvlGnA3NSeC3yggWPVMpB9rqzzRuA49fM3Aw2up6ki4m5gXR9dpgFXR2EhsIek0S2sp6kiYmVEPJjaL1Bc9RzTq9ug36O2CY8Bqnare+83oUz7RMTK1H4W2KdGv50ldUlaKKnsgBnIPm/uE8Wl8fXA3iXXMZh6AD6Upr83ShpXZX0zNftzMxBHS3pI0q2SDmnWoOmQ9jDg3l6rBv0eNeNvWzZr5q3uA9VXTZVPIiIk1bquvV9ErJC0P3CnpEciYmnZtQ4hNwPXRcQrkv6eYlZ0bItraicPUnxmNkqaCvwEmNjoQSXtCvwI+ExEbKh3e00Nj2jDW937qknSKkmjI2JlmsKtrrGNFenrMkkLKJK9rPAYyD739FkuaXtgd2BtSeMPup6IqBz7copzR63UVn8iUfmDGxHzJP2XpBER0bA/mJO0A0VwfD8iflyly6Dfo6F22NLsW907gdNS+zTgDbMjSXtK2im1RwCTKfefGxjIPlfWeTJwZ6SzYA3Qbz29jpVPojjGbqVO4GPpisJRwPqKw9GmkzSq55yUpCMofg4bFfaksa4AHo+Ib9ToNvj3qFlnfAdwRviDFMdZrwCrgNvS8n2Beb3OCj9J8Zv9rAbXtDdwB/AUcDuwV1reAVye2scAj1BcdXgE+EQD6njDPgPnASel9s7AD4ElwH3A/g1+X/qr5yvAY+k9uQuY1OB6rgNWAn9In6FPAKcDp6f1ovgHqZam71HVq3lNrOeMivdnIXBMg+v5cyCAh4FF6TG13vfIt6ebWZahdthiZm3C4WFmWRweZpbF4WFmWRweZpbF4WFmWRweZpbl/wFNiix2sXRbFgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1306,12 +1417,12 @@ "colab_type": "text" }, "source": [ - "## Vectors as linear combinations of scalars and unit vectors\n", + "### Vectors as linear combinations of scalars and unit vectors\n", "\n", "Any vector (or matrix) can be be described in terms of a linear combination of scaled unit vectors. Lets look at an example.\n", "\n", "\\begin{align}\n", - "c = \\begin{bmatrix} 2 \\\\ 3 \\end{bmatrix}\n", + "\\vec{c} = \\begin{bmatrix} 2 \\\\ 3 \\end{bmatrix}\n", "\\end{align}\n", "\n", "We think about a vector that starts at the origin and extends to point $(2,3)$\n", @@ -1327,6 +1438,180 @@ "We can describe any vector in $\\mathbb{R}^2$ in this way. Well, we can describe any vector in any dimensionality this way provided we use all of the unit vectors for that space and scale them all appropriately. In this examply we just happen to be using a vector whose dimension is 2." ] }, + { + "cell_type": "code", + "metadata": { + "id": "3cy4h_MYoOsB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 335 + }, + "outputId": "30ece724-cc15-4041-de4c-05a274a2539b" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-1,2) \n", + "plt.ylim(-1,2)\n", + "\n", + "# Unit Vectors\n", + "i_hat = [1,0]\n", + "j_hat = [0,1]\n", + "\n", + "# Fix Axes\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# PLot Vectors\n", + "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.title(\"basis vectors in R^2\")\n", + "plt.show()" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " # Remove the CWD from sys.path while we load stuff.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "FI6FEiJOoV2a", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 335 + }, + "outputId": "40ba9d96-49eb-4bc6-c71c-935a47ecd0be" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-1,3) \n", + "plt.ylim(-1,4)\n", + "\n", + "# Unit Vectors\n", + "i_hat = 2*np.array([1,0])\n", + "j_hat = 3*np.array([0,1])\n", + "\n", + "# Fix Axes\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# PLot Vectors\n", + "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.title(\"basis vectors in R^2\")\n", + "plt.show()" + ], + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " # Remove the CWD from sys.path while we load stuff.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mkonjSB2oet4", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 352 + }, + "outputId": "15bd1490-ee14-499c-b98e-05f17b63a367" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-1,3) \n", + "plt.ylim(-1,4)\n", + "\n", + "# Unit Vectors\n", + "i_hat = 2*np.array([1,0])\n", + "j_hat = 3*np.array([0,1])\n", + "\n", + "# Vector c\n", + "c = 2*np.array([1,0]) + 3*np.array([0,1])\n", + "print(c)\n", + "\n", + "# Fix Axes\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# PLot Vectors\n", + "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0, 0, c[0], c[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.title(\"basis vectors in R^2\")\n", + "plt.show()" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[2 3]\n" + ], + "name": "stdout" + }, + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:14: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " \n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -1334,35 +1619,37 @@ "colab_type": "text" }, "source": [ - "# Span\n", + "## Span\n", "\n", "The span is the set of all possible vectors that can be created with a linear combination of two vectors (just as we described above).\n", "\n", "A linear combination of two vectors just means that we're composing to vectors (via addition or subtraction) to create a new vector. \n", "\n", - "## Linearly Dependent Vectors\n", + "### Linearly Dependent Vectors\n", "\n", - "Two vectors that live on the same line are what's called linearly dependent. This means that there is no linear combination (no way to add, or subtract scaled version of these vectors from each other) that will ever allow us to create a vector that lies outside of that line. \n", + "- Two vectors that live on the same line.\n", + "- There is no linear combination (no way to add or subtract scaled version of these vectors from each other) that will ever allow us to create a vector that lies outside of that line.\n", "\n", "In this case, the span of these vectors (lets say the green one and the red one for example - could be just those two or a whole set) is the line that they lie on, since that's what can be produced by scaling and composing them together.\n", "\n", "The span is the graphical area that we're able to cover via a linear combination of a set of vectors.\n", "\n", - "## Linearly Independent Vectors\n", + "### Linearly Independent Vectors\n", "\n", - "Linearly independent vectors are vectors that don't lie on the same line as each other. If two vectors are linearly independent, then there ought to be some linear combination of them that could represent any vector in the space ($\\mathbb{R}^2$ in this case)." + "- Linearly independent vectors are vectors that don't lie on the same line as each other.\n", + "- If two vectors are linearly independent, then there ought to be some linear combination of them that could represent any vector in the space ( ℝ2 in this case)." ] }, { "cell_type": "code", "metadata": { - "id": "RAlWBSXZQYn5", "colab_type": "code", - "outputId": "ec01c591-65a4-4f78-f918-dbb5c0029b3c", + "id": "husxPJJdaBvo", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "d8548849-4998-4ecd-ca9e-3e771dda8786" }, "source": [ "# Plot Linearly Dependent Vectors\n", @@ -1392,18 +1679,19 @@ "plt.title(\"Linearly Dependent Vectors\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 20, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAFZCAYAAABE5CwVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAG4pJREFUeJzt3XtU1XX+7/EXsEVTwVsbL03HM3VG\nMz2NYZp3RVHQsMZbbkuaGc+Q05TFmtFSG8OWZeGqsRE1rbTO6Fkjo3aM6XjGbmpeKgebGZdOR8sr\nMfALBHQrKIKf8we/9ogXxC27t8HzsVZrwZfv97vf3y/kk++XvSHMOecEAABMhFsPAABAQ0aIAQAw\nRIgBADBEiAEAMESIAQAwRIgBADBEiPG91rlzZ+Xn51+0/OWXX9Yf//jH72SG5ORkvfPOO7VePyMj\nQ3fddZcSExM1ZMgQJSYmKiMjQ+Xl5SGcsnaWLFmiGTNmBL19eXm51q9ff9HyHTt2qH///qqsrKy2\n/Ny5cxo4cKB27NgR1ONt2LBBJ0+eDGpb4HpBiFEv/eY3v9HEiROtx7ishIQE/eUvf9FHH32klStX\nav/+/XrkkUesx7pm//znPy8Z4t69e8vj8eiTTz6ptvyzzz5TeHi4evfuHdTjLVy4kBDje48Qo16a\nMWOGlixZIkkaMmSIVq9erXHjxql///568cUXA+t98MEHGjVqlIYOHarJkyerqKhIklRWVqbU1FQl\nJCRoyJAhSk9PD2yTnJysBQsWaMSIEfr8888Dyx9//HEtX7488P7+/fvVu3dvVVRU1Dir1+vVggUL\ndOjQIW3btk2StGvXLo0dO1bDhg3T/fffr5ycHElVV9MzZszQlClTFBcXJ5/Pp2PHjkmS8vPz9ctf\n/lIJCQlKSEjQli1bJElff/21+vfvrz/84Q8aNWqUBgwYoA0bNkiSTp8+rdTUVMXFxWnSpEnV7i5c\n7f4KCwv12GOP6e9//7seeOCBascYHh6u++67T1lZWdWWZ2Vl6b777lN4eLhOnDih6dOnKyEhQUOH\nDtW6desC63388ce65557lJCQoClTpqikpEQzZ87UoUOHlJycrOzsbJWUlOiJJ55QQkKCRo4cqdde\ney2wfefOnbVs2TIlJCSosrJSq1at0ogRI5SYmKhx48bpyy+/rPFzBISUA77HOnXq5PLy8i5a/tRT\nT7nFixc755yLi4tzv/71r11FRYXLz893Xbt2dXl5ee7o0aPuzjvvdPv27XPOObd06VI3depU55xz\ny5cvd7/4xS/cuXPnXElJievVq5f761//6pxzbtKkSW7y5MmusrIy8P769evdxo0b3U9+8pPADIsW\nLXKzZ8++aLaFCxe6WbNmXbQ8LS3NvfTSS87v97uePXu6bdu2Oeec+/Of/+xGjx4d2PbOO+90R48e\ndc45N23aNPf8888755x76KGH3IIFC5xzzh0+fNj16tXLFRUVuZycHHf77be7lStXOuec27Bhgxs2\nbJhzzrlVq1a5Bx980J09e9YVFRW5uLg499RTTwW9v3Xr1rmf/vSnl/xcHT582N15552utLTUOedc\nWVmZi42NdYcPH3bOOTdz5kz35JNPusrKSnfs2DE3aNAgt2/fPnfq1CnXq1evwOfpueeec3PmzHHO\nVf/8z549O3C+i4uL3eDBgwOfs06dOrlXX33VOeec3+93d911l/P7/YH5X3vttUvODHwXuCJGgzBq\n1ChFRESobdu2atOmjfLy8vTxxx+rV69e6tSpkyTJ5/Ppo48+UmVlpSZPnqwlS5YoLCxMLVq00I9+\n9CN9/fXXgf0NGjRI4eHV//cZNGiQjh49qoMHD0qqutoeOXJkrWds3ry5/H6/du3apbZt26pfv36S\npKSkJB09elT/+te/JEl33323br75ZknS8OHD9be//U2lpaX67LPP9LOf/UyS1LFjR/Xo0SNwFVtR\nUaExY8ZIkrp27RrYV3Z2toYNGyaPx6NWrVopLi5OkoLeX006duyozp076/3335ckffjhh+rUqZM6\nduwoSdq0aZMeeughhYeHq3Xr1ho2bJjee+89ff7552rXrl3g8zR9+nTNnDnzov1v2bIlcCXesmVL\nDRs2TNu3bw98fPDgwZKkxo0bKywsTGvXrlVhYaFGjBihlJSUK84PhIrHegDgu9C8efPA2xEREaqs\nrJTf71d2drYSExOrrVdSUiK/368XX3xRBw8eVHh4uPLz8wPhkaQWLVpc9BiNGzfWsGHD9O6772rc\nuHEqKChQr169aj1jbm6ubrnlFp04cUI5OTnV5oqMjAzcNm/ZsmVgeXR0tE6cOCG/3y/nnHw+X+Bj\npaWlgZ+9RkREqGnTppKqbhOfO3dOknT8+HFFRUVV29+pU6eC3t+VjBkzRllZWbr33nuVlZVV7Zz6\n/X6lpqYqIiJCknTmzBklJiaquLhY0dHR1c7FpRQVFVVbLzo6Wt98803g/W/PW6NGjfTWW29p6dKl\nysjIUOfOnZWWlqbOnTvX6hiAukaI0WDFxMSob9++Wrhw4UUfmz59urp27arFixcrIiKiWpBqcs89\n9+iFF15QVFSUEhISLrpqvhy/368dO3YoOTlZZ8+e1S233KK33377ovU2bdqk4uLiwPvHjx9XixYt\n1KZNG0VERGjdunVq1qxZtW3Ov5K/UHR0tPx+f+D9b2Mf7P6uZMSIEXrhhRd06NAhZWdn6+WXXw58\nLCYmRosXLw5c+X5r27Zt1Y65rKxMx48fV7t27aqtd+ONN6qkpEQdOnSQJJWUlOjGG2+85By33367\nFi5cqPLycr3xxhtKS0vT6tWrgz4u4FpwaxoNVv/+/ZWdnR14ItTu3bv13HPPSZKOHTumLl26KCIi\nQtu3b9eRI0dUWlp6xX327dtXJSUlWrlypUaMGFGrOYqKijRt2jTdfffdio2N1Y9//GMVFBToH//4\nhyQpJydH06dPl/vPP5S2a9cu5eXlSZI2btyoHj16yOPxaNCgQYGYlJWVaebMmYH1Lqd79+6B2/FF\nRUX6+OOPJSno/Xk8Hp08eTIw64WaN2+uIUOG6Nlnn1VcXFy1OxXfPqlOqrr1PW/ePO3du1c9evRQ\nQUGBdu/eLanqJVaLFy8OPN6JEyckVd16zszMDJzT999/P3A7+nz79u3T448/rvLyckVGRqpbt24K\nCwur8biAUOKKGN97ycnJgduZkgIxvZKYmBjNnTtXjz76qM6ePatmzZpp1qxZkqRHHnlEL7zwgpYs\nWaKhQ4fqscce08KFC9WlS5ca9xkREaHExER9+OGH6tGjx2XX27hxo3bt2qWKigqdO3dOo0aN0qOP\nPipJatKkiRYuXKi5c+fq1KlTatSokZ544olALPr27atnn31WX3zxhTp06KCnn35akjRnzhylpaVp\nzZo1kqR7771X7du3r/EK9v7771d2drbi4+PVoUMHxcfHB66Qg9lfjx499NJLL2nAgAHasmVLtc/L\nt8aMGaOf//znevPNN6stT01N1bPPPquEhARJ0oABA9S5c2d5PB5lZGRo+vTpkqp+1vztM98TExPl\n8/n03HPPKTU1VXPmzFFiYqLCw8P18MMP64477rjo8Tt16qQf/OAHSkpKUqNGjdSsWTM988wzlz0m\nINTC3OW+dQUQlNdff13FxcV68skn63zfGRkZys/P1/PPP1/n+wZgg1vTQB0qKirSn/70p+v6l4kA\nuL5cU4hPnz6t+Pj4Sz6pBGhoVq9erbFjxyolJSXw8iIAuJJrujW9YMECbdu2TQ8++GC1lyEAAIDa\nCfqK+MCBA/rqq68u+axEAABQO0GHOD09/Zr+SgsAAAgyxOvXr1f37t2v6udgFRWVV14JAIAGJqjX\nEW/evFk5OTnavHmz8vPzFRkZqXbt2qlv376X3aa4uOZfhuD1RqmgwF/jOgge5ze0OL+hw7kNLc5v\n6Hi9UVdeSUGG+JVXXgm8nZGRoZtuuqnGCAMAgEvjdcQAABi65l9xOXXq1LqYAwCABokrYgAADBFi\nAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAA\nDBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwR\nYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIA\nAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAM\nEWIAAAwRYgAADBFiAAAMeYLZqKysTDNmzNCxY8d05swZ/epXv1JcXFxdzwYAQL0XVIg3bdqkbt26\nKSUlRbm5uZo8eTIhBgAgCEGFeOTIkYG38/Ly1LZt2zobCACAhiTMOeeC3djn8yk/P19Lly7Vbbfd\nVuO6FRWV8ngign0oAADqpWsKsSR98cUXevLJJ5WVlaWwsLDLrldQ4K9xP15v1BXXQfA4v6HF+Q0d\nzm1ocX5Dx+uNqtV6QT1res+ePcrLy5MkdenSRZWVlSoqKgpmVwAANGhBhTg7O1srVqyQJBUWFqq0\ntFStWrWq08EAAGgIggqxz+dTUVGRHnjgAT388MN65plnFB7OS5IBALhaQT1rukmTJnr55ZfrehYA\nABocLmMBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEA\nMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBE\niAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgB\nADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAwRIgBADBEiAEAMESIAQAw\nRIgBADBEiAEAMESIAQAwRIgBADDkuZaN58+fr127dqmiokJTpkzR8OHD62ouAAAahKBD/Omnn+rL\nL79UZmamiouLNXr0aEIMAMBVCjrEPXv21B133CFJio6OVllZmSorKxUREVFnwwEAUN8F/TPiiIgI\nNW3aVJK0du1aDRw4kAgDAHCVwpxz7lp28MEHH2jZsmVasWKFoqKiLrteRUWlPB5CDQDA+a7pyVpb\nt27V0qVL9cYbb9QYYUkqLi6t8eNeb5QKCvzXMg5qwPkNLc5v6HBuQ4vzGzpeb81d/FbQIfb7/Zo/\nf77eeusttWzZMtjdAADQoAUd4g0bNqi4uFipqamBZenp6erQoUOdDAYAQEMQdIgnTJigCRMm1OUs\nAAA0OPxmLQAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFi\nAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAA\nDBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwR\nYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIA\nAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMXVOI9+/fr/j4eK1ataqu5gEAoEEJOsSlpaWaO3eu\n+vTpU5fzAADQoAQd4sjISL3++uuKiYmpy3kAAGhQPEFv6PHI4wl6cwAAoGsI8dVq1aqpPJ6IGtfx\neqO+o2kaJs5vaHF+Q4dzG1qcX1vfWYiLi0tr/LjXG6WCAv93NE3Dw/kNLc5v6HBuQ4vzGzq1/QaH\nly8BAGAo6CviPXv2KD09Xbm5ufJ4PNq4caMyMjLUsmXLupwPAIB6LegQd+vWTStXrqzLWQAAaHC4\nNQ0AgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIM\nAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACA\nIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFC\nDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwAgCFCDACAIUIMAIAhQgwA\ngCFCDACAIUIMAIAhQgwAgKHrKsRhBQXWIwBXpbCs0HoEIChhYXztXi+CDvG8efM0YcIE+Xw+7d69\nO+gBwv7jP9Rk+WvS4MFqfXf3oPcDWPjx/+ysse+M0rLsZUQZ3yutW9+lFi0SJS1SeHi+9TgNmieY\njXbu3KkjR44oMzNTBw4c0KxZs5SZmVnr7cOKjqnJ2kxF/t//o8jtWwPLwyU1Xv2/ghkJl3G8/JBK\nKvKUfZNfhdEenfI2tR6pXjl77qy25m7R1twtClOYBt7cSUn/rbvuv62XWjbhXNeNG9S4cZn1EPVO\neHiRIiN3SNqhNm2k8vJ+Ki+/R6dPT5RzbazHa1CCCvEnn3yi+Ph4SdKtt96q48eP6+TJk2revHmt\ntm/8bpaa/3bGJT8W/fgjwYyEy4iWdLOk/y7p6SHSvIHGA9VjTk5bcvZpS84+tW2RqeQfW09Uf0RH\nW09Q/0VGbldk5HY510inT0+xHqdhcUH47W9/695///3A+xMnTnQHDx6scZvZsyud5AL/ZSvWZSu2\n2rI0pTknufbKDSyLVbZzkkvRsmrr5qq9y1JStWXLlOKcVG1ZkrKck1ySsqotd5JbppRqy7KU5HLV\nvtqyFC1zTnKxyg4sa69c5ySXprTv5TEpdpnTHDm1//cxqXlu1bJB1Y9JD8dW/Xf+skFpVes2//cx\nqX121bLY6sekX7d3mlj9mJSUUrXu+cs6ZVUt61T9mDRHVeufv2xiUtV+r/NjSkrKcs7JJSVd8Hly\ncsuWXfB5ykpyubkXfO2lLHPOycXGnve11z7XOSeXlnbB1152rMvOvuBrLy3NOSfXvv15X3ux2c45\nuZSUC772ctu7rKwLvvaWpTjnOKaGeUxV/27HxrrzjqlqWVqau+CYqv6rfkxV67Zv7847pqplKSnu\ngmNyLivLXXBMVetWP6aqZUlJ7oJjqlq/+jFV7df6mGorrOpgr87s2bM1aNCgwFXxxIkTNW/ePP3w\nhz+87DYFBf7A25F/fkct/kdyEN82IFj/r430Sm9pWU/rSRqGdydK93SyngK4eidOrNCZM+Osx6gX\nvN6oWq0X1K3pmJgYFRb++4kp33zzjbxeb623Lx91nwr3H1HkXzaocdb/VuTmjxRWUSHXtJkKD+cF\nMxKu4DZvlOYW+DXXepB6pt2rLXXOnVNkRKTibh6qe28drYT/OkLRjVuIFwHUDa83qto38qgbbdr8\nF4WHl0jyqLx8sE6fHqPy8pFyrrX1aA1OUCHu16+fMjIy5PP5tHfvXsXExNT658Pfci1b6YzvQZ3x\nPaiwkmLduP0jla9bH8w4gJnhHROVdOt9mnTXBJX7r6tXAwI1Ki8forNnhyoqyqfjxxtZj9OgBXVr\nWpJeeuklZWdnKywsTGlpabrttttqXP9K39HyXW9ocX5Di/MbOpzb0OL8hk5Ib01L0rRp04LdFAAA\n/CfupQEAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBg\niBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQ\nAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMA\nYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCIEAMAYIgQAwBgiBADAGCI\nEAMAYIgQAwBgiBADAGCIEAMAYCjoEO/cuVN9+vTRpk2b6nIeAAAalKBCfPToUb355puKjY2t63kA\nAGhQggqx1+vVokWLFBUVVdfzAADQoHiC2eiGG26o6zkAAGiQrhjiNWvWaM2aNdWWTZ06VQMGDLiq\nB2rVqqk8noga1/F6ucIOJc5vaHF+Q4dzG1qcX1tXDPH48eM1fvz4a36g4uLSGj/u9UapoMB/zY+D\nS+P8hhbnN3Q4t6HF+Q2d2n6Dw8uXAAAwFFSIN2/erOTkZG3dulW/+93vNHny5LqeCwCABiGoJ2sN\nHjxYgwcPruNRAABoeLg1DQCAoTDnnLMeAgCAhoorYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIA\nAAxdVyHeuXOn+vTpo02bNlmPUq/MmzdPEyZMkM/n0+7du63HqVf279+v+Ph4rVq1ynqUemn+/Pma\nMGGCxo4dq/fee896nHqjrKxMTzzxhCZNmqTx48fzb26InD59WvHx8Xr77bdrXC+o36wVCkePHtWb\nb76p2NhY61HqlZ07d+rIkSPKzMzUgQMHNGvWLGVmZlqPVS+UlpZq7ty56tOnj/Uo9dKnn36qL7/8\nUpmZmSouLtbo0aM1fPhw67HqhU2bNqlbt25KSUlRbm6uJk+erLi4OOux6p1XX31VLVq0uOJ6180V\nsdfr1aJFixQVxZ/jqkuffPKJ4uPjJUm33nqrjh8/rpMnTxpPVT9ERkbq9ddfV0xMjPUo9VLPnj31\n+9//XpIUHR2tsrIyVVZWGk9VP4wcOVIpKSmSpLy8PLVt29Z4ovrnwIED+uqrr2r166CvmxDfcMMN\nioio+e8V4+oVFhaqVatWgfdbt26tgoICw4nqD4/HoyZNmliPUW9FRESoadOmkqS1a9dq4MCB/BtR\nx3w+n6ZNm6ZZs2ZZj1LvpKena8aMGbVa1+TW9Jo1a7RmzZpqy6ZOnaoBAwZYjNOg8BtN8X3zwQcf\naO3atVqxYoX1KPXO6tWr9cUXX2j69OnKyspSWFiY9Uj1wvr169W9e3fdfPPNtVrfJMTjx4/X+PHj\nLR66wYmJiVFhYWHg/W+++UZer9dwIqD2tm7dqqVLl+qNN97gx1Z1aM+ePWrTpo3at2+vLl26qLKy\nUkVFRWrTpo31aPXC5s2blZOTo82bNys/P1+RkZFq166d+vbte8n1r5snayE0+vXrp4yMDPl8Pu3d\nu1cxMTFq3ry59VjAFfn9fs2fP19vvfWWWrZsaT1OvZKdna3c3Fw9/fTTKiwsVGlpabUfYeHavPLK\nK4G3MzIydNNNN102wtJ1FOLNmzdr+fLlOnjwoPbu3auVK1dyK6oOxMbGqmvXrvL5fAoLC1NaWpr1\nSPXGnj17lJ6ertzcXHk8Hm3cuFEZGRlEo45s2LBBxcXFSk1NDSxLT09Xhw4dDKeqH3w+n55++mk9\n8MADOn36tJ555hmFh183TxlqcPgziAAAGOJbIAAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwR\nYgAADBFiAAAM/X9YYeGjMIsTygAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1411,13 +1699,13 @@ { "cell_type": "code", "metadata": { - "id": "LCZwwJswRqYt", "colab_type": "code", - "outputId": "9a314a08-b3c1-4fe6-95cc-dc81fed2f04a", + "id": "x56eJiSXaBvu", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "c8e9ff5b-c2c2-4131-a14a-f51fa78abbf3" }, "source": [ "# Plot Linearly Dependent Vectors\n", @@ -1437,18 +1725,19 @@ "plt.title(\"Linearly Independent Vectors\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 21, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAFZCAYAAACizedRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Wl4FGXa9vGz01kgC4FgOqAoIigi\nggKiKBIkEAIoiAgGmOACg76CMEBkERxhZN8Cw66Iy6iPIJEBxgWUER5RQAgqCKOiohDWJISlQ/ZO\nvR96bM0DdJruLBXy/x2Hh+muuqsurnRydtVdXbEYhmEIAACYhl9FFwAAAIojnAEAMBnCGQAAkyGc\nAQAwGcIZAACTIZwBADAZwhlXlMaNG+vEiRMXPD937ly988475VLDgAEDtG7dOo/XX7NmjR5//PHL\n3s+ECRO0cOHCyx5XmtatW6cBAwb4tI133333gucOHTqkZs2a6dy5cxcs69u3r1avXu3VvrZu3apj\nx455NRYoT4QzqoTExET169evosvA/5Genq5XXnnlgufr16+vW2+9VR999FGx5w8fPqzvv/9eXbt2\n9Wp/r7/+OuGMSoFwRpUwbtw4LVmyRJIUExOjlStXqnfv3rr33ns1Y8YM13qbNm1S9+7d1bFjRw0c\nOFCZmZmSpJycHI0YMUJxcXGKiYnRzJkzXWMGDBigefPmqWvXrvrqq69czw8fPlwrVqxwPT5w4IDa\ntGmjwsLCS9b55ZdfKj4+XnPnzlXXrl0VExOjnTt3SpJOnz6tgQMHKiYmRk8++aTsdrtr3E8//aSE\nhATFxcWpe/fu+vbbbyU5j8oHDx6s0aNHq1OnTnrggQf066+/SpLOnTun0aNHKy4uTh07dtR7773n\n2l7jxo21du1a9ezZU/fee69ef/11SVJRUZFefPFF3Xffferdu7e+//571xhvtte3b18dO3ZMXbp0\nUX5+frFe9OrVS+vXry/23Pr169WpUyeFhoYqPz9fU6ZMcX1Pli1b5lpv37596tWrl+Li4pSQkKDU\n1FTNnz9fO3bs0OjRo/Xhhx8qLy9PL7zwguLi4tS1a1fNmDFDDodDkvM1smjRIsXFxenYsWP66KOP\n9MADD6hr167q3r27vvzyy0t+D4FSYQBXkJtuusk4fvz4Bc+PHTvWWLx4sWEYhtGhQwdj1KhRRmFh\noXHixAmjadOmxvHjx43Dhw8bLVq0MH744QfDMAxj2bJlxrBhwwzDMIwVK1YYf/7zn42ioiLjzJkz\nxp133mns2rXLMAzDSEhIMAYOHGg4HA7X47Vr1xobN240evbs6aph0aJFxl//+tcLanvvvfeMxx57\nzDAMw9ixY4dx6623Gp988olhGIaxfPly4/HHHzcMwzBmzpxpjBo1yjAMw0hNTTVatGhhLFiwwHA4\nHEbnzp2Nd9991zAMw0hJSTHuvfdeo6CgwHjvvfeMW265xfj6668NwzCMpKQkY8iQIYZhGMZzzz1n\njBkzxnA4HMapU6eM9u3bu/7tN910kzF79mzDMAxjz549RrNmzYzCwkJjy5YtRufOnY2srCwjJyfH\n6N27t5GQkOD19nbs2GF06tTpot9Lu91u3H777caRI0dcz3Xu3Nn44osvXP187LHHjLy8POP8+fNG\nz549jU8//dQwDMOIjY01tmzZYhiGYbz22mvG4MGDXd/7375vL730kjF48GCjoKDAyMnJMR5++GFj\n7dq1rvWef/55137vuusuVx27du0ypk2bdtGagdLCkTOqpO7du8tqtSoqKkq1a9fW8ePH9dlnn+nO\nO+/UTTfdJMl5VPfpp5/K4XBo4MCBWrJkiSwWi8LDw3XjjTfqyJEjru21b99efn7Ff5zat2+vw4cP\n6+DBg5KcR+XdunUrsbaQkBB16tRJktS0aVPXadiUlBTX6dx69erpzjvvlCQdPHhQp06dUu/evSVJ\nrVq1UkREhL7++mtJUsOGDXX77bdLkuLi4lzPb968WY8++qj8/PwUERGh2NhYffzxx646HnzwQVcN\neXl5OnXqlHbt2qX27dsrJCRE1apVK3Z62ZvtuRMaGqqOHTu6jp6/+eYb5eXlqU2bNq799e/fX4GB\ngQoODtaDDz6ojz/+WL/88otOnz6t9u3bS5ISEhIuOje/ZcsWPfLII/L391e1atXUvXt3ffHFF67l\n9913n+vr2rVra+XKlTp69KjuuOMOPffcc25rB3zlX9EFABUhNDTU9bXVapXD4ZDdbldKSoq6dOlS\nbL0zZ87IbrdrxowZOnjwoPz8/HTixAn16tXLtV54ePgF+wgKClJsbKzef/999e7dW+np6a5AdScs\nLMz1tZ+fn4qKiiRJZ8+eLbasRo0akpynk3Nzc4sFZVZWls6cOXNBbTVq1HBdZGW32zVixAhZrVZJ\n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\nh+7eOHh1jNe2bVtt3LhRkrR//37ZbDbXfLPdbtegQYOUn58vSdq1a5duvPFGb3ZT4Vq3LtK6ddmK\niiqSJP3rX9k6edKu997L1vXXF7kdO3dukK6/Pkw2W5j+/OdqOnaMi0iA0uK/9xvVjLtPkbYauurW\nRiUGc3679sr8fJfS084pc+8Pyu8Ux4VdMDWvjpxbtmyppk2bqm/fvrJYLJo4caLWrFmjsLAwxcbG\nKjo6WvHx8QoKCtItt9zi0VGzWTVpUqT338/WmDHVdOedDlksUrt2Du3ceV6S9MsvFj3/fDV98sml\nW7l+fYDWrw/47/Ycmjs3V3fc4T7cAfxBUZEC31+nsBHPyC/LsyOhnCf+rPPjnpdRK6KMiwNKn8Uw\n0dVaZj79UFRU8lyy3e48Yl6yJNCjbfr7G5o3L1d9+hSWyjy12U/hVAb0sHSUSh9zchS8+O8KmTXN\n4yH26bOV++hAKSDAt32bAK9F35m9h+5OaxPOZcThkFauDNDIkZ7f5H748DyNHJkvbz8ebvYXYmVA\nD0uHt330O3FcIZMmqNqaZI/Wd9S7VvakhSpo3+GKO03Na9F3Zu9hqc85o2RWq/SnPxUoLc2utDS7\n1q3LVqNGDrdjFiwIUoMGznnqxx6rptTUK+uXDXAx/l/vVs2O7RRpq6HazRuXGMz5HToqc8dXzvnj\nr/ar4L6YKy6YAcK5nNx9t0PbtmUrLc2ulJQsde1a4Hb9jz4KUKtWzs9T33NPsHbssJZTpUAZKypS\n0Hvv6qrrbIq01VCtuA4K+HaP2yHZTw1Rxk+pzs8fr/qnHDc0KqdigYrBH76oANddZ+iNN3Il5Sor\nS5o/P1ALFlz6Hr0//WRVjx6/fyZr3rxc9e1bICt5jcoiO1vBC5IUkjTL4yH22fOV+6dHJX9+TaHq\nYc7ZRBwOKTnZXyNHVlNhoWen6YYMydezz+YpNNT88yuVAT0sHZGRYTq153uF/vU5Bf1rrUdjHNc3\ncM4ft23HaWrxWiwNZu8hc86VhNUqxccX6tixLKWl2fX+++fVpIn7eeolSwJ1ww3Oeeru3aVff+WX\nGiqO/64vVat9G8liUe3bm5QYzHmdu+jUzj3O+eOde1RwbzTBDIgj50rj6FGLJk4Mcn1euiTXX1+k\npKRctW3r4HfdZTD7O23TcTgUtHqlwkY+I4vD/RvJ32QPGa7sZ8fKCK2ct1UsL7wWfWf2HvJRqitM\n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\n5jGoQSPnuwAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1460,13 +1749,13 @@ "colab_type": "text" }, "source": [ - "# Basis\n", + "## Basis\n", "\n", "The basis of a vector space $V$ is a set of vectors that are linearly independent and that span the vector space $V$.\n", "\n", "A set of vectors spans a space if their linear combinations fill the space.\n", "\n", - "For example, the unit vectors in the \"Linearly Independent Vectors\" plot above form a basis for the vector space $\\mathbb{R}^2$ becayse they are linearly independent and span that space.\n", + "For example, the unit vectors in the \"Linearly Independent Vectors\" plot above form a basis for the vector space $\\mathbb{R}^2$ because they are linearly independent and span that space.\n", "\n", "## Orthogonal Basis\n", "\n", @@ -1476,9 +1765,9 @@ "\n", "An orthonormal basis is a set of vectors that are linearly independent, span the vector space, are orthogonal to eachother and each have unit length. \n", "\n", - "For more on this topic (it's thrilling, I know) you might research the Gram-Schmidt process -which is a method for orthonormalizing a set of vectors in an inner product space.\n", + "The unit vectors form an orthonormal basis for whatever vector space that they are spanning.\n", "\n", - "The unit vectors form an orthonormal basis for whatever vector space that they are spanning." + "*For more on this topic (it's thrilling, I know) you might research the Gram-Schmidt process -which is a method for orthonormalizing a set of vectors in an inner product space.*" ] }, { @@ -1490,7 +1779,11 @@ "source": [ "# Rank\n", "\n", - "The rank of a matrix is the dimension of the vector space spanned by its columns. Just because a matrix has a certain number of rows or columns (dimensionality) doesn't neccessarily mean that it will span that dimensional space. Sometimes there exists a sort of redundancy within the rows/columns of a matrix (linear dependence) that becomes apparent when we reduce a matrix to row-echelon form via Gaussian Elimination.\n", + "The rank of a **matrix** is the dimension of the vector space spanned by its columns. \n", + "\n", + "- Just because a matrix has a certain number of rows or columns (dimensionality) doesn't necessarily mean that it will span that dimensional space. \n", + "\n", + "- Sometimes there exists a sort of redundancy within the rows/columns of a matrix (linear dependence) that becomes apparent when we reduce a matrix to row-echelon form via Gaussian Elimination.\n", "\n", "## Gaussian Elimination \n", "\n", @@ -1567,6 +1860,160 @@ "What does this mean? This means that even though the original matrix is a 3x3 matrix, it can't span $\\mathbb{R}^3$, only $\\mathbb{R}^2$" ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "094UqxBoFekW", + "colab_type": "text" + }, + "source": [ + "## Linearly Dependent Vectors\n", + "\n", + "- Two vectors that live on the same line. \n", + "\n", + "- There is no linear combination (no way to add, or subtract scaled version of these vectors from each other) that will ever allow us to create a vector that lies outside of that line. " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "RAlWBSXZQYn5", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "4e380024-cf56-4efe-98d1-936b31dba231" + }, + "source": [ + "# Plot Linearly Dependent Vectors\n", + "\n", + "# Axis Bounds\n", + "plt.xlim(-1.1,4) \n", + "plt.ylim(-1.1,4)\n", + "\n", + "# Original Vector\n", + "v = [1,0] \n", + "\n", + "# Scaled Vectors\n", + "v2 = np.multiply(3, v)\n", + "v3 = np.multiply(-1,v)\n", + "\n", + "# Get Vals for L\n", + "axes = plt.gca()\n", + "x_vals = np.array(axes.get_xlim())\n", + "y_vals = 0*x_vals\n", + "\n", + "# Plot Vectors and L\n", + "plt.plot(x_vals, y_vals, '--', color='b', linewidth=1)\n", + "plt.arrow(0,0, v2[0], v2[1], linewidth=3, head_width=.05, head_length=0.05, color ='yellow')\n", + "plt.arrow(0,0, v[0], v[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, v3[0], v3[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"Linearly Dependent Vectors\")\n", + "plt.show()" + ], + "execution_count": 22, + "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": "IEXONBghF_y2", + "colab_type": "text" + }, + "source": [ + "\n", + "- In this case, the span of these vectors (lets say the green one and the red one for example - could be just those two or a whole set) is the line that they lie on, since that's what can be produced by scaling and composing them together.\n", + "\n", + "- The span is the graphical area that we're able to cover via a linear combination of a set of vectors." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dy4Ec2jwFqmY", + "colab_type": "text" + }, + "source": [ + "## Linearly Independent Vectors\n", + "\n", + "Linearly independent vectors are vectors that don't lie on the same line as each other. If two vectors are linearly independent, then there ought to be some linear combination of them that could represent any vector in the space ($\\mathbb{R}^2$ in this case)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "LCZwwJswRqYt", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "f74df68c-2b88-4a8a-f81a-60f874385085" + }, + "source": [ + "# Plot Linearly Independent Vectors\n", + "\n", + "# Axis Bounds\n", + "plt.xlim(-2,3.5) \n", + "plt.ylim(-1,3)\n", + "\n", + "# Original Vector\n", + "a = [-1.5,.5] \n", + "b = [3, 1]\n", + "\n", + "# Plot Vectors\n", + "plt.arrow(0,0, a[0], a[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, b[0], b[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"Linearly Independent Vectors\")\n", + "plt.show()" + ], + "execution_count": 23, + "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": "uXR8s9OF1k27", + "colab_type": "text" + }, + "source": [ + "## Linear Projections in $\\mathbb{R}^{2}$\n", + "\n", + "- Defined + Explained\n", + "- Visualising the steps" + ] + }, { "cell_type": "markdown", "metadata": { @@ -1574,7 +2021,7 @@ "colab_type": "text" }, "source": [ - "# Linear Projections in $\\mathbb{R}^{2}$\n", + "## Linear Projections in $\\mathbb{R}^{2}$\n", "\n", "Assume that we have some line $L$ in $\\mathbb{R}^{2}$." ] @@ -1584,11 +2031,11 @@ "metadata": { "id": "Cp_QRhVPchp4", "colab_type": "code", - "outputId": "49b2f1ab-1f49-4edf-fdb2-98f0081f3c07", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "ffcfe359-e616-419f-afad-4399c4169adb" }, "source": [ "# Plot a line\n", @@ -1601,18 +2048,19 @@ "plt.title(\"A Line\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 24, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAFZCAYAAABE5CwVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAE85JREFUeJzt3X9s1/WdwPFXaSkUWn513yoQbkvM\nEjmQc6ib6BQJnTCzLSGG8Y3bEqNBE3NmZPEHq0a5uJCVuy0sNej8wchwCZ2IzDk3lAXUJQjTLHpw\nGpTt1HAwQTgO1wJSen/UQ72WX1++5cXaxyMxKfX97efV9/vr99lvS79WdHZ2dgYAkGJA9gAA0J8J\nMQAkEmIASCTEAJBIiAEgkRADQCIhhr8TxWIxvvGNbxx3zfz582PJkiXd3v/aa6/FjTfe2FujAadB\niOHvwNatW6Ouri7GjBkTf/rTn0759pMmTYpHH320FyYDTldV9gDAiT355JMxc+bMGDRoUKxevTq+\n8IUvnNLtN27cGHfffXc899xz0dLSEnv37o2//vWv8cYbb8TIkSNjyZIl0dDQEDt37owFCxbEX/7y\nl4iIaGpqiqlTp/bGpwR8xDNiOMt1dHTEc889FzNmzIjp06fHCy+8EIcOHTqtj/m73/0umpqaYu3a\ntVFfXx9PPPFERETceeedcf7558eaNWvioYceijvuuCP27t1bjk8DOAYhhrPcH/7wh7jggguitrY2\nampq4otf/GKsW7futD7mxRdfHGPHjo2KiooYP3587NixI9ra2mLjxo1x/fXXR0TEZz/72bjooovi\n+eefL8NnARyLb03DWW7VqlXxwgsvxMUXXxwRXc+Q9+3bFzNmzCj5Y9bV1R19u7KyMjo6OmL//v3R\n2dkZxWLx6L9ra2uLSy+9tPThgRMSYjiL7du3LzZt2hQbN26M6urqiIg4fPhwTJ06Nfbs2ROjRo0q\n27Xq6+ujsrIynnjiiRg6dGjZPi5wfL41DWex3/zmN3HppZcejXBERFVVVXz5y1+Op59+uqzXqqqq\niqlTp8aKFSsiIqK9vT2+//3vx44dO8p6HeDThBjOYqtXr47GxsZu7//KV74Sq1ev7vE2P//5z2Pm\nzJlH//nhD3940tdbsGBB/PGPf4yZM2fGrFmzYty4cTF69OiS5wdOrML/jxgA8nhGDACJTivEBw4c\niMbGxli1alW55gGAfuW0QvzAAw/E8OHDyzULAPQ7JYd427Zt8dZbb8VVV11VxnEAoH8pOcTNzc0x\nf/78cs4CAP1OSSFevXp1XHjhhTFu3LiTvo2/nA0A3ZX0ylrr16+Pd999N9avXx87d+6M6urqOPfc\nc+Oyyy475m0qKipi1679JQ/KiRUKdfa4l9njM8M+9z573PsKhboTL4oSQ7x48eKjb7e0tMTYsWOP\nG2EAoGd+jxgAEp32//Th1ltvLcccANAveUYMAImEGAASCTEAJBJiAEgkxACQSIgBIJEQA0AiIQaA\nREIMAImEGAASCTEAJBJiAEgkxACQSIgBIJEQA0AiIQaAREIMAImEGAASCTEAJBJiAEgkxACQSIgB\nIJEQA0AiIQaAREIMAImEGAASCTEAJBJiAEgkxACQSIgBIJEQA0AiIQaAREIMAImEGAASCTEAJBJi\nAEgkxACQSIgBIJEQA0AiIQaAREIMAImEGAASCTEAJBJiAEgkxACQSIgBIJEQA0AiIQaAREIMAImE\nGAASCTEAJKoq5Ubt7e0xf/78eP/99+PgwYNxyy23xLRp08o9GwD0eSWFeN26dTFx4sSYO3dubN++\nPW644QYhBoASlBTia6655ujbO3bsiHPOOadsAwFAf1JSiP9PsViMnTt3xoMPPliueQCgX6no7Ozs\nPJ0P8Prrr8cdd9wRTz31VFRUVJRrLgDoF0p6Rrx58+aor6+P0aNHx/jx46OjoyP27NkT9fX1x73d\nrl37SxqSk1Mo1NnjXmaPzwz73Pvsce8rFOpOal1Jv7708ssvx9KlSyMiYvfu3dHW1hYjR44s5UMB\nQL9WUoiLxWLs2bMnrrvuurjpppvinnvuiQED/EoyAJyqkr41PXjw4PjRj35U7lkAoN/xNBYAEgkx\nACQSYgBIJMQAkEiIASCREANAIiEGgERCDACJhBgAEgkxACQSYgBIJMQAkEiIASCREANAIiEGgERC\nDACJhBgAEgkxACQSYgBIJMQAkEiIASCREANAIiEGgERCDACJhBgAEgkxACQSYgBIJMQAkEiIASCR\nEANAIiEGgERCDACJhBgAEgkxACQSYgBIJMQAkEiIASCREANAIiEGgERCDACJhBgAEgkxACQSYgBI\nJMQAkEiIASCREANAIiEGgERCDACJhBgAEgkxACQSYgBIVHU6N160aFG88sorcfjw4bj55pvj6quv\n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\nWbduXUycODHmzp0b27dvjxtuuCGmTZuWPVaf9cADD8Tw4cNPuO6MPCP2kpi9a8OGDdHY2BgREeed\nd17s27cvPvjgg+Sp+pbq6up4+OGHo6GhIXuUPuuSSy6Jn/zkJxERMWzYsGhvb4+Ojo7kqfqWa665\nJubOnRsRETt27IhzzjkneaK+a9u2bfHWW2/FVVdddcK1ZyTENTU1UVlZeSYu1S/t3r07Ro4cefTP\no0aNil27diVO1PdUVVXF4MGDs8fo0yorK2PIkCEREbFy5cq48sorPW70kmKxGLfddls0NTVlj9Jn\nNTc3x/z5809qbdm/NV3Ol8SkNH4jjb9na9eujZUrV3ptgl60YsWKeP311+P222+Pp556KioqKrJH\n6lNWr14dF154YYwbN+6k1pc9xF4S88xraGiI3bt3H/3ze++9F4VCIXEiKM2LL74YDz74YDzyyCN+\nlNULNm/eHPX19TF69OgYP358dHR0xJ49e6K+vj57tD5l/fr18e6778b69etj586dUV1dHeeee25c\ndtllPa4/I39Zi951+eWXR0tLSxSLxdiyZUs0NDREbW1t9lhwSvbv3x+LFi2KZcuWxYgRI7LH6ZNe\nfvnl2L59e9x1112xe/fuaGtr+9SPtSiPxYsXH327paUlxo4de8wIR5yhEH/yJTG3bNkSy5cv922n\nMpo8eXJMmDAhisViVFRUxL333ps9Up+zefPmaG5uju3bt0dVVVWsWbMmWlpaBKOMnnnmmdi7d2/M\nmzfv6Puam5tjzJgxiVP1LcViMe6666647rrr4sCBA3HPPffEgAFeTiKbl7gEgES+FAKAREIMAImE\nGAASCTEAJBJiAEgkxACQSIgBIJEQA0Ci/wUEeW2vFjMrIQAAAABJRU5ErkJggg==\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1632,11 +2080,11 @@ "metadata": { "id": "saQTXeIlfcQk", "colab_type": "code", - "outputId": "169b2e09-264a-4249-d94a-463e6c09abeb", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "11d66ac4-cd67-487b-cdfa-b37c7b2bd71c" }, "source": [ "# Plot a line\n", @@ -1666,18 +2114,19 @@ "plt.title(\"v scaled two different ways\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 25, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAFZCAYAAABE5CwVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHD1JREFUeJzt3X9U1vX9//HHBUSmgD/YhWHHyvwe\n0/LrD8wYmb8SApFW5kw0W81GunVsrqyZrnDHouncclkps4xmO4NZpq7aNAo8Vv6iH/5gLc0+JZIW\nBCp++KXw+v7Bt2viT7zk6mlwv53jOfK+3tf7er5fcrxfP8HjnHMCAAAmgqwHAACgNSPEAAAYIsQA\nABgixAAAGCLEAAAYIsQAABgixMBZ2rt3r6666qqzvl5CQoI2bdp0wvatW7fqP//5T3OM1qTb37Zt\nm+6++25JUlFRkRISEnTzzTdLkqZPn66hQ4dq/fr1AZ/ns88+05YtWwJ+O8D5jhADxl555RV98skn\n39nt9enTR88//7wk6f3335fX69WqVaskSa+//rqWLVumwYMHB3yO3NxcQgyIEKMF+PGPf6w1a9b4\nvs7NzdVtt912wn7//Oc/lZKSopEjR+qmm27yPTotKirS7bffroSEBI0ZM0aFhYWSGh6xjR8/XiNH\njlRCQoJee+21E47pnNPTTz+txMREDR8+XI899pjq6uokSTt27NCoUaOUmJiojIyMk87+t7/9TatW\nrdLvf/97LV26VEOGDPFdlp6ertTUVN/XU6ZM0dq1a/Xll1/q7rvvVmJiolJSUrRy5cqTHvtUt79p\n0yYlJCToww8/1Pz58/Xvf/9bP/rRj3THHXeovr5ed999t9atW6f9+/drypQpSkxMVGJiotatWyep\n4RmB66+/XhkZGZo4caKkhqCPGTNGCQkJuu2221RUVCRJWrFihe677z7NnDlTiYmJSk5O1q5du/T2\n228rMzNTf/nLX/S73/2u0dwPPvigli9fLkkqLS3VlVdeqXfffVeSVFhYqJtuukmS9MwzzygxMVHx\n8fGaPHmyDh06pF27dunaa69VbW2t73j33XefsrKytHPnTo0bN06jRo3SjTfeqJdeeumk6wZ85xzw\nPffnP//ZPfTQQ76vH3roIbd06dIT9ouNjXV79+51zjm3ZcsWl5GR4Zxz7s4773R//etfnXPOvfnm\nmy45Odk559zkyZNdZmamc865zZs3uz59+rja2lpXVFTkevXq5Zxz7tVXX3WjRo1yhw4dckeOHHH3\n3HOPW7ZsmXPOuTFjxrjs7GznnHNvvPGG69mzp9u4ceMJc02cONGtXLnSOefc0KFD3Zdffum7/q23\n3upqampcfX29i42NdQcOHHCTJk1yixcvds45t3fvXjdgwABXVFR0wnFPdfsbN2508fHxzjnnXnnl\nFXfnnXf6rtOjRw+3b98+55xzP/nJT9yTTz7pnHPu888/d9dee60rKytzRUVF7uqrr3YrVqxwzjlX\nUVHhBg4c6N555x3nnHP/+Mc/3OjRo33H79u3r9u+fbtzzrnZs2e7WbNmOeec+/Wvf+2eeeaZE+Ze\nvny5e/jhh31z33bbbe6pp55yzjmXlZXlHn/8cbd9+3YXFxfnKioqXF1dnbvrrrt8x0pJSXG5ubnO\nOeeqq6td//793f79+93UqVN9M3/zzTfu5z//uaupqTnh9oHvGo+I8b2XlJSkdevWqa6uTkePHlV+\nfr6SkpJO2C8yMlLZ2dkqLi7WNddco4cfflg1NTXatGmTUlJSJEkjRozQ3//+d0nSs88+63stdcCA\nAaqpqVFJSUmjY+bl5WnMmDEKDw9XSEiIxo4dq7Vr16qmpkbbt29XcnKyb8aLLrrojOcSGxurDz/8\nUOXl5brwwgvVq1cvbd++XZ9++qm6dOmitm3b6r333tOECRMkSZdccoliY2O1cePGRsfx9/a/VVlZ\nqU2bNumuu+6SJF122WUaMGCA71HxkSNHlJCQIKnh0XDnzp01aNAgSVJKSor27NmjL7/8UpLUvXt3\n9e7dW5J01VVXad++fWdcg48++sh37PHjx+uDDz7wfR0XF6fevXsrPz9fYWFhCgoKUv/+/X2PwlNS\nUvT6669Lkt555x1dddVV6ty5syIjI7VmzRoVFhaqY8eOevbZZxUaGtrkNQECJcR6AOBcde3aVdHR\n0frwww915MgRdevWTdHR0Sfst2jRIi1atEi33nqroqOjNXPmTF122WWqr69XeHi4JMnj8ahdu3aS\npPXr12vRokUqLy+Xx+ORc0719fWNjllRUaHnn39eOTk5kqS6ujp16tRJBw4ckCSFhYX5jhsREXHG\nc/k2QqGhoerXr5+6deumDz74QGFhYYqLi9OBAwfknPPNK0kREREqKytrdBx/b//Y83LONXpqvLKy\n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\nQEuXLpUklZaWqrKyUh07dmzWwQAAaA38CnFqaqrKyso0YcIE3XPPPXr00UcVFMRHkgEAOFt+vWu6\nTZs2+sMf/tDcswAA0OrwMBYAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QY\nAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAA\nQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOE\nGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgA\nAEOEGAAAQ4QYAABDhBgAAEOEGAAAQ4QYAABDhBgAAEMh53LlefPm6f3339fRo0c1efJk3Xjjjc01\nFwAArYLfId64caN27dqlnJwclZeXa/To0YQYAICz5HeIBw4cqD59+kiSIiIiVFVVpbq6OgUHBzfb\ncAAAtHR+v0YcHBystm3bSpJefvllDRkyhAgDAHCWPM45dy4HyM3NVWZmppYuXarw8PBT7nf0aJ1C\nQgg1AADHOqc3a61fv16LFy/Wc889d9oIS1J5eeVpL/d6w1VSUnEu4+A0WN/AYn0Dh7UNLNY3cLze\n03fxW36HuKKiQvPmzVNWVpY6dOjg72EAAGjV/A7xG2+8ofLyck2bNs23be7cuerSpUuzDAYAQGvg\nd4jHjRuncePGNecsAAC0OvxkLQAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAM\nEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFi\nAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAA\nDBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwR\nYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMEWIAAAwRYgAADBFiAAAMnVOId+7cqfj4eL300kvNNQ8A\nAK2K3yGurKzUnDlzFBcX15zzAADQqvgd4tDQUC1ZskRRUVHNOQ8AAK1KiN9XDAlRSIjfVwcAADqH\n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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1705,11 +2154,11 @@ "metadata": { "id": "XUXGGq3uk4Ka", "colab_type": "code", - "outputId": "933311f7-be30-4c29-aa11-ddece686ff39", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "d58cb82c-2240-47af-fe0e-4cbe2d887f80" }, "source": [ "# Plot a line\n", @@ -1735,18 +2184,19 @@ "plt.title(\"vector w\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 26, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAFZCAYAAABE5CwVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAHR1JREFUeJzt3Xl01PW9//HXJCMESCDbBIJSRRRF\nECGKbIKAEQJSKxeQQEG5tKg/LdW2FDmo4AUv94Ye6hL8uYNWeiuFS5Heq7IHaGULsgjFslXACDJJ\nhhBIAsnk+/tjzi+S5ss2mZnPZOb5OIdz4Pv5JnlnDocn78nmsCzLEgAAMCLG9AAAAEQzQgwAgEGE\nGAAAgwgxAAAGEWIAAAwixAAAGESIgQhUWFioNWvWmB4DwBUgxEAE2rJli9auXWt6DABXgBADYWLE\niBFasWJFzZ9Xr16thx9+uOb3P/zhD3XfffdpwoQJKi4uliRVVFRoypQpGjBggAYPHqyPP/5Ye/fu\n1cyZM7VixQr94he/kCR9+umnGjp0qLKysvTII4/o6NGjkqTc3Fw9//zzGjFihN5///1a84wZM0af\nf/65JGnXrl265ZZb9PXXX0uSVq5cqSeeeCKYDwcQNQgxECYGDRpUa4tdtWqVBg8erGPHjmnKlCma\nO3eu1qxZo+7du+vFF1+UJM2fP1+VlZVau3atFixYoFmzZik1NVVjx47VoEGD9PLLL+vbb7/VCy+8\noNdff12fffaZ+vXrp+nTp9e8nfXr1+vtt9/W+PHja83TvXt37dixQ5K0bds2denSRV988YUkKT8/\nXz179gzuAwJECUIMhImsrCytX79eXq9XVVVVysvLU1ZWljZs2KC7775b7du3lyRlZ2dr7dq18nq9\n2rBhgx544AFJUqtWrbR+/Xq1bNmy1uv961//qu7du+v666+XJI0cOVJbtmxRVVWVJOmOO+5QcnJy\nnXm6d++unTt3SvKFd/To0TUh3r59OyEGAsRpegAAPm3atFF6erp27NihyspKtW3bVunp6SotLVV+\nfr6ysrJq7o2Pj9epU6fk8XiUkJBQc71Zs2Z1Xq/H41Hz5s1r/pyQkCDLsuTxeCRJLVq0sJ2na9eu\n2rdvn7xer44cOaLBgwdrwYIFOnv2rNxud81/DADUDyEGwsigQYO0Zs0aVVZWavDgwZKktLQ09erV\n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\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1780,11 +2230,11 @@ "metadata": { "id": "V6h7LIAWpjkm", "colab_type": "code", - "outputId": "ae48bde0-23f0-4a84-c6ef-66927565d93b", "colab": { "base_uri": "https://localhost:8080/", - "height": 363 - } + "height": 281 + }, + "outputId": "da983e6c-cf8c-41d5-816d-e3a3deb4ac15" }, "source": [ "# Axis Bounds\n", @@ -1810,18 +2260,19 @@ "plt.title(\"Shadow of w\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 27, "outputs": [ { "output_type": "display_data", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeIAAAFZCAYAAABE5CwVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl0VPX9//HXJAMETCAhmUBAvgpI\nJGySoLIpi4Yd9etPI8Gq9EsLWhXl51YOVsi3+KUN1SqiItVCXfpVCqJiVRb7Iy2lbAERgyAQKksk\nMFkIgSSQ5f7+mNNoyiXAZGY+yczzcQ7nwL03mXfu4fDkPZkkDsuyLAEAACPCTA8AAEAoI8QAABhE\niAEAMIgQAwBgECEGAMAgQgwAgEGEGPCjnJwcTZo0SaNHj9aoUaM0YcIEZWdnS5I2b96sESNGNPgx\nRowYoc2bNzf4/VysP/7xjxo8eLAWLlwYsMcEgpnT9ABAsLIsSw888ICeffZZDRs2TJK0Zs0aPfTQ\nQ8rKyjI6W0OsWbNG06dPV1pamulRgKDARgz4SXFxsdxut6655praYyNHjtRHH32kli1b1h5buHCh\nxowZo9TUVG3atEmSVF5erunTp2vUqFG66aablJmZWXt9Tk6Oxo0bp1GjRmnu3Ll1HvOzzz7T+PHj\nNXr0aN133306dOiQNm7cqIkTJ9ZeM2XKFD3++OO1f77lllu0a9euOu/nzJkzmjVrlkaNGqUxY8bo\n17/+taqrqzVv3jzt2LFD8+fP14IFC+q8zdChQ3Xw4EFJ0qeffqpevXqpvLxckrRkyRI9++yzXt1H\nINgRYsBPYmJi1Lt3b913331atmyZDh8+LElq37597TX5+flKTEzUZ599pokTJ9Y+3fvuu+/q9OnT\nWrVqlT744AOtWLGi9intjIwM3XfffVq9erWSk5N15MgRSdJ3332nZ555Rq+88opWrVqlYcOGadas\nWUpOTta+fftUWVmp6upqFRUV6cCBA5KkkydPyu12Kykpqc7sb775pvLz8/XJJ5/ogw8+UHZ2tv78\n5z/rqaeeUp8+ffTkk09q2rRpdd6mf//++uKLLyRJW7duVc+ePbVz505JUnZ2tgYMGODrWwwEBUIM\n+InD4dCSJUs0YsQIvfXWW0pNTdW4ceO0Zs2a2msiIyN18803S5J69Oih/Px8SdLkyZP16quvyuFw\nqE2bNurWrZuOHDmiM2fO6KuvvtLYsWMlSaNHj67drjds2KD+/fvriiuukCSlpaVp8+bNcjqd6t69\nu3bv3q09e/aoS5cuio6O1rFjx7R9+3Zdf/31Cgur+09BVlaW7rrrLjmdTkVEROiWW27Rhg0b6v14\n+/fvrx07dkiSvvzyS915553avn177Z/79+/f0FsKBCVCDPhRVFSUHnnkEX388cfasGGDbrvtNj32\n2GPKzc2V5Anxv4SFhammpkaS9O2332ratGkaOXKkRo8erZycHNXU1OjEiRN13s7hcKh169aSPE+F\n/+v3/3psy7JUXFxcu61u3bpVycnJ6tu3r7Zt23beTbWoqEht2rSp/XObNm1UWFhY78f6rxCXlJSo\nWbNmGjBggLZv367c3FwlJCQoKirKm1sIBD1CDPhJfn5+7dPJkhQXF6epU6cqMTFR+/btq/dtf/nL\nX6pbt2767LPPtGrVKnXv3l2SauN46tQpSVJNTY1KSkokSbGxsbWhlqSSkhKFhYUpJiamNpLbtm1T\nSkqKkpOTtX37dm3btk0DBw485/Hj4uLqvK8TJ04oLi6u3pkvv/xylZWVaf369erbt686deqkI0eO\nnPcxAHgQYsBPjh49qoceekg5OTm1x3bu3KnvvvtOvXv3rvdtCwsLlZSUpPDwcG3YsEEHDx5UWVmZ\nIiIi1L17d61du1aS9Mknn+jMmTOSpMGDBys7O7v2c9HvvfeeBg8eLKfTqb59+2rPnj3au3evEhMT\n1bdvX23fvl2FhYXq3LnzOY8/bNgwLV++XNXV1SorK9NHH32koUOHXvBj7tevn9566y2lpKRIkrp0\n6aL333+fEAP14MuXAD9JTk7WnDlzlJGRodLSUtXU1CguLk4vvPCCOnbsWPsiKzs/+9nP9Ktf/Uqv\nvvqqbr75Zj388MN66aWXlJSUpIyMDM2cOVOLFi3SkCFD1LVrV0meF4E9++yzevDBB1VZWanLL79c\nc+bMkSQ1b95c7dq1U3h4uMLCwtS6dWudPXtWycnJto9/77336vDhwxo3bpwcDodGjx6tMWPGXPBj\n7t+/v1asWFH7fpOTkzV//vzaMAM4l4OfRwwAgDk8NQ0AgEENCnFFRYVSU1O1YsUKX80DAEBIaVCI\nFy5cWOdLHAAAwKXxOsS5ubnav39/7ffQBQAAl87rEGdmZmrGjBm+nAUAgJDjVYg//PDD2i/Yv1hV\nVdXePBQAAEHNq68jzsrK0uHDh5WVlaX8/Hw1b95c7du316BBg877NsXFZfW+T5crSm53qTfj4CJw\nf/2L++s/3Fv/4v76j8t1cd/W1asQv/jii7W/X7BggTp27FhvhAEAgD2+jhgAAIMa/C0u//1nkgIA\ngIvHRgwAgEGEGAAAgwgxAAAGEWIAAAwixAAAGESIAQAwiBADAGAQIQYAwCBCDACAQYQYAACDCDEA\nAAYRYgAADCLEAAAYRIgBADCIEAMAYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAMIsQAABhEiAEA\nMIgQAwBgECEGAMAgQgwAgEGEGAAAgwgxAAAGEWIAAAwixAAAGESIAQAwiBADAGAQIQYAwCBCDACA\nQYQYAACDCDEAAAYRYgAADCLEAAAYRIgBADCIEAMAYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAM\nIsQAABhEiAEAMIgQAwBgECEGAMAgQgwAgEGEGAAAg5zevFF5eblmzJihwsJCnTlzRg8++KCGDx/u\n69kAAAh6XoV43bp16tWrl6ZMmaK8vDxNnjyZEAMA4AWvQjx27Nja3x89elTt2rXz2UAAAIQSh2VZ\nlrdvnJ6ervz8fL322mvq3r17vddWVVXL6Qz39qEAAAhKDQqxJO3evVtPPfWUVq5cKYfDcd7r3O7S\net+PyxV1wWvgPe6vf3F//Yd761/cX/9xuaIu6jqvXjWdk5Ojo0ePSpKSkpJUXV2toqIib94VAAAh\nzasQZ2dna/HixZKkgoIClZWVKSYmxqeDAQAQCrwKcXp6uoqKinT33Xdr6tSpmjVrlsLC+JJkAAAu\nlVevmo6IiNDzzz/v61kAAAg5rLEAABhEiAEAMIgQAwBgECEGAMAgQgwAgEGEGAAAgwgxAAAGEWIA\nAAwixAAAGESIAQAwiBADAGAQIQYAwCBCDACAQYQYAACDCDEAAAYRYgAADCLEAAAYRIgBADCIEAMA\nYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAMIsQAABhEiAEAMIgQAwBgECEGAMAgQgwAgEGEGAAA\ngwgxAAAGEWIAAAwixAAAGESIAQAwiBADAGAQIQYAwCBCDACAQYQYAACDCDEAAAYRYgAADCLEAAAY\nRIgBADCIEAMAYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAMIsQAmhzHqVLTIwA+42zIG8+bN0/b\ntm1TVVWV7r//fo0cOdJXcwGAR3W1wnO+UrPsLWqWvUXO7C06O2K0Ts/5lenJAJ/wOsSbNm3Svn37\ntHTpUhUXF+v2228nxAAazFFcpGbbtsqZvUXN//ZXac/XanvqVO15KyJCZQ9PNzgh4Fteh/i6665T\nnz59JEmtW7dWeXm5qqurFR4e7rPhAISQigpFPfKAIj5cUe9l5ZMmy2rXLkBDAf7n9eeIw8PD1apV\nK0nS8uXLNWTIECIMwHsRESp9+Xc6/cSMei8rZxtGkGnQ54gl6fPPP9fy5cu1ePHieq+LiWklp7P+\nULtcUQ0dB/Xg/voX99cHamqkbZvPf/6RRxTbq1vg5gkR/N01y2FZluXtG69fv17z58/XG2+8oejo\n6Hqvdbvrf5WjyxV1wWvgPe6vf3F/G865Y7tiRg4773mrRQsVbd2pmvYJgRsqBPB3138u9j84Xj81\nXVpaqnnz5mnRokUXjDAAnJdlqc1d/2kb4dM/f1raulVV3ZNUfu+PiTCCktdPTX/66acqLi7W9Onf\nf74mMzNTHTp08MlgAIKfc+cOxaQOsT1XkLNfVny8LnNFqXjt3+QoLwvwdEBgeB3iCRMmaMKECb6c\nBUCosCy1vucutVi7+pxTp5+YobKnZtY92KKFrBYtAjQcEFgNfrEWAFyK8Jyv1PamwbbnCr7ax5cm\nIeTwLS4BBIZlqfWku20jfHr6E3IfP0mEEZLYiAH4XfjXu9R22EDbc4U7v+FFWAhpbMQA/Mey1Pon\n99lGuOzh6XIfP0mEEfLYiAH4Rfg3e9T2xuttzxXu2K2aDh0DPBHQOLERA/Aty1LU/f9lG+GyBx72\nbMFEGKjFRgzAZ8L37VXbwdfanivcvks1l3cK8ERA48dGDKDhLEtRD021jXDZT+/3bMFEGLDFRgyg\nQcJz96ntwH625wqzv1LNf1wR4ImApoWNGIB3LEuRjz5oG+HyH//EswUTYeCC2IgBXLKwA7mKHZBs\ne65wy5equbJzgCcCmi42YgCXJPLxR20jXH7vj+U+VkKEgUvERgzgooQd/Fax1/WxPVe46QvVdOka\n4ImA4MBGDOCCImc8bhvhivQfebZgIgx4jY0YwHmFHT6k2H69bM8Vbdym6q7dAjwREHzYiAHYuuwX\nP7eNcMWdE+Q+VkKEAR9hIwZQR1jeEcUm97A9V/T3rapOvDrAEwHBjY0YQK3LZj9tG+GK2+/wbMFE\nGPA5NmIACjv6nWKv6W57ruhvm1XdPSnAEwGhg40YCHGXzZltG+Ez42/zbMFEGPArNmIgRIXlH1Vs\nH/unmouyNqq6R88ATwSEJjZiIAS1+vUc2wifGT3WswUTYSBg2IiBEOI4dkxxve2/7KjoL39XdW/7\n75wFwH/YiIEQ0eo3v7KN8JnUkZ4tmAgDRrARA0HO4XYrrqf9t6As/vxvqurTN8ATAfghNmIgiLV6\n4Te2ET47dLjcx0qIMNAIsBEDQchRWKi4JPsfR1i8ep2qkvsFeCIA58NGDASZli+9YBvhs4NvlDv/\nBBEGGhk2YiBIOIoKFdf9PFvwp5+r6trrAzwRgIvBRgwEgZavvGQb4cr+Az1bMBEGGi02YqAJc5wo\nVlziFbbniv+8VlXX9w/wRAAuFRsx0ES1/N2rthGu7HetZwsmwkCTwEYMNDGOkhOK6/YftudOrFyl\nygGDAjwRgIZgIwaakIjfL7KNcGWfvnIfLSbCQBPERgw0AY6TJYq7qpPtuRMffKLKwTcGeCIAvsJG\nDDRyEW8uto1wVY9eni2YCANNGhsx0Eg5TpUqrktH23Mn3v9YlTcODfBEAPyBjRhohCLeedM2wlWJ\nV8v9XRERBoIIGzHQmJw6JVeXDranTiz9QJXDbw7wQAD8jY0YaCRavPuObYSrunT1bMFEGAhKbMSA\naadPK65LBzks65xTJe8u19mbRxoYCkCgsBEDBrX407tydU44J8LVnf5D7rxCIgyEADZiwISyMsV1\n6yRHZeU5p0r++CedHTHawFAATGAjBgKsxft/kuvK9udEuDqhg9xHCogwEGLYiIFAKS9XXFJnOcrK\nzjlV8ua7OjtmnIGhAJjGRgwEQIuPVsh1RbtzIlwT55L7sJsIAyGMjRjwp4oKxfbqprCTJeecKln8\njs6Ov9XAUAAaE0IM+Enzjz9Sm5/ce87xmuhoFe7cK0VEGJgKQGNDiAFfO3NGsX27K6yw8JxTJW+8\nqbO33m5gKACNFSEGfKj5Z5+ozaSJ5xyviYxS4a79UsuWBqYC0Jg16MVae/fuVWpqqt555x1fzQM0\nTWfPqm3vRNsIn1y0WIUH8ogwAFteb8RlZWWaM2eOBg4c6Mt5gCan+ZrPpHsmKPzfjlsRESrY863U\nqpWJsQA0EV5vxM2bN9frr7+u+Ph4X84DNB2VlWqb3ENt7plwzqmTr/xOBYeOE2EAF+T1Rux0OuV0\n8ilmhKbmf1mjNhPvPOe4FR6ugv1HpMsuMzAVgKYoYCWNiWklp/Pfn7yry+WKCtA0oYn76wOVlVJS\nkpSbe+65P/xBjkmT5Ar8VEGPv7v+xf01K2AhLi4+99v6/ZDLFSW3uzRA04Qe7m/DNVv3F0VPOM+X\nHpWWyl1uSdxjn+Pvrn9xf/3nYv+Dw7e4BC6kqkoxg/rZRrj0hZflPn5Siow0MBiAYOD1RpyTk6PM\nzEzl5eXJ6XRq9erVWrBggaKjo305H2BUs79lKfpO+29DWXAgT1YkT+kBaBivQ9yrVy+9/fbbvpwF\naDyqqxVz02A5d399zqnS37yoikmTDQwFIBjxsmfg3zTbsF7Rt9v/NKSC3COyoloHeCIAwYzPEQP/\nUl2t6JtusI1w6a+fl/v4SSIMwOfYiAFJzTb9Q9G3jrY9V7DvkKw2vPYBgH+wESO01dQoetQw2wif\n+p9MzxZMhAH4ERsxQpZz8ybF3DLS9lzB3oOyomMCPBGAUMRGjNBTU6PocSNsI3zqv+d6tmAiDCBA\n2IgRUpzZWxQzNtX2XMGef8pqGxvgiQCEOjZihIaaGrX5z7G2ET71zC89WzARBmAAGzGCnvOLbYoZ\nNdz2XMHuf8qKJcAAzGEjRvCqqVGbO261jfDpmbM8WzARBmAYGzGCkvPLLxQzYqjtuYJdubJc/LBC\nAI0DGzGCi2Wp9cQ7bCN8+udPe7ZgIgygEWEjRtAI/2qn2t58g+25gpz9suLjAzwRAFwYGzGaPstS\n63sn2Eb49GNPebZgIgygkWIjRpMWvitHbYcPsj1X+NVe1bRrH+CJAODSsBGjabIstf6ve2wjXPbo\n43IfP0mEATQJbMRocsL37FbbIf1tzxV+uUc1CR0CPBEAeI+NGE2HZSlqyo9tI1z20KOeLZgIA2hi\n2IjRJITv/UZtb7jO9lzhF1+rpuPlAZ4IAHyDjRiNm2Up6mc/tY1w2f0PerZgIgygCWMjRqMVvn+f\n2g7qZ3uucPsu1VzeKcATAYDvsRGj8bEsRU17wDbCZT+937MFE2EAQYKNGI1K+IH9ajsgxfZc4dad\nqrniysAOBAB+xkaMxsGyFPnYNNsIl9832bMFE2EAQYiNGMaFfftPxV5/je25ws07VNO5S4AnAoDA\nYSOGUZFP/l/bCJffM0nuYyVEGEDQYyOGEWGHDir22t6254o2bVd1l6sCPBEAmMFGjIC7bOaTthGu\nSP+R3MdKiDCAkMJGjIAJO3JYsSk9bc8V/WObqq/qFuCJAMA8NmIExGWzZtpGuOKOuzxbMBEGEKLY\niOFXYd/lKbZvku25or9vVXXi1QGeCAAaFzZi+M1l//2MbYQrbvs/ni2YCAMAGzF8Lyz/qGL72Ee2\n6K+bVJ3UI8ATAUDjxUYMn2o195e2ET4z7lbPFkyEAaAONmL4RNixfMX2TrQ9V7TuH6ru2SvAEwFA\n08BGjAZrlfk/thE+M2qMZwsmwgBwXmzE8Jrj+HHF9bL/5htFf/m7qnv3CfBEAND0sBHDK62ez7SN\n8NmbUj1bMBEGgIvCRoxL4igoUFwP+x/EULz2r6q6JjnAEwFA08ZGjIvWcv7zthE+O2S43MdKiDAA\neIGNGBfkKCxUXFJn23PFq/6fqlKuDfBEABA82IhRr5Yvz7eN8NlBN8idf4IIA0ADsRHDlqO4SHFX\nX2l7rvjTz1V17fWBHQgAghQbMc7R8rWXbSNceV1/zxZMhAHAZ9iIUctxolhxiVfYniv+eI2q+g8I\n8EQAEPzYiCFJinjjNdsIV6b0k/toMREGAD9hIw5xjpMliruqk+25EytXqXLAoABPBAChhY04hEUs\necM2wpW9r5H7aDERBoAAYCMOQY7Sk4rrerntuRMr/qzKG4YEeCIACF1sxCEm4q0lthGuSurp2YKJ\n8CUpKC8wPULQqqgoV01NjekxAL/zeiOeO3euvvzySzkcDs2cOVN9+vBN/hu10lK54lvbnjqxfKUq\nhwwL7DxB4po3r9aAhEH6Ud+JGhI/UnEt40yPFDR2787Rjh3b1LNnD3Xs2FkJCR0VFsbugODjVYi3\nbNmigwcPaunSpcrNzdXMmTO1dOlSX88GH/gmf4/C3/m9XPMWnXPueIdYvfTc/aqp3iKt22Jguqav\nsqZS6/P+qvV5f5VDDqXE9NMNriEa2W60oppFmR6vSfvmm69VXl6m7OxsZWdnq1Wry3TllV109dU9\nlJDQ0fR4gM94FeKNGzcqNTVVktS1a1eVlJTo1KlTioyM9OlwaKDychU9dq9u/fybc06NvEdae1Wh\ntHeugcGCkyVL24qzta04W4f2/lPX6BrTIwWVsrLT+vrrr3Tw4AFNmnS/6XEA37G88Itf/MJau3Zt\n7Z8nTpxoHThwoN63eeaZakuyan9lZ3t+/fDY7NmeaxMSvj+WkuI5NmVK3Wvz8ixr5cq6xxYt8lz7\nw2Pjx3uOjR9f97hlea7/4bGVKz3v94fHpkzxXJuS8v2xhATPsdmzrUb/Mb0fdquVp4Q6xxzJiyxl\nyFJC9vfHI/M8x4bOrnOtpqZ4fv3w2NDZnmsj874/lpDtOZayqO61jyVYmji+7rHxUzzX/vBY4krP\nscSVdY9nyHP9D49NHO95vz88ltL4PqbExD1WRkaGlZi4p87xjIwMa/z4uh/nxIn/az322HN1jqWk\nZFsZGRlWQsL3M0VGnrQyMjKsoUPX1bl26tRF1tSpdeccOnSdlZGRYUVGnvzB3908KyMjw0pJya5z\n7WOPPWdNnPi///b3bKWVkZHR6D6m5557jn8j+JiaxMd0sRyeD/bSPPPMMxo6dGjtVjxx4kTNnTtX\nnTvb/4QeSXK7S+t9ny5X1AWvwaV79Y2pGv/KcrU/WaWf3iqt6mZ6otBwt+5WohJNjxGUXK52Skv7\nkekxggb/9vqPy3Vxn57y6qnp+Ph4FRR8/2rR48ePy+VyefOu4GcP/vR30o9flSsuUm+dqDA9TtBp\nvzBaNVaNmoc31/BON+vWrrdr1JVj1LpFG9OjNXlffLFVGzeulyRFRbVW166JuuqqRLlc7QxPBviW\nVyEePHiwFixYoPT0dO3atUvx8fF8frgxczqlZs0kEWJfG3nFaI3vepvuuXaCzpbyil5fatXqMvXt\n20/XXpusZs2i5HA4TI8E+IVXIU5JSVHPnj2Vnp4uh8Oh2bNn+3ouoEl4a+x7kqQ2EVFyl/L0ni9d\nfXUPSTx1iuDn9dcRP/HEE76cAwCAkMRzaQAAGESIAQAwiBADAGAQIQYAwCBCDACAQYQYAACDCDEA\nAAYRYgAADCLEAAAYRIgBADCIEAMAYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAMIsQAABhEiAEA\nMIgQAwBgECEGAMAgQgwAgEGEGAAAgwgxAAAGEWIAAAwixAAAGESIAQAwiBADAGAQIQYAwCBCDACA\nQYQYAACDCDEAAAYRYgAADCLEAAAYRIgBADCIEAMAYBAhBgDAIEIMAIBBhBgAAIMIMQAABhFiAAAM\nIsQAABhEiAEAMIgQAwBgECEGAMAgQgwAgEGEGAAAgwgxAAAGEWIAAAwixAAAGOR1iLds2aKBAwdq\n3bp1vpwHAICQ4lWIDx06pCVLliglJcXX8wAAEFK8CrHL5dLLL7+sqKgoX88DAEBIcXrzRi1btvT1\nHAAAhKQLhnjZsmVatmxZnWPTpk3TjTfeeEkPFBPTSk5neL3XuFxs2P7E/fUv7q//cG/9i/tr1gVD\nnJaWprS0tAY/UHFxWb3nXa4oud2lDX4c2OP++hf313+4t/7F/fWfi/0PDl++BACAQV6FOCsrS/fe\ne6/Wr1+v3/72t5o8ebKv5wIAICR49WKtYcOGadiwYT4eBQCA0MNT0wAAGOSwLMsyPQQAAKGKjRgA\nAIMIMQAABhFiAAAMIsQAABhEiAEAMIgQAwBgUKMK8ZYtWzRw4ECtW7fO9ChBZe7cuZowYYLS09O1\nc+dO0+MElb179yo1NVXvvPOO6VGC0rx58zRhwgTdcccdWrNmjelxgkZ5ebkeffRR3XPPPUpLS+Pf\nXD+pqKhQamqqVqxYUe91Xn1nLX84dOiQlixZopSUFNOjBJUtW7bo4MGDWrp0qXJzczVz5kwtXbrU\n9FhBoaysTHPmzNHAgQNNjxKUNm3apH379mnp0qUqLi7W7bffrpEjR5oeKyisW7dOvXr10pQpU5SX\nl6fJkydr+PDhpscKOgsXLlSbNm0ueF2j2YhdLpdefvllRUXx47h8aePGjUpNTZUkde3aVSUlJTp1\n6pThqYJD8+bN9frrrys+Pt70KEHpuuuu0/z58yVJrVu3Vnl5uaqrqw1PFRzGjh2rKVOmSJKOHj2q\ndu3aGZ4o+OTm5mr//v0X9e2gG02IW7ZsqfDw+n9eMS5dQUGBYmJiav/ctm1bud1ugxMFD6fTqYiI\nCNNjBK3w8HC1atVKkrR8+XINGTKEfyN8LD09XU888YRmzpxpepSgk5mZqRkzZlzUtUaeml62bJmW\nLVtW59i0adN04403mhgnpPAdTdHUfP7551q+fLkWL15sepSg895772n37t168skntXLlSjkcDtMj\nBYUPP/xQffv2VadOnS7qeiMhTktLU1pamomHDjnx8fEqKCio/fPx48flcrkMTgRcvPXr1+u1117T\nG2+8waetfCgnJ0exsbFKSEhQUlKSqqurVVRUpNjYWNOjBYWsrCwdPnxYWVlZys/PV/PmzdW+fXsN\nGjTI9vpG82It+MfgwYO1YMECpaena9euXYqPj1dkZKTpsYALKi0t1bx58/SHP/xB0dHRpscJKtnZ\n2crLy9PTTz+tgoIClZWV1fkUFhrmxRdfrP39ggUL1LFjx/NGWGpEIc7KytLvf/97HThwQLt27dLb\nb7/NU1E+kJKSop49eyo9PV0Oh0OzZ882PVLQyMnJUWZmpvLy8uR0OrV69WotWLCAaPjIp59+quLi\nYk2fPr32WGZmpjp06GBwquCQnp6up59+WnfffbcqKio0a9YshYU1mpcMhRx+DCIAAAbxXyAAAAwi\nxAAAGESIAQAwiBADAGAQIQZxBxgIAAAAGElEQVQAwCBCDACAQYQYAACDCDEAAAb9fx9THcpSYc2P\nAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAEICAYAAABLdt/UAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAVyUlEQVR4nO3de5AV5Z3G8ecJoJFwUSPqIChmEYVo1MkIRqJ4Y0WlNCtuSkxITAiTixot3GSTSlJMKqY25aKby65VYDTGUmNMdLOsmhgtUWNUcFDiDVS8oKCG8UJAiCDw2z/6sM5oDzPMNKdn3vP9VE15Tr993v7NkXn48XafHkeEAADp+EDZBQAAikWwA0BiCHYASAzBDgCJIdgBIDEEOwAkhmBHj2T7HNv3FThf2B5Z1HxdOP7Ftl+z/WpZNaB2EOwoje1P2r7f9t9sv2H7z7aPKLuuotneV9JFksZExN5l14P09S27ANQm24Mk3SLpq5JulLSTpKMlbSizrh1kX0mvR8SqsgtBbaBjR1lGSVJE/CoiNkfE3yPijxHxaOudbM+2/abt522f3Gr7F2wvsb3W9nO2v/ye133D9iu2X7b9xfeMDbZ9je0W28ttf9f2Bypjy21/vPL4M5UlnI9Wnk+3/bu8b6a9OW2fKOkOSUNtv2X76pzX3mN7SuXx+MoxT608P8H24u18b1HjCHaU5WlJm23/0vbJtnfL2WecpKck7SHpEklX2nZlbJWkyZIGSfqCpP+wXS9JtidJ+hdJEyUdIOnE98z7M0mDJX1E0gRJn6vMIUn3SDq28niCpOckHdPq+T3tfD+5c0bEnZJOlvRyRAyIiHNyXtvVYwK5CHaUIiLWSPqkpJB0haQW2/Ns79Vqt+URcUVEbJb0S0l1kvaqvP7WiHg2MvdI+qOypRxJ+rSkX0TE4xGxTlLT1glt95F0lqRvR8TaiHhB0qWSplV2uUdZmKoy37+1ep4bsp2YsyOtj3lMZ44JbAvBjtJExJKIOCcihkk6WNJQST9utcurrfZdX3k4QJIqXf6DlZOuqyWdoqyzV2Wel1rNs7zV4z0k9XvPtuWS9qk8vkfS0bbrJPVRtv4/3vYIZR153rJIR3N25AFJoyp/qR0m6RpJw23vIWmspHs7OQ8giWBHDxERSyVdrSzgt8n2zpJukjRb0l4Rsauk2yRtXaZ5RdLwVi/Zt9Xj1yS9I2m/94yvrNSxTNJ6SedLurfyL4tXJTVKui8ituSUtM05O1L5S2uRpAskPR4RGyXdL2mmpGcj4rXOzANsRbCjFLYPsn2R7WGV58MlTZX0YCdevpOknSW1SNpUOan6j63Gb5R0ju0xtvtLmrV1oLKsc6OkH9oeaHs/ZQF6bavX3yPpPL27BHL3e5630ck5O7JdxwS2hWBHWdYqOzm6wPY6ZYH+uLLrvbcpItZK+rqyMH1T0tmS5rUa/72yJZ27JC2r/Le18yWtU3aS8j5J10u6qtX4PZIG6t0lkPc+z9PRnB3pyjGBXOYXbQBAWujYASAxhQW77T62H7F9S1FzAgC2X5Ed+wWSlhQ4HwCgCwoJ9sqVDadK+nkR8wEAuq6om4D9WNI3lZ3Fz2W7Udm1wPrQhz708YMOOqigQwNAbVi0aNFrETGko/26Hey2J0taFRGLbB/b3n4RMVfSXElqaGiI5ubm7h4aAGqK7eUd71XMUsx4SafZfkHSDZKOt709H8wAABSo28EeEd+OiGERMULZjZDuiojPdrsyAECXcB07ACSm0N+gFBF3K7vHBQCgJHTsAJAYgh0AEkOwA0BiCHYASAzBDgCJIdgBIDEEOwAkhmAHgMQQ7ACQGIIdABJDsANAYgh2AEgMwQ4AiSHYASAxBDsAJIZgB4DEEOwAkBiCHQASQ7ADQGIIdgBIDMEOAIkh2AEgMQQ7ACSGYAeAxBDsAJAYgh0AEkOwA0BiCHYASAzBDgCJIdgBIDEEOwAkhmAHgMQQ7ACQGIIdABLT7WC3/UHbC23/xfYTtr9fRGEAgK7pW8AcGyQdHxFv2e4n6T7bv4+IBwuYGwCwnbod7BERkt6qPO1X+YruzgsA6JpC1tht97G9WNIqSXdExIKcfRptN9tubmlpKeKwAIAchQR7RGyOiMMkDZM01vbBOfvMjYiGiGgYMmRIEYcFAOQo9KqYiFgtab6kSUXOCwDovCKuihlie9fK410kTZS0tLvzAgC6poirYuok/dJ2H2V/UdwYEbcUMC8AoAuKuCrmUUmHF1ALAKAAfPIUABJDsANAYgh2AEgMwQ4AiSHYASAxBDsAJIZgB4DEEOwAkBiCHQASQ7ADQGIIdgBIDMEOAIkh2AEgMQQ7ACSGYAeAxBDsAJAYgh0AEkOwA0BiCHYASAzBDgCJIdgBIDEEOwAkhmAHgMQQ7ACQGIIdABJDsANAYgh2AEgMwQ4AiSHYASAxBDsAJIZgB4DEEOwAkBiCHehtIsquAD1ct4Pd9nDb820/afsJ2xcUURgAZSG+bJl03XXS+edLY8dKd95ZdlXo4foWMMcmSRdFxMO2B0paZPuOiHiygLmB2rJ6tbRwofTgg9KCBdJtt7UdHzdOOvHEcmpDr9HtYI+IVyS9Unm81vYSSftIItiB7fH889Lpp0uPPdb+PhdfLNnVqwm9UqFr7LZHSDpc0oIi5wVqwv77S83N7Qf3uHHSCSdUtyb0SoUFu+0Bkm6SdGFErMkZb7TdbLu5paWlqMMC6VixQtp55/ZPjl5yCd06OqWQYLfdT1moXxcRN+ftExFzI6IhIhqGDBlSxGGBdHzta9Lw4fljO+8sTZwoHXNMdWtCr9XtNXbblnSlpCURcVn3SwJqyNKl0ujR+WMLF0pHHJFdFfP229WtC71aER37eEnTJB1ve3Hl65QC5gXSFSF96lP5oX7GGdKWLVmoS9LIkdLBB1e3PvRqRVwVc58kFv6Azlq4MDsRmmfpUunAA6tbD5LDJ0+Batm8OevC80L93HOzLp5QRwGK+IASgI7cfrs0aVL+2EsvScOGVbceJI2OHdiRNmyQ9tknP9R/8IOsSyfUUTA6dmBHueEGaerU/LHXX5d237269aBm0LEDRVu7NvsgUV6oz5mTdemEOnYggh0o0s9+Jg0a9P7tu+wirVsnNTZWvybUHJZigCK0tEh77pk/9tvfSlOmVLce1DQ6dqC7vve9/FAfOVLauJFQR9XRsQNdtXy5NGJE/thdd0nHHVfVcoCt6NiB7RUhfelL+aF+zDHZB5EIdZSIjh3YHk880f59WxYtkurrq1sPkIOOHeiMCOnUU/ND/ayzspt2EeroIejYgY7cf780fnz+2DPPZCdJgR6Ejh1oz+bN0mGH5Yf6hRdmXTyhjh6Ijh3Ic9tt2dJLnpdflurqqlsPsB3o2IHW3n47uyY9L9R/9KOsSyfU0cPRsQNbXXutNG1a/tibb0q77lrdeoAuomMH1qzJbtqVF+pXXpl16YQ6ehGCHbXtssukwYPfv33QIGn9eumLX6x+TUA3sRSD2vTXv0p7750/9rvfSaefXt16gALRsaP2fOtb+aE+erT0zjuEOno9OnbUjueflz7ykfyxe++Vjj66uvUAOwgdO9IXIX3+8/mhfsIJ2QeRCHUkhI4daXv0UenQQ/PHFi9ufwzoxejYkaYIaeLE/OCeNi27aRehjkTRsSM9f/pTdl/0PM8+2/46O5AIOnakY9Mm6aMfzQ/1b3wj6+IJddQAOnakYd689i9TfPVVaa+9qlsPUCI6dvRuf/979nH/vFC/9NKsSyfUUWPo2NF7/eIX7X/kf/Xq/FsFADWAYEfvs3q1tNtu+WPXXNP+HRqBGsFSDHqXSy7JD/U99siWZQh1gI4dvcQrr0hDh+aP3XJL+7/tCKhBdOzo+S66KD/UDz00u2kXoQ60UUjHbvsqSZMlrYqIg4uYE9CyZdIBB+SP/fnP0lFHVbceoJcoqmO/WtKkguZCrYuQzj47P9RPPjm7HQChDrSrkI49Iu61PaKIuVDjHnlEqq/PH3vsMelg/kEIdKRqa+y2G203225uaWmp1mHRW2zZIk2YkB/q06dn44Q60ClVuyomIuZKmitJDQ0NUa3johe4+27puOPyx154Qdpvv2pWA/R6XBWD8rzzTraOnhfq3/lOttZOqAPbjevYUY6bb5amTMkfW7VKGjKkuvUACSmkY7f9K0kPSDrQ9grb04uYFwlav17q3z8/1H/yk6xLJ9SBbinqqpipRcyDxF1xhdTYmD+2Zo00cGB16wESxVIMdrw335R23z1/7Prrpan0BUCROHmKHeuHP8wP9aFDpbffJtSBHYCOHTvGypXSsGH5Y3/4g3TSSdWtB6ghdOwo3vnn54d6Q0P2e0kJdWCHomNHcZ5+WjrwwPyxBx+Uxo2rbj1AjaJjR/dFSGeemR/qp52W3Q6AUAeqho4d3dPcLB1xRP7Yk09Ko0dXtx4AdOzooi1bpE98Ij/Uv/KVrIsn1IFS0LFj+915pzRxYv7Yiy9Kw4dXtx4AbdCxo/M2bsxuypUX6rNmZV06oQ6Ujo4dnfOb30if/nT+2GuvSR/+cHXrAdAuOnZs21tvSf365Yf65ZdnXTqhDvQoBDvad/nl2Y25Nm1qu71fvyzwv/rVcuoCsE0sxeD9Xn9d2mOP/LFf/7r9JRkAPQIdO9pqasoP9f32kzZsINSBXoCOHZmXXpL23Td/7I47pBNPrG49ALqMjh3ZWnleqB91lLR5M6EO9DJ07LVsyRJpzJj8sYceyu7GCKDXoWOvRRHZzbnyQv3MM7PbBRDqQK9Fx15rFiyQjjwyf+ypp6RRo6pbD4DC0bHXis2bsy48L9TPOy/r4gl1IAl07LXg9tulSZPyx1askPbZp7r1ANih6NhTtmFD9kuj80L94ouzLp1QB5JDx56q66+XPvOZ/LE33pB226269QCoGjr21KxdK9n5oT53btalE+pA0gj2lPz0p9KgQe/f3r+/tG6dNGNG9WsCUHUsxaSgpUXac8/8sZtuks44o7r1ACgVHXtv993v5of6AQdkv/GIUAdqDh17b/XCC9L+++ePzZ8vHXtsNasB0IPQsfc2EdL06fmhPmFC9kEkQh2oaXTsvcnjj0uHHJI/9vDD0uGHV7ceAD0SHXtvECGdfHJ+qJ91VnbTLkIdQAUde093//3S+PH5Y888I40cWd16APR4dOw91aZN0sc+lh/qM2dmXXyiob5q3SpFRNlllGrLli1av3592WWglyqkY7c9SdJPJPWR9POI+FER89asW2+VJk/OH3v5Zamurrr1VNmM/52hpa8t1ZTRUzRl9BTV19XLdtllVdWmTZs0e/ZsjRgxQmPGjNFBBx2kAQMGlF0Wegl3tzOy3UfS05ImSloh6SFJUyPiyfZe09DQEM3Nzd06bopuWXCz+n39XJ208NX3jX3zROnfP1lCUT3EFE3RIWrnxHGNGDhwoKZPn67BgweXXQpKYntRRHT4W3CK6NjHSloWEc9VDnyDpNMltRvsyLF4scadda6GvPD+UN/1X6W/7VJCTT3ISq2s+WBfu3at1q1bR7CjYxHRrS9JZypbftn6fJqk/8zZr1FSs6TmwYNHR7ZInH01N2dfrbfNmhUREVFX9+62+vps24wZbfdduTJi3ry22+bMyfZtvW3y5Gzb5Mltt0dk+7feNm9eNm/rbTNmZPvW17+7ra4u2zZrVnTve/rc222/J9XFCeMmt9mmyTNCTWq7bdS8bNuoeW23Nynbv/W2qZNDM+vabqufk+1b1/zutgErs20TZrXdt7E++2q9bcKsbN8BK9/dVtecbauf03bfmXVZDV38npqammLy5Lbbpk69PmbOnN1mW319czQ1NUVd3bs1DRiwJpqammLChPlt9m1snBONjW3rnDBhfjQ1NcWAAWta/X9eGU1NTVFf39xm35kzZ8fUqde/58/ZvGhqamqzbdSopdHU1BSjRi3t1vd0yCEbiv+zl+LPU7Lfk5o7k8tFLMWcKWlSRHyp8nyapHERcV57r2EpJt/CZxdq8dWzFc0P6NJx0oZ+tXlu+8VNL7Z5PqzvME0dPFUjd0rzZHGejRs36vXXX///53379tWYMWN00kknqX///iVWhjJVcylmpaThrZ4Pq2zDdhr7D2M19gc3SpK+XHItZZr239O0JbZoyugpmjRykvr3q70g27hxo+bMmaPRo0dr9OjRGjp0aM2dQEbXFdGx91V28vQEZYH+kKSzI+KJ9l5Dx45tiYiaD7GtP5e1/j6grap17BGxyfZ5km5XdrnjVdsKdaAjhBnvAbqnkOvYI+I2SbcVMRcAoHtq8+wcACSMYAeAxBDsAJAYgh0AEkOwA0BiCHYASAzBDgCJIdgBIDEEOwAkhmAHgMQQ7ACQGIIdABJDsANAYgh2AEgMwQ4AiSHYASAxBDsAJIZgB4DEEOwAkBiCHQASQ7ADQGIIdgBIDMEOAIkh2AEgMQQ7ACSGYAeAxBDsAJAYgh0AEkOwA0BiCHYASAzBDgCJIdgBIDEEOwAkplvBbvufbT9he4vthqKKAgB0XXc79sclnSHp3gJqAQAUoG93XhwRSyTJdjHVAAC6jTV2AEhMhx277Tsl7Z0z9J2I+J/OHsh2o6RGSdp33307XSAAYPt0GOwRcWIRB4qIuZLmSlJDQ0MUMScA4P1YigGAxHT3csd/sr1C0ick3Wr79mLKAgB0lSOqvypiu0XS8naG95D0WhXL6Yl4DzK8D7wHW/E+ZA6MiIEd7dStyx27KiKGtDdmuzkiavrDTrwHGd4H3oOteB8ytps7sx9r7ACQGIIdABLTE4N9btkF9AC8BxneB96DrXgfMp16H0o5eQoA2HF6YscOAOgGgh0AEtPjgr3W7/Fue5Ltp2wvs/2tsuspg+2rbK+y/XjZtZTF9nDb820/Wfl5uKDsmspg+4O2F9r+S+V9+H7ZNZXFdh/bj9i+paN9e1ywq4bv8W67j6T/knSypDGSptoeU25Vpbha0qSyiyjZJkkXRcQYSUdKOrdG/yxskHR8RBwq6TBJk2wfWXJNZblA0pLO7Njjgj0ilkTEU2XXUZKxkpZFxHMRsVHSDZJOL7mmqouIeyW9UXYdZYqIVyLi4crjtcp+oPcpt6rqi8xblaf9Kl81d8WH7WGSTpX0887s3+OCvcbtI+mlVs9XqAZ/mNGW7RGSDpe0oNxKylFZglgsaZWkOyKiFt+HH0v6pqQtndm5lGC3faftx3O+aq47BbbF9gBJN0m6MCLWlF1PGSJic0QcJmmYpLG2Dy67pmqyPVnSqohY1NnXlHWvmELu8Z6glZKGt3o+rLINNch2P2Whfl1E3Fx2PWWLiNW25ys7/1JLJ9bHSzrN9imSPihpkO1rI+Kz7b2ApZie5SFJB9je3/ZOks6SNK/kmlACZ79I+EpJSyLisrLrKYvtIbZ3rTzeRdJESUvLraq6IuLbETEsIkYoy4S7thXqUg8M9lq+x3tEbJJ0nqTblZ0suzEinii3quqz/StJD0g60PYK29PLrqkE4yVNk3S87cWVr1PKLqoEdZLm235UWeNzR0R0eLlfreOWAgCQmB7XsQMAuodgB4DEEOwAkBiCHQASQ7ADQGIIdgBIDMEOAIn5PxyivTG5Ipz6AAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1849,11 +2300,11 @@ "metadata": { "id": "4AEH3UNgsgwH", "colab_type": "code", - "outputId": "67357afe-fe7c-48cd-b47d-e742718ab4fa", "colab": { "base_uri": "https://localhost:8080/", - "height": 417 - } + "height": 335 + }, + "outputId": "b05120ba-0709-4b64-a7cd-fe3aeda45399" }, "source": [ "# Axis Bounds\n", @@ -1882,26 +2333,27 @@ "plt.title(\"non x-axis projection\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 28, "outputs": [ { "output_type": "stream", "text": [ - "/usr/local/lib/python3.6/dist-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", - " warnings.warn(message, mplDeprecation, stacklevel=1)\n" + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:12: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " if sys.path[0] == '':\n" ], "name": "stderr" }, { "output_type": "display_data", "data": { - "image/png": "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\nO++8k+TkZO644w6mTp2K3W73hGTixIk8/vjj/O53v/M8Pj09ndmzZzN37lxPuPr27VtrPVarlbKy\nMn75y19y8uRJ/vjHPxIRUXs26NatGzNmzOCWW27B7XbTqVMnHn300Wr3iY6O5plnnmHu3LmcOXOG\nyMhI7r33XiwWC6mpqXz11VcMHTqUJk2aMH78eHr06EFiYiJ//etfGThwIK+99prPfs4SeHQdp4SE\nQ4cOMXToUD7//PN6Pc/kyZMZP348N954o49WJqFIu+oiVZw6darWWX2RmuoVzrNnz5KcnFznAXSR\nYHPrrbficrno3bu3v5ciAa5exzgXL15c51lLkcZ22WWX1Xs3XS+VlAvl9cS5f/9+9u3bx+DBg324\nHBGRwOd1OOfNm8fMmTN9uRYRkaDgVTizsrLo3r07rVu3vuDHuFx6NYSIhAavjnFmZ2eTm5tLdnY2\nR48eJSoqiqSkJPr163fOxxQW1n7HHAC7vTl5eUXeLCOohMt2Qvhsa7hsJ4Tftp6PV+FcsGCB578X\nLlxIq1atfjKaIiKhRNdxioiYVO+XXN5zzz2+WIeISNDQxCkiYpLCKSJiksIpImKSwikiYpLCKSJi\nksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLC\nKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwiki\nYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKS\nwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiksIpImKSwikiYpLCKSJiks2b\nB5WUlDBz5kxOnDhBaWkpd911FzfccIOv1yYiEpC8CucHH3xA165dmT59OocPH2batGkKp4iEDa/C\nmZqa6vnvI0eOkJiY6LMFiYgEOothGIa3D05PT+fo0aM8//zzXHXVVT95X5erHJvN6u23EhEJGPUK\nJ8AXX3zBQw89xFtvvYXFYjnn/fLyiuq83W5vfs4/CyXhsp0QPtsaLtsJ4bet5+PVWfXdu3dz5MgR\nADp16kR5eTkFBQXePJWISNDxKpzbtm1j6dKlAOTn51NcXEx8fLxPFyYiEqi8Cmd6ejoFBQVMnDiR\nGTNmMHv2bCIidEmoiIQHr86qR0dH87e//c3XaxERCQoaE0VETFI4RURMUjhFRExSOEVETFI4RURM\nUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4\nRURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVE\nTFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExS\nOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEVETFI4RURMUjhFRExSOEV8obwc6+7P/L0K\naST1Cuf8+fNJS0tj3LhxvPfee75ak0hwKC8ncvOHxD54PwlXd6DpiqX+XpE0Epu3D/z444/5+uuv\nWbVqFYWFhYwZM4ahQ4f6cm0igae8nMiPttDkzX/AO1m0PHHC80elN47148KkMXkdzl69etGtWzcA\n4uLiKCkpoby8HKvV6rPFiQSSiGNHaTniF1gP5db6M7fdQVmffn5YlfiD17vqVquVmJgYANasWcP1\n11+vaEpIcycmcfovT9X5Z6W/HAX6/Q96335ruaD7eT1xVtq0aRNr1qxh6dKfPr4THx+DzVb3L5bd\n3ry+ywgK4bKdEMLberqwzpubTp1E01Dd5h+E6t+p0wmbNkFqKuzZc2GPqVc4c3JyeP7558nIyKB5\n85/+oRYWFtd5u93enLy8ovosIyiEy3ZC6G5r9KvLaf7be2rd7rY7OHFVdwjBba4Uin+nTiesXBnJ\n009H0aGDm27dSujSBeD8/0B4vateVFTE/PnzeeGFF2jZsqW3TyMSFOqM5tixGFFR2k0PMk4nGAa8\n+mok69fbePHFEjIzS2jS5MKfw+uJc926dRQWFnLfffd5bps3bx6XXnqpt08pEpDqimbRkwtpfv/d\nnMp8A3ez0NyFDTVVJ8ylS0u47bYypk0r8+q5vA5nWloaaWlp3j5cJCicK5pnJ02lOeD8hS7BCwb7\n91uYMCGGDh3cvPhiCd27u+v1fPU+OSQSqn4qmhL4KifMSy5xM2RIORkZJfToUb9gVtJLLkXqoGgG\nr/JyWLYskt69m7F+vY2kJAObDZ9FEzRxitSiaAYnpxMOHIigY0c3+/ZFsGRJCdde67tYVqWJU6QK\n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\nNxiYRgAAAABJRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEICAYAAACwISoLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAYf0lEQVR4nO3deZRU5Z3/8feXprGV1QREA7QgDSoKora4oMgheqKMP000ixzFRLZ4YhIziT8n22SZ40zmzEyccSE/xWUQjAETjSaMBkPUERFb6bhEBLF/CQgKQlQKGES27/xxb9tFU73W7bpV9Xxe59Q5tVye+3R1fT/Pc597uzB3R0TC1C3tDohIehQAIgFTAIgETAEgEjAFgEjAFAAiAVMABM7MrjCzx1PuQ7WZ7TCzilJot5yYrgOQcmFma4EZ7r4k7b6UCs0ApMuZWfe0+yC5KQA6yMzWmtn1ZvaKmWXMbKGZVWW9PtPMGszsPTP7jZl9Ius1N7NrzOwNM9tqZrPNzFrYz6Nm9tOsxwvM7J5W+nWzma03s21mVm9m57SnLTP7kpk9E983M/t3M9sct/MnMzuxhf09ZWY/MbPn420fMbOPxa8NjX/W6Wb2JvCEmXUzs++b2bq4/Xlm1rfZ9t3jx33N7G4z22hmb5nZjdnT+Pg9XmVm283sNTM7xczmA9XAb+Np/w052v1E/Dt5L/4dzcxq80dm9kDcr+1mttLMalt6v8uGu+vWgRuwFnge+ATwMWAVcE382iTgr8ApwCHArcDTWf/WgUVAP6IP6xbgghb2cySwOW7zCuDPQO9W+nUl8HGgO/AtYBNQ1VZbwJeAZ+L7nwLq4/4ZcDxwVAv7ewp4CzgR6Ak8CNwXvzY0/lnnxa8dCkwDGoBjgF7AQ8D8Ztt3jx//Grgj/rdHxO/3l+PXPhfv97S4jzXA0Vm/m/Oy+ti83aeBnwFVwNj4/Z8Uv/YjYBcwGagAfgI8l/bnrcs/z2l3oNRu8YfsyqzH/wLcHt+/G/iXrNd6AXuAofFjB87Oev0B4Nut7OsyYD1RqJzdwX6+D5zUVlvNAmASsAY4A+jWRvtPAf+c9XgUsDsunsbCOybr9T8AX8l6fGz83nTPLlRgIPAhcGjWtlOAJ+P7i4HrWvnd5AwAYAiwj6wQjYt8bnz/R8CSZj/PB2l/3rr6pkOAztmUdX8nUaFDNCtY1/iCu+8A3gUGtePf5vJbooJ63d2faXwynp7uiG/nxM9dH0+LM2a2FegL9G+rrWzu/gRwGzAb2Gxmc8ysTyv9W591fx1Q2Wyf2a8f8N7E9xsLPtvRcTsb48OkrUSzgSPi14cA/7+VPrXkE8B77r69WR9a+91Ulfv6hQIgWW8TfYABMLOeRNPytzrZ3j8SHWIcZWZTGp909xPcvVd8WxqHwA3A54HD3b0fkCGaIrfaVnPufou7n0o0Ao4E/m8r/RuSdb+aaET/a3ZzWfcPeG/i7fcC7zRrcz3RDKC/u/eLb33c/YSs14e31P1W+vo28DEz692sD5393ZQFBUCyfgFcbWZjzewQ4J+AOndf29GGzGwCcDVwFfBF4FYzG9TC5r2JimkL0N3MfgB8NHK3ty0zO83MTjezSuB/iI6J97fSzSvNbJSZHQb8A/Ard9/Xwra/AP7WzIaZWS+i92ahu+/N3sjdNwKPAz81sz7x4uFwMzs33uQu4HozOzVetKwxs8ZgeYdojeEg7r4eeBb4iZlVmdkYYDpwXys/X9lTACTIo/PPf0+0ILaRaKS6vKPtxNPuecBX3f0td19KtL7wny2cNVgM/I7o+H0dUeGu70RbfYA7idYP1hEdvvxrK12dD8wlXnAEvt7KtvfE2z8N/CXu49da2PYqoAfwWtyXXwFHAbj7L4lmM/cD24GHiRZjITqm/3586HB9jnanEK0LvE200PhDD/yaAV0IJJ1iZk8RrfrflUBbxxCFV6XrA1lQmgFIMTgRWKfiL7zEAsDMKszsRTNblFSbUv7M7JvAHODbafclRIkdAsS/yFqgj7tflEijItKlEpkBmNlg4G+IVmhFpEQkdZHDfxCdh+7d0gZmNguYBdCzZ89TjzvuuIR2LSLN1dfX/9XdB7S1Xd4BYGYXAZvdvd7MJra0nbvPITrWo7a21lesWJHvrkWkBWa2ru2tkjkEGA9cbNHfYi8AJplZ0BdXiJSKvAPA3b/j7oPdfSjRRS9PuPuVefdMRLqcrgMQCViif+nk7k8R/ZmoiJQAzQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJWN4BYGZVZva8mb1sZivN7MdJdExEul73BNr4EJjk7jvMrBJ4xswec/fnEmhbRLpQ3gHg7g7siB9WxjfPt10R6XqJrAGYWYWZvQRsBn7v7nU5tpllZivMbMWWLVuS2K2I5CmRAHD3fe4+FhgMjDOzE3NsM8fda929dsCAAUnsVkTylOhZAHffCjwJXJBkuyLSNZI4CzDAzPrF9w8FzgdW59uuiHS9JM4CHAXca2YVRIHygLsvSqBdEeliSZwFeAU4OYG+iEiB6UpAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKACkumzen3YOg5B0AZjbEzJ40s9fMbKWZXZdExyQgmzbB7Nlw7rkwZUravQlK9wTa2At8y93/aGa9gXoz+727v5ZA21KuNm2CBx+EO++El19uen727PT6FKC8A8DdNwIb4/vbzWwVMAhQAEhu69fD2LHw3nsHPm8Gl16aTp8ClegagJkNBU4G6pJsV8rMkCG5R/qxY+HIIwvfnzKSycDq1e3fPrEAMLNewIPAN9x9W47XZ5nZCjNbsWXLlqR2K6WooSH3sf6MGYXvS5nIZODGG6GmBh54oP3/ztw9752bWSWwCFjs7je1tX1tba2vWLEi7/1KCWpogBEjDn7eDN5+WzOADnKP3rpPfhIGDYLvfx9GjgQzq3f32rb+fRJnAQy4G1jVnuKXgOUq/rPPhhdegE9/WsXfAY0j/hlnwP798OijMG9eVPwdkcQhwHhgKjDJzF6Kb5MTaFfKSUvFv3Qp1NbCwoXp9KsE3X9/NNVfswbmz4du3eCQQzrXVhJnAZ4BLN92pIy1VvyNKisL26cSk8nA7bfDtdfC6NGwbFnHR/tcdCWgdK32FL+0aNu2psW9lSth584oAJIofkjmQiCR3FT8nbZtW3Rsv3YtvP56ciN+c5oBSNdQ8XdK44g/fDj87nfRpRHz53dN8YNmANIVVPydsnMnHH98dEqvq0b85hQAkiwVf4dkMnDrrbB1K/zbv0V/FtG/f+H2r0MASY6Kv0NuuqnpdN6sWdFzhSx+0AxAkqLib5dMJjq2/8IXoj+JKNRUvyWaAUj+VPxtyr5W/9FHYe9e+Nzn0i1+0AxA8qXib9WOHdCzJ9x7bzTVT3vEb04BIJ2n4m9R4+LezTfDf/83fP3rafcoNx0CSOeo+Fv0yitNi3vLlsGoUWn3qGWaAUjHqfgP0jjijxkDF14Izz6b+6+ei41mANIxKv4D7N7dtLi3Zk002ldWlkbxg2YA0hEq/o9kMtHbccopsGtX8S3utZdmANI+Kn7g4K/eMosel2Lxg2YA0h4qfvbvj754Y+ZMqKoq3RG/OQWAtC7w4m9c3Js/P1rdv/9+6F5GVaNDAGlZ4MX/6183Le799rfR126VU/GDZgDSkkCLv3HEnz49+lv8cpnqt0QzADlYgMW/ffuBp/P274dhw8q7+EEzAGkusOLPZKLTeLt3Rz96uY/4zWkGIE0CKv7s03mPPBL9ae7cuWEVP2gGII0CKv69e+HUU+Gss8Ib8ZtTAEgQxb9tG9xyS3R8P28e1NdD375p9yp9OgQIXQDFP3t29C27a9ZE/3ceqPgbaQYQsjIu/kwmulR3xozoOD/0qX5LFAChKoPir6+vZ/Xq1QDs2LGDXr16sXNnJY8/fiyPP34cl1zSgyuuMD71qZQ7WsQUACEqg+IHGDZsGIsWLQJg164e9OjxDitXjqKhwVi0aCvnnDMw5R4WPwVAaMqk+NeuXcu9997Lrl2HUFc3jrq607n88oWMHr2SG26oZtw4FX97KABCUgbF31j4AO+/348775xBTU0D06bdQ//+71FTU8Npp52Wci9LhwIgFCVe/AeO+OfQu/d2Tj75JWbOvIvDD98KwOGHH85ll12Gmf63+vZSAISghIu/sfD374elS8+hru50amoaOOGElZjBJZeMYcyYMdxxxx189rOfpaqqKu0ulxQFQLkr0eLPHvE3bTqaoUPX0b373o+m+hMmTGDixIkfjfbTp09n4EAd93eUAqCclWDxN5/q19WdzgknrGTo0HWMH7/8oMJvpOLvnEQCwMzuAS4CNrv7iUm0KXkqseJvLPx9+7pRUQFLlpzH7t2VLY74koykZgBzgduAeQm1J/kooeJvPuLX15/KV77y/5g8+b/o1g0VfhdLJADc/WkzG5pEW5KnEin+7NN5DQ3H8NBDl1JT08BVV82jqupDFX6BFGwNwMxmAbMAqqurC7XbsJRA8Tcf8UeNWsWRR27SVD8lBQsAd58DzAGora31Qu03GEVe/I2F/+GHlTz3XNPpvMrKPfTqtZPJk2tV+CnQWYByUMTFnz3if/BBXw499AMymb4a8YuEAqDUFWnx5zqdd/bZyzjrrOVcfPEiFX6RSOo04C+AiUB/M9sA/NDd706ibWlFERZ/Y+F7fJA3d+4XOeKIzRrxi1RSZwGmJNGOdECRFX/zEf/NN6uZOvXnTJt2Dz167FXhFykdApSiIir+7NN5f/zjySxZ8klqahq48MLHADjvvLNU+EVMAVBqiqT4m0b8Hrz44umMG/cCAwZs0VS/xCgASkkRFH924Tcu7tXUNLB7dw+GDNmgwi8xCoBSkXLxZx/jV1R05+23B/Huux/XiF/iFAClIMXiz3U679OffpiRIxs45pi/qPBLnAKg2KVU/NmLezt3Hsptt117wFdvqfDLgwKgmKVQ/M1H/G7d9nPOOcu45prb6dNnhwq/zCgAilWBiz97xF+6dDzLl59JTU0DEyY8DcBFF52iwi9DCoBiVMDizx7x33xzBCNHvkHPnjs11Q+EAqDYFKj4cy3uHXvsGkaMeINTTnlRhR8IBUAxKUDxNxb+nj0VVFbC8uVn8v77/TTiB0oBUCy6uPibj/jPPz+OWbPmMHHiU5jpq7dCpQAoBl1Y/NmLe2++OZgFCy6npqaBq6/+T/r23a7CD5wCIG0JFv+f3vkTFy+4GIANmQ3s9b303VXNh3UzqRpax5VH7tJUXw6gAEhTwiP/6IGjWZ9Zzz7fB3uq4Nm/I1N3HdQ8xoTRb9H/kComnH+iCl8+ogBIS8LFv+C5BUxZPAV29YFtg+Djb8DO/jBtPCf378W3J/xUhS8HUQCkIcHiP6Dw674HddfBuNtg4j/AhX8LwNLv7KBnj55J9FzKjAKg0BIq/o8K3wEDFj4Ivd+GaeOh/xsAHFZ5GPWz6lX80iIFQCElUPwHjfivXwIzTocrJkP3PUytnsrcL67m/PvO5+qxV3Nc/+MS/iGknCgACiXP4v+o8AFemQK/uxlqHoNLr4BuztShlzP3i3Pp1q0bAPdfej8De+k/zJTWKQAKIY/iP2DEf+HvYNxsGPjKR1P9xhG/sfAbqfilPRQAXa2Txd9U+L2bFvdqHoM9h8HAlS0WvkhHKAC6UieK/4DC976wbQi8e2yzEX+uCl8SoQDoKh0s/pwj/oVfh9EL4NKrNOJLl1AAdIUOFP8Bi3u7D4XZq2DYHzTiS0EoAJLWzuI/6HTersPhU9fDNSdBz3c14ktBKACS1I7iP2DEX/4NWPrdaHFvwo0ATD1+skZ8KRgFQFLaKP4DRvw3vgCjF0LfN9s8nSfSlRQASWil+HNeq1/zGIz6FYx6SIUvqVIA5KuF4l/wr9cy5ccGH/aCHsDLU+HdkVrck6KiAMhHjuLfctKxHHHeM/DIK00j/pcmwumzgdka8aWoKAA6K0fxL62GCZ95Hd45Ee59Iprqa8SXIqYA6Iwcxf/Y4D5MHv41WPUqjFwE08+CjzdoxJeipk9lRzUr/j10Z0bf7zH5vYboGP+IlVCxj6knn8m+v9/HvKvnqfilaCUyAzCzC4CbgQrgLnf/5yTaLTpZxZ+hD28wgp1D6rl7WA8Ykz3Vf11FLyUh70+pmVUAs4ELgVHAFDMblW+7xebl5Y/BiBFk6MONfI8aGrip9+c5dzow6YdMPeUMjfhScpKYAYwDGtz9zwBmtgC4BHgtgbaLwrYNa+GS/wPAl7mDHuzm5qPGc8WXtbgnpS2JABgErM96vAE4vflGZjYLmAVQXV2dwG4LI5OBW+8Zwpxta3iD4/k5V/Bs9X7u/NFU9mlxT0pcwT697j7H3WvdvXbAgAGF2m1eHn4YampgTUMFc5dU8IcxVTz9tcsY/xdN9aU8JDEDeAsYkvV4cPxcScpk4NZbYdo0GDsWli2DkSMBjoaXtoK+V1/KSBJD2AvACDMbZmY9gMuB3yTQbkFt3w433hiP+Gtg/34YOrSx+GMqfikzec8A3H2vmX0VWEx0GvAed1+Zd88KJJOBDz6Affuis3xNI75I+UvkINbdH3X3ke4+3N3/MYk2u1om0zTiP/wwDBoEc+eq+CUsQV4KvG8f1NbCmWdqxJewBRMA27bBLbfA6tVw331QXw99+qTdK5F0BXEe62c/g+HDo8W9H/wgek7FL1LGM4BMBhYuhJkzo8v3NdUXOVjZzQCyF/eeeQZ27oTzz1fxi+RSNjOAbdvgsMNg8eJoqq8RX6RtJT8DaBzxhw+H556Dz38e5s1T8Yu0R0kHwNq1TVfuLVsWfRGviLRfyR0CNF6rP3AgzJgBL7wQXbIrIh1XMjMA9wOv1T/33OjSfBW/SOcV/Qwgk4EXX4SJE6NFPi3uiSSnaGcA2afzfvnL6LlvflPFL5KkopsB7NkDlZXw3e9Gf6KrEV+k6xRNADQu7t1+O7z6anRfX7gj0rWKosSWLGla3HviCejXT8UvUgipzQAaR/zPfAZOOklTfZE0pDLObtzYNOL37AkDBqj4RdKQygxg926N+CLFIJUZwNFHq/hFioGW2kQCpgAQCZgCQCRgCgCRgCkARAKmABAJmAJAJGAKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQCpgAQCVheAWBmnzOzlWa238xqk+qUiBRGvjOAV4FLgacT6IuIFFhe3wjk7qsAzCyZ3ohIQWkNQCRgbc4AzGwJcGSOl77n7o+0d0dmNguYBVBdXd3uDopI12kzANz9vCR25O5zgDkAtbW1nkSbIpIfHQKIBCzf04CfMbMNwJnAf5nZ4mS6JSKFYO6Fn42b2RZgXdZT/YG/FrwjnVMqfS2VfoL62hWOdffebW2Uyn8M4u4Dsh+b2Qp3L4kLiUqlr6XST1Bfu4KZrWjPdloDEAmYAkAkYMUSAHPS7kAHlEpfS6WfoL52hXb1M5VFQBEpDsUyAxCRFCgARAJWNAFQ7N8tYGYXmNnrZtZgZt9Ouz8tMbN7zGyzmb2adl/aYmZDzOxJM3st/t1fl3afcjGzKjN73sxejvv547T71BYzqzCzF81sUWvbFU0AUMTfLWBmFcBs4EJgFDDFzEal26sWzQUuSLsT7bQX+Ja7jwLOAK4t0vf1Q2CSu58EjAUuMLMzUu5TW64DVrW1UdEEgLuvcvfX0+5HC8YBDe7+Z3ffDSwALkm5Tzm5+9PAe2n3oz3cfaO7/zG+v53oAzso3V4dzCM74oeV8a1oV8/NbDDwN8BdbW1bNAFQ5AYB67Meb6AIP6ilzMyGAicDden2JLd4Sv0SsBn4vbsXZT9j/wHcAOxva8OCBoCZLTGzV3PcinI0lcIws17Ag8A33H1b2v3Jxd33uftYYDAwzsxOTLtPuZjZRcBmd69vz/YF/VuApL5bIAVvAUOyHg+On5M8mVklUfH/3N0fSrs/bXH3rWb2JNE6SzEutI4HLjazyUAV0MfM7nP3K3NtrEOA9nkBGGFmw8ysB3A58JuU+1TyLPoyybuBVe5+U9r9aYmZDTCzfvH9Q4HzgdXp9io3d/+Ouw9296FEn9MnWip+KKIAKObvFnD3vcBXgcVEC1UPuPvKdHuVm5n9AlgOHGtmG8xsetp9asV4YCowycxeim+T0+5UDkcBT5rZK0SDwe/dvdXTa6VClwKLBKxoZgAiUngKAJGAKQBEAqYAEAmYAkAkYAoAkYApAEQC9r+BAxfr+DsQ2gAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -1921,11 +2373,11 @@ "metadata": { "id": "RwvZkHBvzZYJ", "colab_type": "code", - "outputId": "f4931a47-f252-443b-f5be-35609c88f418", "colab": { "base_uri": "https://localhost:8080/", - "height": 417 - } + "height": 335 + }, + "outputId": "e88b605b-a1f7-4a19-c000-89889b48b5d6" }, "source": [ "# Axis Bounds\n", @@ -1956,26 +2408,27 @@ "plt.title(\"non x-axis projection\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": 29, "outputs": [ { "output_type": "stream", "text": [ - "/usr/local/lib/python3.6/dist-packages/matplotlib/cbook/deprecation.py:106: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", - " warnings.warn(message, mplDeprecation, stacklevel=1)\n" + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:13: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " del sys.path[0]\n" ], "name": "stderr" }, { "output_type": "display_data", "data": { - "image/png": "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\nGUNSUhL33HMPKSkp3H333cyYMQO73e4JyeTJk3n88cf59a9/7bl/RkYG8+bNY8GCBZ5wDRgwoMF6\nrFYrVVVV/OAHP6C0tJTf/va3REU1nA169uzJ7NmzmTJlCi6Xi65du/Loo4/Wu01sbCx//OMfWbBg\nAadPnyY6Opr7778fi8VCWloan332GSNGjKBFixZMmDCB3r17065dO/7whz8wZMgQXn31VZ/9nCX4\n6DpOCQuHDh1ixIgR7Nmzp0mPM23aNCZMmMBtt93mo5VJONKuukgdJ0+ebHBWX+RsTQrnmTNnSElJ\nafQAukioueOOO6iurqZfv36BXooEuSYd41y2bFmjZy1F/O3yyy9v8m66niopF8vrifPAgQPs37+f\nYcOG+XA5IiLBz+twLly4kDlz5vhyLSIiIcGrcObm5tKrVy86dOhw0feprtazIUQkPHh1jDMvL4+C\nggLy8vI4evQoMTExJCcnM3DgwHPep6Sk4SvmANjt8RQWlnmzjJASKdsJkbOtkbKdEHnbeiFehXPx\n4sWe/16yZAnt27c/bzRFRMKJruMUETGpyU+5vO+++3yxDhGRkKGJU0TEJIVTRMQkhVNExCSFU0TE\nJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSF\nU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNE\nxCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQk\nhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVT\nRMQkmzd3qqioYM6cOZw4cYLKykruvfdebr75Zl+vTUQkKHkVznfffZcePXowa9YsDh8+zMyZMxVO\nEYkYXoUzLS3N899HjhyhXbt2PluQiEiwsxiGYXh754yMDI4ePcpzzz3Htddee97bVlfXYLNZvf1W\nIiJBo0nhBNi7dy+//OUveeONN7BYLOe8XWFhWaOft9vjz/m1cBIp2wmRs62Rsp0Qedt6IV6dVd+1\naxdHjhwBoGvXrtTU1FBcXOzNQ4mIhByvwrlt2zZefPFFAIqKiigvLycxMdGnCxMRCVZehTMjI4Pi\n4mImT57M7NmzmTdvHlFRuiRURCKDV2fVY2NjefLJJ329FhGRkKAxUUTEJIVTRMQkhVNExCSFU0TE\nJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSF\nU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNE\nxCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQk\nhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVNExCSFU0TEJIVTRMQkhVPEBKv1MyyWskAv\nQwJM4RQxwWb7kLZth2K17qr/hZoarLs+CcyixO+aFM5FixaRnp7O+PHjeeedd3y1JpGgZrPtJzFx\nOLieI3rLP2n90M9Iuq4LLVe9GOiliZ/YvL3jBx98wOeff05OTg4lJSWMHTuWESNG+HJtIsHHcAFg\nsZwByz20rQBeB05B5W3jAro08R+vw9m3b1969uwJQEJCAhUVFdTU1GC1Wn22OJFgEnXsKK1fegSe\nrPPJyUAfcP3oEqr6DwzU0sTPvN5Vt1qtxMXFAbB27VpuuukmRVPCmqtdMmdun9TwC9eA5Z1SbC3+\nx/+LEp/66ivLRd3O64nTbfPmzaxdu5YXXzz/8Z3ExDhstsbDarfHN3UZISFSthPCeFv3lDf6acsn\nS0jsM9zPi/GvcP03dTph82ZIS4Pduy/uPk0KZ35+Ps899xxZWVnEx5//h1pS0vgvnN0eT2Fh+F/e\nESnbCeG7rbGvrCT+4xUwtOHXCttPhDDcZrdw/Dd1OmH16mieeSaGLl1c9OxZQffuABf+A+H1rnpZ\nWRmLFi1i+fLltG3b1tuHEQkJsa+sJP7n99V+8DYwo/7X49ve7fc1iXecTjAMeOWVaDZssPH88xVk\nZ1fQosXFP4bX4Vy/fj0lJSU88MADTJs2jWnTpvH11197+3AiQateNP8MjIayXkvq3yb2daDa72uT\ni+d0wsqV0fTv34qdO6O4884qsrMruOEGl+nH8npXPT09nfT0dG/vLhIS6kUToArKnlrCmakziOf7\nQDfPl+LjZ1FW9pL/FykXdOCAhYkT4+jSxcXzz1fQq5f5WNbV5JNDIuGqQTT5TzRrda1/+9jXKSvL\n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\nnCIiJv0fXW7IRLlqBTMAAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "
" ] }, "metadata": { - "tags": [] + "tags": [], + "needs_background": "light" } } ] @@ -2051,11 +2504,11 @@ "metadata": { "id": "do_qBN5y7zbH", "colab_type": "code", - "outputId": "f37cfe3a-96e3-4b8f-f7b7-9d0173c15f3e", "colab": { "base_uri": "https://localhost:8080/", "height": 363 - } + }, + "outputId": "f37cfe3a-96e3-4b8f-f7b7-9d0173c15f3e" }, "source": [ "# Axis Bounds\n", @@ -2063,7 +2516,7 @@ "plt.ylim(-1.1,4)\n", "\n", "# Original Vector\n", - "# v = [1,0] \n", + "v = [1,0] \n", "w = [0,2]\n", "proj = [2,0]\n", "\n", @@ -2079,7 +2532,7 @@ "plt.title(\"Shadow of w\")\n", "plt.show()" ], - "execution_count": 0, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -2114,9 +2567,9 @@ "colab_type": "text" }, "source": [ - "The square of the norm of a vector is equivalent to the dot product of a vector with itself. \n", + "- The square of the norm of a vector is equivalent to the dot product of a vector with itself. \n", "\n", - "The dot product of a vector and itself can be rewritten as that vector times the transpose of itself. " + "- The dot product of a vector and itself can be rewritten as that vector times the transpose of itself. " ] } ] From 0178d1ee5a5fc8b4d2d6606bc6ca2a573952f22d Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Tue, 15 Sep 2020 20:00:42 -0400 Subject: [PATCH 7/9] Completed Assignment --- ...termediate_Linear_Algebra_Assignment.ipynb | 1943 ++++++++++++++++- 1 file changed, 1848 insertions(+), 95 deletions(-) diff --git a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb index 9110b2b1..f9e5a25c 100644 --- a/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb +++ b/module2-intermediate-linear-algebra/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -3,9 +3,10 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb", + "name": "DS_132_Intermediate_Linear_Algebra_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": { @@ -33,6 +44,21 @@ "## 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": "5Is1sAcZYzt7", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ], + "execution_count": 50, + "outputs": [] + }, { "cell_type": "code", "metadata": { @@ -41,175 +67,1552 @@ "colab": {} }, "source": [ - "" + "sales_list = [3505, 2400, 3027, 2798, 3700, 3250, 2689]" ], - "execution_count": 0, + "execution_count": 21, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "oh63KaOctEp_", - "colab_type": "text" + "id": "2lHBEXjEQu8S", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "ba8edf50-2bb7-434e-cbba-e383ddeb7450" + }, + "source": [ + "# Mean \n", + "mean1 = (3505 + 2400 + 3027 + 2798 + 3700 + 3250 + 2689) / 7\n", + "mean1" + ], + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3052.714285714286" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 29 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Gg-IMB-4SlAi", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "5c6f74c2-47a3-4265-e65e-9c5c41e6cd2f" }, "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)" + "# Variance \n", + "variance1 = ((((3505 - mean1)**2) + ((2400 - mean1)**2) + ((3027 - mean1)**2) + \n", + " ((2798 - mean1)**2) + ((3700 - mean1)**2) + ((3250 - mean1)**2) + \n", + " ((2689 - mean1)**2)) / (7-1))\n", + "variance1" + ], + "execution_count": 39, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "214387.90476190473" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 39 + } ] }, { "cell_type": "code", "metadata": { - "id": "G7ZB0krot564", + "id": "nKumoYM5Tcm0", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "0cb2f25f-de37-40e5-f0d3-c5e2ce950fa7" + }, + "source": [ + "# Standard Deviation\n", + "standard_deviation1 = variance1**0.5\n", + "standard_deviation1" + ], + "execution_count": 40, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "463.0204150595357" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 40 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "7KUfagKwOTmI", "colab_type": "code", "colab": {} }, "source": [ - "" + "def mean(list):\n", + " return (sum(sales_list) / len(sales_list))" ], - "execution_count": 0, + "execution_count": 41, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "J9SbUY9mt66I", - "colab_type": "text" + "id": "Tat_bRhCQTUx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "def16303-dea1-4326-dcb3-8b64f923eaf1" }, "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.)" + "mean(sales_list)" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3052.714285714286" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } ] }, { "cell_type": "code", "metadata": { - "id": "vFJms2YRrKhY", + "id": "J6fsq8xFOeVZ", "colab_type": "code", "colab": {} }, "source": [ - "" + "def variance(list):\n", + " mean = (sum(list) / len(list))\n", + " deviations = [(i - mean)**2 for i in list]\n", + " variance = sum(deviations) / (len(list)-1)\n", + " return variance" ], - "execution_count": 0, + "execution_count": 46, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "IbZVf7nmujPJ", - "colab_type": "text" + "id": "uOtve4O0PDx3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "a0096e6d-014b-4161-ee42-42459ecd3410" }, "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)" + "variance(sales_list)" + ], + "execution_count": 47, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "214387.90476190473" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 47 + } ] }, { "cell_type": "code", "metadata": { - "id": "0TWgUIiaCFzq", + "id": "TYlQ8FlTQVQF", "colab_type": "code", "colab": {} }, "source": [ - "" + "def standard_deviation(list):\n", + " mean = (sum(list) / len(list))\n", + " deviations = [(i - mean)**2 for i in list]\n", + " variance = sum(deviations) / (len(list)-1)\n", + " standard_deviation = variance**0.5\n", + " return standard_deviation" ], - "execution_count": 0, + "execution_count": 48, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "7K0Xfh8MvYkl", - "colab_type": "text" + "id": "23b3OiL6Qm2j", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "76e68cfe-ee49-4f6d-cdae-44714e6a78ae" }, "source": [ - "# Orthogonality" + "standard_deviation(sales_list)" + ], + "execution_count": 49, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "463.0204150595357" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 49 + } ] }, { "cell_type": "markdown", "metadata": { - "id": "Pe3eOZ2fvdZ-", + "id": "oh63KaOctEp_", "colab_type": "text" }, "source": [ - "## 2.1 Plot two vectors that are orthogonal to each other. What is a synonym for orthogonal?" + "## 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 library functions for calculating the covariance since we didn't specifically talk about its formula)" ] }, { "cell_type": "code", "metadata": { - "id": "YLSBk7hJvvCx", + "id": "G7ZB0krot564", "colab_type": "code", "colab": {} }, "source": [ - "" + "sales_list\n", + "\n", + "mean_sales = mean(sales_list)" + ], + "execution_count": 71, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "-CZPoeamaKOd", + "colab_type": "code", + "colab": {} + }, + "source": [ + "customers_list = [127, 80, 105, 92, 120, 115, 93]\n", + "\n", + "mean_cust = mean(customers_list)" ], - "execution_count": 0, + "execution_count": 72, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "x1DsWUIJbO_v", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 266 + }, + "outputId": "ae61837c-b99c-407f-95cc-11a6b7706350" + }, + "source": [ + "sales_customers = {\"sales numbers\": sales_list, \"number of customers\": customers_list}\n", + "\n", + "df = pd.DataFrame(sales_customers)\n", + "\n", + "df" + ], + "execution_count": 58, + "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", + "
sales numbersnumber of customers
03505127
1240080
23027105
3279892
43700120
53250115
6268993
\n", + "
" + ], + "text/plain": [ + " sales numbers number of customers\n", + "0 3505 127\n", + "1 2400 80\n", + "2 3027 105\n", + "3 2798 92\n", + "4 3700 120\n", + "5 3250 115\n", + "6 2689 93" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 58 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2WkVxaL6i26G", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "fbebe905-79c7-4947-fb3d-d56f8ba8ac3e" + }, + "source": [ + "covariance = ((sales_list[0] - mean_sales)*(customers_list[0] - mean_cust) + (sales_list[1] - mean_sales)*(customers_list[1] - mean_cust) + \n", + "(sales_list[2] - mean_sales)*(customers_list[2] - mean_cust) + (sales_list[3] - mean_sales)*(customers_list[3] - mean_cust) + \n", + "(sales_list[4] - mean_sales)*(customers_list[4] - mean_cust) + (sales_list[5] - mean_sales)*(customers_list[5] - mean_cust) + \n", + "(sales_list[6] - mean_sales)*(customers_list[6] - mean_cust)) / (7-1)\n", + "\n", + "covariance" + ], + "execution_count": 74, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "7604.357142857334" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 74 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "wKxnQPEZcDCl", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + }, + "outputId": "0225300a-022d-451e-ad42-b2b604d78b87" + }, + "source": [ + "# Large positive covariance is shown in scatter plot\n", + "\n", + "plt.scatter(df[\"sales numbers\"], df[\"number of customers\"])\n", + "plt.xlim(2000,4000)\n", + "plt.ylim(50,150)\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": "WhsIA6mobnU3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 111 + }, + "outputId": "25f8afdc-9488-4fd4-87eb-aeddc80946e4" + }, + "source": [ + "df.cov()\n", + "\n", + "# Covariance values for the two variables match the calculated covariance above" + ], + "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", + "
sales numbersnumber of customers
sales numbers214387.9047627604.357143
number of customers7604.357143290.952381
\n", + "
" + ], + "text/plain": [ + " sales numbers number of customers\n", + "sales numbers 214387.904762 7604.357143\n", + "number of customers 7604.357143 290.952381" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 59 + } + ] + }, { "cell_type": "markdown", "metadata": { - "id": "7AS4V1Nhvvxz", + "id": "J9SbUY9mt66I", "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}" + "## 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": "dcbf5a16-875d-4a5d-b5d9-874e7c1ac73b" + }, + "source": [ + "std_sales = standard_deviation(sales_list)\n", + "std_customers = standard_deviation(customers_list)\n", + "\n", + "std_customers" + ], + "execution_count": 68, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "17.057326313123664" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 68 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IKe2SFCZgvm2", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "47e2b3c9-c37e-4ab7-a4b7-ef64fb1d0d6f" + }, + "source": [ + "correlation = covariance / (std_sales * std_customers)\n", + "\n", + "correlation" + ], + "execution_count": 76, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.9628339778149151" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 76 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "o3N54wirfkq4", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 111 + }, + "outputId": "98e96169-386d-434d-9348-647da649be83" + }, + "source": [ + "df.corr()\n", + "\n", + "# Correlation coefficient for the two variables match the calculated correlation coefficient above" + ], + "execution_count": 67, + "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", + "
sales numbersnumber of customers
sales numbers1.0000000.962834
number of customers0.9628341.000000
\n", + "
" + ], + "text/plain": [ + " sales numbers number of customers\n", + "sales numbers 1.000000 0.962834\n", + "number of customers 0.962834 1.000000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 67 + } + ] + }, + { + "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": "eda34554-6ea8-4400-97c5-6b41234aaec6" + }, + "source": [ + "titanic = pd.read_csv('https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv')\n", + "\n", + "titanic.head()" + ], + "execution_count": 78, + "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": 78 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "rHsaPbnklWH0", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 306 + }, + "outputId": "6e07835c-d4bf-4825-8e7d-4de4dac8fd09" + }, + "source": [ + "titanic.dtypes" + ], + "execution_count": 83, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Unnamed: 0 int64\n", + "pclass float64\n", + "survived float64\n", + "name object\n", + "sex object\n", + "age float64\n", + "sibsp float64\n", + "parch float64\n", + "ticket object\n", + "fare float64\n", + "cabin object\n", + "embarked object\n", + "boat object\n", + "body float64\n", + "home.dest object\n", + "has_cabin_number int64\n", + "dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 83 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hOeH9ZhUp85q", + "colab_type": "code", + "colab": {} + }, + "source": [ + "titanic = titanic.drop(['name','sex', 'ticket', 'cabin', 'embarked', 'boat', 'home.dest'], axis=1 )" + ], + "execution_count": 102, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "o57MPa7apv4U", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "outputId": "1f5d2f3c-6fbe-4b28-df79-30b7412b22e5" + }, + "source": [ + "titanic.cov()" + ], + "execution_count": 103, + "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", + "
Unnamed: 0pclasssurvivedagesibspparchfarebodyhas_cabin_number
Unnamed: 0143117.500000284.357034-53.967125-1442.93981225.8287461.172783-9410.735123591.579132-95.438885
pclass284.3570340.701969-0.127248-3.9546050.0530900.013287-24.227788-2.876653-0.249992
survived-53.967125-0.1272480.236250-0.314343-0.0140880.0347766.1460230.0000000.061406
age-1442.939812-3.954605-0.314343165.850021-2.559806-1.459378114.41661381.6229221.463138
sibsp25.8287460.053090-0.014088-2.5598061.0850520.3368338.641768-8.708471-0.003946
parch1.1727830.0132870.034776-1.4593780.3368330.7491959.9280314.2371900.013316
fare-9410.735123-24.2277886.146023114.4166138.6417689.9280312678.959738-179.16468410.976961
body591.579132-2.8766530.00000081.622922-8.7084714.237190-179.1646849544.6885673.625689
has_cabin_number-95.438885-0.2499920.0614061.463138-0.0039460.01331610.9769613.6256890.174613
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 pclass ... body has_cabin_number\n", + "Unnamed: 0 143117.500000 284.357034 ... 591.579132 -95.438885\n", + "pclass 284.357034 0.701969 ... -2.876653 -0.249992\n", + "survived -53.967125 -0.127248 ... 0.000000 0.061406\n", + "age -1442.939812 -3.954605 ... 81.622922 1.463138\n", + "sibsp 25.828746 0.053090 ... -8.708471 -0.003946\n", + "parch 1.172783 0.013287 ... 4.237190 0.013316\n", + "fare -9410.735123 -24.227788 ... -179.164684 10.976961\n", + "body 591.579132 -2.876653 ... 9544.688567 3.625689\n", + "has_cabin_number -95.438885 -0.249992 ... 3.625689 0.174613\n", + "\n", + "[9 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 103 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "n3xMnQ3Pp0Zz", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 328 + }, + "outputId": "9444aacc-ab7b-4b8a-a59f-f65f09ed3f1b" + }, + "source": [ + "titanic.corr()" + ], + "execution_count": 104, + "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", + "
Unnamed: 0pclasssurvivedagesibspparchfarebodyhas_cabin_number
Unnamed: 01.0000000.897822-0.293717-0.2961720.0655940.003584-0.4812150.015558-0.603727
pclass0.8978221.000000-0.312469-0.3663700.0608320.018322-0.558629-0.034642-0.713857
survived-0.293717-0.3124691.000000-0.050199-0.0278250.0826600.244265NaN0.302250
age-0.296172-0.366370-0.0501991.000000-0.190747-0.1308720.1718920.0590590.271887
sibsp0.0655940.060832-0.027825-0.1907471.0000000.3735870.160238-0.099961-0.009064
parch0.0035840.0183220.082660-0.1308720.3735871.0000000.2215390.0510990.036806
fare-0.481215-0.5586290.2442650.1718920.1602380.2215391.000000-0.0431100.507253
body0.015558-0.034642NaN0.059059-0.0999610.051099-0.0431101.0000000.083796
has_cabin_number-0.603727-0.7138570.3022500.271887-0.0090640.0368060.5072530.0837961.000000
\n", + "
" + ], + "text/plain": [ + " Unnamed: 0 pclass ... body has_cabin_number\n", + "Unnamed: 0 1.000000 0.897822 ... 0.015558 -0.603727\n", + "pclass 0.897822 1.000000 ... -0.034642 -0.713857\n", + "survived -0.293717 -0.312469 ... NaN 0.302250\n", + "age -0.296172 -0.366370 ... 0.059059 0.271887\n", + "sibsp 0.065594 0.060832 ... -0.099961 -0.009064\n", + "parch 0.003584 0.018322 ... 0.051099 0.036806\n", + "fare -0.481215 -0.558629 ... -0.043110 0.507253\n", + "body 0.015558 -0.034642 ... 1.000000 0.083796\n", + "has_cabin_number -0.603727 -0.713857 ... 0.083796 1.000000\n", + "\n", + "[9 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 104 + } + ] + }, + { + "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": 281 + }, + "outputId": "7fc84521-d6ab-4e15-f7ab-586f41733fc2" + }, + "source": [ + "# Perpendicular is a synonym for orthogonal.\n", + "\n", + "vector_1 = [0, 3]\n", + "vector_2 = [3, 0]\n", + "\n", + "plt.arrow(0,0, vector_1[0], vector_1[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, vector_2[0], vector_2[1],head_width=.05, head_length=0.05, color ='green')\n", + "plt.xlim(-1,4) \n", + "plt.ylim(-1,4)\n", + "plt.title(\"Orthogonal Vectors\")\n", + "plt.show()" + ], + "execution_count": 88, + "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": 51 + }, + "outputId": "5c262e7b-4dde-4607-9050-3fdb662be056" + }, + "source": [ + "a = np.array([[-5], [3], [7]])\n", + "\n", + "b = np.array([[6], [-8], [2]])\n", + "\n", + "print(\"Dot product: \", (a * b).sum())\n", + "print(\"Dot product: \", np.dot(a.T[0], b.T[0]))" + ], + "execution_count": 96, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Dot product: -40\n", + "Dot product: -40\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "p2pODiOHpTC7", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# The vectors are NOT orthogonal because their dot product is not zero." + ], + "execution_count": null, + "outputs": [] + }, + { + "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 = ([2, -15, 6, 20])" + ], + "execution_count": 105, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "uOiWTA_braN1", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "79616820-b0ce-48a5-b299-aac8dfcf996a" + }, + "source": [ + "norm_c = np.linalg.norm(c)\n", + "\n", + "print(\"Norm squared: \", (norm_c)**2)" + ], + "execution_count": 110, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Norm squared: 665.0\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xLoaxzj4rmZw", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "16ba7be1-c795-4f5c-b32b-6946265a4085" + }, + "source": [ + "print(\"Dot product: \", np.dot(c, c))" + ], + "execution_count": 108, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Dot product: 665\n" + ], + "name": "stdout" + } ] }, { "cell_type": "code", "metadata": { - "id": "F_-y54YSz47k", + "id": "yxIkyTSXrojf", "colab_type": "code", "colab": {} }, "source": [ - "" + "c_T = ([[2], [-15], [6], [20]])" ], - "execution_count": 0, + "execution_count": 111, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "MiNjyqiEz5SG", - "colab_type": "text" + "id": "2MBh0njDsQVz", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "a16231c4-11c5-4394-aa1a-7a96f59a0e8d" }, "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}" + "print(np.matmul(c, c_T))" + ], + "execution_count": 117, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[665]\n" + ], + "name": "stdout" + } ] }, { "cell_type": "code", "metadata": { - "id": "IlV_uaYK1EQB", + "id": "ZckKlGglvJC3", "colab_type": "code", "colab": {} }, "source": [ - "" + "# All these quantities are equivalent. " ], - "execution_count": 0, + "execution_count": null, "outputs": [] }, { @@ -239,14 +1642,34 @@ ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "oBCj1sDW2ouC", - "colab_type": "text" + "id": "DNVQanbsxyp5", + "colab_type": "code", + "colab": {} }, "source": [ - "Your text here" - ] + "d = np.array([[7], [12]])\n", + "\n", + "e = np.array([[2], [11], [-8]])" + ], + "execution_count": 122, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "EMBnstNf5vco", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# d = 7 i_hat + 12 j_hat\n", + "\n", + "# e = 2 i_hat + 11 j_hat + (-8) k_hat" + ], + "execution_count": null, + "outputs": [] }, { "cell_type": "markdown", @@ -267,13 +1690,31 @@ "metadata": { "id": "I3W8ZiHR1_Fa", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "74b4d1db-b1b9-4df1-cd45-b59cc89f54e0" }, "source": [ - "" + "f = np.array([4, 12, 11, 9, 2])\n", + "\n", + "norm_f = np.linalg.norm(f)\n", + "\n", + "f_hat = (f / norm_f)\n", + "\n", + "print(f_hat)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 133, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[0.20908335 0.62725005 0.57497921 0.47043754 0.10454167]\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -295,6 +1736,104 @@ "## 4.1 Plot two vectors that are linearly dependent and two vectors that are linearly independent (bonus points if done in $\\mathbb{R}^3$)." ] }, + { + "cell_type": "code", + "metadata": { + "id": "eJOuIyGP6KUX", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "75704bf3-b220-4097-ce93-007e78510fb9" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-1.1,4) \n", + "plt.ylim(-1.1,4)\n", + "\n", + "# Original Vector\n", + "v = [1,0] \n", + "\n", + "# Scaled Vectors\n", + "v2 = np.multiply(3, v)\n", + "v3 = np.multiply(-1,v)\n", + "\n", + "# Get Vals for L\n", + "axes = plt.gca()\n", + "x_vals = np.array(axes.get_xlim())\n", + "y_vals = 0*x_vals\n", + "\n", + "# Plot Vectors and L\n", + "plt.plot(x_vals, y_vals, '--', color='b', linewidth=1)\n", + "plt.arrow(0,0, v2[0], v2[1], linewidth=3, head_width=.05, head_length=0.05, color ='yellow')\n", + "plt.arrow(0,0, v[0], v[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0,0, v3[0], v3[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"Linearly Dependent Vectors\")\n", + "plt.show()" + ], + "execution_count": 134, + "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": "VJqBXfBg6UTQ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "b45e289a-48e8-42f0-e39a-66f3bedc5c74" + }, + "source": [ + "# Axis Bounds\n", + "plt.xlim(-2,3.5) \n", + "plt.ylim(-1,3)\n", + "\n", + "# Original Vector\n", + "a = [-1.5,.5] \n", + "b = [3, 1]\n", + "\n", + "# Plot Vectors\n", + "plt.arrow(0,0, a[0], a[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.arrow(0,0, b[0], b[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"Linearly Independent Vectors\")\n", + "plt.show()" + ], + "execution_count": 135, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -326,13 +1865,39 @@ "metadata": { "id": "G2LK2RWL39Q4", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "08dad5dc-1b72-4ca9-c3f3-a6a81369e1e4" }, "source": [ - "" + "# h is a multiple of g, meaning the vectors are linearly dependent, so span is \n", + "# just all vectors on that line. The number of linearly independent vectors in\n", + "# the set is one.\n", + "\n", + "import numpy as np\n", + "\n", + "Y = np.array([[1, 2],\n", + " [4, 8]])\n", + "\n", + "np.linalg.matrix_rank(Y)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 146, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 146 + } + ] }, { "cell_type": "markdown", @@ -357,13 +1922,39 @@ "metadata": { "id": "p1i_ueD25ZcP", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "0ca48f00-ea01-4189-eed8-f66062dc0d59" }, "source": [ - "" + "import numpy as np\n", + "\n", + "Z = np.array([[1, 2, 3],\n", + " [-1, 0, 7],\n", + " [4, 8, 2]])\n", + "\n", + "np.linalg.matrix_rank(Z)\n", + "\n", + "# Span of the vectors is equal to rank of the matrix composed of those vectors.\n", + "# So, span of {l,m,n} is equal to 3 " ], - "execution_count": 0, - "outputs": [] + "execution_count": 142, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 142 + } + ] }, { "cell_type": "markdown", @@ -391,13 +1982,54 @@ "metadata": { "id": "utvF3Pkt8NP6", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 335 + }, + "outputId": "52038a11-9696-40d8-dbbb-ac9e351e390c" }, "source": [ - "" + "# Axis Bounds\n", + "plt.xlim(-1,2) \n", + "plt.ylim(-1,2)\n", + "\n", + "# Unit Vectors\n", + "i_hat = [1,0]\n", + "j_hat = [0,1]\n", + "\n", + "# Fix Axes\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# Plot Vectors\n", + "plt.arrow(0, 0, i_hat[0], i_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0, 0, j_hat[0], j_hat[1], linewidth=3, head_width=.05, head_length=0.05, color ='blue')\n", + "plt.title(\"basis vectors in R^2\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 147, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " # Remove the CWD from sys.path while we load stuff.\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -416,7 +2048,7 @@ "colab_type": "text" }, "source": [ - "" + "When a set of vectors that are linearly independent span a vector space. " ] }, { @@ -447,6 +2079,39 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "d4Uh8Age7_mL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "3ff8789b-b71e-4610-837c-85da485341e2" + }, + "source": [ + "import numpy as np\n", + "\n", + "P = np.matrix([[1,2,3],[-1,0,7],[4,8,2]])\n", + "np.linalg.matrix_rank(P)" + ], + "execution_count": 140, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 140 + } + ] + }, { "cell_type": "markdown", "metadata": { @@ -464,7 +2129,7 @@ "colab_type": "text" }, "source": [ - "" + "The number of linearly independent vectors within a matrix." ] }, { @@ -490,18 +2155,106 @@ "## graph your projected vector to check your work (make sure your axis are square/even)" ] }, + { + "cell_type": "code", + "metadata": { + "id": "47bqL5cHMAtz", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "989c4c42-4139-49b2-9255-798a94f3b156" + }, + "source": [ + "v = np.array([1, 3])\n", + "w = np.array([-1, 2])\n", + "\n", + "w_v = np.dot(w, v)\n", + "v_v = np.dot(v, v)\n", + "\n", + "proj_L = ((w_v)/(v_v)) * v\n", + "\n", + "proj_L" + ], + "execution_count": 152, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0.5, 1.5])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 152 + } + ] + }, { "cell_type": "code", "metadata": { "id": "hp5z2WTBCNKx", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 335 + }, + "outputId": "c4aab581-464c-4d22-bb73-524349814d69" }, "source": [ - "" + "# Axis Bounds\n", + "plt.xlim(-2,2) \n", + "plt.ylim(-1,4)\n", + "\n", + "# Original Vector\n", + "v = [1,3] \n", + "w = [-1,2]\n", + "proj = [0.5, 1.5]\n", + "\n", + "# Set axes\n", + "axes = plt.gca()\n", + "plt.axes().set_aspect('equal')\n", + "\n", + "# Get Vals for L\n", + "x_vals = np.array(axes.get_xlim())\n", + "y_vals = 3*x_vals\n", + "\n", + "# Plot Vectors and L\n", + "plt.plot(x_vals, y_vals, '--', color='b', linewidth=1)\n", + "plt.arrow(0, 0, v[0], v[1], linewidth=3, head_width=.05, head_length=0.05, color ='green')\n", + "plt.arrow(0, 0, proj[0], proj[1], linewidth=3, head_width=.05, head_length=0.05, color ='gray')\n", + "plt.arrow(0, 0, w[0], w[1], linewidth=3, head_width=.05, head_length=0.05, color ='red')\n", + "\n", + "plt.title(\"non x-axis projection\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 155, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:12: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n", + " if sys.path[0] == '':\n" + ], + "name": "stderr" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -524,11 +2277,11 @@ "metadata": { "id": "cp52kZra-ykj", "colab_type": "code", - "outputId": "12502200-eafe-4e20-bfb7-2d539c6027cb", "colab": { "base_uri": "https://localhost:8080/", "height": 347 - } + }, + "outputId": "12502200-eafe-4e20-bfb7-2d539c6027cb" }, "source": [ "import pandas as pd\n", @@ -547,7 +2300,7 @@ "plt.scatter(df.x, df.y)\n", "plt.show()" ], - "execution_count": 0, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -573,7 +2326,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": null, "outputs": [] } ] From 84468a84e3a75f935ec69940d78e2ee6e181fbd5 Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:05:31 -0400 Subject: [PATCH 8/9] Completed Assignment --- ...133_High_Dimensional_Data_Assignment.ipynb | 692 ++++++++++++------ 1 file changed, 461 insertions(+), 231 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..6fcfe52e 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 @@ -3,9 +3,10 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_133_High_Dimensional_Data_Assignment.ipynb", + "name": "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": { @@ -38,13 +49,78 @@ "metadata": { "id": "fIJhCtF6RW_U", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "130a8f15-ea11-436d-f7ba-fb48203cc9bf" }, "source": [ - "" + "import matplotlib.pyplot as plt\n", + "\n", + "input_vector = [3, 4]\n", + "output_vector = [10, -9]\n", + "\n", + "plt.arrow(0,0, input_vector[0], input_vector[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.arrow(0,0, output_vector[0], output_vector[1],head_width=.05, head_length=0.05, color ='red')\n", + "plt.xlim(0,11) \n", + "plt.ylim(-10,5)\n", + "plt.title(\"Does not pass vertical line test\")\n", + "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 5, + "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": "UpdkHX32b1kL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "8d09f64c-e9e0-458a-d220-fe04a8b26167" + }, + "source": [ + "output_vector = [10, -9]\n", + "\n", + "plt.arrow(0,0, output_vector[0], output_vector[1],head_width=.05, head_length=0.05, color ='blue')\n", + "plt.xlim(0,11) \n", + "plt.ylim(-10,5)\n", + "plt.title(\"Passes vertical line test\")\n", + "plt.show()" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", @@ -63,7 +139,7 @@ "colab_type": "text" }, "source": [ - "" + "Because a function has the property that each input is related to exactly one output. If a graph has multiple outputs (y-values) for one input (x-value), it cannot be considered a function." ] }, { @@ -98,6 +174,20 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "-u9p3e7LeQLj", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Relation 2 is a function because no domain value (x-value) maps to the same \n", + "# range value (y-value) twice." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -124,6 +214,25 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "XdWbVJH3fC_T", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# For function m: \n", + "# - Dimensionality of the domain(input) = 3\n", + "# - Dimensionality of the codomain(range/output) = 3\n", + "\n", + "# For function n: \n", + "# - Dimensionality of the domain(input) = 4\n", + "# - Dimensionality of the codomain(range/output) = 2" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -134,6 +243,20 @@ "## 3.2 Do you think it's possible to create a function that maps from a lower dimensional space to a higher dimensional space? If so, provide an example." ] }, + { + "cell_type": "code", + "metadata": { + "id": "sBbbzopJqX-N", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# No, because then it would not be considered a function as it would have \n", + "# multiple outputs (y-values) for one input (x-value)." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -161,6 +284,30 @@ "\\end{align}" ] }, + { + "cell_type": "code", + "metadata": { + "id": "zwy0Y5Kaypqu", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import numpy as np\n", + "\n", + "# For function p:\n", + "# p([[1], [0]]) = [[1], [-1]]\n", + "# p([[0], [1]]) = [[3], [2]]\n", + "T_p = np.array([[1, 3], [-1, 2]])\n", + "\n", + "# For function q: \n", + "# q([[1], [0], [0]]) = ([[4], [-1], [5]])\n", + "# q([[0], [1], [0]]) = ([[1], [2], [1]])\n", + "# q([[0], [0], [1]]) = ([[2], [3], [-2]])\n", + "T_q = np.array([[4, 1, 2], [-1, 2, 3], [5, 1, -2]])" + ], + "execution_count": 8, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -176,13 +323,70 @@ "metadata": { "id": "0UANR1IEaVWE", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "e76dc2a0-4150-4979-d0b8-78809d98b09f" }, "source": [ - "" + "# p([[2], [3]]) = ([[2 + 3(3)], [2(3) - 2]]) = ([[11], [4]])\n", + "p = np.array([[2], [3]])\n", + "\n", + "np.matmul(T_p, p)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 12, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[11],\n", + " [ 4]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3m-ZB6L-3T6a", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "564e9ee8-36a4-4da3-fc4a-b22567ebe762" + }, + "source": [ + "# q([[2], [3], [4]]) = ([[4(2) + 3 + 2(4)], [2(3) - 2 + 3(4)], [5(2) - 2(4) + 3]])\n", + "# = ([[19], [16], [5]])\n", + "q = np.array([[2], [3], [4]])\n", + "\n", + "np.matmul(T_q, q)" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[19],\n", + " [16],\n", + " [ 5]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 15 + } + ] }, { "cell_type": "markdown", @@ -204,6 +408,22 @@ "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors." ] }, + { + "cell_type": "code", + "metadata": { + "id": "7VoUa1eU3e03", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# An eigenvector is a vector that, after a linear transformation has been applied,\n", + "# has not changed direction/orientation. Although the direction has not changed,\n", + "# the vector can get stretched or squished by a certain factor, and this factor\n", + "# is called the eigenvalue. " + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -224,6 +444,20 @@ "## 6.1 What are some of the challenges of working with high dimensional spaces?" ] }, + { + "cell_type": "code", + "metadata": { + "id": "9DY3hKvqi_qb", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Difficult to visualize, hard for humans to comprehend beyond three dimensions,\n", + "# increased redundancy, increased computational workload..." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -234,6 +468,20 @@ "## 6.2 What is the rule of thumb for how many observations you should have compared to parameters in your model?" ] }, + { + "cell_type": "code", + "metadata": { + "id": "fZdzIDtfkyD9", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# N (number of observations, or rows in a dataset) = 5 * P (parameters, dimensions, features or columns)\n", + "# This is a minimum, as having more observations is always better!" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -269,9 +517,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 351 + "height": 355 }, - "outputId": "974e831f-cd76-41ed-c225-8ab4d1fea275" + "outputId": "b225af02-eb9d-4a96-ce2b-fe53300e5b96" }, "source": [ "from urllib.request import urlopen\n", @@ -296,7 +544,7 @@ "print(national.shape)\n", "national.head()" ], - "execution_count": 2, + "execution_count": 16, "outputs": [ { "output_type": "stream", @@ -850,7 +1098,7 @@ "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 16 } ] }, @@ -859,91 +1107,41 @@ "metadata": { "id": "O5zrMTud2qFU", "colab_type": "code", - "outputId": "22a279ad-ad46-46ba-82c4-47ff31864e01", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 - } + "height": 221 + }, + "outputId": "5f17b633-918b-4742-e7a4-0fd573e0eb2b" }, "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 +1150,17 @@ "metadata": { "id": "yIrOjVmd2yLz", "colab_type": "code", - "outputId": "d855cbbd-42ba-47a2-aba9-584813e9c5ab", "colab": { "base_uri": "https://localhost:8080/", - "height": 35 - } + "height": 34 + }, + "outputId": "b14b9d0d-b181-43e7-be96-577f9ea6698b" }, "source": [ "# check for null values\n", "national.isnull().sum().any()" ], - "execution_count": 4, + "execution_count": 18, "outputs": [ { "output_type": "execute_result", @@ -974,7 +1172,7 @@ "metadata": { "tags": [] }, - "execution_count": 4 + "execution_count": 18 } ] }, @@ -983,11 +1181,11 @@ "metadata": { "id": "2u9tdmwX3KL_", "colab_type": "code", - "outputId": "ce3e8bc6-7571-4b9b-8b4f-b8ae7c94f837", "colab": { "base_uri": "https://localhost:8080/", - "height": 52 - } + "height": 51 + }, + "outputId": "5c9804a8-4e7a-4ee3-bcfe-dcd92df6878a" }, "source": [ "# check for number of categorical vs numeric columns\n", @@ -997,7 +1195,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 +1212,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": "eb5f6154-b60c-46b4-8233-cb6c0e405028" }, "source": [ "# We're making a copy of our data in case we mess something up.\n", @@ -1033,80 +1231,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 +1265,9 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 265 + "height": 270 }, - "outputId": "02fe0fad-81bb-404c-a4cd-92242cfe4c6c" + "outputId": "6f952d73-052e-44cb-c632-8ca3aff411c3" }, "source": [ "# Replace all category cell values with their numeric category codes\n", @@ -1129,7 +1277,7 @@ "print(national_processed.shape)\n", "national_processed.head()" ], - "execution_count": 7, + "execution_count": 21, "outputs": [ { "output_type": "stream", @@ -1683,7 +1831,7 @@ "metadata": { "tags": [] }, - "execution_count": 7 + "execution_count": 21 } ] }, @@ -1694,103 +1842,185 @@ "colab_type": "code", "colab": { "base_uri": "https://localhost:8080/", - "height": 1000 + "height": 221 }, - "outputId": "3cbe9b8e-05e4-4126-f072-030c8d2ac7b4" + "outputId": "09853de7-a9cd-46a3-fb17-5713582c6d78" }, "source": [ - "# Now we only ahve numeric columns (ints and floats)\n", + "# Now we only have 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 } ] }, { "cell_type": "code", "metadata": { - "id": "WAJ8bjVcEwhA", + "id": "qaaeElbDx1Ku", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "96d1409b-78ea-4179-bf0a-3c5c3e46f904" }, "source": [ - "### Your Code Here" + "### Your Code Here\n", + "\n", + "from numpy import array\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "Z = scaler.fit_transform(national_processed)\n", + "\n", + "pca = PCA(2)\n", + "\n", + "pca.fit(Z)\n", + "\n", + "B = pca.transform(Z)\n", + "\n", + "B = pd.DataFrame(B)\n", + "\n", + "B.columns = ['PC1', 'PC2']\n", + "\n", + "B.head()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 34, + "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", + "
PC1PC2
0-2.576570-1.376127
12.040643-0.988061
21.2152700.370168
32.8218371.723711
4-1.570106-0.878362
\n", + "
" + ], + "text/plain": [ + " PC1 PC2\n", + "0 -2.576570 -1.376127\n", + "1 2.040643 -0.988061\n", + "2 1.215270 0.370168\n", + "3 2.821837 1.723711\n", + "4 -1.570106 -0.878362" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 34 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "B_jdQtiazamY", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 295 + }, + "outputId": "b547d71a-4321-4fbc-8fe5-e37cfe12deb8" + }, + "source": [ + "plt.scatter(B['PC1'], B['PC2'], alpha=.2)\n", + "plt.title('PC1 against PC2')\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "\n", + "plt.savefig('pc1pc2.png', transparent=False, dpi=150)\n", + "plt.show()" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, { "cell_type": "markdown", From 25c7575af21ccf9da3e603adf56965786a00cd8c Mon Sep 17 00:00:00 2001 From: Collin-Campbell <70334677+Collin-Campbell@users.noreply.github.com> Date: Thu, 17 Sep 2020 21:45:52 -0400 Subject: [PATCH 9/9] Completed assignment --- .../LS_DS_134_Clustering_Assignment.ipynb | 2847 ++++++++++++++++- 1 file changed, 2703 insertions(+), 144 deletions(-) diff --git a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb index 3342efb0..4c8f6cb4 100644 --- a/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb +++ b/module4-clustering/LS_DS_134_Clustering_Assignment.ipynb @@ -3,9 +3,10 @@ "nbformat_minor": 0, "metadata": { "colab": { - "name": "LS_DS_134_Clustering_Assignment.ipynb", + "name": "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": "0bb087a0-ae2b-4592-8512-11b8be289ceb" }, "source": [ "import pandas as pd\n", @@ -72,7 +83,7 @@ "print(df.shape)\n", "df.head()" ], - "execution_count": 0, + "execution_count": 519, "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": 519 } ] }, @@ -313,20 +367,218 @@ { "cell_type": "code", "metadata": { - "id": "86MHoPJon_aC", + "id": "ke3Ukh0gDO5I", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Saving before I drop for later testing\n", + "\n", + "df_diagnosis_test = df['diagnosis']" + ], + "execution_count": 520, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "bsE2Q2OPiIIU", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "0849acd9-315c-4cee-aa38-ad3f121e3972" + }, + "source": [ + "df_diagnosis_test.value_counts()" + ], + "execution_count": 521, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "B 357\n", + "M 212\n", + "Name: diagnosis, dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 521 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I6oeGDvaqmoJ", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df_diagnosis_test = pd.DataFrame(df_diagnosis_test)\n", + "df_diagnosis_test = df_diagnosis_test.replace({'M': 1, 'B': 0})" + ], + "execution_count": 522, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "xS6_Z4o_q6yy", "colab_type": "code", - "outputId": "d4d9f1cd-c63c-4623-954e-11a61d1e3ced", "colab": { "base_uri": "https://localhost:8080/", - "height": 261 + "height": 419 + }, + "outputId": "e69ddf34-8471-421b-8a52-f2f3cc957d39" + }, + "source": [ + "df_diagnosis_test" + ], + "execution_count": 523, + "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", + "
diagnosis
01
11
21
31
41
......
5641
5651
5661
5671
5680
\n", + "

569 rows × 1 columns

\n", + "
" + ], + "text/plain": [ + " diagnosis\n", + "0 1\n", + "1 1\n", + "2 1\n", + "3 1\n", + "4 1\n", + ".. ...\n", + "564 1\n", + "565 1\n", + "566 1\n", + "567 1\n", + "568 0\n", + "\n", + "[569 rows x 1 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 523 } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mL7QC-kKReYm", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df = df.drop(['id','diagnosis', 'Unnamed: 32'], axis=1)\n", + "\n", + "# Dropped diagnosis to make unsupervised, dropped Unnamed due to NaNs, dropped id because unneeded" + ], + "execution_count": 524, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "aF3dWsmUROet", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 258 + }, + "outputId": "9bd79323-ab4f-454b-99bd-28b2c3edaff4" }, "source": [ - "df = df.drop('diagnosis', axis=1)\n", + "print(df.shape)\n", "df.head()" ], - "execution_count": 0, + "execution_count": 525, "outputs": [ + { + "output_type": "stream", + "text": [ + "(569, 30)\n" + ], + "name": "stdout" + }, { "output_type": "execute_result", "data": { @@ -349,7 +601,6 @@ " \n", " \n", " \n", - " id\n", " radius_mean\n", " texture_mean\n", " perimeter_mean\n", @@ -359,7 +610,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", @@ -369,13 +631,11 @@ " concave points_worst\n", " symmetry_worst\n", " fractal_dimension_worst\n", - " Unnamed: 32\n", " \n", " \n", " \n", " \n", " 0\n", - " 842302\n", " 17.99\n", " 10.38\n", " 122.80\n", @@ -385,7 +645,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", @@ -395,11 +666,9 @@ " 0.2654\n", " 0.4601\n", " 0.11890\n", - " NaN\n", " \n", " \n", " 1\n", - " 842517\n", " 20.57\n", " 17.77\n", " 132.90\n", @@ -409,7 +678,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", @@ -419,11 +699,9 @@ " 0.1860\n", " 0.2750\n", " 0.08902\n", - " NaN\n", " \n", " \n", " 2\n", - " 84300903\n", " 19.69\n", " 21.25\n", " 130.00\n", @@ -433,7 +711,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", @@ -443,11 +732,9 @@ " 0.2430\n", " 0.3613\n", " 0.08758\n", - " NaN\n", " \n", " \n", " 3\n", - " 84348301\n", " 11.42\n", " 20.38\n", " 77.58\n", @@ -457,7 +744,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", @@ -467,11 +765,9 @@ " 0.2575\n", " 0.6638\n", " 0.17300\n", - " NaN\n", " \n", " \n", " 4\n", - " 84358402\n", " 20.29\n", " 14.34\n", " 135.10\n", @@ -481,7 +777,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", @@ -491,114 +798,519 @@ " 0.1625\n", " 0.2364\n", " 0.07678\n", - " NaN\n", " \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", + " 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", - " 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", - "\n", - "[5 rows x 32 columns]" + "[5 rows x 30 columns]" ] }, "metadata": { "tags": [] }, - "execution_count": 2 + "execution_count": 525 } ] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "rskC80k3OKMA", - "colab_type": "text" + "id": "JjCf-V71oWTN", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 544 + }, + "outputId": "c0394a72-75ad-4ca9-b3ef-4d852498dd12" }, "source": [ - "## Let's do it!\n", - "\n", - "- You might want to do some data exploration to see if you can find specific columns that will help you find distinct clusters of cells\n", - "- You might want to use the elbow method to decide on the number of clusters to use.\n" + "df.dtypes" + ], + "execution_count": 526, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "radius_mean float64\n", + "texture_mean float64\n", + "perimeter_mean float64\n", + "area_mean float64\n", + "smoothness_mean float64\n", + "compactness_mean float64\n", + "concavity_mean float64\n", + "concave points_mean float64\n", + "symmetry_mean float64\n", + "fractal_dimension_mean float64\n", + "radius_se float64\n", + "texture_se float64\n", + "perimeter_se float64\n", + "area_se float64\n", + "smoothness_se float64\n", + "compactness_se float64\n", + "concavity_se float64\n", + "concave points_se float64\n", + "symmetry_se float64\n", + "fractal_dimension_se float64\n", + "radius_worst float64\n", + "texture_worst float64\n", + "perimeter_worst float64\n", + "area_worst float64\n", + "smoothness_worst float64\n", + "compactness_worst float64\n", + "concavity_worst float64\n", + "concave points_worst float64\n", + "symmetry_worst float64\n", + "fractal_dimension_worst float64\n", + "dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 526 + } ] }, { "cell_type": "code", "metadata": { - "id": "U92Y3jNKPpjJ", + "id": "rLWUtgbquUIQ", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 544 + }, + "outputId": "a4ecba5f-2880-4106-b250-f9894343950b" }, "source": [ - "# Perform K-Means Clustering on the Dataset" + "df.isnull().sum()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 527, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "radius_mean 0\n", + "texture_mean 0\n", + "perimeter_mean 0\n", + "area_mean 0\n", + "smoothness_mean 0\n", + "compactness_mean 0\n", + "concavity_mean 0\n", + "concave points_mean 0\n", + "symmetry_mean 0\n", + "fractal_dimension_mean 0\n", + "radius_se 0\n", + "texture_se 0\n", + "perimeter_se 0\n", + "area_se 0\n", + "smoothness_se 0\n", + "compactness_se 0\n", + "concavity_se 0\n", + "concave points_se 0\n", + "symmetry_se 0\n", + "fractal_dimension_se 0\n", + "radius_worst 0\n", + "texture_worst 0\n", + "perimeter_worst 0\n", + "area_worst 0\n", + "smoothness_worst 0\n", + "compactness_worst 0\n", + "concavity_worst 0\n", + "concave points_worst 0\n", + "symmetry_worst 0\n", + "fractal_dimension_worst 0\n", + "dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 527 + } + ] }, { "cell_type": "markdown", "metadata": { - "id": "7ghqYSxrP_FE", + "id": "rskC80k3OKMA", "colab_type": "text" }, "source": [ - "## Check you work: \n", + "## Let's do it!\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}" + "- You might want to do some data exploration to see if you can find specific columns that will help you find distinct clusters of cells\n", + "- You might want to use the elbow method to decide on the number of clusters to use.\n" ] }, { "cell_type": "code", "metadata": { - "id": "OIG7-yGLP-eA", + "id": "U92Y3jNKPpjJ", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 187 + }, + "outputId": "e7dfd275-0bd1-4fa5-8770-54ce80f81d82" }, "source": [ - "# Your Code Here" + "# Perform K-Means Clustering on the Dataset\n", + "\n", + "# Would begin by importing KMeans:\n", + "from sklearn.cluster import KMeans\n", + "\n", + "# Find elbow\n", + "K = range(1,11)\n", + "sum_squared_distance = []\n", + "\n", + "for k in K:\n", + " kmeans = KMeans(n_clusters=k)\n", + " kmeans.fit(df)\n", + " sum_squared_distance.append(kmeans.inertia_)\n", + "\n", + "sum_squared_distance" ], - "execution_count": 0, - "outputs": [] - }, - { + "execution_count": 528, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[256677243.9542025,\n", + " 77943099.87829883,\n", + " 47336610.421990566,\n", + " 29226541.651979793,\n", + " 20539877.62210288,\n", + " 16562261.629261008,\n", + " 13265633.471255187,\n", + " 11200895.217108302,\n", + " 9563489.99331559,\n", + " 8400070.389167644]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 528 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "valO3OBxjplA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 281 + }, + "outputId": "51ef52c2-c0f4-4717-8534-227627ccce1e" + }, + "source": [ + "plt.plot(K, sum_squared_distance)\n", + "\n", + "plt.title('Elbow')\n", + "\n", + "plt.show()" + ], + "execution_count": 529, + "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": "m4AcDsITjtfB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 68 + }, + "outputId": "dcac924b-5bcf-49f3-e05a-28431bb8a157" + }, + "source": [ + "# instantiate the sklearn class and pick a number of clusters (2 based on elbow plot)\n", + "kmeans = KMeans(n_clusters=2)\n", + "\n", + "# fit the instantiate model to our data\n", + "kmeans.fit(df)" + ], + "execution_count": 530, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n", + " n_clusters=2, n_init=10, n_jobs=None, precompute_distances='auto',\n", + " random_state=None, tol=0.0001, verbose=0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 530 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UP0-YKvXlI7Y", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289 + }, + "outputId": "9e71a4b6-4533-4395-e23f-06dd05b42f50" + }, + "source": [ + "# create the labels\n", + "labels = kmeans.labels_\n", + "print(labels)" + ], + "execution_count": 531, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 0\n", + " 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0\n", + " 0 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0\n", + " 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 0\n", + " 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 1\n", + " 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0\n", + " 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1\n", + " 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0\n", + " 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 1 1 1 0 1 0]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "kpPkpPwSlXPw", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "outputId": "76fce561-2ef7-4656-e9d3-f368858d1898" + }, + "source": [ + "# add new labels to the dataframe as a clusters column\n", + "df_diagnosis_test['clusters'] = labels\n", + "df_diagnosis_test.head()" + ], + "execution_count": 532, + "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", + "
diagnosisclusters
011
111
211
310
411
\n", + "
" + ], + "text/plain": [ + " diagnosis clusters\n", + "0 1 1\n", + "1 1 1\n", + "2 1 1\n", + "3 1 0\n", + "4 1 1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 532 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7ghqYSxrP_FE", + "colab_type": "text" + }, + "source": [ + "## Check you work: \n", + "\n", + "This is something that in a truly unsupervised learning situation **WOULD NOT BE POSSIBLE**. But for educational purposes go back and grab the true diagnosis column (label) from the original dataset. Take your cluster labels and compare them to the original diagnosis column. You can make scatterplots for each to see how they compare or you can calculate a percent accuracy score like: \n", + "\\begin{align}\n", + "\\frac{\\text{Num Correct Labels}}{\\text{Num Total Observations}}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OIG7-yGLP-eA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + }, + "outputId": "f9b54982-d202-4061-9140-5bebc7f2c175" + }, + "source": [ + "test = (df_diagnosis_test[\"diagnosis\"] == df_diagnosis_test[\"clusters\"])\n", + "test" + ], + "execution_count": 533, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 True\n", + "1 True\n", + "2 True\n", + "3 False\n", + "4 True\n", + " ... \n", + "564 True\n", + "565 True\n", + "566 False\n", + "567 True\n", + "568 True\n", + "Length: 569, dtype: bool" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 533 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "caLzRpv8tSOv", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "d0ca0133-0e96-43cc-922a-295608767450" + }, + "source": [ + "((test == True).sum() / test.value_counts().sum()) * 100" + ], + "execution_count": 534, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "85.41300527240774" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 534 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "l5BwHk0S31cZ", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# 85% accuracy on raw data" + ], + "execution_count": 535, + "outputs": [] + }, + { "cell_type": "markdown", "metadata": { "id": "BedOTS0eJ9_K", @@ -616,31 +1328,1878 @@ { "cell_type": "code", "metadata": { - "id": "dW1AeAK8PNah", + "id": "Ui6FciwVtyRW", "colab_type": "code", "colab": {} }, "source": [ - "##### Your Code Here #####" + "# Make copy of cleaned dataframe\n", + "\n", + "df_processed = df.copy()" ], - "execution_count": 0, + "execution_count": 536, "outputs": [] }, { - "cell_type": "markdown", + "cell_type": "code", "metadata": { - "id": "PkrfbzfBROpP", - "colab_type": "text" + "id": "zssifdi9t2rn", + "colab_type": "code", + "colab": {} }, "source": [ - "## Check your work: \n", + "# instantiate the SKLearn class for standardization\n", + "from sklearn.preprocessing import StandardScaler\n", + "scaler = StandardScaler()" + ], + "execution_count": 537, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "ULf_-3jxL07J", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "58e16b41-916f-4682-ef0a-badbdac5ed3c" + }, + "source": [ + "# Standardize the dataset\n", + "df_processed = scaler.fit_transform(df_processed)\n", "\n", - "- Compare your PC1, PC2 clustering scatterplot to the clustering scatterplots you made on the raw data\n", - "- Calculate accuracy scores for both the PC1,PC2 Principal component clustering and the 90% of explained variance clustering.\n", + "print(df_processed.mean())\n", + "print(df_processed.std())\n", "\n", - "How do your accuracy scores -when preprocessing the data with PCA- compare to the accuracy when simply clustering on the raw data?" + "# yes, the mean is zero and the std is 1, so our data is indeed scaled" + ], + "execution_count": 538, + "outputs": [ + { + "output_type": "stream", + "text": [ + "1.2487570048507913e-18\n", + "1.0\n" + ], + "name": "stdout" + } ] }, + { + "cell_type": "code", + "metadata": { + "id": "LOmQCbOXMj8y", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# import and instantiate the PCA class\n", + "from sklearn.decomposition import PCA\n", + "pca = PCA(n_components=30)" + ], + "execution_count": 539, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "6l2RTlbiNG08", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Apply PCA to the data\n", + "pca_features = pca.fit_transform(df_processed)" + ], + "execution_count": 540, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "TGyo_-d6NP4P", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 153 + }, + "outputId": "0766fe85-2262-4ce4-f911-34f74043fd6a" + }, + "source": [ + "# how much variation did each principal component explain?\n", + "pca.explained_variance_ratio_" + ], + "execution_count": 541, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([4.42720256e-01, 1.89711820e-01, 9.39316326e-02, 6.60213492e-02,\n", + " 5.49576849e-02, 4.02452204e-02, 2.25073371e-02, 1.58872380e-02,\n", + " 1.38964937e-02, 1.16897819e-02, 9.79718988e-03, 8.70537901e-03,\n", + " 8.04524987e-03, 5.23365745e-03, 3.13783217e-03, 2.66209337e-03,\n", + " 1.97996793e-03, 1.75395945e-03, 1.64925306e-03, 1.03864675e-03,\n", + " 9.99096464e-04, 9.14646751e-04, 8.11361259e-04, 6.01833567e-04,\n", + " 5.16042379e-04, 2.72587995e-04, 2.30015463e-04, 5.29779290e-05,\n", + " 2.49601032e-05, 4.43482743e-06])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 541 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ZeILnBibOw8Z", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "8aa49535-e60e-48b0-f91f-1e6f07d2cdff" + }, + "source": [ + "# how much total variance did we explain?\n", + "sum(pca.explained_variance_ratio_)" + ], + "execution_count": 542, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1.0000000000000002" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 542 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "4kRYSqaIO-_g", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "52049cdf-7eef-4f85-abea-19e447a8b762" + }, + "source": [ + "# how much information did we lose?\n", + "1 - sum(pca.explained_variance_ratio_)" + ], + "execution_count": 543, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-2.220446049250313e-16" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 543 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "BWpoNfOgQNRs", + "colab_type": "code", + "colab": {} + }, + "source": [ + "### Make a scree plot" + ], + "execution_count": 317, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "nksJMSuaQJ6s", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "1a5aa67d-a392-4a15-be1a-6dab852fe4ef" + }, + "source": [ + "# define the number of components\n", + "num_components = len(pca.explained_variance_ratio_)\n", + "num_components" + ], + "execution_count": 544, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "30" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 544 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "A6WcpoB5Qzfk", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "outputId": "198c88b8-3bd7-4c1f-956a-c49f6fa2de2d" + }, + "source": [ + "# create a numpy array as long as the number of components\n", + "ind = np.arange(num_components)\n", + "ind" + ], + "execution_count": 545, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n", + " 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 545 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_U-hyuDAQ_Qu", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# create an array of that amount of values\n", + "vals = pca.explained_variance_ratio_" + ], + "execution_count": 546, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "5y7J8RFqR6wJ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "outputId": "e467b630-b4b1-41eb-dd3e-23ff2c7901d7" + }, + "source": [ + "# Plot the variance explained by each component\n", + "plt.bar(ind, vals)" + ], + "execution_count": 547, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 547 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "pPNv4_UrSDDV", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "outputId": "a7a4845a-b4cc-45ad-8724-65b318057a07" + }, + "source": [ + "# Plot the cumulative variance explained by all the components\n", + "import matplotlib.pyplot as plt\n", + "cumvals = np.cumsum(vals)\n", + "plt.plot(ind, cumvals, c='r')" + ], + "execution_count": 548, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 548 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_fjDCHJfSXUn", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Define scree plot function\n", + "\n", + "def scree_plot(pca):\n", + "\n", + " plt.figure(figsize=(12,6))\n", + " ax = plt.subplot(111)\n", + " ax.grid(True)\n", + " \n", + " ax.xaxis.set_tick_params(width=0)\n", + " ax.yaxis.set_tick_params(width=2, length=12)\n", + "\n", + " ax.set_xlabel(\"Principal Component\")\n", + " ax.set_ylabel(\"Variance Explained (%)\")\n", + " plt.title('Explained Variance Per Principal Component')\n", + "\n", + " ax.axhline(y=0.9, color='black', linewidth=1)\n", + "\n", + " ax.bar(ind, vals)\n", + " ax.plot(ind, cumvals, c='r')\n", + "\n", + "\n", + "\n", + " plt.show()" + ], + "execution_count": 549, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "BdEbH-UGTGXo", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 404 + }, + "outputId": "cce16263-bc68-4b96-9954-b2b7fff58e9c" + }, + "source": [ + "# Apply the plot function to our principle component\n", + "scree_plot(pca)" + ], + "execution_count": 550, + "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": "uJ4rPEyRa0fD", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "outputId": "ab47bf07-1222-42aa-dc5f-b1a7a052a243" + }, + "source": [ + "pca_features = pd.DataFrame(pca_features)\n", + "\n", + "pca_features.head()" + ], + "execution_count": 551, + "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", + "
01234567891011121314151617181920212223242526272829
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370-0.398407-0.157118-0.8774020.262955-0.8590140.103388-0.690804-0.6017930.745116-0.265471-0.549563-0.1337680.3455650.0965150.0688500.084519-0.175256-0.151020-0.201503-0.252585-0.0339140.045648-0.047169
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133580.240988-0.7119051.1069950.8131200.157923-0.943529-0.6534750.008975-0.648809-0.0172120.3182970.247565-0.114133-0.077327-0.094578-0.2177180.011290-0.170510-0.0411290.1812700.032624-0.005687-0.001868
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681660.0973740.0240660.454275-0.6056040.124387-0.4106270.0166800.4834200.3251110.190918-0.0879750.392626-0.2045320.311067-0.060309-0.0742910.1027620.1711580.0047350.0495690.0470260.0031460.000751
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111.059565-1.405440-1.116975-1.1515141.011316-0.933271-0.487417-0.1688480.0513700.482634-0.0358750.026748-0.4647340.434193-0.203266-0.1241050.1534300.077496-0.2752250.1834620.042484-0.069295-0.019937
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362130.636376-0.2638050.3777040.651360-0.1105150.387948-0.5391810.310319-0.1526060.133142-0.018714-0.4614360.065495-0.116545-0.0176500.139454-0.0053320.0030620.0392540.032168-0.0347860.0050380.021214
\n", + "
" + ], + "text/plain": [ + " 0 1 2 ... 27 28 29\n", + "0 9.192837 1.948583 -1.123166 ... -0.033914 0.045648 -0.047169\n", + "1 2.387802 -3.768172 -0.529293 ... 0.032624 -0.005687 -0.001868\n", + "2 5.733896 -1.075174 -0.551748 ... 0.047026 0.003146 0.000751\n", + "3 7.122953 10.275589 -3.232790 ... 0.042484 -0.069295 -0.019937\n", + "4 3.935302 -1.948072 1.389767 ... -0.034786 0.005038 0.021214\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 551 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gMovehFZzBX5", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "outputId": "65ea412d-9bc8-4a93-d953-b96f818fb781" + }, + "source": [ + "headers = []\n", + "\n", + "for i in range(1,31):\n", + " headers.append(\"PC\" + str(i))\n", + "\n", + "pca_features.columns = headers\n", + "\n", + "pca_features.head()" + ], + "execution_count": 552, + "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", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370-0.398407-0.157118-0.8774020.262955-0.8590140.103388-0.690804-0.6017930.745116-0.265471-0.549563-0.1337680.3455650.0965150.0688500.084519-0.175256-0.151020-0.201503-0.252585-0.0339140.045648-0.047169
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133580.240988-0.7119051.1069950.8131200.157923-0.943529-0.6534750.008975-0.648809-0.0172120.3182970.247565-0.114133-0.077327-0.094578-0.2177180.011290-0.170510-0.0411290.1812700.032624-0.005687-0.001868
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681660.0973740.0240660.454275-0.6056040.124387-0.4106270.0166800.4834200.3251110.190918-0.0879750.392626-0.2045320.311067-0.060309-0.0742910.1027620.1711580.0047350.0495690.0470260.0031460.000751
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111.059565-1.405440-1.116975-1.1515141.011316-0.933271-0.487417-0.1688480.0513700.482634-0.0358750.026748-0.4647340.434193-0.203266-0.1241050.1534300.077496-0.2752250.1834620.042484-0.069295-0.019937
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362130.636376-0.2638050.3777040.651360-0.1105150.387948-0.5391810.310319-0.1526060.133142-0.018714-0.4614360.065495-0.116545-0.0176500.139454-0.0053320.0030620.0392540.032168-0.0347860.0050380.021214
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC28 PC29 PC30\n", + "0 9.192837 1.948583 -1.123166 ... -0.033914 0.045648 -0.047169\n", + "1 2.387802 -3.768172 -0.529293 ... 0.032624 -0.005687 -0.001868\n", + "2 5.733896 -1.075174 -0.551748 ... 0.047026 0.003146 0.000751\n", + "3 7.122953 10.275589 -3.232790 ... 0.042484 -0.069295 -0.019937\n", + "4 3.935302 -1.948072 1.389767 ... -0.034786 0.005038 0.021214\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 552 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bQWnUN1cyLtc", + "colab_type": "code", + "colab": {} + }, + "source": [ + "pc_1_and_2 = pca_features[[\"PC1\", \"PC2\"]]" + ], + "execution_count": 553, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Bk3avGXybyvD", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289 + }, + "outputId": "9a0a82e1-f566-4e53-f742-940d28ee8d5b" + }, + "source": [ + "kmeans = KMeans(n_clusters=2)\n", + "kmeans.fit(pc_1_and_2)\n", + "\n", + "labels = kmeans.labels_\n", + "\n", + "print(labels)\n" + ], + "execution_count": 554, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0\n", + " 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0\n", + " 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0\n", + " 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0\n", + " 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1\n", + " 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0\n", + " 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1\n", + " 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0\n", + " 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 1 1 1 1 1 1 0]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yTYFWDhib-wb", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "outputId": "d1d96795-30f4-4e45-a151-01d5ae02f09c" + }, + "source": [ + "pca_features['clusters_with_2_PC'] = labels\n", + "pca_features.head()" + ], + "execution_count": 555, + "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", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30clusters_with_2_PC
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370-0.398407-0.157118-0.8774020.262955-0.8590140.103388-0.690804-0.6017930.745116-0.265471-0.549563-0.1337680.3455650.0965150.0688500.084519-0.175256-0.151020-0.201503-0.252585-0.0339140.045648-0.0471691
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133580.240988-0.7119051.1069950.8131200.157923-0.943529-0.6534750.008975-0.648809-0.0172120.3182970.247565-0.114133-0.077327-0.094578-0.2177180.011290-0.170510-0.0411290.1812700.032624-0.005687-0.0018681
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681660.0973740.0240660.454275-0.6056040.124387-0.4106270.0166800.4834200.3251110.190918-0.0879750.392626-0.2045320.311067-0.060309-0.0742910.1027620.1711580.0047350.0495690.0470260.0031460.0007511
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111.059565-1.405440-1.116975-1.1515141.011316-0.933271-0.487417-0.1688480.0513700.482634-0.0358750.026748-0.4647340.434193-0.203266-0.1241050.1534300.077496-0.2752250.1834620.042484-0.069295-0.0199371
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362130.636376-0.2638050.3777040.651360-0.1105150.387948-0.5391810.310319-0.1526060.133142-0.018714-0.4614360.065495-0.116545-0.0176500.139454-0.0053320.0030620.0392540.032168-0.0347860.0050380.0212141
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC29 PC30 clusters_with_2_PC\n", + "0 9.192837 1.948583 -1.123166 ... 0.045648 -0.047169 1\n", + "1 2.387802 -3.768172 -0.529293 ... -0.005687 -0.001868 1\n", + "2 5.733896 -1.075174 -0.551748 ... 0.003146 0.000751 1\n", + "3 7.122953 10.275589 -3.232790 ... -0.069295 -0.019937 1\n", + "4 3.935302 -1.948072 1.389767 ... 0.005038 0.021214 1\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 555 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "szeqx_O6cDgA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "outputId": "7c2185a7-d910-42a5-9432-4b31a77814fa" + }, + "source": [ + "\n", + "fig, ax = plt.subplots()\n", + "colors = {0 : \"green\", 1 : \"red\"}\n", + "grouped = pca_features.groupby(\"clusters_with_2_PC\")\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = 0, y = 1, label = key, color = colors[key])\n", + "plt.show()" + ], + "execution_count": 557, + "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": "6QJ69qMH065V", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + }, + "outputId": "fa7e7f75-1d06-4293-ab34-8137f1884a42" + }, + "source": [ + "test_PC12 = (df_diagnosis_test[\"diagnosis\"] == pca_features[\"clusters_with_2_PC\"])\n", + "test_PC12" + ], + "execution_count": 558, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 True\n", + "1 True\n", + "2 True\n", + "3 True\n", + "4 True\n", + " ... \n", + "564 True\n", + "565 True\n", + "566 True\n", + "567 True\n", + "568 True\n", + "Length: 569, dtype: bool" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 558 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "NXiBjpuc1DAa", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "cf691bf4-e245-4050-b572-38787bda1fd4" + }, + "source": [ + "((test_PC12 == True).sum() / test_PC12.value_counts().sum()) * 100" + ], + "execution_count": 559, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "90.68541300527241" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 559 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Lmc5PBBV4bqO", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# 90.7% accuracy when using 2 principal components" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "j-mWj8aL1bIe", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289 + }, + "outputId": "10f449d1-12bc-4ab9-a43a-5c67618726f2" + }, + "source": [ + "pc_first_7 = pca_features[[\"PC1\", \"PC2\", \"PC3\", \"PC4\", \"PC5\", \"PC6\", \"PC7\"]]\n", + "k = KMeans(n_clusters=2)\n", + "k.fit(pc_first_7)\n", + "labels = k.labels_\n", + "\n", + "print(labels)" + ], + "execution_count": 560, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0\n", + " 0 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0\n", + " 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0\n", + " 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 0\n", + " 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1\n", + " 1 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0\n", + " 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1\n", + " 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0\n", + " 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0\n", + " 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0\n", + " 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1\n", + " 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 1 1 1 1 1 1 0]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vOyX-MDl1vq4", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "outputId": "76643a15-e1a7-4c14-f928-ed831553f16e" + }, + "source": [ + "pca_features['clusters_with_7_PC'] = labels\n", + "pca_features.head()" + ], + "execution_count": 561, + "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", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30clusters_with_2_PCclusters_with_7_PC
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370-0.398407-0.157118-0.8774020.262955-0.8590140.103388-0.690804-0.6017930.745116-0.265471-0.549563-0.1337680.3455650.0965150.0688500.084519-0.175256-0.151020-0.201503-0.252585-0.0339140.045648-0.04716911
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133580.240988-0.7119051.1069950.8131200.157923-0.943529-0.6534750.008975-0.648809-0.0172120.3182970.247565-0.114133-0.077327-0.094578-0.2177180.011290-0.170510-0.0411290.1812700.032624-0.005687-0.00186811
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681660.0973740.0240660.454275-0.6056040.124387-0.4106270.0166800.4834200.3251110.190918-0.0879750.392626-0.2045320.311067-0.060309-0.0742910.1027620.1711580.0047350.0495690.0470260.0031460.00075111
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111.059565-1.405440-1.116975-1.1515141.011316-0.933271-0.487417-0.1688480.0513700.482634-0.0358750.026748-0.4647340.434193-0.203266-0.1241050.1534300.077496-0.2752250.1834620.042484-0.069295-0.01993711
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362130.636376-0.2638050.3777040.651360-0.1105150.387948-0.5391810.310319-0.1526060.133142-0.018714-0.4614360.065495-0.116545-0.0176500.139454-0.0053320.0030620.0392540.032168-0.0347860.0050380.02121411
\n", + "
" + ], + "text/plain": [ + " PC1 PC2 ... clusters_with_2_PC clusters_with_7_PC\n", + "0 9.192837 1.948583 ... 1 1\n", + "1 2.387802 -3.768172 ... 1 1\n", + "2 5.733896 -1.075174 ... 1 1\n", + "3 7.122953 10.275589 ... 1 1\n", + "4 3.935302 -1.948072 ... 1 1\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 561 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "H4IFmBMN2CDU", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 279 + }, + "outputId": "def115dd-dbef-4306-e2fb-73f6df2bf564" + }, + "source": [ + "fig, ax = plt.subplots()\n", + "colors = {0 : \"green\", 1 : \"red\"}\n", + "grouped = pca_features.groupby(\"clusters_with_7_PC\")\n", + "for key, group in grouped:\n", + " group.plot(ax = ax, kind = \"scatter\", x = 0, y = 1, label = key, color = colors[key])\n", + "plt.show()" + ], + "execution_count": 563, + "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": "56hzKVcG2Hdw", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + }, + "outputId": "c7c28a3b-9f17-49e0-a346-c48d69b9918f" + }, + "source": [ + "test_PC12 = (df_diagnosis_test[\"diagnosis\"] == pca_features[\"clusters_with_7_PC\"])\n", + "test_PC12" + ], + "execution_count": 564, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 True\n", + "1 True\n", + "2 True\n", + "3 True\n", + "4 True\n", + " ... \n", + "564 True\n", + "565 True\n", + "566 True\n", + "567 True\n", + "568 True\n", + "Length: 569, dtype: bool" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 564 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Rab1N0ho2MVp", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "16d2fd90-994a-4238-bcff-fa047357f095" + }, + "source": [ + "((test_PC12 == True).sum() / test_PC12.value_counts().sum()) * 100" + ], + "execution_count": 565, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "91.03690685413005" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 565 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "c92dtOJw4mL_", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# 91% accuracy when using 7 principal components" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PkrfbzfBROpP", + "colab_type": "text" + }, + "source": [ + "## Check your work: \n", + "\n", + "- Compare your PC1, PC2 clustering scatterplot to the clustering scatterplots you made on the raw data\n", + "- Calculate accuracy scores for both the PC1,PC2 Principal component clustering and the 90% of explained variance clustering.\n", + "\n", + "How do your accuracy scores -when preprocessing the data with PCA- compare to the accuracy when simply clustering on the raw data?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "R05lW6BC4vVB", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# My accuracy scores improved from raw data, to PC1/PC2, to using 7 PCs." + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "markdown", "metadata": { @@ -664,7 +3223,7 @@ "source": [ "" ], - "execution_count": 0, + "execution_count": 565, "outputs": [] } ]