diff --git "a/docs/notebooks/ex01 - numpy, pandas, matplotlib.ipynb" "b/docs/notebooks/ex01 - numpy, pandas, matplotlib.ipynb"
new file mode 100644--- /dev/null
+++ "b/docs/notebooks/ex01 - numpy, pandas, matplotlib.ipynb"
@@ -0,0 +1 @@
+{"nbformat":4,"nbformat_minor":0,"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.8.3"},"colab":{"name":"ex1 - numpy, pandas, matplotlib.ipynb","provenance":[{"file_id":"1yo7efDYCfjLkNTMbA-9cDPwBTTDHvA4x","timestamp":1653574557375},{"file_id":"1fqsjPGKFPKKqJkj4MLHpJ3fql6Xewqmi","timestamp":1645424108930},{"file_id":"1Ao2i4H7IovT16jBtn8snDnrylzPhUevd","timestamp":1638891942713}],"collapsed_sections":["I2dG_H82KKcL","kvgbO5Z_KKcR","7HZaOocAKKcR","7hw-t9USKKci","NMzjIw1KKKcl","NA9kJJ3WKKcp","SfOGy3YXKKcv","GAZ7v5w8KKc4","4DM2GJ-9KKc5","EO-qBtXSKKc6","87_wqVs5KKc8","2jjaY7yYKKc9","1Pwq8wEQKKdA","4KhditFY4MKJ","sQNhgmjFKKdN","6mxMn_4bKKdR","xR4_GYXdKKdX","V7BLSrIJKKdY","kTMMlpXQKKdY","K12JaNpxvbVv","j5vaztG9KKdZ","0QdXhrp6KKdZ"]}},"cells":[{"cell_type":"markdown","metadata":{"id":"hdjb4-LEKKbo"},"source":["# Introduction to NumPy, Pandas, Matplotlib and Seaborn, and Sci-Kit Learn "]},{"cell_type":"markdown","metadata":{"id":"N0p2aNMyKKbq"},"source":["Before we set out on our journey into the land of artificial intelligence, we must first pack some gear. \n","Some of the essentials include Numpy, Pandas, Mathplotlib, and Seaborn. Let's discuss Python Packages first!\n","\n","### Note: In case of time constraint, only do the sections that have an emoji next to the title.\n","\n","## What are Python Packages? "]},{"cell_type":"markdown","metadata":{"id":"G9_3omm0KKbs"},"source":["A Python package is simply an collection of modules β files consisting of Python code. The packages that we'll be looking at today include Numpy, Pandas, Matplotlib, and Seaborn. Let's begin with NumPy."]},{"cell_type":"markdown","metadata":{"id":"YUs6I5u5KKbv"},"source":["# NumPy: An Introduction π€"]},{"cell_type":"markdown","metadata":{"id":"yn5x1HxkKKbx"},"source":["Numpy is the core library for scientific computing in Python. Numpy provides the flexibility to create multidimensional array objects (arrays within arrays) and compute a wide variety of mathematical operations including basic linear algebra, basic statistical operations, random simulation and much more. We will represent all of our data which will be fed into our machine learning models using Numpy."]},{"cell_type":"markdown","metadata":{"id":"dNj5CzYeKKb0"},"source":["We'll start with the standard NumPy import, under the alias np:\n","\n"]},{"cell_type":"code","metadata":{"id":"e1NOvv47KKb1"},"source":["import numpy as np"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0vkg7Br-KKcB"},"source":["### Arrays π"]},{"cell_type":"markdown","metadata":{"id":"NfnHIM-RKKcC"},"source":["An **array** is simply a collection of items. At the heart of a Numpy library is the array object or the ndarray object (n-dimensional array). Simply put, it is a table of elements (usually numbers and the same type) indexed by a tuple of positive integers. In NumPy dimensions are called **axes**. The number of axes is referred to as **rank**. \n"," \n","Let's create an 1D array of **taxi rates** (in dollars) by passing it through a list: "]},{"cell_type":"code","metadata":{"id":"nDUZfgg5KKcC"},"source":["a = np.array([12.50, 10.20, 25])"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"VeYSYKLwmTx3"},"source":["We can view the contents of the array by running the following code:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NjUHxfHJKKcE","executionInfo":{"status":"ok","timestamp":1637167923782,"user_tz":480,"elapsed":143,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"3c3bbb4d-a57c-4589-d987-fce0f7fc0326"},"source":["a"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([12.5, 10.2, 25. ])"]},"metadata":{},"execution_count":22}]},{"cell_type":"markdown","metadata":{"id":"Yw6X4FpkKKcH"},"source":["Awesome! π Let's now create an multi-dimensional array. "]},{"cell_type":"code","metadata":{"id":"zXL1mAmiKKcI"},"source":["b = np.array([\n"," [19.50, 13, 12, 11 ],\n"," [12.50, 10, 25, 14]])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"kfjB-dPgKKcJ","executionInfo":{"status":"ok","timestamp":1637167922539,"user_tz":480,"elapsed":158,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"f46773b7-17e2-4608-d668-c83d56a8ec1b"},"source":["b"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[19.5, 13. , 12. , 11. ],\n"," [12.5, 10. , 25. , 14. ]])"]},"metadata":{},"execution_count":21}]},{"cell_type":"markdown","metadata":{"id":"I2dG_H82KKcL"},"source":["## Exercise 1: Arrays β·"]},{"cell_type":"markdown","metadata":{"id":"k_Bai-nKKKcM"},"source":["Time for our first exercise! \n","- Create a NumPy single - dimensional array and assign it to a variable that describes the following situation:\n"," - Find the weather for the next 5 days in your favorite city, and enter it into the array.\n","- Create another NumPy single - dimensional array and assign it that describes the following situation:\n"," - Write your 5 favorite numbers.\n","- Can you try adding the two arrays? How about subtracting? "]},{"cell_type":"code","metadata":{"id":"AMK_EEYFKKcM"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","#instructor note: answers will vary\n","weather = np.array([63, 64, 68, 72, 74])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"IrJ1CWYcKKcN"},"source":["#@title Solution hidden { display-mode: \"form\" }\n","# answers will vary\n","favorite = np.array([5,10,15,20, 25])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"c2lFrOXFKKcO","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167907720,"user_tz":480,"elapsed":153,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"aecc179d-cbd8-41b9-cc46-0214ab0b2108"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","weather + favorite"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([68, 74, 83, 92, 99])"]},"metadata":{},"execution_count":15}]},{"cell_type":"code","metadata":{"id":"Ro5iiFasKKcP","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167909022,"user_tz":480,"elapsed":2,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"8ffc81da-ed73-4a0e-d8f9-85860335bc48"},"source":["#@title Solution Hidden\n","weather - favorite"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([58, 54, 53, 52, 49])"]},"metadata":{},"execution_count":16}]},{"cell_type":"markdown","metadata":{"id":"kvgbO5Z_KKcR"},"source":["### Methods β΅οΈ"]},{"cell_type":"markdown","metadata":{"id":"7HZaOocAKKcR"},"source":["### π Let's now explore some of the methods in NumPy. The [**.shape**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.shape.html) method for nparray returns the dimensions of the given array. For example, [x].shape returns the (vertical, horizontal) dimensions of the variable x. Let's use .shape to find the dimensions of the multi-dimensional array that we've created above:\n","\n","_Can you guess the shape before running the command?_"]},{"cell_type":"code","metadata":{"id":"wqNlN3rOKKcS","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167927235,"user_tz":480,"elapsed":131,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"67a1f00a-6e38-4fe7-8014-dcef7b91b87f"},"source":["b.shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(2, 4)"]},"metadata":{},"execution_count":24}]},{"cell_type":"markdown","metadata":{"id":"3jMyi9hVmynw"},"source":["Note that multi-dimensional arrays can also have more than two dimensions. A three-dimensional array, for example, has arrays within arrays within arrays. Calling array.shape on a 3-dimensional array would return three numbers: (num1, num2, num3).\n","\n","**Make sure you understand the concept of shapes because this will come up again and again throughout your machine learning experience!**"]},{"cell_type":"markdown","metadata":{"id":"wc48ME-lKKcT"},"source":["The [**.linspace**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html) method is used to return evenly spaced numbers over a specified interval. Let's create an array of 6 integers between 0 and 100 to demonstrate this method: "]},{"cell_type":"code","metadata":{"id":"FnUeQq9wKKcU","scrolled":true,"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167901461,"user_tz":480,"elapsed":6,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"2f2d4afc-fb31-486f-f2a8-91b2c49d5e7b"},"source":["np.linspace(0,100,6)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([ 0., 20., 40., 60., 80., 100.])"]},"metadata":{},"execution_count":5}]},{"cell_type":"markdown","metadata":{"id":"087T2UAcKKcW"},"source":["How about if we wanted to decide the step? The [**.arange**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html) method allows us to return evenly spaced values within an given interval. "]},{"cell_type":"code","metadata":{"id":"-f6sV7WmKKcW","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637168300625,"user_tz":480,"elapsed":166,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"6915a7f0-f830-407c-dbd5-9d774f34963e"},"source":["np.arange(0,10,3)"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0, 3, 6, 9])"]},"metadata":{},"execution_count":25}]},{"cell_type":"markdown","metadata":{"id":"5S10euQrKKcY"},"source":["Yay! π What if we didn't want to define the interval or the step? The [**.random.rand**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.rand.html) method accomplishes this purpose by creating an array of a specified shape and fills it with random values. Let's create a 4 x 5 array of random floats between 0-1:"]},{"cell_type":"code","metadata":{"id":"GnqUmK-4KKcZ","scrolled":true,"colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167901461,"user_tz":480,"elapsed":4,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"e008c2ab-b9df-4ca2-e441-9221c70f93d3"},"source":["c = np.random.rand(4,5)\n","c*100 + 1"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[42.74804484, 71.57097486, 66.61548985, 25.60559514, 47.85774568],\n"," [94.82829541, 42.85103856, 33.52829974, 9.01391046, 29.86977524],\n"," [86.16739691, 83.77592294, 84.19023359, 47.4626232 , 86.38022238],\n"," [ 4.60193698, 61.63953037, 1.66918571, 24.57684409, 4.48231571]])"]},"metadata":{},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"mA9K9rq_KKcb"},"source":["If we want to increase the size of the floats between an certain interval (0-100), we can simply multiply by the highest digit in that interval: "]},{"cell_type":"code","metadata":{"id":"WNPNeWe7KKcc","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167901462,"user_tz":480,"elapsed":4,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"fb0b3345-37fa-4797-a743-37d18bc2dbaf"},"source":["np.random.rand(4,5)*100"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([[25.88011147, 72.45463362, 11.09455052, 63.90893392, 91.34244088],\n"," [65.26716685, 17.03057607, 86.96207165, 8.485179 , 16.13708685],\n"," [38.36953699, 1.05909103, 37.37388712, 69.04281006, 84.66747881],\n"," [59.28261692, 70.92280492, 64.07071494, 69.73681848, 46.81982978]])"]},"metadata":{},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"syIDcJjWnaMl"},"source":["Notice how the numbers when you call the random function are different the second time. This is because it generates new numbers each time."]},{"cell_type":"markdown","metadata":{"id":"C1huCd_VKKce"},"source":["We can also explore some of the properties of the array. The [**.dtype**](https://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html) method outputs the type of elements in an given array:"]},{"cell_type":"code","metadata":{"id":"9iOKWg0RKKce"},"source":["c = np.arange(0,10,3)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"epO-qdqMKKcf","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1637167901624,"user_tz":480,"elapsed":2,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"1e094805-9765-480f-fc7c-eeca2adb5990"},"source":["print(c.dtype)\n","print(c.shape)"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["int64\n","(4,)\n"]}]},{"cell_type":"markdown","metadata":{"id":"5t-BnlMuKKci"},"source":["Kudos! **int64** simply means that the elements in the array are integers. Remember that NumPy arrays only support an *singular* data type for each array unlike Python arrays. Other data types include **float64** and **double64**, which are used to specify numbers with decimals (**int64**s must be whole numbers)."]},{"cell_type":"markdown","metadata":{"id":"7hw-t9USKKci"},"source":["## Exercise 2: Methods π"]},{"cell_type":"markdown","metadata":{"id":"XYiYhMliKKci"},"source":["Time to test our skills!"]},{"cell_type":"markdown","metadata":{"id":"McnS13TaKKcj"},"source":["- Using the **.shape** method, find the dimensions of the array containing the weather of your favorite city. \n","- Use the **.linspace** method to create an array of 5 evenly-spaced integers between 15 and 45\n","- Create a 3x6 array using the **.random.rand()** method"]},{"cell_type":"code","metadata":{"id":"Hpl84uC_N9OU"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"bHTvNVJdKKcj","colab":{"base_uri":"https://localhost:8080/","height":183},"executionInfo":{"status":"error","timestamp":1637167898527,"user_tz":480,"elapsed":176,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"c6fbdcc8-af64-4eec-92d0-11e684a93514"},"source":["#@title Solution hidden { display-mode: \"form\" }\n","weather.shape"],"execution_count":null,"outputs":[{"output_type":"error","ename":"NameError","evalue":"ignored","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#@title Solution hidden { display-mode: \"form\" }\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mweather\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;31mNameError\u001b[0m: name 'weather' is not defined"]}]},{"cell_type":"code","metadata":{"id":"cXjlf7W5KKck"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","#answers will vary\n","np.linspace(15, 45, 5)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"uaRYzPbFP2NX"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","# answers will vary\n","np.random.rand(3,6)"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"NMzjIw1KKKcl"},"source":["## Operations "]},{"cell_type":"markdown","metadata":{"id":"CC561yHBKKcl"},"source":["NumPy offers the ability to compute arrays together. "]},{"cell_type":"code","metadata":{"id":"f33m7hEfKKcl"},"source":["x = np.array([3,4,5])"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"vw3NHRzzKKcm"},"source":["y = np.array([1,2,3])"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"S6lON11SKKcn"},"source":["We can use traditional math symbols to add, subtract, multiply, and divide the two arrays: "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"bQJyXZ7jKKcn","executionInfo":{"status":"ok","timestamp":1636910222721,"user_tz":480,"elapsed":2,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"ee6b3a64-6369-452b-eee8-8764032ae63d"},"source":["print(x + y)\n","print(x - y)\n","print(x * y)\n","print(x / y)\n","print(x**2)"],"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["[4 6 8]\n","[2 2 2]\n","[ 3 8 15]\n","[3. 2. 1.66666667]\n","[ 9 16 25]\n"]}]},{"cell_type":"markdown","metadata":{"id":"NA9kJJ3WKKcp"},"source":["## Scalar Math"]},{"cell_type":"markdown","metadata":{"id":"RU3du0U6KKcp"},"source":["We can use basic functions to add, subtract, multiply, divide, and power the array:\n","\n","_Can you guess the output before running command?_"]},{"cell_type":"code","metadata":{"id":"Ty8_QhprKKcp","outputId":"e3d47877-d282-4f1c-c36c-689840aa6997"},"source":["np.add(x,1)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([4, 5, 6])"]},"execution_count":24,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"id":"6Z4nK4UDKKcr","outputId":"01c79c6e-0372-47b1-a36f-f6f58dc2055d"},"source":["np.subtract(x,2)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([1, 2, 3])"]},"execution_count":25,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":34},"id":"W8xNSNODKKcs","executionInfo":{"elapsed":2606,"status":"ok","timestamp":1589124637635,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"a37ee9e2-2a3b-443f-ac50-ca628732e9a4"},"source":["np.multiply(x,3)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([ 9, 12, 15])"]},"execution_count":26,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"id":"qTGgDdteKKct","outputId":"a50b44af-7bb8-40c5-98a3-a21aff647fff"},"source":["np.divide(x,4)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([0.75, 1. , 1.25])"]},"execution_count":27,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"id":"u-Cf5OfBKKcu","outputId":"a84df763-42eb-4ee6-b211-7b67b4e1520b"},"source":["np.power(x,5)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([ 243, 1024, 3125], dtype=int32)"]},"execution_count":28,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"SfOGy3YXKKcv"},"source":["## Indexing, Slicing and Reshaping π"]},{"cell_type":"markdown","metadata":{"id":"oGZo5zPWKKcw"},"source":["Now, we're going to explore some of the functions in Python. First, let's create an array with 12 numbers using the **arange** method in increments of 5:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"u8nJkGpqKKcw","executionInfo":{"status":"ok","timestamp":1636910498795,"user_tz":480,"elapsed":164,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"281c41f1-0e4e-4afa-84d5-3a3ff48faff3"},"source":["s = np.arange(12)*5 # note this is same as np.arange(0,12,1)*5\n","s"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([ 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55])"]},"metadata":{},"execution_count":7}]},{"cell_type":"markdown","metadata":{"id":"KFKdNcVCKKcx"},"source":["**Indexing** refers to retrieving a specific element of an array. Let's find the 3rd value in the above array:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"it-5rQ-AKKcx","executionInfo":{"status":"ok","timestamp":1636910500332,"user_tz":480,"elapsed":160,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"d2b50a1f-8ba0-4f1d-9fb8-3af15595da50"},"source":["s[5]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["25"]},"metadata":{},"execution_count":8}]},{"cell_type":"markdown","metadata":{"id":"40b-h-2JKKcy"},"source":["**Note**: The values of an array always start with x[0]. We can also retrieve values within an certain range using the **:** symbol:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":34},"id":"2BP_MEpXKKcz","executionInfo":{"elapsed":3094,"status":"ok","timestamp":1589124730754,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"5f92f91d-12a4-4f5e-c347-f4636ba57daf"},"source":["s[2:5]"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([10, 15, 20])"]},"execution_count":31,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"0f4WW1dyKKc0"},"source":["π Now, let's try combining two arrays using [**concatenate( )**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html) and add 'a' as rows to the end of 's':"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":51},"id":"zZhuYVWVKKc0","executionInfo":{"elapsed":1691,"status":"ok","timestamp":1589124810287,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"39526979-7c26-44e8-c90a-80d966bc5325"},"source":["np.concatenate((s,a))"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([ 0. , 5. , 10. , 15. , 20. , 25. , 30. , 35. , 40. , 45. , 50. ,\n"," 55. , 12.5, 10.2, 25. ])"]},"execution_count":32,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"Lzdq-SN9KKc1"},"source":["π How about splitting arrays? We can use the [**.split()**](https://docs.scipy.org/doc/numpy/reference/generated/numpy.concatenate.html) method to split the s array in sub-arrays:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"iFxWISKcKKc2","executionInfo":{"status":"ok","timestamp":1636910646469,"user_tz":480,"elapsed":127,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"1d9612e0-6ef9-4d20-feb0-68aac73567d0"},"source":["z = np.arange(9.0)\n","z"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([0., 1., 2., 3., 4., 5., 6., 7., 8.])"]},"metadata":{},"execution_count":9}]},{"cell_type":"code","metadata":{"id":"_JM8BwQcKKc3"},"source":["split_arr = np.split(z, 3)"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"7hddEf4zFL7L","executionInfo":{"status":"ok","timestamp":1636910648694,"user_tz":480,"elapsed":179,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"f571ca6c-d873-4cd5-bcaf-af14c46e62e4"},"source":["split_arr"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[array([0., 1., 2.]), array([3., 4., 5.]), array([6., 7., 8.])]"]},"metadata":{},"execution_count":11}]},{"cell_type":"markdown","metadata":{"id":"xxIhNlDNE28F"},"source":["**What do y'all think the shape of the above array is?**"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Rv6OJqbZFOp6","executionInfo":{"status":"ok","timestamp":1636910794756,"user_tz":480,"elapsed":164,"user":{"displayName":"Braden Monroe","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjWHGIVTAWJFJX-igMgPLiTl88SyYPNavFiV4MCXA=s64","userId":"14803880866214127972"}},"outputId":"4ebcf007-53a9-4f62-8bf7-fb8021abb8d0"},"source":["np.array(split_arr).shape"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(3, 3)"]},"metadata":{},"execution_count":12}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":68},"id":"x0YoJ4ylOwQ9","executionInfo":{"elapsed":2273,"status":"ok","timestamp":1589124994785,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"16a80d73-6aba-4229-dece-a460dc1901fd"},"source":["np.array(split_arr)"],"execution_count":null,"outputs":[{"data":{"text/plain":["array([[0., 1., 2.],\n"," [3., 4., 5.],\n"," [6., 7., 8.]])"]},"execution_count":37,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"GAZ7v5w8KKc4"},"source":["## Exercise: Indexing, Slicing and Reshaping"]},{"cell_type":"markdown","metadata":{"id":"5bAZWakZKKc4"},"source":["Time for a test!"]},{"cell_type":"markdown","metadata":{"id":"yGbwUaHwKKc4"},"source":["- Using the **arange** method, create an array of 5 numbers in increments of 10. Call it 'oreo'\n","- Retrieve the 3rd number in the above array named 'oreo'\n","- Create another array of 5 numbers in increments of 15. Use any method you like and call it 'milk'\n","- Retrive the 1st number in the above array named 'milk' \n","Can you eat those many oreos and drink that many cups of milk? You decide! π₯ "]},{"cell_type":"code","metadata":{"id":"OEMDh_IgOE62"},"source":[""],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"4x8zQTyEQeND","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1636912540512,"user_tz":480,"elapsed":6,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"ed142e98-af20-4e6d-ee2f-0c129fa94f51"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","# instructors note that the interval can depend on the student\n","oreo = np.arange(5,10)*10\n","oreo"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([50, 60, 70, 80, 90])"]},"metadata":{},"execution_count":41}]},{"cell_type":"code","metadata":{"id":"kXHFHDYJQ4Vm","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1636912540512,"user_tz":480,"elapsed":4,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"1d8211fa-26fa-442f-b825-c1261c97e48b"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","oreo[2]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["70"]},"metadata":{},"execution_count":42}]},{"cell_type":"code","metadata":{"id":"Fn1LiJraK8_a","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1636912540513,"user_tz":480,"elapsed":4,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"9d0a6f0d-f925-42ec-b474-e48af1107c97"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","milk = np.arange(15, 200, 15)[:5]\n","milk"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["array([15, 30, 45, 60, 75])"]},"metadata":{},"execution_count":43}]},{"cell_type":"code","metadata":{"id":"79W1IY9oR2wT","colab":{"base_uri":"https://localhost:8080/"},"executionInfo":{"status":"ok","timestamp":1636912540513,"user_tz":480,"elapsed":3,"user":{"displayName":"Shrish","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GgCWcL6qdKsIwzCs6KdXk-sgpmUyXrztUonf_fr=s64","userId":"13991016572560593814"}},"outputId":"9664ec38-cd05-4ffa-cc0b-cfaceba4327c"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","milk[0]"],"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["15"]},"metadata":{},"execution_count":44}]},{"cell_type":"markdown","metadata":{"id":"eqbcMLWOKKc4"},"source":["π We've completed our review of NumPy! After you take a quick break - walk around, drink water - let's move on to Pandas. "]},{"cell_type":"markdown","metadata":{"id":"WfqaMtQ-KKc4"},"source":["# Pandas: An Introduction πΌ "]},{"cell_type":"markdown","metadata":{"id":"fdnANq-9KKc5"},"source":["Pandas is an open source Python package that provides numerous tools for data analysis. Pandas provides fast, flexible, and expressive data structures designed to make working with structured (tabular, multidimensional, potentially heterogeneous) and time series data both easy and intuitive. It aims to be the fundamental high-level building block for doing practical, real world data analysis in Python. \n","\n","We'll take look at some of the core ideas in Pandas here. You can learn more about Pandas in their official [documentation](http://pandas.pydata.org)."]},{"cell_type":"markdown","metadata":{"id":"4DM2GJ-9KKc5"},"source":["## [Pandas Series](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html) βοΈ"]},{"cell_type":"markdown","metadata":{"id":"zqgi1nU3KKc5"},"source":["A **Series** is similar to an one dimensional array and can store data of any type. The values of a Pandas Series are mutable but the size of a Series is immutable and cannot be changed. \n","The first element in the series is assigned the index 0, while the last element is at index N-1, where N is the total number of elements in the series."]},{"cell_type":"markdown","metadata":{"id":"6VIa2HCGKKc5"},"source":["Let's first **import** pandas under the common alias **pd**:"]},{"cell_type":"code","metadata":{"id":"9VyI95ekKKc5"},"source":["import pandas as pd"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"EO-qBtXSKKc6"},"source":["### Creating a Pandas Series"]},{"cell_type":"markdown","metadata":{"id":"EhnXEyJhKKc6"},"source":["We can create a series by invoking the pd.Series( ) method, like this: "]},{"cell_type":"code","metadata":{"id":"M5ib0-EyKKc6"},"source":["decades = pd.Series(np.array([10,20,30,40,50,60])) "],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":136},"id":"3ySUr90TKKc7","executionInfo":{"elapsed":859,"status":"ok","timestamp":1592836061625,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"5a86c330-19dd-48d2-80f9-1fcad690b819"},"source":["decades"],"execution_count":null,"outputs":[{"data":{"text/plain":["0 10\n","1 20\n","2 30\n","3 40\n","4 50\n","5 60\n","dtype: int32"]},"execution_count":47,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"iQVRDE8hKKc8"},"source":["As shown above, the index is assigned values from 0-5. "]},{"cell_type":"markdown","metadata":{"id":"87_wqVs5KKc8"},"source":["## Exercise: Pandas SeriesπΏ"]},{"cell_type":"markdown","metadata":{"id":"REG7WpeOKKc8"},"source":["Exercise time!"]},{"cell_type":"markdown","metadata":{"id":"nOpmyZmPKKc9"},"source":["- Create a Series for the lowest GDP's in the world:\n"," - Czech Republic: 264.50\n"," - Iraq:\t250.07\n"," - Romania: 248.84\n"," - Portugal:\t242.83\t\n","\n","Tip: See what arguments are available in [pd.Series](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.html) and use the countries as the index."]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":106},"id":"UK3reiwuOMZi","executionInfo":{"elapsed":869,"status":"ok","timestamp":1592933481115,"user":{"displayName":"Daniela Ganelin","photoUrl":"","userId":"13635860283825382512"},"user_tz":240},"outputId":"924b48c9-63b5-45cc-85ef-0954bd5ad964"},"source":["import pandas as pd\n","import numpy as np\n","\n","gdp = pd.Series(np.array([264.5, 250.7, 248.84, 242.83]), ['Czech Republic','Iraq','Romania','Portgual']) \n","print (gdp)"],"execution_count":null,"outputs":[{"name":"stdout","output_type":"stream","text":["Czech Republic 264.50\n","Iraq 250.70\n","Romania 248.84\n","Portgual 242.83\n","dtype: float64\n"]}]},{"cell_type":"code","metadata":{"id":"EuvsZaP9qT5b","outputId":"de75d851-24f8-4bf1-86e5-c41c2bff6f80"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","GDP = pd.Series([264.50, 250.07, 248.84, 242.83], index = ['Czech Republic', 'Iraq', 'Romania', 'Portugal'])\n","GDP"],"execution_count":null,"outputs":[{"data":{"text/plain":["Czech Republic 264.50\n","Iraq 250.07\n","Romania 248.84\n","Portugal 242.83\n","dtype: float64"]},"execution_count":49,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"2jjaY7yYKKc9"},"source":["## [Pandas DataFrame](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html) π¨"]},{"cell_type":"markdown","metadata":{"id":"ASC15gj_KKc9"},"source":["The DataFrame is similar to a table. It organizes data into rows and columns as an two-dimensional data structure. The columns can be of different types, and the size of a DataFrame is modifiable. \n","Let's create a DataFrame of 14 animals, populated with age, weight, and length. First, let's create a Python dictionary. "]},{"cell_type":"code","metadata":{"id":"vNcT0_XVKKc9"},"source":["animal_dict = {\n"," 'Animal' : [\"Hamster\", \"Alligator\", \"Hamster\",\"Cat\", \"Snake\", \"Cat\",\"Hamster\", \"Cat\", \"Cat\", \"Snake\", \"Hamster\", \"Hamster\", \"Cat\", \"Alligator\"],\n"," 'Age' : [1,9,4,13,14,10,2,4,14,7,14,2,1,7],\n"," 'Weight': [7,13,8,12,11,8,10,14,9,11,10,10,9,14], \n"," 'Length' : [8,6,9,1,8,9,5,6,6,6,5,3,4,5] \n","}"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"ZDTmV7eEKKc-"},"source":["Now, let's turn our Python dictionary into a DataFrame:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":483},"id":"UzIddfJFKKc-","executionInfo":{"elapsed":908,"status":"ok","timestamp":1592836071426,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"33969b14-fdd4-4fa1-997e-56e5c6da4a11"},"source":["animal = pd.DataFrame(animal_dict)\n","animal"],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Animal
\n","
Age
\n","
Weight
\n","
Length
\n","
\n"," \n"," \n","
\n","
0
\n","
Hamster
\n","
1
\n","
7
\n","
8
\n","
\n","
\n","
1
\n","
Alligator
\n","
9
\n","
13
\n","
6
\n","
\n","
\n","
2
\n","
Hamster
\n","
4
\n","
8
\n","
9
\n","
\n","
\n","
3
\n","
Cat
\n","
13
\n","
12
\n","
1
\n","
\n","
\n","
4
\n","
Snake
\n","
14
\n","
11
\n","
8
\n","
\n","
\n","
5
\n","
Cat
\n","
10
\n","
8
\n","
9
\n","
\n","
\n","
6
\n","
Hamster
\n","
2
\n","
10
\n","
5
\n","
\n","
\n","
7
\n","
Cat
\n","
4
\n","
14
\n","
6
\n","
\n","
\n","
8
\n","
Cat
\n","
14
\n","
9
\n","
6
\n","
\n","
\n","
9
\n","
Snake
\n","
7
\n","
11
\n","
6
\n","
\n","
\n","
10
\n","
Hamster
\n","
14
\n","
10
\n","
5
\n","
\n","
\n","
11
\n","
Hamster
\n","
2
\n","
10
\n","
3
\n","
\n","
\n","
12
\n","
Cat
\n","
1
\n","
9
\n","
4
\n","
\n","
\n","
13
\n","
Alligator
\n","
7
\n","
14
\n","
5
\n","
\n"," \n","
\n","
"],"text/plain":[" Animal Age Weight Length\n","0 Hamster 1 7 8\n","1 Alligator 9 13 6\n","2 Hamster 4 8 9\n","3 Cat 13 12 1\n","4 Snake 14 11 8\n","5 Cat 10 8 9\n","6 Hamster 2 10 5\n","7 Cat 4 14 6\n","8 Cat 14 9 6\n","9 Snake 7 11 6\n","10 Hamster 14 10 5\n","11 Hamster 2 10 3\n","12 Cat 1 9 4\n","13 Alligator 7 14 5"]},"execution_count":51,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"HhGkmv6eu9PP"},"source":["We turned a dictionary into a dataframe! Can you tell which parts of the dictionary became the headers and what became the values?"]},{"cell_type":"markdown","metadata":{"id":"1Pwq8wEQKKdA"},"source":["### Pandas Methods π’"]},{"cell_type":"markdown","metadata":{"id":"4lADsQJFKKdB"},"source":["Great! π Pandas has many unique methods that we can use for data analysis and filtering. Let's first explore [**.unique( )**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.unique.html). This method returns all the unique values in an given series or column:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":34},"id":"1cj0wYKYKKdB","executionInfo":{"elapsed":914,"status":"ok","timestamp":1592836074945,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"e07810d9-17e4-4ed8-d023-e9ff6f9918d9"},"source":["pd.unique(animal[\"Animal\"])"],"execution_count":null,"outputs":[{"data":{"text/plain":["array(['Hamster', 'Alligator', 'Cat', 'Snake'], dtype=object)"]},"execution_count":52,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"pb8JvqIjKKdC"},"source":["Let's now look at the [**describe()**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.describe.html) method. This method returns the summary statistics of numerical columns. To return the numerical statistics, we write:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":297},"id":"252W6c8HKKdC","executionInfo":{"elapsed":888,"status":"ok","timestamp":1592836104474,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"b9c5b708-4de4-42e0-b58d-1353d7e6d606"},"source":["animal.describe(include=[np.number])"],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Age
\n","
Weight
\n","
Length
\n","
\n"," \n"," \n","
\n","
count
\n","
14.000000
\n","
14.000000
\n","
14.000000
\n","
\n","
\n","
mean
\n","
7.285714
\n","
10.428571
\n","
5.785714
\n","
\n","
\n","
std
\n","
5.075258
\n","
2.208873
\n","
2.259291
\n","
\n","
\n","
min
\n","
1.000000
\n","
7.000000
\n","
1.000000
\n","
\n","
\n","
25%
\n","
2.500000
\n","
9.000000
\n","
5.000000
\n","
\n","
\n","
50%
\n","
7.000000
\n","
10.000000
\n","
6.000000
\n","
\n","
\n","
75%
\n","
12.250000
\n","
11.750000
\n","
7.500000
\n","
\n","
\n","
max
\n","
14.000000
\n","
14.000000
\n","
9.000000
\n","
\n"," \n","
\n","
"],"text/plain":[" Age Weight Length\n","count 14.000000 14.000000 14.000000\n","mean 7.285714 10.428571 5.785714\n","std 5.075258 2.208873 2.259291\n","min 1.000000 7.000000 1.000000\n","25% 2.500000 9.000000 5.000000\n","50% 7.000000 10.000000 6.000000\n","75% 12.250000 11.750000 7.500000\n","max 14.000000 14.000000 9.000000"]},"execution_count":53,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"BsKjmT16KKdD"},"source":["Super simple! π₯³ **np.number** simply returns the numerical columns and excludes other data types. Now, let's attempt to filter columns in Pandas. \n","To filter in Pandas, we simply use brackets. Let's try one example:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":235},"id":"BPvwh15bKKdD","executionInfo":{"elapsed":778,"status":"ok","timestamp":1592836133322,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"854589ec-4e7b-487e-8007-bcd11a4574c0"},"source":["animal[animal[\"Weight\"] > 10]"],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Animal
\n","
Age
\n","
Weight
\n","
Length
\n","
\n"," \n"," \n","
\n","
1
\n","
Alligator
\n","
9
\n","
13
\n","
6
\n","
\n","
\n","
3
\n","
Cat
\n","
13
\n","
12
\n","
1
\n","
\n","
\n","
4
\n","
Snake
\n","
14
\n","
11
\n","
8
\n","
\n","
\n","
7
\n","
Cat
\n","
4
\n","
14
\n","
6
\n","
\n","
\n","
9
\n","
Snake
\n","
7
\n","
11
\n","
6
\n","
\n","
\n","
13
\n","
Alligator
\n","
7
\n","
14
\n","
5
\n","
\n"," \n","
\n","
"],"text/plain":[" Animal Age Weight Length\n","1 Alligator 9 13 6\n","3 Cat 13 12 1\n","4 Snake 14 11 8\n","7 Cat 4 14 6\n","9 Snake 7 11 6\n","13 Alligator 7 14 5"]},"execution_count":54,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"Pey_gUxLKKdF"},"source":["π Python is wonderful because it's so intuitive. We pointed to **animal**, and then to the **\"Weight\"** column. At this point, we filtered for numbers greater than 10\n",". "]},{"cell_type":"markdown","metadata":{"id":"CgYln5WbKKdF"},"source":["What if we want to find rows between a certain subset? We can use the '&' operator: "]},{"cell_type":"code","metadata":{"id":"dVlSA9sZKKdF","outputId":"8d3a440e-6e91-428f-d810-86af0b39b2f6"},"source":["animal[(animal[\"Length\"] > 4) & (animal[\"Length\"] < 8)] "],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Animal
\n","
Age
\n","
Weight
\n","
Length
\n","
\n"," \n"," \n","
\n","
1
\n","
Alligator
\n","
9
\n","
13
\n","
6
\n","
\n","
\n","
6
\n","
Hamster
\n","
2
\n","
10
\n","
5
\n","
\n","
\n","
7
\n","
Cat
\n","
4
\n","
14
\n","
6
\n","
\n","
\n","
8
\n","
Cat
\n","
14
\n","
9
\n","
6
\n","
\n","
\n","
9
\n","
Snake
\n","
7
\n","
11
\n","
6
\n","
\n","
\n","
10
\n","
Hamster
\n","
14
\n","
10
\n","
5
\n","
\n","
\n","
13
\n","
Alligator
\n","
7
\n","
14
\n","
5
\n","
\n"," \n","
\n","
"],"text/plain":[" Animal Age Weight Length\n","1 Alligator 9 13 6\n","6 Hamster 2 10 5\n","7 Cat 4 14 6\n","8 Cat 14 9 6\n","9 Snake 7 11 6\n","10 Hamster 14 10 5\n","13 Alligator 7 14 5"]},"execution_count":55,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"x6wsJ_pyKKdG"},"source":["We are almost finished our review of Pandas DataFrames. π€ Let's now turn our attention to [**.groupby()**](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html). The Groupby method involves grouping data around a particular category and applying analysis. This would be useful if you were interested in answering the question, \"What's the average weight of all the snakes, cats, hamsters, and alligators?\" To find the average weight of each category of animal, we'll group the animals by animal type and then apply the mean function. We could apply other functions too. We could apply \"sum\" to add up all the weights, \"min\" to find the lowest, \"max\" to get the highest, or \"count\" just to get a count of each animal type:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":119},"id":"g_QWyOf0KKdJ","executionInfo":{"elapsed":791,"status":"ok","timestamp":1592836152180,"user":{"displayName":"Anna Sappington","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GjrW9flu-VMV0EXC0ukKAtOYrHFTKaJZm2ho4B2VKs=s64","userId":"17940008289982183172"},"user_tz":240},"outputId":"3452ac39-58a7-4e68-cdce-63da9f40824d"},"source":["animal_groups = animal.groupby(\"Animal\")\n","animal_groups['Weight'].mean()"],"execution_count":null,"outputs":[{"data":{"text/plain":["Animal\n","Alligator 13.5\n","Cat 10.4\n","Hamster 9.0\n","Snake 11.0\n","Name: Weight, dtype: float64"]},"execution_count":56,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"4KhditFY4MKJ"},"source":["## Exercise 3: DataFrame π\n","- Open the [UN Dataset](http://data.un.org/_Docs/SYB/PDFs/SYB60_T03_Population%20Growth,%20Fertility%20and%20Mortality%20Indicators.pdf) \n","- Create a DataFrame using **Northern Africa**, **Sub-Saharan Africa**, **Eastern Asia** and **Western Europe**. For these areas, create columns for *Population Rate of Increase*, *Fertility Rate*, and *Infant Mortality* for the year 2005.\n","- Using filtering, sort for the countries that have infant mortality between 30 and 50. \n","- Find the max for Infant Mortality for the four areas"]},{"cell_type":"code","metadata":{"id":"kcTrJUHP4Ln4"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","# Students should know that they can create DataFrames using a variety of methods. There is no right way!\n","UN_Data = {\n"," 'Countries': ['Northern Africa', 'Sub-Saharan Africa', 'Eastern Asia', 'Western Europe'],\n"," 'Population Rate of Increase': [1.7, 2.7, 0.6, 0.3],\n"," 'Fertility Rate': [3.2, 5.6, 1.5, 1.6],\n"," 'Infant Mortality': [39.3, 87.3, 23.2, 4.3]\n","}"],"execution_count":null,"outputs":[]},{"cell_type":"code","metadata":{"id":"U7i-8VBB4LV8","outputId":"7072cfbd-df61-4f1d-dcdd-f9255a878358"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","UNdata = pd.DataFrame(UN_Data)\n","UNdata"],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Countries
\n","
Population Rate of Increase
\n","
Fertility Rate
\n","
Infant Mortality
\n","
\n"," \n"," \n","
\n","
0
\n","
Northern Africa
\n","
1.7
\n","
3.2
\n","
39.3
\n","
\n","
\n","
1
\n","
Sub-Saharan Africa
\n","
2.7
\n","
5.6
\n","
87.3
\n","
\n","
\n","
2
\n","
Eastern Asia
\n","
0.6
\n","
1.5
\n","
23.2
\n","
\n","
\n","
3
\n","
Western Europe
\n","
0.3
\n","
1.6
\n","
4.3
\n","
\n"," \n","
\n","
"],"text/plain":[" Countries Population Rate of Increase Fertility Rate \\\n","0 Northern Africa 1.7 3.2 \n","1 Sub-Saharan Africa 2.7 5.6 \n","2 Eastern Asia 0.6 1.5 \n","3 Western Europe 0.3 1.6 \n","\n"," Infant Mortality \n","0 39.3 \n","1 87.3 \n","2 23.2 \n","3 4.3 "]},"execution_count":58,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"id":"JZxM2utw4LDO","outputId":"529de6f8-c213-4a56-f6a1-a29ef569d8a3"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","UNdata[(UNdata[\"Infant Mortality\"] > 30) & (UNdata[\"Infant Mortality\"] < 50)] "],"execution_count":null,"outputs":[{"data":{"text/html":["
\n","\n","
\n"," \n","
\n","
\n","
Countries
\n","
Population Rate of Increase
\n","
Fertility Rate
\n","
Infant Mortality
\n","
\n"," \n"," \n","
\n","
0
\n","
Northern Africa
\n","
1.7
\n","
3.2
\n","
39.3
\n","
\n"," \n","
\n","
"],"text/plain":[" Countries Population Rate of Increase Fertility Rate \\\n","0 Northern Africa 1.7 3.2 \n","\n"," Infant Mortality \n","0 39.3 "]},"execution_count":59,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"code","metadata":{"id":"8n-uGAKp4KqC","outputId":"22543f6b-f082-4aa3-bf32-0172ea5eedc6"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","# Finds the max of each column\n","UNdata[\"Infant Mortality\"].max()"],"execution_count":null,"outputs":[{"data":{"text/plain":["87.3"]},"execution_count":60,"metadata":{},"output_type":"execute_result"}]},{"cell_type":"markdown","metadata":{"id":"8ni5XbrPKKdM"},"source":["With that, we've completed our review of the Python library Pandas. If you have any lingering questions, do ask! You can find more on Pandas on their [official website](pandas.pydata.org)."]},{"cell_type":"markdown","metadata":{"id":"N6zknks8KKdM"},"source":["# Matplotlib: A (Tiny) Introduction π"]},{"cell_type":"markdown","metadata":{"id":"Ncf6gLKkKKdM"},"source":["Mathplotlib is a Python 2D plotting library which produces plots, histograms, power spectra, bar charts, errorcharts, scatterplots, etc. with just a few lines of code. Source: [Matplotlib](https://matplotlib.org). \n","We'll cover only some of the coolest features in this Notebook due to time constraints. You can explore more on the [official website](https://matplotlib.org/tutorials/index.html)"]},{"cell_type":"markdown","metadata":{"id":"AF_UaXHGKKdM"},"source":["Let's import the `mathplotlib` library under the alias `plt`"]},{"cell_type":"code","metadata":{"id":"SPimxVV7KKdM"},"source":["import matplotlib.pyplot as plt"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"sQNhgmjFKKdN"},"source":["### Pyplot"]},{"cell_type":"markdown","metadata":{"id":"9WbbAMlRKKdN"},"source":["Pyplot is a module of Matplotlib which provides simple functions to add plot elements like lines, images, text, etc. to the current axes in the current figure."]},{"cell_type":"markdown","metadata":{"id":"00Fel6ykKKdN"},"source":["We'll import the Pyplot module to create a simple plot. We will be using two NumPy arrays - one for the x-coordinates and another for the y-coordinates:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":265},"id":"sLSc7SbHKKdN","executionInfo":{"elapsed":1287,"status":"ok","timestamp":1589131605684,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"76942392-5343-490d-8331-15651fe47db0"},"source":["plt.plot([1,2,3,4],[1,4,9,16]) # plt.plot([x-coordinates], [y-coordinates])\n","plt.show()"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"weoDq9MYKKdO"},"source":["Now, we can add titles, and labels:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":295},"id":"iHnwLMXHKKdO","executionInfo":{"elapsed":899,"status":"ok","timestamp":1589131639883,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"09f6e228-871c-4138-a360-9063e7a0837d"},"source":["plt.plot([1,2,3,4],[1,4,9,16]) # plt.plot([x-coordinates], [y-coordinates])\n","plt.title(\"First Plot\")\n","plt.xlabel(\"X Label\")\n","plt.ylabel(\"Y Label\")\n","plt.show()"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"LH76ssZnKKdP"},"source":["Another commonly used graph in Machine Learning is the Scatter Plot. Let's create a basic scatterplot in MathPlotLib comparing the distribution of height vs. weight: "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":295},"id":"9O0CPOx4KKdQ","executionInfo":{"elapsed":526,"status":"ok","timestamp":1589131699277,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"c45e17e2-599a-4cec-c70a-134488a3d2b4"},"source":["height = np.array([167, 170, 149, 165, 155, 180, 166, 146, 159, 185, 145, 168, 172, 181, 169])\n","weight = np.array([86,74,66,78,68,79,90,73,70,88,66,84, 67, 84, 77])\n","\n","#We can set the limit (lower, upper) for the x-axis and the y-axis using xlim and ylim, respectively.\n","plt.xlim(140, 200)\n","plt.ylim(60,100)\n","#A scatterplot can be generated through .scatter(x,y)\n","plt.scatter(height,weight,alpha=0.5)\n","plt.title(\"Comparing Height vs. Weight\")\n","plt.xlabel(\"Height\")\n","plt.ylabel(\"Weight\")\n","plt.show()"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"6mxMn_4bKKdR"},"source":["## Exercise: MatPlotLib π "]},{"cell_type":"markdown","metadata":{"id":"3LfHjeNWKKdR"},"source":["- Using the data for the animal weights and lengths, create an scatterplot comparing the information. \n","\n","Note: Remember to properly label the graph (x-axis, y-axis, and title!)"]},{"cell_type":"code","metadata":{"id":"3uqlToXs4x6B","outputId":"38e839a1-001e-421c-c073-75f3d83c87c8"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","plt.scatter([8,6,9,1,8,9,5,6,6,6,5,3,4,5], [7,13,8,12,11,8,10,14,9,11,10,10,9,14],alpha=0.8)\n","plt.xlabel(\"Length\")\n","plt.ylabel(\"Weight\")"],"execution_count":null,"outputs":[{"data":{"text/plain":["Text(0, 0.5, 'Weight')"]},"execution_count":67,"metadata":{},"output_type":"execute_result"},{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"wh-AfqzEKKdR"},"source":["# Seaborn: Another (tiny) introduction π "]},{"cell_type":"markdown","metadata":{"id":"X3OFm9_LKKdR"},"source":["Let's first import the library for seaborn under the alias sns:"]},{"cell_type":"code","metadata":{"id":"ghg0flCUytpS"},"source":["import seaborn as sns"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"9kT_EQIkKKdS"},"source":["Let's import a csv file - comma-seperated values - that details the total bill costs and the tips. We'll run a scatterplot on this data:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":280},"id":"bx-QuQQ3KKdT","executionInfo":{"elapsed":1070,"status":"ok","timestamp":1589131760138,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"237868ac-37c4-4220-d929-0994790b590f"},"source":["# Run this code to import the data and read it in using 'pd.read_csv('file')'\n","tips = pd.read_csv('C:/Users/eagle/OneDrive/Lumiere/AI Program/data/tips.csv')\n","ax = sns.scatterplot(x=\"total_bill\", y=\"tip\", data=tips) #plotting it"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"gUDdScq-KKdU"},"source":["The scatterplot above does not discriminate between the days of the week. What if we wanted to see the distribution of the data for each day? \n"," \n","For this, we can consider using a categorical scatterplot with the **.catplot()** method. "]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":369},"id":"zw8v_e-hKKdU","executionInfo":{"elapsed":3684,"status":"ok","timestamp":1589131781179,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"f527fbe5-6673-481a-c86c-b1a93a8dbfe0"},"source":["sns.catplot(x=\"day\", y=\"total_bill\", data=tips);"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"6W0Rxlt1KKdW"},"source":["We can go even further! How about we try sorting the time of the day that the customer dined at the restaraunt? Let's use the swarm parameter to prevent the points from overlapping and group by time:"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":369},"id":"vp3BnS7UKKdW","executionInfo":{"elapsed":1232,"status":"ok","timestamp":1589131791531,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"92b040a8-e7d8-43a0-89d8-f1b8ae55510a"},"source":["sns.catplot(x=\"total_bill\", y=\"day\", hue=\"time\", kind=\"swarm\", data=tips);"],"execution_count":null,"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAaEAAAFgCAYAAAASHMbTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3zTx/nA8c/Je28bjBcemL03YRNCdpvZ7FnSJM1OM5qkIW1/zU6anWaPpknInhAIYW+HPWwMNjbGGO89Jd3vDwnZkjwEGATkeb9evND3q+84S7Ye3d1zd0prjRBCCOEOBncXQAghxG+XBCEhhBBuI0FICCGE20gQEkII4TYShIQQQriNp7sL0J1mzZql58+f7+5iCCGEcncBThanVE2otLTU3UUQQghxGE6pICSEEOLkIkFICCGE20gQEkII4TYShIQQQriNBCEhhBBuI0FICCGE20gQEkII4TYShIQQQriNBCEhhBBuI0FICCGE20gQEkII4TYShIQQQriNBCEhhBBuI0FICCGE20gQEkII4TYShIQQQriNBCEhhBBuI0FICCGE20gQOoEdrG5k4Y6DFNc0ursoQghxTHi6uwCifd9tLuTuuZtoMWm8PQy8eNlQZg3s6e5iCSFEt5Ka0AnqXz/upMWkAWg2mXl8XqabS9TKbNY8Pm8nQx5bwMSnfuGbTfvdXSQhxElKgtAJqqyu2W67vLa5gyOPv883FPCfpTlUNbSwr7yBu+duZl95PQA1jS22x0II0RVpjjtBXTQijv+tzbdtXzgizo2lsZext9xu22TWbMivYNHOgzwxP5PGFjPDEkJ5+5pRhAd4u6mUQoiTgdSETlCPnTeA26alMj4lgr+d05+Hz+7n7iLZDE8Is9s2KIgL8+MfP+ykscUMwMb8Sl5dvNsdxRNCnESkJnSCemZBFm8sy0FrKKpq5KxBPekR4uvWMm3Mr+CFRdmU1zUzLiWCjfkVBPl6cd8Z6RhNGpNZ2x2/p6TWpeu2mMy8v2ovG/IrGJ4QxjXjk/DykO9HQvwWSBA6AeWW1vGfpTm27ZzSOv6zbA+PnjvAbWWqqm/h6rfXUdNktO177YrhnDnIkrHX2GIiMtCH0tom2/PT+8W4dO2/f7eDD9fkAfDj1iJyS+v4v98PcuncLQWV/N8POymoaODswT35yxnpdgGs2Wgmu7iGpIgAAnyO36/791sK+WZTIT2Cfbl5SgqxoX7H7F4Ze8vJKa1jUlqU27+oCHG4JAidgA5UNTjvq3TvWKHVOWV2AQhg4Y6DtiBU12TkhtOSWJxVQn2zkfOH9OKKMQkuXfuLDQVO264EoSajievfW0+pNWnjjWU5hPh5cevUVMASoG54P4OSmiaCfDx57tKhnN7ftcB4NL7bXMhtH2+0bS/LLmHR3ZPxPAa1u8e+2867K/cC4Otl4IPrxzC6d3i330eIY0XaPE5AIxPD6eXwzfm8obHHvRyV9c38/bsdXPbGGtY7JCMApEQHArAhv4JJTy3myflZrMstZ0JKJH+clIxSyqX7RATaJy9EBvq4dF7mgRpbADpk2a4S2+N/fL+DkhpLzaymycjDX2/F7NBkeCx8s6nQbjuvrJ6N+yq7/T4lNU18sDrPtt3YYuYV6YcTJxkJQieY6sYW3lyew7CEUKakRzG9bzQvXTaMswYd3UDV8rpmvttcyLb9VS6fc+v/NvDOylxW55Tx9opcRiaF4eVhCSwTUiO4ZnwSAC//spu6ZpPtvLdW5No1y3XlobP64W2tJXh7GHjoLNeSMJIiA/Dz8rDb1z822PY4r8w+VfxgdRONRhPHWo8Q+yCqFMQEdX8zWZPR5NQPV99s7OBoIU5M0hx3grn2nXVsyG/91vzqFcNdDkAFFfU8t2AXOaV1nN4/hj9NTsHDoNiQX8FVb621BYqbp6Rw/6y+lNc18+WGAppNZi4YFmfXn1BZ38zK3WV21y+ubmL9QzOobTISF+Zv21/T2GJ3nMmsqW8yQWDXZV6XW85/1+STGhPImKRwbpmaSlRQ5zWhstomnpiXydb9VYzuHc7W/VWU1zUzMS2SO6an2Y6bNbCHXU1hbHIEC3ccJDkykEFxIV0X7gjdPCWVpbtK2FfegFIwe1IyCRH+XZ/ooq837ufdlbl4eRgYHBfCloLWLxZXjk3stvsIcTxIEDqBZBZV2wUggI/X5bsUhLTWXPfuerKLLRlpm6zNP7dOTXWqqby5LIdLR8ZzxVtr2V9p6X96a3kuP9x+Gj1DLM2A/t6ehPp7UVnfGmAiA735x/c7Kaio55zBPblqXBIAl41OYP3eCttxp6VGuvShW1zTyNXvrLWlde8orGZin0im9e283+bOTzexPLsUgMyiGi4Y3otHzx1AiJ8XYOmrenFRNvXNRib3iaKmsYXoIB+W7CphTY4lsB4KxMdCZKA3V45JZNmuEsalRNj6qLrDutxy7vx0k23bQ8Ht09OobmhhZv8YxqdGdtu9hDgepDnuBBLk64VjN8qhD9au5JTW2QLQIQu2FwFQ1WBfUzGaNfO3FdkCEGCtFbVOv+PtaeCx8wbg42n5FYkI8OJAVSNfbChgbW45j3yznQ/X5NHYYqLJaOa8IT05c2AP/npWX964eoRLZV61u8wWgA75eWdxp+c0GU22AHTIL5nFttcpr6yOm//7K1v3V7GnpI6lu0q4bXoa9S1mu3u9uSyHirpjMwvFg19s5fF5mazcU8YzC3bx3MJdHR5b32zkiXmZXPL6ap6Yl9llc9ovmfavj0lDRIA3c84bIAFInJSkJnQC6RXqxzXjknhv1V4Agn09uWWKa9+io4N88PPyoKGltcaTGBEAWGoqv+bZ11Taa/LyNNhHwF6hfkxNj6bJaOLsQT259/Mtds/P23qAH7ccYLW1duFpUFw1LhF/b9d+rVKjndvrkiMDWLW7lIM1jUxNjybU3z5pwcfTg4Rwf/LbTA2UGtV6nVV7yjA69JMs21Xi1GRoNGvqW0zYD7s9ek1GE99stk9MmJuxj3tmprd7/ENfbeOrjZbgv25vOQerG3n+0qEdXj+tndesvX1CnCwkCJ0gdh6o5sEvt7LzQDWje4dz4fA4Zg3s4XJNKMjXi8fOG8Cj326nocVEclQAvxvai4teW0V2cS1jky0Zd31igrhybCJKwatLdrOnpA6AniG+dlMDZRXVcNmba2yTqK7NKcPDoOw6woN8Pflp+0HbttGs+WBVHuNTXPtGPrBXCLdOTeGNZTm0mDTT+0bza14F//xhJwCh/l58/qdxpEYH2Z33xAWDuP2TjZTWNtMr1I855w2g2WgmI6+c4HZer349g+nfM5iNbZo6J/eJcspA7A6eBgPBvp5UtGnGDA/ouI/rh60HnLY7C0LnD41leXYJ32wuxEMprh6XJDUgcVI7rkFIKfUQcDlgAszATVrrtcezDMdDWW0Tz/+8i8wDNUxMi+KWqSlOMwDMzdjHlxsKiAry5bapKdz60QZySi0BYV1uObEhvlw6Kt7le5rMmrK6ZtJ7BNEzxJdHzunHpW+sYV+5pcltTU45V45N4KbJKZTWNvH8wl0E+3pxxoAYJqZFMWtADz5cnceK3aUMiA3Gx9NgC0AA9S1mZg2IYVFmMS0mTWKEP5eOircLQgCeHs5p2RvzK3htyR7qm01cOTbBbkmK6CBfBsWGEBPsyyUj47nu/fW25yrrW3hreS5PXDjY7nrengYGx4VS3dDC7InJhPh5MfWZJbbmxZGJYWwrrKLFpLlgWC8G9Azm1aV76NsjiDB/b6b3i+aKMfYd+Euyinl35V48DIo/TkxmXEqE08+xu7iGFxbtpri6kQuG9+LSUa3joNq+5yMTw1mUeRCztpT1vlmttSCzWfP2ilwW7CgiKSKAniG+dll88WGdB0ZPDwOT06MoqGggPMCbi0ce3ZyC324u5JN1+bbxVQN7dZ2w0WQ08criPazcXcrA2GDuOr2PU421u2wtqOKVxbupaWrhD6MSOHeI60MVtNa8v2ovP24tIi7cj7tm9CE+vPsSRET3UFof+3ETAEqpccBzwBStdZNSKhLw1loXdnGqy0aOHKkzMjK663JH7A9vrGZNTuu4mpsmJfNgm7Rjx8GM4f5elNfbNxf1CvVj5QPTXL7ni4uy7foe0mOCyDpYY3dManQgP989mUteX826NuN+bp6SQlOLmXdW5rYeGxXAbmst6ZD/XDWCPtGB3PnpJjYXVBHk40lihD/bCqsB8PPy4JPZYxkSH2o7p7imkSlPL6HemhihFHz8x7GMTY7gwzV5PPL1NtuxMUE+HKyxT+2e1jeKyEAfCisbOWdwTyb2iWLaM0toMlr6dwwKZvSLYcGO1mCoFCy4cxI9QnwxKMVpT/5iVzN5/crhdoFwe2EV57280lbL8/YwsOCuSSRFBtiOaWwxMfGpxbZxRwAv/GEo5w/tBTi/55ePjmdyejQjEsPsxj29vnQPT7RZliMu1I/qxhaqG40E+ngwvV8MBqU4e1BPZrQzsHbB9iJmf/irbTvU34sV908j8Ahmg1icVcx177YG/SBfT1bcN40Q/85r33O+3W5rMgaYmBbJhzeMOez7d6WirplJTy22GyT9wfWjmdQnyqXzP1i9l799s922nRThz6J7puBhcG382lE6Ljc5FRzPxISeQKnWuglAa12qtS5USu21BiSUUiOVUkusj+copd5RSi1RSuUopW4/jmU9YhV1zXYfRgA/brNvcpnnsF1e30JMsH2TzbCEUA7Hjw7NOlkHa4hwmMF6cK8QSmub7AIQWPp2HMu0u6SOoW2CyVTrmKVP1u9jszUluKbJSFZRDc9eMoS/ndOfeXdOtAtAAEuzSmwBCEBrmL+tyHbftg7WNNG7zQe/QcG2/dXMzShgxe5SHvhyK8/8lGULQABmjVOw1doy3irI14u1uWV2AQhgnvX+hyzYftCumbHZZGaRQwJAxt4KuwBkKb/lOu2958t3l3LGgB5OA28d711Q2cDHs8fyza3jSQgP4JtNhXy1cT83fpDBd5udv585nl9Z38LqPWVOx7li/lb7a9U0Glmxu7SDo9uc51CG5dml1DZ1//ik5btLnWbpcPz5O+P4N7G3rJ6dB6q7pWyi+xzPILQAiFdK7VJKvaqUmuzCOX2BM4DRwKNKKaevaEqp2UqpDKVURklJidMFjrdAX0+n5QsSHJoAHJsElIK/nzeQfj2DMShLf8XhzhPneI9AH0/+fn5/2/6JaZH89ex+BPt6EerwTTc+3N+pTJGBPnz+p3G8fc1IxiVHsHV/Nbd8tMFuTApAi1mzMb+S5xfuYubzy5jz7Xa7WQkcy9V2n+NzXh6Kt68ZyQNn9uW6CUn86/eDKHb44HfMAAQYl2zfdBYf5sf6vRV8uHpvu0tJON63szLarhnu55S5eCgN3ZX3vKP9vl4G4sP98fQwsMPhA/KzX+2nM7KUo+uyuqq9NHpXruV4TJQ1Kaa7ufK+HM75Xh6KnjK33gnnuAUhrXUtMAKYDZQAnyqlru3itB+01k1a61KgGHBqn9Bav6G1Hqm1HhkV5Vo1/Vjy8jDwj/MH4u9t+aPsEezLXx1mALhpUgoDe1lG9nsYFLdNS2PmgBhO7xdNdJAvB6sbD2tmA4D7ZvUlztqf4OOp6BMTyG0fb6KoupGbJ6fw4Q1jiAz0wdvTwN/blC8m2IdrxyfxyNn9ibZmzAV4e/DP3w3A08PAB6vzWJ1TRmltEwt2HKS4xn4Ou2BfT/67Jo+aJiPNRjPvrdrLt22+wY9JjuDyMQm2D/DxKRH8YbSlr+v26Wm2DDlvDwP3z+pLclQgf5qcwqPnDmBKerRT08mgXsFcPCLOdr3JfaKYc94AXrtiOLMG9OCi4XFUNbTwxLxMHvlmO3fP3cxNk5Jt1+nbI5AeIb7klbU2NZ47JJYZbSZbPX9oLNP7RtvdNzEigDump9kyCAfEBjN7UjLg2nt+yD2n9yHR+uHv42ngkXP6W78YeDsFufB2msVumNDbVkP1MCj+NDmF9B5BTse54upxiYxMtOQHGhTccFpvlwbxPnxOP1t2ZaCPJ//83cBj0sQ1ND6Ua8cncejSo5PCuWqc64Nx75jRh5QoS83a28PAg2f2I8LFKaHE8XPc+oScbqzURcA1QD9gvNa6WCl1GvBPrfUUpdQcoFZr/Yz1+G3AOVrrvR1d80TpEwLLLAJ5ZfWk9wjqcFmCrKIawgK8iA7y5dP1+dz/xVbbc96eBlbeP63L2QPaMpk1mUXVrMst57Hvdtg99/mfxlFe18zOAzVM7BNJanQgH6zay2tL91DXZCI9JojXrxrO1xsLmZuxjyajmWvGJfHy4my7BAXL4Mg+fLN5P7EhfgyOC+HVJXvs7nX9hN787dz+dvsyD1Tzzx92sja3jNToIP71+4EMSwhDa82zC3bx0/Yigv28uGN6ml2b/yuLd/Pcwl2YzJrkyAD+e+MYYkP9WLarhBcWZVNU1ciMftE8eFY/fL08eG5BFi/+Yj9/2kuXDWNM73A++7WAZxdkYdaWD91nLh7CBcNbO/b3ltbhYVCddl6X1DRRbk0AcfT1xv38b10+8WF+3DI1lZSo9lOnK+ubmfPtdnJL65iQGsnt09Pw9fLgn9/v4K0Vln658ABvPp09lrSY9gPMcwuy+HlnMTHBPtw5o49TM+jh2F1cQ6CP12HNwN1sNLPrYA1JkQFH1B91OIqqGqltanHKknSF2azJOlhDTLDv8V5gUfqEXHQ8ExPSAbPWOtu6/U8gFEuT27Na63lKqeeBYadCEDpcd3yy0Wniy9evHMGsgT0O+1p//26HXZIBwLiUCLu+g//7/UD+9cNOu5kUpqVHsXhXCW1/JXpH+pNb2pq9NSQuhG/+fJpte3dxDTOfX0bboTlvXj3Sabbq+z/fwqcZ+2zbsSG+LL9/Gkuyirnh/db3zNvDwNL7pthmbgAorm7kYHUTA2KDMRgUZrNmyjNL7MYKzZ6UzF/P6sfzC3fxwqJsu3u/cvlwzh7ck3GPL+JAVWtNLjbEl1UPTnd+AY/Akqxirm3TyR8Z6M2y+6a2O2Zq9gcZdokUl42O5/ELLBmAmUXVFJQ3MC4losOlJxwTW4J8PVn5wDSCfV1L5xfHhQQhFx3PPqFA4H2l1A6l1BagPzAHeAx4QSm1HEvq9m/SIIfUWIMCf28PNuZXcLhfFKak2zdLehpgfa59x/lby3LtAhBA5sEaHG81NC6MdOu38ZTIAK4Zn0Rzm8SA1Oggnr90KMmRAfQI9uH6CUlM6uM8buXX/Aq77cKqRgorG1iSZd+P12wyO81ZFx3sy6C4EAzWdpm88nq7AATYZlG4dFS8XUJGn5hApvezNK1VO8wcUd3YfZ3p32227wQvrXWeew8sC/j9vNM+rf3HNgkCfXsEM6N/TKdrHzmeX9NoZG2O8yznQpwMjmef0K9a6/Fa6/5a68Fa6wusGXLLtdZ9tNYTtdb3aq2nWI+fc6gWZN0e2Fkt6GR31bhELhjWCw+DItTPk0G9Qrj6nXX8/tVVnPfySqodRvx3ZlKfKB6/YBB9ewQxLCGUly4bhsGhw8HbU5EcFWC3b2q6fT8IwNR+0fx01yQePLMveeX13D13M5OeWkx2m4y084f24pFz+1PXbOKdlXsZ//gv/Jpn/6E4wmFJ8NgQX2JD/ejTTrPWpn2V/O6Vldz72eZ211bqGeLrlFzRr6flOrGhfsy7cyKXj47nvMGx/PvSofhaO80vd1jfyHH7aLTX4d3ePi8Pg10tDw4/saC9Zj7H91KIk4XHnDlz3F2GbvPGG2/MmT17truLcUQ8DQbOGNiDmyYlMyQ+lNfarKxaXNNEmL8XIxJdX6xsUK8QrhybyB9GJZAWE0R1Y4ttclSl4JFz+vOnySmU1DZhQDG1bzQPntmX2FA/NhdUoRRcf1pvbpjQm5omIze8v55ma99QbZORkpomzmkzcPCqt9fa1vZpaDGRWVTDZaNbP+RHJYWRW1pHfnk96T2Cee6SIcSG+tGvRzC51nnvfDwNjEwMY962IoqqG9lxoJrVe8q4wmFmaE8PA31iAlm9p4y6ZhOjksJ4/PeDbLWHR7/dzqcZBWQdrOGzjAJGJIURH+7PaamR9ArzIyLAm6vHJzF7outrHnWlb89glu4qsb0GV41N5A+j2w9yyVEB/JJZTLPRTESAN89aXwtX9Y8NZlN+JQUVDXh7GLhzRprduCdxQnjM3QU4WbgtMeFYOJn7hNr6ckMBd8/dbLfvuglJR7289/xtB/hqYyG9Qn3546Rkeob48UvmQf78v43UN5sI8vHk1SuHMzEtCq217QM6r6yOyU8vsbvW4LgQvrX2DbWYzPR5eJ5dU16InxebH53pctkq6prx8jRw0WuryCyyH/ez/L6p7SYLmMyamsYWu9H6hZUNTHjyF7uyTEmP4r3rRrtcliNlNmu27K8izN/LNm9fR+qbjeSU1JEWE4iP55GlNxdU1BPk49Xl4FLhFtIn5CKZRfsENDU9mmDf1j4Bg+KwpitpT7PRzL9/zuan7UW8s3IvZzy/jL2ldTz67XbbYNKaJiN/t2bVta0hJEYEMNghdXfWgB7UWQcSenkY7FKcAc48zISKsABvAn08SXL48A7y8XRaefUQD4Nymi7GZNZO/VpG0/H5omUwKIbGh3YZgMCyVMbAXiFHHIAA4sL8JQCJk54EoRNQWIA3n988nvOHxjIhNYK3rxnF8ISjm+952a4SuxpGdaORj9flU1RlP+6nsNK5Dwbg7WtGce34JCamRTIxLZJ/L8pm6N8X8MjX2zCbNc9cPIRrxycxPCGUm6ekMOe8I6u13Tcr3TaOxt/bg8fOH+DyrNxgGcw5s01mnkHBtdYVYIUQJx6ZRfsEtbe0jkU7i6m1To3z1jWj7KbR6RYKzh7Uk6/bpIZ3VOOKCvJhznkDWLW7lMvfap1z9sM1eYxNjuDswT2POPC0lRwVyOJ7prC7pJaeIb4EHUHa8cuXD+fbzYXklVlWmB0c182vmxCi20gQOgGZzZpHvtlmm4+rtLaZf3y/gy9uHn/E15ycHkW/nsG2ubOCfT25fHQC0UG+xIf7szG/kpFJYfxpckqn13GcWgYsy1CcPbj7OsYNBkWfDgZpusLb08BFI45udmkhxPEhQegE1Gg0cbDafs40x3Exh8vLw8AXN4/ju82F1DQaOXdILDHBlhTijhZca89paZEYFHaDUyemyXo2QogjI0HoBOTv7cmU9Ci7gZxnHcHMCe1dt+0aOEeib49gXrxsGK8s3kOz0cTFI+IYk+y89o4QQrhCUrRPUFX1LTz/8y627a9ifGokt05NOapMqu723IIsXlu6hxaTZmJaJK9fOaLTUf5C/MZIiraL5FPjBBXi79UtHf3HQmZRtd0kocuzS/lgdR43T+m8P0kIIRxJirY4bDkOK65a9jmv8yOEEF2RICQO27jkCAK87ZsG21uKWgghuiLNceKwhQV48+GNY3hxUTaV9S38YVQ8Zww4+sQJIcRvjyQmCCFE95PEBBdJc5wQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICSGEcBsJQkIIIdxGgpAQQgi3kSAkhBDCbSQICbczmszuLoIQwk083V0A8duVW1rH3XM3sTG/kiFxITx7yVBSowPdXSwhxHEkNSHhNvd/sYWN+ZUAbC6o4t7PNru5REKI402CkHCbTfsq7bY3F1R2cKQQ4lQlQUh0i1W7S/ndKyuZ+NQvvPBzNlrrLs8Z0zvcbnt0UngHRwohTlXSJ3SK21JQSWFlI6elRRLo49rbbTSZKahooFeYH14eXX9Pqahr5ob3M2hoMQHw/M+7iA724bLRCR2es6OwmtG9w6lrMpFVVM3wxDAev2CQaz+UEOKUIUHoFPbQV1v5aG0+AOEB3sy9aSyp0UGdnrN5XyV/+u+vHKhqJDrIh1euGM6oLmooG/IrbAHokBW7SzsMQp+sy+eBL7fath89tz/XTejtyo8khDjFSHPcSaLJaOKzjH28uCibXQdrujw+r6zOFoAAyuuaeXXJni7Pe/jrbRyoagSguKaJB9sEi46k9wjCoOz39e8Z3OHxLy7K7nRbCPHbIUHoJHHj+xn85fMtPLdwF2e/uJw1OWWdHl/V0OK0r7qdfY72lNTabeeU1HbZvxPq783NU1II9vXEoODMgT244bSOazZNRrPTtit9SEKIU48EoZNAZlE1y7NLbdstJs17K/d2ek5MkA/9eto3vV0yMr7Le03rG+20rZTq4GiYv+0AY/7vZ15ZvAcfTwOfzB7La1eOwNfLo8Nzrh2f5LTd2T2EEKcu6RM6CRja+YD2cGz/stpf2cBNH2awbX814QFenDckFl8vA+cOiWViWlSX9/rXBYMI9PEkI6+CkYlhPHBm3w6PNZrMPPz1duqaLf1BJbXNPLtgF5/eNK7Te9w2PY3IQB8W7ixicp8orhkv/UFC/FZJEDoJ9IkJ4vT+MSzccRAAH08DN0xs/4P78R93sm1/NQDldS0szy5hzV+n4+PZcc2krbeW5/LVxv0YzZohcaGdZtTVt5gorW2y27evvL7Le3y3uZCHv9mGyaxZklWCn7enS7U0IcSpR5rjTnAfrc1j5D8XsiK7hNP7RfPw2f34+e7JDE8Io8locjo+q8g+aaGivoXi6ian49rza14FLy7KpsloxmTWfLGhgC837u/w+GBfL05LjbTbd+agnl3e5+mfsjCZLX1AZm3ZFkL8NkkQOoFlFdXw0FfbKK1tpqHFzMKdxUQF+dBiMnPeyytIf3g+57y0nOw22XJT0u2b3FKjA4kL8+vyXi0ms1MAO1SGzrx02TB+NzSWofGh3DE9jftnddx8d4hj0kR1Q4tbExPMZk1NY9dJG0KI7rkKAeAAACAASURBVCfNcSewjfkV7eyr5KM1+WwpqAJg2/5q7v18C9/cOgGAP09NpbimiU35laTFBPHQ2f1QSmE0mXlu4S5+2HqAuDA/HjyzHwN7hbAiu5QHv9pCQUUDY3qH42lQGM2tAWFSn477kSrrm7nh/fVsyK/Ey0Nxev8YvD07/15TXtfMhcN78U6bxIrLRid0S2JCVX0LeeV19OsZ7DTItrCygbomI2kx9skaq3aX8pfPt7C/soFRSWG8fPlwYoJ9na69r7yeumYjfXt0nHp+SH6ZpUkyIcL/KH4a0V2ajZYvWAkR/oT4ebm7OMKBBKHjYNO+SuqajJYPeRdmIADLh2ZihD9KQdtKwsikMP63Lt/u2C3WOddW7i7llo82UNXQQpi/F3+c2JvekQEAvLE8xzZOKK+snuveW88vd0/mto83UFFvqQWsySlncp9IKutbqG0ycs34JCZ3EoTeWJbDBusEpC0mzTMLsjhncE8SIwKcjm0xmbln7ma+21KIp1JMTY8iKsiHofFhXDqq4/6gFdmlLM4qJi06kAuGx3UY5L7cUMCDX26lyWgmJtiH964bTT/rWKW/fbOND9fkobVlaqB3rhtFoI8nLSYzd366ieIaS3Pl+r0V/POHnbx02TC7az/wxRY+Wb/P8vonhvHe9aPb7Sszmszc/slGftxaBFhS1V+6bJjL77noftsLq7ju3fUU1zTh5+XBExcO4vyhvdxdLNGG/HUcQ1pr/vhBBr97ZSVXvLWWM19YTmV9c6fnmMya2z/eyPgnfuHyt9YyNC6UniG+hPp7cfu0VM4ZHMvY5Ai7c8b2tmw/8vU2W1NXRX0Lj3673XbMsl0ldueU1DSxZFeJLQC17m8mxN+bPSV1/PvnbL7ZZN8ntGjnQe79bDMvLsomu9h+TJHWsLes/cSELzcU8O3mQrSGFrNmcVYJl46K5/IxCR1m+n3+awFXvr2Wt1fk8sCXW7l77qZ2j2tsMfHot9tt448OVjfx5PxMwDKbwwer82yBfN3ecj5ak2d7DQ4FoEO2F1bZba/LLbcFIICMvAo+Xmv/JeCQ+duLbAEIYN62IuZvL2r3WHF8PP5jpu09bmgxMefb7TQbZf2qE4nUhI6hlbvLbBltANnFtXy0Np9bp6Z2eM78bUV8u7kQsHyob9xXyetXDmfWQEuH/9qcMobEBVPfZCTrYA3DE8L4l3XOtXyHzLS8NgGhb49g1uSU27Z9vQyMS44gJtiHg20SFzwMrQGrvK6Z+z7fwuQ+UYT6e/PNpv3c8UlrIEhyaG4KD/BmVFJYuz9XVlFtu/tGJHY8JdAHq/fabf+w9QBzapuIDPSx21/d0EJNo9Fu36Esvfay9Q69Tj1DfEmOCiCnpM723IQU+0SLggrn89vb1/a6Xe07UZXXNfOP73ewLrecEYlhPHJOf6KCfLo+8QS2z+G9qrDW8sM9vd1UIuFIakLHUFmdc1aaY0qzo71ldU77ckot+15ZvJtL31jDS7/sISOvggfO7Mv714+mV6gl8eCMAT3szjtzYOv2HdPTGGetQYX6e/HkhYMJC/Dm7tP70D82mBA/Ly4eEYe/t/33kiajmT3WD+lP29QILGWt5/ZpqQxPCGVm/2impkcx6aklnPXCcla0GVwLMLWvfbOel4diYlokVQ0tmM3tJyX4OqSVexpUuxOqRgf7MjLRPvidbc3Sm5gW5dR0dqY1oCuleOXy4YxOCicqyIdLRsY5jYua3Mf+fKXgrA4yAE/vF4Nnm1qdp0Fxer+Ydo89Ed33+Ra+2rif/ZUNfLu5kL98fvKv73TovT5kbHI44QESgE4kbqkJKaUeAi4HTIAZuElrvbaDY68FFmitC7u7HLVNRsprm49JB3Jji4nkqEAiArwpq7M0wXkaFL8f1nF7dEVdM4N7heBhULYUZk+DYka/GMxmzesOc7+9ungPV4xJtG0/edFggv082ba/mvEpEdwxIw2AhmYTj8/bSWZRNYN7BfPoeQOIDfVjxnNLyS2tw6Dg1qmp3DMznVeX7GZtbmuNKTzAm8QIf/LK6gj1t+/UNSi4Ymwid89M550Vufz9+x2AJdDO/jCD1Q9Ot3UET0yL4uGz+/FZRgFBvp5cPiaB2z/ZyMb8SmJDfHnm4iGMb5PuXd9s5JKRcWzcV0GLyfJaXD+hd4cdy/+5agRPzs8iu7iGmf17MHtSsq38n8wey9M/ZdFsMnP12EROS7PcZ3FWMX/5bAultU0MiA3mtmlpBDgErIhAHz6ZPZYXFu2irsnEdRN6M8YazAsrG/D39iDU3/KhlhYTxDvXjuKVxbvx9fLgjxOT7RIhahpbqKhr6fT3rbCyAT8vD8KO8IOy2WimoKKehHB/l/qijCYz+eX1xIX5szzbvsnWsQn3WKtvNlJS09Run+KRundmH7w9DSzNKmZIfCh3zuhzWOUprm6y9s3KjB7HynEPQkqpccA5wHCtdZNSKhLo7C/uWmAb0K1B6ON1+fzj+x3UN5sY2CuYt68Z1W5W1JH4ecdB7v18M5X1LcSG+nL+0Fg8DQb+MDqewXGh7Z7z5PxM3lyWg9GsGdwrmAAfL0xmjZen4vaPNzIuOQKTQxqzqU0NwmTW/O3rbXy1aT8K6NczyFaTeG5hFnMzCgBLc8StH21ker9ocq01LLOGlxfv5vfDetEzxI/xKRHklNSREOHPqKQwJj21mPpmE8lRAQT7elJtbfqakh7Ncwt20T82mJW77Ws+9c0mthRUMjEtCpNZc+9nm/naWrZLRsazaGexbVXVwqpG7vx0E6semIanh4GvNhbwyNfbqW0ykhwZwIUj4hjTO5yRnczm/frSPXy5oQCjWRMRYElj9zB4UFzTyINfbmXr/ir8vDw4Z7Dlm3GLycxfPttMaa3lC8L2wmr+9eNOXrtyhNNr/O7Kvfy8sxiAXqF+jEsO5+aPNrA8uxQvD8WfJqdwz8x0thdW8eCXW9lf2UBEgDea1vfnw9V7+dePmTS0mBgSF8Lb146ya1ZsaDZxy0e/sjirBE+DYvakZO5zId29rTU5Zfz5fxsprW2iZ4gvr105gqHx7f++gf2M6ZGBPsSF+dlqvQBJEQFc9fZackrqOL1/DA+c2bfT6ZiORtv3PD0miLevHUlc2NF/Ofz81wLeWp5DfbMJk9a0mFzrD/pm034e+mobtU1G+sQE8vY1o4gPl2zHY8EdzXE9gVKtdROA1rpUa12olPqbUmq9UmqbUuoNZXERMBL4SCm1SSnV9YAXF1TUNfPot9upt043s21/Nf/+uXtmcjaazDzw5VYqrR3+hZWNVNa38OwlQzpcEmFLQSWvLdljS43esr+aGf1jMBgs/UqZRTW8u2qvLdPtkBvbzJowf1sRX27cj9aWoDI3o4BFmZYPztUOk50WVTeSU+KcVHDbxxu569NNrNpTRk1jC/fO7MNby3Ntr9OhD6PXrxzBdROS+CWzmE8z9vHot9s5UNVgdz0vD2VLZ/5x6wG+alO2T9bvI2Nvud3xxTVNlNY2U9tk5GHrHz9YmiJ3F9d2GoB+zavgzeW5ttfv550H+SzD0nT44qJstu63JBs0tJh47NsdlNc1U1rbZAtAh7Q3JmrB9iK+2FCA1pbX6LNfC/jbt9ttc/m1mDQv/bKbnQeqmfPtdvZXWl6HsrpmHvxyK1prSmqa+Pv3O2zLXWwuqOLlX3bb3eejtXkszrLUPIxmzatL9rC1wD5Joit//XKrrbn3QFUjf/tmW6fH/+2b1hnTS2ubaGwx2X7HEsL9qGs2sjy7lP2VDby3ai/P/7zrsMrjKsf3POtgDc90wwDmyvpm/nYEf+d1TUZbAALYdbCWZxbIgOpjxR1BaAEQr5TapZR6VSk12br/Za31KK31QMAPOEdr/TmQAVyhtR6qtW5wvJhSarZSKkMplVFS4lrzQUFFg1OGjOPs0UequtHo1O/T1bXbdowfkllUbZdIAJYP6neuHcn1E5IYnxLB3Ix9/OP7HTS2mNq9xx7rDNiOta8wfy8uGB5nty8qyJvthdW27bpmE28tz3Wa8XpfeQOzBvbgF2uAay1vDWcO7IGHQRER4M2NE5NpbGkNXo5iHQbQpkYH0iPEl6KqRttcdIfsLq5heXYJH67JazcpoP2f3XLPPcX29242mckvq8PH04P0mEC75yanO6ejt3ft7IPtv9aOP2dBRQNNRktz16EmxY6ue6jfr6t7d8Rk1uQ69CfuKe78/D0O5S2samThXZNY/9AM3r12lF3CCsDyXfa13e7S3nvuWLYjcaR/5werG20B6HDOE0fmuAchrXUtMAKYDZQAn1r7faYqpdYqpbYC04ABLl7vDa31SK31yKiorifoBEtT1aHO/ENm9u+eDuTwAG+GJ9h/6M/oonN6Qmokfg7NHLMG9HAqY0pUANP6xrBxXyWr9pSx62Atb6/I5V8/7mRa32i7NX0MCpZnl5Ly1x9ZkV3KkLgQlLJkhA3sFcLbK3KZmBbJxLRILhsdz5xznV/uIF9Pp9kWTre+TsG+9n0z/t6evPCHYXxx8zi0hteW7GHy04v5z9I9TmXzMCgeO3cAfxgVT49gX4YlhJIcFcA9czdT32QkOcq+xqeBq95exyNfb2Pas0tZl2sfnCelReHjMH7o0Gs+w+F9jQr05q65mxn+j4XUt5gYmxxBYoQ/E1Mj2VpQxY3vr2fzvkrb8VPbKfsFw+379fy9PRifEun0Pk9Mi8TXy4NBvUKICbbPMjvdoVyOCQx+Xh5McJgSqTMeBsW0dPsZ0B3v4WhGP4cZ09Oj8fQwEBXkQ68w54Gd/WO7Hqh7JFKiApze867K7oq+PY7s77x3ZACp0fZfULr6GxZHTrl7HRdrk9tNwGBgpNZ6n1JqDoDWeo5Saglwr9Y6o6trjRw5UmdkdHkYALuLa3l2QRb7Kuo5c2BPbp6cgqGD8SqH62B1I0/Oy2RnUQ2T0iK56/Q+Xbalr99bzouLsqlpNHLFmAQuHhnPsl0l3PnpJsrrmokP9+PNq0cSE+TLsH8stDu3V6gfKx+YxoLtRby1PBelINDXk0U7W2srYf5eLP3LVG75aAMr2vTfXDwijqcvHoLWmgtfW2UbfOrtobjr9D74eHqwJqeM/ZUNhAd4s/NANT6eHszsH8NHa/NptraxP3x2P26cmMyN76+39Z8AeHsaWP/QDNbklPH28lxaTGZC/LyoazYytW80Zw7syZkvLKOxxXIdXy8D71wziv+tyyenpI5xKeG8s3Kv3YDdaX2jeefaUXavweo9ZbyyeDdVDc2MSAznj5OS6RXqh9ms+c+yHH7YWkhcqD97SmrtxjcNiQvh9ulp3PB+6+9NkI8ny++faks4OPS6omD2xGRm9I/hk3X5fLx+HyF+XtwxPZURieHUNxt55qddrM4pY1CvYO6f1ZcIa7/PLmsTU2FVA+cOjmX2pGSnzu65Gfv439p8gnw9uX16Wpcr2jqqrG/myfmZbMyvZEzvcP4yq2+nE9DWNhl5en4ma3PLGZYQyv2z+tp+ZrD0bT741VZKapoYlRTGK1cMJzqoe/pNHeWV1fH0T1nklNQxc0AMf56a2i2DfPeU1PLMT1nkl9dz1iDX/87zy+p56qdMWxP0bdMOuzySyeCi4x6ElFLpgFlrnW3d/icQClwMJAEewBrgc2sQ+g54Tmu9uKtrH04QOll8uaGAD1fnERXkw23T0ujXM4jxT/xiN8hycp8o3r9+tN1557+8gs0OfQrf/nkC57280m5fmL8XX986gdV7ykiJCmBPSR2FlQ18t+WALXEhJSqA26en2Y0RUgo+uH4087YeoKCigWEJYdw4sTdXvrXW6b7L75tq69Q9/5WVdjWN01Ij7YIiwP2z+nLzlBTA8mEw6Wn7t35CagQf3TjW6bVasL2IP/9vI80mMx4GxVMXDubCEfbNjil//dEuocPbw8DvhsXaEjcOeeXy4Zw9uOvJWE91RpOZ2iajXXASLpEg5CJ3pGgHAi8ppUIBI7AbS9NcJbAV2Ausb3P8e8DrSqkGYFx7/UKnqiVZxdw9t3Wsxqo9ZSy/bypPXjSYe+ZupryumYQwPwbEBvPj1gOc3j/GNo5mVFK4XTCIDPQmPSaI+HA/9pW3voThAd5Mf3aprVP/3pl9iAvztwUgsLTPz82wHyOkNfx3TR4/bbcMxl2WXcqG/Ap+P6yX3X1HJobZAlBhZYNdAAJLf4+j6DYDJBMi/JnWN9rWB6UUXDMuqd3X64n5mbaamcmseXxeplMQmpgWyZKsErvtpEjnlOCkSMmEAvD0MEgAEsfUcQ9CWutfgfHtPPWw9Z/j8V8AXxzrcp2IfnKY8qW2yciK3aWcOySW1Q9OY/muUm77eKNtTrgp6VG8d52lRnTX6X0or2vmp+1FJEYE8PfzB+Dj5cETFwzmjk82UlrbbGsvbzth6SuL93D3TOexFNHtjJzPdMgmW55dyrOXDCHQ14uFO4pIjgrkJut4HbAEvCAfT2radPr27xlMUqTJloQxune4Uw3ktSuH8+WG/azcXYrWluy+xhaTUxNnZb3z7Nwms7abFujpi4Yw57vtbMyrYERSOI+e2x9fLw+W7SphTU45HgbFFWMSSHeY6FQIcWzItD0nsIRw52/oidaBjj6eHvy49YAt7RdgSVYJ2/ZXMbBXCAE+njx36VCn8yekRrLqgekUVjYQH+7P6c8vtXu+2WTm9P4xvLZkD+XWQbYhfl7cd0ZfYoL9+GD1Xrw8DNw+PY3FmcV2UwP5eXkQ4O3JRSPiuMihBgLg6+XBnPMG8NDXW2lsMdMr1I8HzupHn5ggNuZXoIHhCc7T/vh4ehDo48n3Ww4Alul7FmcW8+519k2QF4+I4z/LcmzbFwzv5TQvXVSQD69cPtzpHp/MHseaPWXM+W47H6zOY/62Ip66aDBTHDr7hRDdS4LQCeyqcYkszipmXW45BgXXju9tl25tbGe6m4/X5bM4s5ggXy/untnHaSofsCQLHGqCunpsInO+22F77sLhvUiKCOC7207jk7V5ZB2sJdDHk7W55dw/K537Z6XbOtSHJYSyuaCSmkYjBgX3zOzjNOOAowtHxJEY6c+/F2bTbDKzKb+SPjFBDGsn+LT1oXXS0UMWZ5Wwr7zebgDh/bP6khgRwNrcMobEhXLVuETHy3TqgzV7bbW74pom7v1sC6sfnNbuVEFCiO4hQegEFujjydybxvHiomzmbysiu7iGjL3ltoGb14xPZP62Ils/SHJUAB8dmuG5qpE//28DS/8yldjQjsf4XjuhN/Hh/izccZDimiaajWYWZxYztW80Jg0LrBOwfrlxPzuLqnnwzH62c4cnhPHmVSN4c3kucWF+nDc0tsufqb7ZyE0f/Gqbymhdbjn+Ph6cM7jzcx1T2A0Kp+Y4g0Fx+ZgELh+T0GU52pN5wL55sbS2ibLaZnqEHJuMMCGETGB6wluwvYjnFu5ix4FqlmeXcvU76yizDoYdkRjOD7efxl0z+vDEBYOcmrJaTJr1DjMTtGda32g2F1TxS2YxX28q5Lr31jNv6wH+61D7+O9q++3N+yq56p11LMos5v3VeVzw6irbANWOrMsttwWgQ+Zt63q5g1unptqNBbp6XFK3z/DsuIBfekyQBCAhjjGpCZ3g2o71AcucbKv2lHHuEEvNIS0miDusnegtZs3nv9qnGg+IDenyHlv3V7HzQLXdvrkZ+/D3bp0nDsDfoaltbsY+u5kACioaWJ5d2ulAw4R25t9yXBKiPaN7h7P0L1NZtquEpMgARvc+vDE0rrh/Vl/MWrM4q5g+0UE8ck7/br+HEMKeBKETXEq0c3JCSlRgO0fCH0bFs62gii82FODnZWBwXChXv72W2FA//np2v3Y7/QHC/L2dVnANC/Dm7pl9uP+LLWhtSY2+53T7rLkgX+cZrYN8O/+VSo4K5Pbpaby6eDdGs2ZIXAg3npbc6TmH9Ajx5ZJOVmE9Wn7eHvz9/IHH7PpCCGdunzGhO52Kg1Xrm43c8tEGlmSV4OWhuHlyCnfPTO/0nMYWE2+vyOHpn1onnAzz92L1g9M7nLlhzrfbeW/VXgAiArz59KZxpEYHsru4lg15FQxPDCU12j5t+UBVAxe8uso2CeaU9CjevXaUS9Peb9pXyVPzM8krq2diWiQPn9O/09H9QpxkZLCqiyQInSQOVDXg7+VJiH/76+k4uvKttU4zEXxx87hOVzLdUVhNYWUD41MjnBa360h1QzNP/7SL4upGLhoZx+n9nbPx2nPuSytss1sDXDoynicvGuzSuUKcBCQIuUgSE04SPUP8XA5AAAMcJpv08TR02Ix3SP/YYGb0j3E5AAH83w+ZfLgmj592HOSPH/zKOytyuzynoq7ZLgABLMs+vguoCSFODBKETlG3TktlqnVpgogAb566aHC3T79S32zkiw32iRCO43naE+Ln5TS7cb+ex2aGZiHEiU0a4U9Rwb5evHvdaGoaW/Dz8uiWGYkdGZTC29OAsc1aMI7jedo9z6B45uIh3DN3E4VVjfTrEcSj50ommhC/RVITOsUF+XodkwAElsGit05NtW17GBS3TUvt5IxW41IimH/nJGb0i2ZXcS1XvLWWXzIPHpNyCiFOXJKYII7aloJKFmcW8+O2IrKKahidFM5zlw4hLqzz8T9PzMvk9aV7bNuBPp6s+et0yZITpwJJTHCR1ITEURscF8rCnQfJss67tm5vOQ9+ubXL8zbmV9ht1zYZyT7ovLSDEOLUJUFIHLVmo5lt++1nXNiUX9nB0a3GOMx6EOLnRd8ekqAgxG+JBCFx1Lw9DQyJD7XbN8qFaXVumZrKZaPjCfL1pF/PYP5z1Qj8vLtObBBCnDqkT0h0i9zSOu7/YgtbCioZ0zuCJy8cLJN/it8y6RNykfQAi27ROzKAuTeNc3cxhBAnGWmOE0II4TYShIQQQriNBCEhhBBuI0FICCGE20gQEkII4TYShIQQQriNBCEhhBBuI0FICCGE27gUhJRSMpeKEEKIbudqTWi3UupppZSsPCaEEKLbuBqEBgO7gLeUUmuUUrOVUjLdsRBCiKPiUhDSWtdord/UWo8H7gMeBQ4opd5XSrm2lKYQQohuo5QKVUrdYn0cq5T63N1lOhIu9wkppc5TSn0FvAA8CyQD3wE/HsPyCSGEaF8ocAuA1rpQa32Rm8tzRFydRTsbWAw8rbVe1Wb/50qpSd1fLCGEEF14AkhRSm3C8hndT2s9UCl1LfA7wAMYiKXS4A1cBTQBZ2mty5VSKcArQBRQD/xRa515vH8IV4PQYK11bXtPaK1v78byCCGEcM0DwECt9VClVBLwfZvnBgLDAF9gN3C/1nqYUup54Grg38AbwJ+01tlKqTHAq8C041h+wPUgZFRK3QoMwPJDAaC1vv6YlEoIIcTRWKy1rgFqlFJVWLpOALYCg5VSgcB44DOlbOvv+Rz/YrqeHfch0AM4A1gKxAE1x6pQQgghjkpTm8fmNttmLJUPA1CptR7a5l+/411IcD0IpWqtHwHqtNbvA2cDg45dsYQQQnShBgg6khO11tVArlLqYgBlMaQ7C+cqV4NQi/X/SqXUQCAESDomJRJCCNElrXUZsFIptQ14+ggucQVwg1JqM7AdOL87y+cqpbXu+iClbgS+wFL7eQ8IBB7RWv/nmJbuMI0cOVJnZGS4uxhCCKG6PkRAF4kJSqm722xeZ/3/Fev/AcekREIIIX4zusqOO9TemA6MAr61bp8LLDtWhRJCCPHb0GkQ0lo/BqCUWgAMt6b8oZSaA3x2zEsnhBDilOZqYkIC0NxmuxlJTBBCCHGUXB2s+iGwzjp3nAZ+D7x/zEolhBDiN8GlIKS1/j+l1DxgonXXdVrrjceuWEIIIX4LXK0JobXeAGw4hmURQgjRjZRSJixT9XgBRiwtWP/WWpuVUiOBq909/6fLQUgIIcSxkfTADwbgMuBOIB7Yh2WS0Y/3PnG2+Sgu3aC1HgqglIoG/odlsoFHtdYZwDEdWKmU8tRaGzs7xtXEBCGEEMeANQB9AfwHGAnEWP//D/C59fmjprUuBmYDf7ZO0zNFKfU9WDKelVLvKKWWKKVylFK3W/cnKaV2KqXeVEptV0otUEr5WZ9LUUrNV0r9qpRarpTqa93/nlLqOaXUYuDJrsolQUgIIdzrMuB0nCcACABmAn/orhtprXOwfO5Ht/N0XyyTVI8GHlVKeVn3pwGvaK0HAJXAhdb9bwC3aa1HAPdiWQrikD7ADK31PV2VSZrjhBDCve6k4xloAoC7sDSjdZeOphT6QWvdBDQppYqx1MgAcrXWm6yPfwWSXFgK4jOttcmVwkgQEkII94o/yuddppRKBkxAMeC4dEPb5R9MtMYHx/1+tFkKooNb1blaJmmOO1VpDTlLIWs+GJu7Pl4I4S77jvJ5lyilooDXgZe1KzNXd6I7l4KQmtCpyGyCD38Hudbp/SJS4YaF4B/u3nIJIdrzbyxJCO01ydUBzx/Ftf2UUptoTdH+EHjuKK7X1hXAa0qph63X/wTYfLgXkSB0Kspe2BqAAMp2w4b34bS73FcmIURHPgYuwjk5oQ5YgOXD/YhorT06eW4JsMT6eI7DcwPbbA5ss/+ZNo9zgVntXPfawymjNMedihoqXNsnhHA76zigC7GkT2cAB63/zwYuOspxQic8qQmditLPhIAoqCuxbHv4wOCjzPI0W/8ODPK9RYjuZg00/6N7s+BOChKETkV+oTDrKdj6qSUYjf4jxPQ/8usteQJWvWR5PP42mPJA95RTCPGbJ0HoVPTZdbD9S8tj/8ij6wva8wssebx1e8njED8aUqYdXRmFEALpEzr1HNjSGoAA6kth9SsdH9+V/b+6tk8IIY6ABKFTTVO1a/tclXiaa/uEEOIISBA61SSMg6i+rdvKAMOvPvLrJY6DM/4Fwb0gOA7OesayryPGZvjuTvi/WHhpBOz66cjvLYQ4B27juwAAH7JJREFUKkqp2mN47TlKqXuP9jrSJ3SyylsN698ED28YezP0tA5WLt4JqTMgrDcExcCQyyFhzJHfZ+HfYM3rlsdjZluSHDqz+mX49V3L47LdMPcauHuHDJQVojNzQjpcyoE5Vad0irbUhE5GB3fA++fCti9g88fw7llQXQh7V8Abky2BYNc8KN19dAEoeyGsfAFMTZZ/q17qumazb639trEBirYceRmEONVZAlCHSzlYn+821uUaRlofRyql9lofX6uU+tK6PEO2UuqpNufMUkptUEptVkotanO5/o7LPxwuCULuUJAB69+Ckl1Hdv72r8Dc0rrdXAuZP8C6N8DcZv2ovBVw4LBn0WjV3rkHuggocaPstz19Lf8W/cNSo2o8iv4pIU5Nx20pBxcMBS4FBgGXKqXirXPOvQlcqLUeAlzc5viOln9wmTTHHUs1By1NU001MPQKy1idZU/DL/+0PK8McNE7MOD39udp3VqjiB8DymHm9aAezvcK6gmGdt7/9vYdUlsMfuHg0cGvQfJU+OUfDvumtH+sqQU2fACV+dB7EuSvtZRz1I3w/nmWmhTApo9g9hIwdDibSMe0ttT+8ldD3GgYfInza3O0irbBzu8gNB4GXQyePl2fI8TROd5LOXRmkda6CkAptQNIBMKAZdZpetBal7c5vr3lHwoO54YShI6V5jp4awZU5Vu2178F18+H5W3mItRmWPq0fRBqaYQPzod9ayzbCePhqq/Ay7f1mCGXwZa5rcekzgSfYIgdDlk/Qku9ZX/fc8A7AH5+DLQJhl8DESlQngtzr4KirZbg9bvXIGVqmzI0WIJl3mpIPR0q9lo+7CfcAfEONZ1DvvkzbGkzxdUZj8O4W+CbW1sDEFia5vJWQe+Jh/VyArD4/yzlAsvreXArzPzn4V+nIzlL4b8XtNYmt31hee1PRDVFsPUz62wYF4NfmLtLJI7ccVvKwcpIayuYr8Nz7S3noICOZt3uaPkHl0kQOlayF7QGIABjI2z6GEwOyyoYG+y3t33RGlwA8lfBjq9hiLVGnr0Q5j8AVfuhzyw47R5Y+gR8cK7l+ZB4GHkfRKVD7DB4bTw0WL+4ZLwHt6yC+Q9aAhBAzQH4+ha4a1tr7eSHeyw1lkMGXmipsXWkqcbygdhWxtuWIOTRTk3C4Am/vm8JSP/f3n3HSVXd/x9/fbYBS1nKLr0JoRcpKyI2sBcCWFBjNBhNjCkmGk2iKZZ8v2r051fzjSU/S4xGozGJGntBBQtoYAELCEQBEUFYWIq0hS3n+8eZYebOzha2eGeH9/Px2Idzy9w5h13ve+45557bbxIMmVz9sePNvz9h+YHqQ2junb5vLCMLjrwCCr9d+/H/fU+wOXPF636gR+fEx66EbNtauOdI2FXil9+9Cy55G1q0DbdcUl9riD1ArrrtjelTYCwwDz9xam3eAe4ys4Occ6vMrGPC1VCDqE+oqeQkOSG0ag9jzg+uG/e94HJ0vrd4O4r9f0u3+dFmJZ/48PrPS/5kvyKun3DbGt9fNPgU36y0O+5vZc82HxbFS4LH374uOMHpkn8Ft3/0dPI6RmVk+36feNET4qGXQMu82Pp+k2DRI/Dsj32oPP5NeOdu6iQ7ocUip5oWjBWvwyu/8gG7bQ08dxmsXVj78ZM1EWak4Pe09x+NBRD4K9Wlz4VWHGmw31P9Q+Aa+iiHXDP7PO7np8CtwPfNbC6QX9sBnHMb8ZOpPmlm7wOPN6A8VaTg/2Fpov8kf1Pn6rf9crseMPbbsHU1lG73F7gjz4YBxwffN3QqvHFzrEktuzW07+2DIDsXyhL+VqNXNPF2b/X/bdGm6rYWbaH/sbFh1ABdR0LruL/FDn2g+KPYcvveNdc1uyUc/TN49Tq/nJENR/8CXvmNv6LKzff9K/0mQd8j4JZ+wffPv99fNdXmmF/5qzYcYDDpl8n3Wz03ybo50GNMzcefcKm/gi0v9ctDpkD+gNrL9VWzJN8dk62T5qIpH+VQ3R/GyLjXv47s+yDwYNx7J8e9fhF4MeHY1yUsxz/+oc6aJITMrBMQ/XreFd9WuBHoC6xzzjVgNs1mIiMTTv0feOtW3yR17G/gw3/6b+hRvccH31NZCesWwvDT/dVPmy6+7f8fM/z23HzIbuX7bKIGnuS/Fe9Y75czc3yQzf+Tb7bJHwibIqPw8gdBm66Qs8rP/VayAroMh5Nu9Nu3fgYfPO5veP1yrb/yymnnQ2v273yzXP4A2LrG9/9ktYJR5/p7gMb/EMr3wLr3oPAC/9lz/+CPu6sEtn3ugyk6Wi4+THNa+4ENi5+ATR/7OiXrexoyxfdnrf8Qxl4AgxIeZbL8RVgzL/lgjB6FNf22vDZd4JCL/JXFkCk+OOOtegtWzvL/ZkOnBWcU370V3v+bn51ixHToeFDtnxdv5yY/3L5ir5/xPK9H1X22b/D77N0ZnCU9f2DdmzSbwu6tvlx7ttde9y8+iBv4cVawr/NAdd22Sq7LOwM/Cu5yYvcJ3Q78Ld3vE7IGPuW19g8wuw7Y4Zy71cz6As/VNzHNLMs5V17d9sLCQldUVFSvcja6Lz6AP50Q6/PpOsKfiOObvdp2hyuWxpaf/QkseDC2PPHq4OSh4AcKbF7hT/I9C/2JH/yVVutOfhTei7+AtZF/h4wcH4AdD/Ih83Lc1cNhP4ITb/CvN6+Ce472TXYA7fvAlDvh5athw2K/LqslTH8QnvqeD6joft+fC098x9+bBP5bee/xVa9Ipv8FWrT2YRHt38nIgrMe9s2E++a8MzjrIR+mUZWVcP8xsG5RrCzffjF2dTPrRn8FGdX3CFi7yB//iMvgyJ9So80r4Z6Jsfp3OMjXKyfXLy94yDchRhVeBJMjD6gs3wP//4hY2Oe0ge/OgoKBNX9mVOk2+OPhvukQ/IjFS96CvJ6xfXaW+P696JeN3Hz/+2vdyQ9sCas/aH/qvmIWPHKGHyQD/sr4W/+qul96aORhm+krjGv4TDO7z8yWmNkrZtYKar2B6h9m9iz+0rR5KHogOOhg/YexZp6o+Ht9Sr+EhQ8Ht7/3WNXjtsyDHy+CGc/4k/zaIv+z/AV/UqosjwUQQOVe37Q25Ou+4z3e/Pv9NDvgm82iJ2DwzYar3ogFEPjyz7opFkDR/Yr+HAsg8KP+ov1Y+2TAzF/7k9D8+/0w7ql3waUL/QCK+ElXcfDuH4Nv/2xuLICiZSn6U2w5sV+peBlc/Tn84tPaAwh8P1V8/besCtbp3YTjL/wL7InMiPLJq7GTMPj7thY+VPtnRi19NhZA4Pvx3k/43S95MhZA4CemzcrxUzKFOSDh45l1r/u8e2MBBP6qsnhp8n3lgBFGCA0A7nLODQO24p8oWJvDgBnOuSrPDzCzi82syMyKNm5M0qkflswkTUJDE+4HGh/XD2IZVTvGW7bzTWjx+0QHNvznZQKjJivL/Mkw6b1CWcnLlJEVu88m2fuS3SOTrF7J9utwEIw+zx+3dWffdLY1brTgqjehYz/f/5SRVbVPI3FAQLLyZebEvc6qui0jo+4P4avtHqvE7RmZsTLX9G9e38+Or1t1x0vcJwzJ/h6SrYPkdajpPjY5IIQRQqucc+9FXi/A9xPVZmZ1QwKdc/c65wqdc4UFBQWNVcaGG3dxcFRYn8Nh2t1wzmO++WTU+TDghNj2Fm38HHD7GHQZ5odaDzwZxlwAFzwfu1k0P0lzR/5A6Dk2+Kyf7Da+L6eyAo68kkArweGXxU4YY873fSL7jjUIWuT5/o+olnlw/H/5fqWozsP8t/H4J7dmtvBNYFPvgl+thyv/k/wG288XwMu/goUP+kEaURnZ/v3xeo3zV09RLfKCIwuP+llw/6OuqPp5NRnzrWD9u47wfVNRR/40GJTjfxBrqut/jL9HKyq3ExReWPfPHvL14KSz7Xr4Of/iDT/dh3ZU+z4woi6ja5tY/2Or1n1sNcPhJ1waHEU5dBrkf61pyycpL9Q+ocgMrG2cc9eZ2avAL51z88ysJ/C2c66vmV0AFDrnflTbZ6VUnxD4juRlz/r/MQed6ptPnr/STzwK/qQ2/SEYOiX2nlVvwoYlsHK2H4IddfRVftj13Dv8wISxM+D9x31nvmX4k/TG5b6D/9Dv+QlN1y6Exf/0TT15veDMP/urluUv+CuQg78RLO+uzbD0GT/wYO4dsZtM+x3jP3vIFD8p6u4tMO8+f/yuI/ysCK0L/JXYp2/Fmqf6H+uDqE2BHzDwwEmx5pjcTr4jO3rfVId+cNJNvhlswAn+ptpEFWV+eqKdG/2JOzHY1syHz+f7/qjaRsIls2uzH4WY09ofP7tVcPuGj/zvpevwYCCC7xtZ+qwfmDBkqu+r2R97d/r3l+/xfWGt2lfdZ892+OgZwPnfRct2+/cZTaWsFJY9V7e6b/3M9wm27+1/z/WZOaN5UJ9QHaVSCN0PLHDO/dHMLgMua/YhlGj3Frilf7BdvEchfPe14H5lu+HGHsH92nT1J6q92/2yZcJFM33n9YYl8EhCU985j8Jb/xN8AF3BEBh0sp+U1FX4zz7vn1Xvtn/49OC9R5YBP13mAwj8qLp7jvLt/+C/uf/gXd83ccdYP3AiaviZcGak72b1O77vpWUe7CyueoPruf+AgScgkgYUQnWUSjcX7NcNVM1SssB3SUZfZmRX/ZabkRkLIPAh8tFTPhg2La96jM/n+875eBuXwtu3xcJtbVHVAQBQdQCFqwzO9PDeo7EAAj+ce/kLfphxfACBvwKK6nMYTLvLDwmPb/qKqu7mUxFJW00eQs6565xzt0Zefxo/PNs5d2v0hifn3DLn3Ejn3ATn3K+dc30j6x+sy1VQs5DbEUZ/M26FwYQkVcvMgmOvjfVBZLZIPu1Mu8gQ3sT7jcDf6zPguOC66DOH4m1eVXXduIsJfJEbdKq/ryMqsZkK/I20rfOhY0IzWq9xVfcF32QYH0T9j4U+E5LvKyJpSzMmfNUm/69/6FzxUn/PT8+xyfcbe4Fvllvxup+IdMy3/HsWP+G39zrUjz4DP8T51NvgzVt9P874H8DAE30AtGjrm8F6FvoZBu6dGLxXKb4/KmrYNGjxhO+7yh9UdWaCMTP8/UzRYcXdx/hOfDN/H9Ezl/omwq8dCyffnHh0r31v+FGRH+WX28H3OzX2jNgikvKavE/oq5TyfUL7Y+Y1vu8m6qifwTG/9s8gKtsF3UcF91+7EF78uZ9xYPBkOOWW5M1b6xf7mah3lfgbW0d9o+o+JSvggRNjd+SPPBtOvze4z54dvoM5uyUMONEPuoh47oN13PTCMjbv3Mv0wp5cM3koWZmp1PIr0uT0jaqOFEKp6obuwaltWnXwN14mU1EOvx/hJyKNGv/D2HQ8++vZy4Jzy4GfPaDLsFrfun5bKUfc/DrllbG/q+unDGPGhL71K4tI86QQqiN9PU1V0XtQohJnkI63eWUwgMAPla6v+BkRoqKTotbi/c+3BgIIYMHqLdXsLSIHOoVQqpoUN9FpTTNGg7/nJzfh3ozuo+v/KO0x5wdvzMwfFByYUIODe7YnKyP4JXBsHz1wTUSSU3NcKite6oda9zrUz5xQkxWz/HNztqz2AwV2rPdDp3sf5m9Sbddt/z770znw4d9h7y4/OGLXJn+f0Tl/TX4jaZz4PqGzCnvyG/UJyYFHzXF1pBBKN3t2wh1jgpNd1vZk1OpUlMPtw4LHGngSnNuoz7QSSUcKoTrS19N0U7olGBrgHytRH7uTHCv+YXciIg2kEEo37XpAp4SngfY7un7HalMA3RKGgg/QtDoi0ngUQunGzPfb9JvoZyQYfR4cd339j3f2w35CzY79YPh0OOaaxiqpiIj6hKQOPn4VnrgISrdC225+ctT6zFItcuBQn1Ad6UpIauacH3VXGrlPaPsX8NJV4ZZJRNKGQkhqVr4n+OhpgJJPwimLiKQdhZDULLuln3A13uDJ4ZRFRNKOZtGW2p1+H7z+X7BuEfQ9EiZeHXaJRCRNKISkdrkdYfLtYZdCRNKQmuNERCQ0CiEREQmNQkhEREKjEBIRkdAohEREJDQKIRERCY1CSEREQqMQEhGR0CiEREQkNAohEREJjUJIRERCoxASEZHQKIRERCQ0CiEREQmNQkhEREKjEBIRkdAohEREJDQKIRERCY1CSEREQqMQEhGR0CiEREQkNAohEREJjUJIRERCoxASEZHQKIRERCQ0CiEREQmNQkhEREKjEBIRkdAohEREJDQKIRERCY1CSEREQqMQEhGR0CiEREQkNAohEREJjUJIRERCoxASEZHQKIRERCQ0CiEREQmNQkhEREKjEBIRkdAohEREJDQKIRERCY1CSEREQqMQEhGR0CiEREQkNAohEREJjUJIRERCkxV2AaQJbV0Dz/wIVr8DPQ+BqXdAx35hl6relq/fzj1vrODL0jLOOaQ3xw3tEnaRRKSBzDkXdhkaTWFhoSsqKgq7GKnj4dNgxeux5V6HwkWv1O296xbB8peg09dg2GmQGe73lW27yzjqllls210GgBn89TuHMqF/fqjlEqmGhV2A5kJXQs1YRaXjhueX8o+iNXRoncPVJw/m5BHdYjusfif4hjX/hspKyKilFXbZC/D4N8FV+uXlz8P0Bxu17PvrrY837gsgAOfguQ++UAiJNHPqE2rGHp33GQ/MWcX2PeV8tnkXP/7bIjZ8WRrbode44Bt6FNYeQADv3h0LIIAlT8G2zxun0PXULa9VlXU92lddJyLNS0qEkJlVmNl7cT99k+zzgpm1/+pLl7rmr9ocWC6rcCz6bGtsxZQ/QJ/DAfN9QqfdU7cDW+KfhYFlNqisDTW2TwfOOaTXvuURPfI4b3yfEEskIo0hVZrjdjvnRiXbYGaG77s65SsuU7VeXrKe22f+h91lFZx3aB++e9R+dPZXlMNr18PiJyGvB5zw31WvWJY9D7Nugr3bofAiOPzH+zY9/8EX3PH6x5SWVTC4W7vA27IyjIN75cVWZLeGNp0jP10gJ7faYn1SvJ3rnvmIj4u3c3H3KVyYMQerLPcbR30T2nWr9r0NVby9lGufXsKC1VsY07sDv506jM7tWu7bXlpWwY0vLGX28o0c3DOPbx9xEFMP7o7/02hccz7ZxC0vLWPTjr2cObYnlx03oMrnlOzYwzXPLGHeqs2M7tWe66cOS3qllm7WbyvlmqcXs2jNVsb17cj1U4eR36ZF2MWSZi4lBiaY2Q7nXJu45b7Ai8As4DBgGvAGUOic21Tdcb6KgQlrNu9i0q2zKa+M/bvdc/5YThzWtW4HePv38Oq1seVWHeDyj2IBsWU13DEGogEAcPYjMOTrrNi4g+Nve4O4j2bSoALmriihQ24OV58ymKmjesQ2PvYNWP5CbPmgo2DGs1WK5Jzj2NveYOXGnfvWXT4aflLwHqxdAJUVMGwqFF5Ytzrupwv+PI/ZyzfuWz56YAEPXRgL5ptfWsYfZ6/Yt9w9ryVv/nwSWZmNeyG/ZedeJvzudXaXVexbd9PpI/jGuN6B/S7+SxGvfLRh3/Jh/Trx2MXjG7Usqejc+95l7oqSfcvHDenC/TMKQyxRStPAhDpKieY4oFVcU9xTkXWDgL8450Y751aHWbh476wsCQQQ+G/PdbZydnB59xZY/0Fs+dO3gwEU9553VpSQ8NGMzCtl+ZA/8647j6mLvgubPqn+s1a96QcmJFi3rTQQQABPr8mFj56GFa/Bqtnw3OUw775aq1cfif9+tS2v21bKyk3B8jaGhZ9tCQQQwNtJfreJ5XlnZQkVib+YNFNZ6QIBBPv5dy9SjVQJod3OuVGRn9Mi61Y7596t7Y1mdrGZFZlZ0caNG2vbvcGGdW9Xp3XV6jYyuJzVEvIHVr8doOvIaj/n7OLb4eOXoWwXrJ4DT36nyvv26TIi6cCEzm1bUNA22KxyfKcS2LQ8uOOSp2gKQ7vnBZYT6zksYXu7lln06lB902J9De7WjsyM4BfY5L/vYHkGd21b5X3pJiPDGNot8feyH3/3ItVIlRBKpk5fdZ1z9zrnCp1zhQUFBU1dJoZ1z+OqkwfTOieTrAzj7MJenDGmZ90PcOQVMOBE/zo3H6beBbkdY9u7joDjfws5bSAjC0af5/tkgNG9O3DlCQPJzckkO9M499DedNu6MHj8dYugbLd//fX/hc5D/ev8gTDt7qRFys7M4PazRtE9z/fDFPbpwIUnjYeM7OCO7XsneXfD3XzGCAZ09q2xAzq34XdnBMPzyhMGMqF/J8AH5m1njaJVTuMPlOjRvhX/PW04ea2yyTA4dUQ3Ljz8oCr73Xj6cAZ3bQtAv4LW3Dr94EYvSyq65cyR9CtoDcCgLm256fQRIZdI0kEq9wk955wbHrfuU1KgTyhqT3kFFZWO3Jx6ju3Ysx2yWlV/E2j5Ht8sl9M66WdXVuJPxI+cCZ/MjG3sMhy+Pyf4ht1boVXtAwsrKx079pbTrmUkfOb8wQ+iqCz3AfStp5t0xoVtu8vIa5Vd7fbtpWXk5mQ1+VVHWUUle8srad2i5t/ttt1ltGuZ1SQDJFKVc44vS8tr/D0JoD6hOkuV0XHNTousBn4Tb9G25u1ZLYDkI48Cnz35dnjqElj9NhsKDmfjETcwzLngibEOAQS+yWVfAAEVh13KX/dOZO7HxYzo35uL2vahZQ3vb6jaTmxtW341J77szAyy6zDo4UA8EZvZAVlvaTopcSXUWA7kaXtue2U5d81eQUWlY1CXtjz8nXF0btuwyEgclTZ5ZDfuPHdMQ4sqciDQlVAdpXKfkNTRZyW7uGPWJ/tGaC3fsJ173ljZ4OM+uTA4S8ILH35BacLoMRGRhlAIpYHPt+4i8YJ2zeZdDT5u4oi5Drk5dWqmEhGpK51R0sDYPh3o2i7Y9HbqyIbPcHDVSUNole37n7IyjF+eMiTthyKLyFdLfUJpYuXGHdw56xOKv9zDtNE9OHPsfgwbr8G2XWUsXLOFod3a0aVdUw5LEEkr+rZWRwohEZHGpxCqIzXHiYhIaBRCIiISGoWQiIiERiEkIiKhUQiJiEhoFEIiIhIahZCIiIRGISQiIqFRCImISGgUQiIiEhqFkIiIhEYhJCIioVEIiYhIaBRCIiISGoWQiIiERiEkIiKhUQiJiEhoFEIiIhIahZCIiIRGISQiIqFRCImISGgUQiIiEhqFkIiIhEYhJCIioVEIiYhIaBRCIiISGoWQiIiERiEkIiKhMedc2GVoNGa2EVgddjkaUT6wKexCNBHVrflK5/o1Vt02OedOaoTjpL20CqF0Y2ZFzrnCsMvRFFS35iud65fOdUtVao4TEZHQKIRERCQ0CqHUdm/YBWhCqlvzlc71S+e6pST1CYmISGh0JSQiIqFRCImISGgUQinAzB4ws2IzWxy3rqOZzTSzjyP/7RBmGevLzHqZ2SwzW2pmS8zsJ5H16VK/lmY2z8zej9Tv+sj6tKgfgJllmtkiM3suspwWdTOzT83sQzN7z8yKIuvSom7NiUIoNTwIJN7YdhXwmnNuAPBaZLk5KgeucM4NAcYDPzSzoaRP/fYAxzjnDgZGASeZ2XjSp34APwGWxi2nU90mOedGxd0blE51axYUQinAOfcmsDlh9VTgocjrh4BpX2mhGolz7gvn3MLI6+34k1kP0qd+zjm3I7KYHflxpEn9zKwncCpwf9zqtKhbNdK5bilJIZS6ujjnvgB/Igc6h1yeBjOzvsBo4N+kUf0izVXvAcXATOdcOtXv98DPgcq4delSNwe8YmYLzOziyLp0qVuzkRV2AeTAYGZtgCeAy5xzX5pZ2EVqNM65CmCUmbUHnjKz4WGXqTGY2WSg2Dm3wMwmhl2eJnC4c26dmXUGZprZsrALdCDSlVDq2mBm3QAi/y0OuTz1ZmbZ+AD6q3PuycjqtKlflHNuKzAb37+XDvU7HJhiZp8CfwOOMbNHSI+64ZxbF/lvMfAUMI40qVtzohBKXc8AMyKvZwBPh1iWejN/yfMnYKlz7ra4TelSv4LIFRBm1go4DlhGGtTPOXe1c66nc64vcA7wunPuPNKgbmbW2szaRl8DJwCLSYO6NTeaMSEFmNljwET8NPIbgGuBfwF/B3oDnwHTnXOJgxdSnpkdAbwFfEisX+GX+H6hdKjfSHwHdib+S93fnXO/NbNOpEH9oiLNcVc65yanQ93MrB/+6gd8t8Sjzrkb0qFuzY1CSEREQqPmOBERCY1CSEREQqMQEhGR0CiEREQkNAohEREJjUJIRERCoxCSZsvM2pvZD2rZp6+ZnVuHY/WNf5RGku0XmNmd1Wybm3gMM5sYffSBiFRPISTNWXugxhAC+gK1hlBDOOcmNOXxRdKZQkias98B/SMPJft/kZ/FkQeVnR23z5GRfS6PXK28ZWYLIz/7EyC9zOwlM1tuZtdGV5rZjpreJCLV0yza0pxdBQx3zo0yszOAS4CD8dMfzTezNyP7XOmcmwxgZrnA8c65UjMbADwGFCY/fBXjgOHArsjxn3fOFTVulUQOLAohSRdHAI9FHquwwczeAA4BvkzYLxu408xGARXAwP34jJnOuRIAM3sy8pkKIZEGUAhJuqjrA4oux08SezC+Obp0Pz4jcaJFTbwo0kDqE5LmbDvQNvL6TeDsyFNOC4CjgHkJ+wDkAV845yqB8/GzX9fV8WbWMfLIhmnAnIZWQORApyshabaccyVmNicyLPpF4APgffwVys+dc+vNrAQoN7P3gQeBu4EnzGw6MAvYuR8f+TbwMPA1/NT/aooTaSA9ykFEREKj5jgREQmNmuNE4pjZicDNCatXOedOC6M8IulOzXEiIhIaNceJiEhoFEIiIhIahZCIiIRGISQiIqH5P+pJgdHGdpTXAAAAAElFTkSuQmCC\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"Aij7Gu_lKKdX"},"source":["To reiterate, the hue parameter allows us to add another dimension to group data by color. The Swarm parameter helps us to visualize the data more clearly by preventing overlapping points (as opposed to catplot where points with the same data values will lie on top of each other)."]},{"cell_type":"markdown","metadata":{"id":"xR4_GYXdKKdX"},"source":["## Exercise: Seaborn π³"]},{"cell_type":"markdown","metadata":{"id":"0VYlmLfKKKdX"},"source":["Time for one of our last exercises!"]},{"cell_type":"markdown","metadata":{"id":"tE5KW2hJKKdX"},"source":["- Create a simple scatterplot comparing size of tip vs. size of table. "]},{"cell_type":"code","metadata":{"id":"vOmk_A90DjKv","outputId":"6f2f3ac2-00dd-4add-bac0-8dccaf268b5e"},"source":["#@title Solution Hidden { display-mode: \"form\" }\n","ax = sns.scatterplot(x=\"size\", y=\"tip\", data=tips)"],"execution_count":null,"outputs":[{"data":{"image/png":"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\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"FuPzuDVVKKdX"},"source":["# Scikit-Learn: A Small Preview π"]},{"cell_type":"markdown","metadata":{"id":"DVRl5hoNKKdY"},"source":["**Scikit-learn** is a free software machine learning library for the Python programming language. It features various classification, regression and clustering algorithms including support vector machines, random forests, gradient boosting, k-means and DBSCAN, and is designed to interoperate with the Python numerical and scientific libraries NumPy and SciPy. Official website: https://scikit-learn.org/ \n","We'll be building a simple linear regression in Scikit-Learn to demonstrate how the library works at the base level. "]},{"cell_type":"markdown","metadata":{"id":"V7BLSrIJKKdY"},"source":["## Sneak Peak: Linear Regression π‘"]},{"cell_type":"markdown","metadata":{"id":"NOwFVD4iKKdY"},"source":["Linear regression is a linear approach to modeling a relationship between an response variable and an explanatory variable. We will study this in detail tomorrow!\n","\n","We'll create a small model that predicts the relationship between expected and true housing prices using the Boston Housing Dataset:"]},{"cell_type":"markdown","metadata":{"id":"kTMMlpXQKKdY"},"source":["## Import π¦ "]},{"cell_type":"code","metadata":{"id":"enQickNWKKdY"},"source":["from sklearn.model_selection import train_test_split\n","from sklearn.linear_model import LinearRegression\n","from sklearn.datasets import load_boston\n","data = load_boston()"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"K12JaNpxvbVv"},"source":["#### What is this data?"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":578},"id":"sGELV4o1vnRr","executionInfo":{"elapsed":332,"status":"ok","timestamp":1589131833764,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"e43a3034-e77c-4f48-ac7c-866d2bd69d62"},"source":["# Print the description of the dataset (first 1400 characters)\n","print(data.DESCR[:1400])"],"execution_count":null,"outputs":[{"name":"stdout","output_type":"stream","text":[".. _boston_dataset:\n","\n","Boston house prices dataset\n","---------------------------\n","\n","**Data Set Characteristics:** \n","\n"," :Number of Instances: 506 \n","\n"," :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n","\n"," :Attribute Information (in order):\n"," - CRIM per capita crime rate by town\n"," - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n"," - INDUS proportion of non-retail business acres per town\n"," - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n"," - NOX nitric oxides concentration (parts per 10 million)\n"," - RM average number of rooms per dwelling\n"," - AGE proportion of owner-occupied units built prior to 1940\n"," - DIS weighted distances to five Boston employment centres\n"," - RAD index of accessibility to radial highways\n"," - TAX full-value property-tax rate per $10,000\n"," - PTRATIO pupil-teacher ratio by town\n"," - B 1000(Bk - 0.63)^2 where Bk is the proportion of blacks by town\n"," - LSTAT % lower status of the population\n"," - MEDV Median value of owner-occupied homes in $1000's\n","\n"," :Missing Attribute Values: None\n","\n"," :Creator: Harrison, D. and Rubinfeld, D.L.\n","\n","This is a copy of UCI ML housing dataset.\n","https://archive.ics.uci.edu/ml/machine-learni\n"]}]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":68},"id":"nrq4pWoQv_bb","executionInfo":{"elapsed":1589,"status":"ok","timestamp":1589131841980,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"3ab5d860-7744-4cf2-ddf5-b4fc8bc36d0a"},"source":["# data.data are all the houses with their attributes.\n","# data.target are the corresponding house prices\n"," \n","print(\"House 1, attributes: \", data.data[0])\n","print(\"House 1, price: \", data.target[0])"],"execution_count":null,"outputs":[{"name":"stdout","output_type":"stream","text":["House 1, attributes: [6.320e-03 1.800e+01 2.310e+00 0.000e+00 5.380e-01 6.575e+00 6.520e+01\n"," 4.090e+00 1.000e+00 2.960e+02 1.530e+01 3.969e+02 4.980e+00]\n","House 1, price: 24.0\n"]}]},{"cell_type":"markdown","metadata":{"id":"j5vaztG9KKdZ"},"source":["## Train and Define π "]},{"cell_type":"markdown","metadata":{"id":"uEd9diyUKKdZ"},"source":["We're going to define our X-axis and Y-axis and fit the model to a Linear Regression model."]},{"cell_type":"code","metadata":{"id":"rjwnl-z6KKdZ"},"source":["X_train, X_test, y_train, y_test = train_test_split(data.data, data.target)\n","clf = LinearRegression()\n","clf.fit(X_train, y_train)\n","predicted = clf.predict(X_test)\n","expected = y_test"],"execution_count":null,"outputs":[]},{"cell_type":"markdown","metadata":{"id":"0QdXhrp6KKdZ"},"source":["## Plot π"]},{"cell_type":"code","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":225},"id":"hPaS2_nvKKdZ","executionInfo":{"elapsed":3940,"status":"ok","timestamp":1589131879274,"user":{"displayName":"Rohan Badlani","photoUrl":"","userId":"08842284346998491618"},"user_tz":420},"outputId":"12038e4b-7cf2-4d74-e9ef-4a82690d88bf"},"source":["plt.figure(figsize=(4, 3))\n","plt.scatter(expected, predicted)\n","plt.plot([0, 50], [0, 50], '--k')\n","plt.axis('tight')\n","plt.xlabel('True price ($1000s)')\n","plt.ylabel('Predicted price ($1000s)')\n","plt.tight_layout()"],"execution_count":null,"outputs":[{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAARgAAADQCAYAAADcQn7hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2deXxUVbL4v5UFSNjCqhBFcIRRDEKQURl8PkBR3+CC8HB5gii+QQd31DH4nOcy6uD4Y5zFGcVxw11cQEZQQEVF3CDsuIBvhsWAEJawBrLV7497OzZNLzed7vSS+n4+/em+5957TiWdWzmnqk6VqCqGYRjxICPRAhiGkb6YgjEMI26YgjEMI26YgjEMI26YgjEMI25kJVoAL7Rv3167du2aaDEMwwhBcXHxNlXtENieEgqma9euLF68ONFiGIYRAhFZH6zdlkiGYcQNUzCGYcQNUzCGYcSNuNpgRGQdsAeoBqpUtZ+ItAVeBboC64CLVXVnPOUwDCMxNMQMZpCq9lHVfu5xEfC+qnYH3nePDcNIQxKxRLoQmOp+ngoMS4AMhmGEYNOmTdx6661UVVXVu694KxgF5opIsYiMc9uOUNXNAO57x2A3isg4EVksIotLS0vjLKZhGACvvfYaBQUFPP744yxbtqze/Uk80zWISGdV3SQiHYF5wA3ATFXN87tmp6q2CddPv3791OJgDCO+VFRU0Lt3b1q1asXzzz9Pjx49PN8rIsV+ZpBa4mrkVdVN7vtWEZkOnAJsEZFOqrpZRDoBW+Mpg2EY4VmwYAGFhYW0aNGCuXPncuSRR5KdnR2TvuO2RBKR5iLS0vcZOBtYBcwExriXjQHeipcMhmGE5sCBA9x22238+7//O5MmTQLg6KOPjplygfjOYI4ApouIb5yXVPVdEVkETBORq4ENwMg4ymAYRhBWrFjBqFGjWLlyJb/61a+YOHFiXMaJm4JR1X8CvYO0bwfOjNe4hmGE55VXXmHMmDG0adOGWbNm8Ytf/CJuY1kkr2E0Mk455RRGjhzJqlWr4qpcwBSMYaQ9qspzzz3H6NGjUVWOPfZYXnjhBdq3bx/3sU3BGEYas23bNkaOHMmYMWNYv349e/bsadDxTcEYRpry7rvv0qtXL2bOnMlDDz3E/PnzadWqVYPKkBIJpwzDqBv79+/nqquuol27drz77rv07n2Yv6VBMAVjGGnEihUr6NmzJ7m5ucybN4/jjjuOZs2aJUweWyIZRhpQVVXFfffdR9++ffnTn/4EQEFBQUKVC9gMxjBSnrVr1zJq1Ci+/PJLRo0axdVXX51okWqJqGBEJAMnYK4zUA6sVtUt8RbMMIzITJs2jauuuoqmTZvy6quvcvHFFydapEMIqWBE5CfAHcBZwFqgFGgG9BCR/cAUYKqq1jSEoIZhHE63bt0YOHAgTzzxBPn5+YkW5zBCpmsQkZeBx4AFGnCRm37hv4Cdqjo12P2xxNI1GMaPTJ8+ncWLF/PAAw8kWpRaQqVrCGnkVdXLVPXjQOXintuqqn9sCOViGIbD7t27GTt2LMOHD2fOnDmUl5fHZZwZS0sYMOkDuhXNYsCkD5ixtCTqviJ6kURkpF/ahbtE5E0R6Rv1iIZh1JkFCxbQu3dvpk6dyl133cWnn35KTk5OzMeZsbSEiW+upKSsHAVKysqZ+ObKqJWMFzf1b1R1j4icDpyDk0f3sahGMwyjzuzatYvzzjuPzMxMPvnkE37729/SpEmTuIz18JxvKa+sPqStvLKah+d8G1V/XhSMb7ShwGOq+hYQn5/OMIxa1q1bh6rSunVr/vGPf7Bs2TL69+8f1zE3lQVfdoVqj4QXBVMiIlOAi4HZItLU432GYURBTU0NjzzyCMcffzzPP/88AGeccQYtWrSI+9id84Ivu0K1R8KLorgYmAOcq6plQFvg9qhGMwwjLBs3bmTIkCFMmDCBc845h3PPPbdBx7/9nJ+Sk515SFtOdia3n/PTqPrzEsnbEqcCYwsR8ZUc2RzVaIZhhOTNN99k7NixVFVV8eSTTzJ27FjclLNxYcbSEh6e8y2bysrpnJfD7ef8lGGFTixNqPa6Ei7Qrg/wONAa+B4Q4CgRKQN+papLoxrRMIygZGdnU1BQwNSpU/nJT34S17F83iKfQdfnLQIYVpgftUIJJNwM5lngGlX9wr9RRE5zzyVm/7dhpBHvvfcea9asYfz48Zx//vkMHTqUjIzoTZzhZiX+RPIWxWoGE+4naR6oXABU9XOgudcBRCRTRJaKyNvucVsRmScia933sEXXDCMdKS8v56abbmLIkCFMmTKFyspKgHorF68xLKG8Qr57GiIO5h0RmSUil4jIz93XJSIyC3i3DmPcBHztd1wEvK+q3YH33WPDaDQsWbKEk08+mT//+c/ceOONfP755zGpRVSXGJZQXqFMkZjGwYRcIqnqjSLyHzjF6vNxbDDfA39V1dleOheRo3DiZx4AJrjNFwID3c9TgQ9xNlUaRtqzdetWTj/9dNq0acPcuXMZMmSIp/u8LH3qEsNy+zk/PcQGA463KFC5ROo7EmG9SKr6DvBOVD07/BH4NY4nyofPE4VbPrZjsBtFZBwwDqBLly71EMEwEs+OHTto27YtHTt25Pnnn2fQoEG0bdvW072RDLI+OuflUBJEEQSbrYTyFj0851vPfXgh5BJJRLJE5BoReUdEVojIcvfztSIScT4nIucBW1W1OBrBVPUJVe2nqv06dOgQTReGkXBUlaeeeoquXbsyZ84cAEaMGOFZuYD3pU9dY1iGFeazsGgw/5o0lIVFgxlWmN+gcTDPA2XAvThLI4CjcOpJvwBcEqHvAcAFIvILnDwyrUTkBWCLiHRyZy+dgK1RSW4kFK/eisbM1q1bGTduHG+99RaDBg3ihBNOiKofL0sf3/dRXllNpgjVquRH8b00WBwM0FdVA9XW98DnIrImUseqOhGYCCAiA4HbVHWUiDyMo6Qmue9vRSO4kTi8TtkbM7NmzWLs2LGUlZUxefJkbr755rAeonAKO9LSJ/D7qFatnXVE833EMg4mnBdpp5uqofYaEckQkUuAnfUYcxIwRETWAkPcYyOFiPWO23Rk48aNHHnkkRQXFzNhwoSIyiWcazjSsiWZv49wCuZS4D9xljRrXIXwAzDcPecZVf1QVc9zP29X1TNVtbv7viNa4Y3EEOsdt+nCZ599xvTp0wG45pprWLRoEQUFBRHvi6QghhXm87vhvcjPy0GA/Lwcfje8V+0sI5m/j3Bu6nW4dhYRaYeTXnNbA8llJDF18VY0BiorK7nvvvt48MEHKSgo4MILLyQjI8NzzhYvCiLcsiWZv4+wYYMi0tpdEo0BRruBdnkNI5qRrMTa05DKfPPNN/Tv35/777+f0aNHs2DBgjpH49YlRUKwdJbJ/H2Ec1NfASzBCYrLxdkeMAgods8ZjZRIU/ZkJZa5ZgE2bNhA3759WbduHa+//jrPPvtsVLWfvSqIULYaIGm/j3BVBb4FTnVzwPi3twG+UNUeDSAfYFUFjPoT6GkB5yGO5kE8cOBAbcXERx99lBEjRtCpU6dDxqqrm9fLPQMmfRB0KZSfl8PCosF1+hliTaiqAuHc1AIE0z417jnDSBnCGVKDPfyhHvjXXnuNG2+8kdmzZ1NYWMj1119/2H3RuPC9uIaT2ZgbinAK5gFgiYjMBTa6bV1wXMu/jbdghhFL6vJwBlMSv37pM/5418t8NPtNfvazn4VMX1lXRVYXktmYG4pwdZGmAv2Aj4CDQAXOxsR+qvpsQwhnGLGiLobUQCVxYMMK/jllPB+9O4N77rmHhQsX0r1796D9xXOWkczG3FBE2uy4E3ilgWQxjLgRbPdwdqaw72AV3YpmHbIMClQG5euWI1nZdLr8Ye6+e0Jg14cQz1lGrMP4GwIvOXkPQ0RWqmqvWAtjGPEi8OHMy81m74EqysqdRE/+tpK83Gy2rFtDTcV+mh11InkDLqP1aSM5umPk3Gih0iDEapYRyzD+hiBcTt7hoU4BR8ZHHMOIH/4P54BJH7Bzf+Uh58srq7nnrRV8//HrbP/4OZp06MqRVzyCZGYhmVkMOj7yrv5UnGXEk3AzmFeBFwnuSWoWH3EMI/YE8wgFs4lU7drCNy89wsGNq8jp0Z9251x/SFb/N4pL6HdM21plEcrTlGqzjHgSLg6mGBijqquCnNuoqkfHWzgfFgdjREuo+JemWRm1yyOAyu3fs/m5WwBoe9a1NC8YHLRkiC/mJJZxNelANHEwNwO7Q5y7KCZSGUacCeU2bpadQU52JvsrKhHJIKttPm37XUCHn/2C8mbtQvbnm/nE0x2daGKZ6yecm3qBqm4Icc6mE0ZKEMo9XLa/kpFHbKP0meup3r2Vo9rk8uSjk/ndmDMPcwX74/MGpWLQmxfqUpnAC2G9SG6+3H2quk9EcnASd7cE/uTLq2sY8cDrf9FI1wVzG9dUHqDy0+f47eczOfHEE5l2/an07NnzkGvu/cfqw4zA/t6gVAx680KsZ2aR3NSvAFcC+3BSZ3YAvgFewtn4aBgxJ1y4PfzooWmdk82+iioqq/Ww63wPQ6Db+OCmb9kx6w9U7ChhwoQJPPDAA7X7inz4jLThlFe83dGJItYzs3Bu6jHAT4CB4li7LgF+D+wFjnF3VC9T1RVRjWwYIQj1X/Semas5WFVTe87fSOt/nf9/20C3cc3X79GqifLq++8zeHD4DYLhvEHp6o6O9cws3AzmQ6Acp2haa2AL8A+cOJjr3fO7ohrVMMIQ0m4SRKF4uf/EFvv5+wVH0rNnT/bsOYPq6mry8uqf1igd3dGxnpmFM/KuB/4EvA1MA+5zjb4KbFPVDapqCsaIOfW1Y7TOcarqqCpTpkyhT58+jB8/HoCWLVvGRLmkK7HO9RNpL9JjIvI8UKOq+93m7cBlUY1mGB4I9l+0LojADz/8wNVXX83s2bM5++yzefrpp2MsZfoSy5lZOBtMC1Xdq6p7/dtVdV/gNTGRxDBcfH/ct05bTnWIQNBwbF2/ll69Lmfv3r385S9/Yfz48fUqKm9ET7jf+lsiMllEzhCR5r5GETlWRK4WkTnAuaFuFpFmIvKlWxFytYjc67a3FZF5IrLWfY+8g8xodAwrzKcmCuUC0KXbcZx33nksWbKE66+/3pRLAglngzkTeB+4BlgtIrtEZDtOVccjcbYRvB6m74PAYFXtDfQBzhWR04Ai4H1V7e72XxSbH8VIN+piizmwcRU/vHgHNQf2cmZBZ5555pmoKykasSOsalfV2ap6uap2VdXWqtpOVX+uqg+o6g8R7lW/5VO2+1LgQmCq2z4VGFbPn8FIU4IlWApEqyvZ+dGzbHlpItV7d1C1dwdvFJfUO6G3ERviOncUkUwRWYZTf3qeqn4BHOGLAnbfO4a4d5yILBaRxaWlpfEU00hSfB6NUFSUrmfzcxPY/fnrtOh9Np2u+jNN2ndJmqqGRpwVjKpWq2of4CjgFBGJXObux3ufUNV+qtqvQ4fIeTiM1CZUSZFhhfnkh1gqHfjsBar37qTDiN/Q7twbyGjy43WpvicoXWgQ65db+uRDHKPwFhHpBOC+b20IGYzkpS61mat2l1K1ZxsCjL7tfvre8iS5x516WJ+pvicoXfCkYETkdBG5yv3cQUS6ebing68KpLtR8iycfUwzcSpF4r6/FY3gRvrgpTbziJPz2ffVh2x6+np2zH0MBeb+q4Jz+vVIuUTYjYmIOXlF5G6c6gI/BZ7BMda+AAyIcGsnYKqIZOIosmmq+raIfAZME5GrgQ3AyHrIbyQxXndEB9v74t++Y8cOptx9E9tWzKdp/gm0GfzfgKOE5n9Tyu+G90q7PUHpgpek3xcBhThlZFHVTSLSMtJN7ibIwiDt24Ez6yinkWLUpQBZpkjQgLpMEZYvX87QoUPZtvkH8s64glanjkAyfpyxbCorT8s9QemCFwVToaoqIgrgH3RnGIGzlEHHd2D+N6VBZyWh8oqEitatVqVr16706tWLdhfdxa7mh2dpNVtLcuPFBjNNRKYAeSLyS+A94O/xFctIBYIZZ1/4fEPIJQ/uNYGF5wO9RAd/+I7Stx6iU4tMWrduzTvvvMO9Y883W0sKEnEGo6r/T0SG4OTn/Snwv6o6L+6SGUlPMOOsFwKXS77NjfsPVrD7izco++RFsprn8V8n/JgIKl3zr6Q7Xoy83YAFPqUiIjki0lVV18VbOCO5qU+sif9yaVhhPvO+WMFT9xdxsORrmp9wBtdMfIAbRpx+yD1ma0k9vCyRXgNq/I6r3TajkVNf+4dPQc1YWsIzD95OxbYNtD//Ntpf8Gtmr9lr4f5pgBcjb5aqVvgOVLVCRJrEUSajAalPiYr65m1pn3WAXbt28fCcb2lzzg1IdlOyWjlR2+lSAqSx40XBlIrIBao6E0BELgS2xVcsoyGoiys5GL5r/mf6SvZV1E3JVP1rEWvmPcotmy5gU8cRZLc76rBrLNw/McSyLpIXBXMt8KKIPIqTj3cjcEVUoxlJRbQlKvz/AFvnZFNRXRPy2kBqKsqp+ORZtiyaRe/evZkwYQLfvr01LUuApCL1/acTSEQbjKr+n6qeBvQEerrpGr6r80hG0hFNiYpA13RZeWVt2ZBIVGz9JxWv3cbWxbMpKiriiy++oKCgIGhaBnNBJ4ZI2zbqSriUmaNU9QURmRDQDoCq/iGqEY2kIVSJCgUGTPog6NQ4Wtc0QEazVmyvzGLU/U/zuzuvrG03F3Ty0GB1kQBfxG7EbQFGahLOSFtSVs7try/nnpmr2VVeWfvQ1/UPrXLbRvYsf5c2g68mq1V7jhzzRxbsFmYsLTlEgTSkCzqWNoZ0o8HqIqnqFHej4m5VfSSq3o2kxn/mEOyPqrJaa2sRlZSVc/try8nLzT6spGogOdmZDC/sxGOPPUbZh88g2c1o2Xco2W06IyIoTkJvfxkailjbGNKNBquLBE7CKOCCqHo2UoJhhfksLBqMeLi2skbZeyBy8bPbTm/PosdvZ+d7U2jW5SQ6j/0r2W06H3JNtWq9iqpHS6xtDOlGg9ZFcvnU9SC9ilOjGgBVXRLViEZSEmpqHEhlBIdR59bN+Msd/83atWu59s5JvFN1olOoKAiJiHWJtY0hHWmQukh+/Nx9v8+vTYHwhX2NlKK+QXM1B/aSm5vLr889niMHPU7btm3p0aMHd81YyYufbyCUn6mhH+xY2xiM8HjZ7DioIQQxYoPPgFlSVl6bZyXfgyFzWGE+i9fv4OUvNta52NmB9SvYNvsRLhxxMcMKzwd+HOf+Yb3od0zbkEXUGvrBjrWNwQiPl82O7YC7gdNxZi6f4NSp3h5n2Yw6EmjA9D3QkQyZM5aWcO8/Vkc03gaiVRXs/Pg59iyaQacu3bjj2tDxly2bZR1WvD4RD7a5xBsWL0ukV4CPgRHu8eU49piz4iWUER3hYlRC2TsClZJXKkrXsW3mw1RuW0+LwqGsXfAqzZsfnossVP9tcrO5+/wTE/Jg267shsOLgmmrqr/1O75fRKxYWhISyZ4R7HzUgXOq1FSU0/E/7yHnJ/2CKpdw/ec2ybKHvBHgRcHMF5FLgWnu8X8Cs+InkhEtkTxBgfaOGUtLPHmOfFTt2sK+bxbS+tThNOnYjfxxTyCZWeTlZNf2F7j0MK9N48ZLPphrgJdwak0fxFkyTRCRPSKyO9RNInK0iMwXka9FZLWI3OS2t3WL3q9139vE4gcxIpdaHXS8kwphxtISCu+by82vLvPUr6qyd+X7bHr6enZ9+jJVu53N9JLp/H+654ITQ9Y2ysvNDtqneW0aB168SNFuFagCblXVJW4VgmIRmQdcCbyvqpNEpAgoAu6IcgzDD9+SI5THZv43pZ5tLjnZGRysqqFy3y52zPkr+9d8StOjTqT9eRPIatX+sHEHTPogaABb06wMcrIz6+y1sXD+9EC0ji7JqAcSeQt41H0NVNXNbmXHD1U17F9bv379dPHixQ0hZsri/0CG+kYFbwF1o07rwhvFJew/WMGmp66jquwH8s4YTaufDTukZAg4pUVqVMOO+cglfeqkLIIpwZzszHpFlBrxRUSKVbXfYe0NoWBEpCuOJ6oA2KCqeX7ndqrqYcskERkHjAPo0qXLyevXr4+7nKmK11lJXk42u8orQyoDH62zqimrzEBE2P/dl2S1ak+TjsdGJVt+Xg4Li+oWkzlg0gdBlWA0fRkNQygF48XIW9+BWwBvADer6m4JETYeiKo+ATwBzgwmfhKmHoHLh30Hqzx5gvZVVEXcrHhw07d89fZkWvW7kJZ9h5J73ClRyxltnIsZhtOHcPlg2oa7UVV3ROpcRLJxlMuLqvqm27xFRDr5LZG21kXgxk6w3cBeqaxWVJ1lS6DG1uoqdn02jV2fvkJmi3Zktzu8yJlXfEuxaO0mFs6fPoSbwRTj/B0K0AXY6X7Ow6kp3S1cx+JMVZ4Cvg5ITjUTp+j9JPf9rWiFTwfqasysT8InIOgSqXJHCdvenkzF5jU07zmQtkOuJaNZi7D9hCr3GotljIXzpw/h8sF0AxCRx4GZqjrbPf4PvEXxDgBGAytFxOcPvRNHsUwTkatxFNXI6MVPbaLJTVLfZYJvFuA/Q6jaXUrVzs20v+DXND/hjIh95GRnMuLkfN4oLomLErBw/vQhopHXNd6cHNC2OJhBJ16kqxcpGmNmn3vnHranpy60cW0w1Xt3cmDDcpr3HAhAzcH9ZDTNjXi//8bJaDdWGulHfYy820TkLuAFnCXTKMA2OsaAuhozZywtYV9Flae+g9lZAHbur2T/t5+yfc6jaHUlzboWkpnb2rNy8Vd8PiViGeKMUHiJ5L0M6ABMd18d3DajnoQyWoZqf3jOt54z+CvUZiXzhfLXHNzPtll/pHTGg2S17kinK/5AZm5rz/IGK1xvGeKMcHiJ5N0B3CQiLVR1bwPI1GioqzGzLvaXTJHa2caASR+wc+9+Nj93C1U7N9O6/yW0HnApkhk8jD8cgTMUcykb4Yg4gxGRn4vIV8BX7nFvEflb3CVrBNQ1/2ld3LQ+D091dTWbysqRzGxanTKcI/7rIfLOGB2VcvHhP0Op6yzMaFx4scE8ApyD415GVZeLSGRXg+GJuuQmGXR8B174fIPnvgtveZpd7/yBpj+7mAP5J9Oy9znRinkYvhmKuZSNcHiK5FXVjQERuNEHYhhAdJv55n9TGrQ90KCrWsOexTNZ/9FUMpo2J78QmmYIlTXB7Tc52Rk0y86sU0Y73wzFXMpGOLwomI0i8nNARaQJcCPwdXzFSm9Cxb8sXr+D+d+UBn1Qw+Vu8Rl0S8rKqdpdyvbZj3Bg/QpyjjuVdufeQEbzPBDH2FtWXnmYSxkcBbFzf2VI75M/gTMUyxBnhMKLgrkW+BNOJufvgbnA+HgKle6E8rz4Z9/3N6YCh3wOxOc+7lY0iwMbVnJw0xrannsjLU4aUlvqt7Jaad40i2V3n33IvYHKzhe6rfwYrZuXk40IlO2vtBmKUSe8KJifqurl/g0iMgBYGB+R0p9QHpbAmYO/MTXU9oCc7EyuPa0j8+bNo3NeDt+fOIhmXfuQ1eLwrWReU2b6ZkS2c9moL17iYP7isc3wSF08LJvKysO6fC/NL2PiqHMZOXIk1w3oTG6TrKDKJdS45mY24km43dT9cYqudRCRCX6nWgGh8zIaEalLkbNge4cAaioPUr7wee75YgYnnHACM2fOpG/f48lt0TJoCZJQnp1QO5czROhWNMuWREa9CDeDaQK0wFFCLf1eu3ESfxtREhj/0iY3m4wgaXIygP0VVUGUywF+mHoL276YwdDLxlJcXEzfvn1r+176v2fzx0v6eIqvCZXHt9rNUuezBTV0DWkjPfCy2fEYVU1oOrl03ezow+sGRlWtNdqWLXyZpp2P57jCn9fbVuLvMs+IYxoGI30JtdnRiw3mSRHxT3HZRkTmxFS6RsyMpSWelEtl2Q9seXkiB0u+ASBvwGXkdCuMia1kWGE+C4sG869JQ6kJ8Q/HbDJGNHjxIrVX1TLfgaruFJGOcZSpURFpU6CqsnfFPHZ+8HeQDKr37zrkfKxD8i2bnBFLvMxgakSki+9ARI4hciyW4ZFwM4PqfWWUTn+AHe/+maadutN57KPkdj+19nx2hsQ8JD+YTcZC/41o8TKD+R/gExH5yD0+Azfbv1F/wpUR2bf6A8r/WUybwf9Ny34XIPLj/4O8nGzuuSD2tZ0t9N+IJZ7KlohIe+A0nCDPz1R1W7wF8yedjbyBkbQ1FeVU7iih6ZHHoTXVVJX9QJO2+fagG0lNnTPaicjxqvqNiPR1mza5711EpIuqLomHoI0N/2qM+7//im1vT0YrD9L5mifJyG5K12OPM++NkbKEWyLdCvwSmBzknAL2Vx8jhhZ05KW/zeW1F/9CZqsOtL/wDjKym6a07cNKvxoQvqrAL933QdF0LCJPA+cBW1W1wG1rC7wKdAXWARer6s5o+k8UsX5wdu3axZlnnklxcTGDL7iEvYWXs/VARko/lNFUSzDSk3BLpOHhbvQrpBaKZ3HqUD/n11ZEChe+j8eD06pVKwoLC7nzzjsZPjzsrzxlCJen1xRM4yKcm/p893U1TgG1y93XkziVBcKiqh8DgdUfLwSmup+nAsPqKG9CiVWC65KSEi666CK+++47RIS///3vaaNcwDZQGj8SUsGo6lWqehWOvaWnqo5Q1RHAifUY7whV3ez2vxlIqYC9WDw406ZNo1evXsydO5dVq1bFSrSkwvL0Gj68BNp19SkFly1AjzjJU4uIjBORxSKyuLQ0eKrIhqY+D05ZWRmjRo3ikksuoXv37ixdupRhw1JqAucZC9YzfHhRMB+KyBwRuVJExgCzgPlRjrfFLXhPpML3qvqEqvZT1X4dOnSIcrjYUp8H5/e//z2vvPIK9957LwsXLqRHj7jr6IRR12oJRvriNdDuIpwIXoCPVXW6p85FugJv+3mRHga2+xl526rqryP1k0yBdnXxIh04cIBNmzZx7LHHsn//fr7++mtOPvnkoNcaRioTKtDOq4I5Buiuqu+JSC6Qqap7ItzzMjAQaI+zrLobmAFMA7rgFr53C7uFJZkUjFeWL1/O5SjA7mgAAAtuSURBVJdfTmVlJatWrSI7O/o6RIaR7ERdm1pEfomz96gt8BOc5N+PA2eGu09VQ5WXDXtfqlNdXc3kyZO56667aNeuHU8//bQpF6PR4mWz43XAKcAXAKq61tI1BGf79u1cdNFFLFiwgOHDhzNlyhTat2+faLEMI2F4UTAHVbXCl0lNRLKwdA1Bad26Nbm5uUydOpXRo0fXZp8zjMaKFy/SRyJyJ5AjIkOA14B/xFes1GHbtm388pe/pLS0lKysLN555x2uuOIKUy6GgTcFcwdQCqwErgFmA3fFU6hUYfbs2RQUFDB16lQ+/fRTAFMshuFH2CWSOBmOVrhu5r83jEjJz759+7j99tt57LHHKCgoYM6cOfTu3TvRYhlG0hF2BqOqNcBy/5SZBhQVFfH4449z6623smjRIlMuhhECL0beTsBqEfkS2OdrVNUL4iZVElJZWUlZWRkdOnTgN7/5DcOHD2fQoKgyWRhGo8GLgrk37lIkOWvWrGH06NFkZWWxYMECOnbsSMeOP3rqGzK5kiVyMlKJcPlgmgHXAsfhGHifUtWqhhIsGVDV2qVQTk4Ojz/+OBkZh64qGzK5kiVyMlKNcDaYqUA/HOXyHwRPnZm2bNu2jaFDhzJ+/Hj+7d/+jZUrVzJy5MjDrotVjhgvNORYhhELwi2ReqpqLwAReQr4smFESg6aNWtGSUkJjz76KOPHjw/pfm7I5EqWyMlINcLNYGrrmTaWpdHu3bu588472b9/Py1atGDJkiVcd911YWNbGjK5kiVyMlKNcAqmt4jsdl97gJN8n0Vkd0MJ2FB8/PHHnHTSSTz00EPMn++ku8nMzIxwV8MmV7JETkaqES5lZqaqtnJfLVU1y+9zq4YUMp4cPHiQO+64g4EDB5KVlcUnn3zC0KFDPd/fkMmVLJGTkWp4ygeTaOKZD2bs2LE888wzjBs3jsmTJ9OiRYu4jGMY6UzU+WDSkZqamlo7S1FRERdddBHnn39+osUyjLSj0SmYDRs2cOWVV9KmTRtef/11evTokdb5cQ0jkXjZTZ0WqCovvvgiJ510EosWLaqTncUwjOhoFApm586dXHrppYwaNYqCggKWL1/O2LFjLbWCYcSZRqFgKioq+OSTT3jwwQf56KOPOPbYYxMtkmE0CtLWBlNeXs6UKVO44YYbOOKII1i7di25ubmJFsswGhUJmcGIyLki8q2IfOfWR4opxcXF9O3bl1tuuaU2aM6Ui2E0PA2uYEQkE/grzgbKnsBlItIzFn1XVVXxwAMPcNppp7Fnzx7mzZvHWWedFYuuk4YZS0sYMOkDuhXNYsCkD5ixtCTRIhlGSBKxRDoF+E5V/wkgIq8AFwJf1bfjK6+8khdffJFLL72Uv/3tb7Rp06a+XSYVlq7BSDUSsUTKBzb6HX/vth2CiIwTkcUisri0tNRTx9dddx0vvfQSL7/8ctopF7B0DUbqkYgZTDDf8GH7FVT1CeAJcLYKeOm4f//+9O/fv37SJTGWrsFINRIxg/keONrv+ChgUwLkSDksXYORaiRCwSwCuotINxFpAlwKzEyAHCmHpWswUo0GXyKpapWIXA/MATKBp1V1dUPLkYr4DLmW9NtIFRp9ugbDMOpPqHQNjWKrgGEYicEUjGEYccMUjGEYcSMlbDAiUgqs93h5e2BbHMWJFSZnbEkVOSF1ZK2LnMeoaofAxpRQMHVBRBYHMzYlGyZnbEkVOSF1ZI2FnLZEMgwjbpiCMQwjbqSjgnki0QJ4xOSMLakiJ6SOrPWWM+1sMIZhJA/pOIMxDCNJMAVjGEbcSBsFE+88v/VBRJ4Wka0issqvra2IzBORte57QjNkicjRIjJfRL4WkdUiclMyyunK1ExEvhSR5a6s9yarrOCkiRWRpSLytnucdHKKyDoRWSkiy0RkcazkTAsFE888vzHiWeDcgLYi4H1V7Q687x4nkirgVlU9ATgNuM79HSabnAAHgcGq2hvoA5wrIqeRnLIC3AR87XecrHIOUtU+frEv9ZdTVVP+BfQH5vgdTwQmJlquABm7Aqv8jr8FOrmfOwHfJlrGAHnfAoakgJy5wBLg1GSUFSeh2vvAYODtZP3ugXVA+4C2esuZFjMYPOb5TTKOUNXNAO57xwTLU4uIdAUKgS9IUjndZccyYCswT1WTVdY/Ar8GavzaklFOBeaKSLGIjHPb6i1nuhRe85Tn14iMiLQA3gBuVtXdyVpeV1WrgT4ikgdMF5GCRMsUiIicB2xV1WIRGZhoeSIwQFU3iUhHYJ6IfBOLTtNlBpOKeX63iEgnAPd9a4LlQUSycZTLi6r6ptucdHL6o6plwIc4Nq5kk3UAcIGIrANeAQaLyAskn5yo6ib3fSswHae8UL3lTBcFk4p5fmcCY9zPY3BsHglDnKnKU8DXqvoHv1NJJSeAiHRwZy6ISA5wFvANSSarqk5U1aNUtSvO3+QHqjqKJJNTRJqLSEvfZ+BsYBWxkDPRxqUYGql+AawB/g/4n0TLEyDby8BmoBJntnU10A7H+LfWfW+bYBlPx1lWrgCWua9fJJucrqwnAUtdWVcB/+u2J52sfjIP5Ecjb1LJCRwLLHdfq33PTyzktK0ChmHEjXRZIhmGkYSYgjEMI26YgjEMI26YgjEMI26YgjEMI26YgklBRKSdu+t1mYj8ICIlfsdNGliWC2K1e11EXheRYwPa7gk4Pl5EPhORgyJyW8C5oDvqw+0KFpGJ7vXfisg5EeT7fyIyuF4/ZGMj0fEB9qp3DMM9wG0BbVkNNHbMxgFOBKb7HV+EE4uzBVgI9HLbOwI/Ax7w/7lx6pz/H05MRxOcmI6e7rnfA0Xu5yLgIfdzT/e6pkA39/7MMDIeA8xN9HeeSi+bwaQJIvKsiPxBROYDD4nIPf7/4UVklbuJEREZ5eZTWSYiU9x0F4H9rRORh9zrvhSR40KMc6WIPOqeO0JEprt5WpaLyM+9jgdczqGRon8DLgYeA4bjhqmr6lZVXYQTtOjPKcB3qvpPVa3ACc2/0D13ITDV/TwVGObX/oqqHlTVfwHfAae4GymfdX9nK0XkFnfs9UA7ETky5BdhHIIpmPSiB3CWqt4a6gIROQG4BGdzWx+gGufhDsZuVT0FeBRnV3Ckcf4MfKROnpa+wOo6jDcAKPY7rgKOAFDVLaq6JdTP5BJuR32oXcGh7ukD5Ktqgar2Ap7xu2aJK6vhgXTZTW04vKbOLuNwnAmcDCxyd0rnEHoT28t+7494GGcwcAXU7nbeJSKjPY7XCSj1O74U+C3QS0Q6A3eqargqg9HsqA91zz+BY0XkL8AsYK7f+a1A5wj9Gi6mYNKLfX6fqzh0htrMfRdgqqpO9NCfhvi8L/DCMHgdr5wfZURVF+LsPn4IZ9bzEM4erlCE21G/RUQ6qermgF3BQe9R1Z0i0hs4B7gOZ6k21r2mmSur4QFbIqUv63CWKYhIXxwjJjib1v7Tzfvh87AcE6KPS/zeP/Mw5vvAr9x+M0WkVR3G+xo4znfgl9+lHGdTY8sIY4fbUR9qV/BM4FIRaSoi3YDuwJci0h7IUNU3gN/g/h5deuBssDQ8YDOY9OUN4Apxsr4twtlpjqp+JSJ34WQvy8Axll4HrA/SR1MR+QLnH9FlHsa8CXhCRK7GmXX8SlU/8zjeLJwdx++5x/e7D3o3oAR3BuEaWBcDrYAaEbkZx1u0W0SuB+bgeJSeVtXVbl+TgGmuXBuAke7vYrWITAO+wpnxXaeq1SKSDzzjygtOClZfvpzj3PEND9huaiMo4iRJ6hfB7hHL8XKA+TjG4Gq/9ntU9Z6GkCESInIR0FdVf5NoWVIFWyIZSYGqlgN3c3gu5Q8bXpqQZAGTEy1EKmEzGMMw4obNYAzDiBumYAzDiBumYAzDiBumYAzDiBumYAzDiBv/H5h7t6rpp0/7AAAAAElFTkSuQmCC\n","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}]},{"cell_type":"markdown","metadata":{"id":"iSHOGMQhKKda"},"source":["Woo! We've just seen a small preview of what Scikit-learn can do. We have the ability to create an accurate ML model with a few lines of code. \n","\n","We hope you learned something useful, and feel more curious to learn more about AI! "]}]}
\ No newline at end of file