intro-to-data-science/workshop.ipynb

1668 lines
216 KiB
Text

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Workshop: Machine Learning for Beginners"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is Machine Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Machine learning is the process of **extracting knowledge from data** in an automated fashion.\n",
"\n",
"The use cases usually are making predictions on new and unseen data or simply understanding a given dataset better by finding patterns.\n",
"\n",
"Central to machine learning is the idea of **automating** the **decision making** from data **without** the user specifying **explicit rules** how these decisions should be made."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/what_is_machine_learning.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Examples"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/examples.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Types of Machine Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/3_types_of_machine_learning.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Supervised** (focus of this workshop): Each entry in the dataset comes with a \"label\". Examples are a list of emails where spam mail is already marked as such or a sample of handwritten digits. The goal is to use the historic data to make predictions.\n",
"\n",
"- **Unsupervised**: There is no desired output associated with a data entry. In a sense, one can think of unsupervised learning as a means of discovering labels from the data itself. A popular example is the clustering of customer data.\n",
"\n",
"- **Reinforcement**: Conceptually, this can be seen as \"learning by doing\". Some kind of \"reward function\" tells how good a predicted outcome is. For example, chess computers are typically programmed with this approach."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Types of Supervised Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/classification_vs_regression.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- In **classification** tasks, the labels are *discrete*, such as \"spam\" or \"no spam\" for emails. Often, labels are nominal (e.g., colors of something), or ordinal (e.g., T-shirt sizes in S, M, or L).\n",
"- In **regression**, the labels are *continuous*. For example, given a person's age, education, and position, infer his/her salary."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case Study: Iris Flower Classification"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/iris_data.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Python for Scientific Computing: A brief Introduction"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python itself does not come with any scientific algorithms. However, over time, many open source libraries emerged that are useful to build machine learning applications.\n",
"\n",
"Among the popular ones are [numpy](https://numpy.org/) (numerical computations, linear algebra), [pandas](https://pandas.pydata.org/) (data processing), [matplotlib](https://matplotlib.org/) (visualisations), and [scikit-learn](https://scikit-learn.org/stable/index.html) (machine learning algorithms).\n",
"\n",
"First, import the libraries:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following line is needed so that this Jupyter notebook creates the visiualizations in the notebook and not in a new window. This has nothing to do with Python."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Standard Python can do basic arithmetic operations ..."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = 1\n",
"b = 2\n",
"\n",
"c = a + b\n",
"\n",
"c"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and provides some simple **data structures**, such as a list of values."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[1, 2, 3, 4]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l = [a, b, c, 4]\n",
"\n",
"l"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Numpy provides a data structure called an **n-dimensional array**. This may sound fancy at first but when used with only 1 or 2 dimensions, it basically represents vectors and matrices. Arrays allow for much faster computations as they are implemented in the very fast [C language](https://en.wikipedia.org/wiki/C_%28programming_language%29)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To create an array, we use the [array()](https://docs.scipy.org/doc/numpy/reference/generated/numpy.array.html#numpy-array) function from the imported `np` module and provide it with a `list` of values."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v1 = np.array([1, 2, 3])\n",
"\n",
"v1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A vector can be multiplied with a scalar."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([3, 6, 9])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v2 = v1 * 3\n",
"\n",
"v2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To create a matrix, just use a list of (row) list of values instead."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1 = np.array([\n",
" [1, 2, 3],\n",
" [4, 5, 6],\n",
"])\n",
"\n",
"m1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can use numpy to multiply a matrix with a vector to obtain a new vector ..."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([14, 32])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v3 = np.dot(m1, v1)\n",
"\n",
"v3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... or simply transpose it."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 4],\n",
" [2, 5],\n",
" [3, 6]])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1.T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The rules from maths still apply and it makes a difference if a vector is multiplied from the left or the right by a matrix. The following operation will fail."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "shapes (3,) and (2,3) not aligned: 3 (dim 0) != 2 (dim 0)",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-10-c170f5d663e1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mm1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36mdot\u001b[0;34m(*args, **kwargs)\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: shapes (3,) and (2,3) not aligned: 3 (dim 0) != 2 (dim 0)"
]
}
],
"source": [
"np.dot(v1, m1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to retrieve only a slice (= subset) of an array's data, we can \"index\" into it. For example, the first row of the matrix is ..."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1[0, :]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... while the second column is:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 5])"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1[:, 1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To acces the lowest element in the right column, two indices can be used."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1[1, 2]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Numpy also provides various other functions and constants, such as sinus or pi. To further illustrate the concept of **vectorization**, let us calculate the sinus curve over a range of values."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-9.42477796, -9.23437841, -9.04397885, -8.8535793 , -8.66317974,\n",
" -8.47278019, -8.28238063, -8.09198108, -7.90158152, -7.71118197,\n",
" -7.52078241, -7.33038286, -7.1399833 , -6.94958375, -6.75918419,\n",
" -6.56878464, -6.37838508, -6.18798553, -5.99758598, -5.80718642,\n",
" -5.61678687, -5.42638731, -5.23598776, -5.0455882 , -4.85518865,\n",
" -4.66478909, -4.47438954, -4.28398998, -4.09359043, -3.90319087,\n",
" -3.71279132, -3.52239176, -3.33199221, -3.14159265, -2.9511931 ,\n",
" -2.76079354, -2.57039399, -2.37999443, -2.18959488, -1.99919533,\n",
" -1.80879577, -1.61839622, -1.42799666, -1.23759711, -1.04719755,\n",
" -0.856798 , -0.66639844, -0.47599889, -0.28559933, -0.09519978,\n",
" 0.09519978, 0.28559933, 0.47599889, 0.66639844, 0.856798 ,\n",
" 1.04719755, 1.23759711, 1.42799666, 1.61839622, 1.80879577,\n",
" 1.99919533, 2.18959488, 2.37999443, 2.57039399, 2.76079354,\n",
" 2.9511931 , 3.14159265, 3.33199221, 3.52239176, 3.71279132,\n",
" 3.90319087, 4.09359043, 4.28398998, 4.47438954, 4.66478909,\n",
" 4.85518865, 5.0455882 , 5.23598776, 5.42638731, 5.61678687,\n",
" 5.80718642, 5.99758598, 6.18798553, 6.37838508, 6.56878464,\n",
" 6.75918419, 6.94958375, 7.1399833 , 7.33038286, 7.52078241,\n",
" 7.71118197, 7.90158152, 8.09198108, 8.28238063, 8.47278019,\n",
" 8.66317974, 8.8535793 , 9.04397885, 9.23437841, 9.42477796])"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = np.linspace(-3*np.pi, 3*np.pi, 100)\n",
"\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-3.67394040e-16, -1.89251244e-01, -3.71662456e-01, -5.40640817e-01,\n",
" -6.90079011e-01, -8.14575952e-01, -9.09631995e-01, -9.71811568e-01,\n",
" -9.98867339e-01, -9.89821442e-01, -9.45000819e-01, -8.66025404e-01,\n",
" -7.55749574e-01, -6.18158986e-01, -4.58226522e-01, -2.81732557e-01,\n",
" -9.50560433e-02, 9.50560433e-02, 2.81732557e-01, 4.58226522e-01,\n",
" 6.18158986e-01, 7.55749574e-01, 8.66025404e-01, 9.45000819e-01,\n",
" 9.89821442e-01, 9.98867339e-01, 9.71811568e-01, 9.09631995e-01,\n",
" 8.14575952e-01, 6.90079011e-01, 5.40640817e-01, 3.71662456e-01,\n",
" 1.89251244e-01, -1.22464680e-16, -1.89251244e-01, -3.71662456e-01,\n",
" -5.40640817e-01, -6.90079011e-01, -8.14575952e-01, -9.09631995e-01,\n",
" -9.71811568e-01, -9.98867339e-01, -9.89821442e-01, -9.45000819e-01,\n",
" -8.66025404e-01, -7.55749574e-01, -6.18158986e-01, -4.58226522e-01,\n",
" -2.81732557e-01, -9.50560433e-02, 9.50560433e-02, 2.81732557e-01,\n",
" 4.58226522e-01, 6.18158986e-01, 7.55749574e-01, 8.66025404e-01,\n",
" 9.45000819e-01, 9.89821442e-01, 9.98867339e-01, 9.71811568e-01,\n",
" 9.09631995e-01, 8.14575952e-01, 6.90079011e-01, 5.40640817e-01,\n",
" 3.71662456e-01, 1.89251244e-01, 1.22464680e-16, -1.89251244e-01,\n",
" -3.71662456e-01, -5.40640817e-01, -6.90079011e-01, -8.14575952e-01,\n",
" -9.09631995e-01, -9.71811568e-01, -9.98867339e-01, -9.89821442e-01,\n",
" -9.45000819e-01, -8.66025404e-01, -7.55749574e-01, -6.18158986e-01,\n",
" -4.58226522e-01, -2.81732557e-01, -9.50560433e-02, 9.50560433e-02,\n",
" 2.81732557e-01, 4.58226522e-01, 6.18158986e-01, 7.55749574e-01,\n",
" 8.66025404e-01, 9.45000819e-01, 9.89821442e-01, 9.98867339e-01,\n",
" 9.71811568e-01, 9.09631995e-01, 8.14575952e-01, 6.90079011e-01,\n",
" 5.40640817e-01, 3.71662456e-01, 1.89251244e-01, 3.67394040e-16])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = np.sin(x)\n",
"\n",
"y"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With matplotlib's [plot()](https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.plot) function we can visualize the sinus curve."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7ff8934ee2e8>]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD4CAYAAAAHHSreAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO29d3hc13Xo+1sYdGDQKwk2kADYSUkURTdJlmRZtPMk90h5eZFj++o6ieMb5yaO9Pk9x5/T5OTFzkuuHVtxkx1Hkq246DqUZUmW6CJTYjELQKKxohDAoM+gY2a/P8454AgESAAzc8rM/n3ffJg5deGUvfYqe21RSqHRaDQaTTRpTgug0Wg0GvehlYNGo9ForkIrB41Go9FchVYOGo1Go7kKrRw0Go1GcxXpTguwEsrKytT69eudFkOj0Wg8xdGjR/uVUuVL2daTymH9+vUcOXLEaTE0Go3GU4jIxaVuq91KGo1Go7kKrRw0Go1GcxVaOWg0Go3mKrRy0Gg0Gs1VaOWg0Wg0mquIi3IQka+LSJ+INC6yXkTkn0WkXUROisiNUeseFJE28/NgPOTRaDQaTWzEy3L4JnDPNdbvB+rMz0PAvwKISAnwl8AtwF7gL0WkOE4yaTQajWaFxEU5KKV+DgxeY5P7gG8pg0NAkYhUA28HnldKDSqlhoDnubaS0djIpYFx/uPVS5zsHHZaFI3JxHSYl5r7eOrwJaZnI06LowGUUrT3Bfn2oYu09gadFidu2DUIbjXQEfW701y22PKrEJGHMKwO1q5dmxgpNQA89vOzPHm4g3OBMQAyfMLn3ruT99xY47BkqUtrb5C/O3CGV84OMGUqhR8d7+Zff/cmCnMyHJYuNYlEFF94oZUfHu+iY3ACgJwMH//rd27gzi2VDksXO54JSCulHlNK7VFK7SkvX9Lob80K+N8nuvnbA82U5mXy6d/ayn99/M3cvL6EP/3uCf75xTb05FD2MzEd5qPfPsrxjmEe2LuWb31oL3//3p28dn6Q93/5FbqGJ5wWMSV5/NcX+JeftbO+NI+/ftd2fvzHb2ZTRT7/7VtH+PahJQ9Edi12WQ5dwJqo3zXmsi7g9nnLX7ZJJs08ekYm+b9/2MjuNUU88d/2ke4z+g7f/P29PPyfJ/n8862MTc/yyP4tDkuaWjz67BnO9Y/xHx+5hTduKptbXlOcw3//96O8+4u/4scffzMV/mwHpUwt2vuCPPpsM3dsruBrD+5BRAB48qF9fPyJ3/D//LCRqZkwH3lLrcOSrhy7LIdngN8zs5b2ASNKqcvAc8DdIlJsBqLvNpdpbEYpxZ8/fYKp2TCf/8CuOcUAkJmexj9+YBfvu6mGr/3iPB2D4w5Kmlr8vDXA47++yIfetOF1igHgjZvKePKhfQyMTfOVg+cckjD1mAlH+MRTJ8jN9PHoe3fMKQaAvKx0vvJ/3cQdmyv4pxfaGB6fdlDS2IhXKusTwK+BBhHpFJEPi8hHReSj5iYHgHNAO/BvwB8CKKUGgb8CDpufz5rLNDbz7UMX+UVbP59651Zqy/OvWi8i/NndDaSJ8KWX2x2QMPUYHp/mz58+QV1FPp+8p2HBbbatKuTdN6zm3w9dpC84abOEqcm/vNjGqa4R/u49Oxa01tJ9afzFPZsJTc3ytV+ed0DC+BCvbKUHlFLVSqkMpVSNUuprSqkvK6W+bK5XSqk/UkptVErtUEodidr360qpTebnG/GQR7M8RsZn+LsDzdxaX87v3rJ4sL+qMJsH9q7he0c6tfVgA//fi20MhKb5wm/vJjvDt+h2H3vrJmYjSlsPNtAxOM4XXz7Le25czT3bqxfdrqHKzzt3VPONX13wrPXgmYC0JnH88HgXEzNhPvn2hteZyAvxB7dv0taDDUzOhPnPo528Y0c121cXXnPb9WV52nqwie8e6SCiFH9298KWXDQfv7PO09aDVg4pjlKKJ167xLZVBddthEBbD3bxk8YeRidnuf/mNdffGG092MFsOML3jnRyW305q4pyrru9160HrRxSnJOdIzT3BLl/79LHjmjrIfE88dol1pXmsq+2dEnba+sh8RxsDdAzOsn9Ny/9XfGy9aCVQ4rz5OFL5GT4uG/3qiXvU1WYzbtuWMUzx7uZnAknULrU5FwgxKvnB/ntm9eQlnZtN180H72tlqnZCD8+cTmB0qUuT7zWQVl+FnduqVjyPg1Vfu7YXMHTRzuJRLw1RkgrhxRmbGqWZ453886d1RRkL2+U7W/tXMXYdJiftwYSJF3q8tThDnxpwvuWOSJ9U4WfzVV+nm3UyiHe9I5O8lJLH++7qYYM3/Kazd/aWc3lkUlOeKwMjVYOKcyPT3YzNh3mgb1L82tH84aNpRTmZPCTxp4ESJa6TM9G+M9jndy5uYKKguUPatu/vZojF4foG9WupXjy9NFOwhG15BhQNHduqSTDJ557V7RySGGeeK2DTRX53Lh2+YVwM3xpvG1rJc+f6WVqVruW4sWLZ3rpD03zwDJiQNHs31GFUvBck7caIjcTiSiePHyJN9SWsr4sb9n7F+Zk8KZNZRxovOyp8jNaOaQolwbGOd4xzG/vWXPd9NXFeMeOKoKTs7zSPhBn6VKXHx3vprIgi1vrV1Y/rK4in43leRw4pZVDvPhNxzAdgxN84OaVF558x/ZqOgYnaOoejaNkiUUrhxTlYGsfAHdtXXn1yDdtKsOfla593HFiJhzhV+393LG5At8yAtHRiAjv2FHNq+cHGAhNxVnC1ORgSx9pAm9tWHogej5v21qJL004cMo774pWDinKwdYAa0tyWV+au+JjZKX7uHNLBT893ctMWM8tECvHLg4RnJrltvqVN0IA92yvIqLgp6d74yRZanOwNcDuNUUU5Wau+BjFeZm8obaUZxt7PONa0sohBZmaDfPK2QFubyhfsUvJYv+OaobHZzh0TruWYuVga4D0NOGNm5Y2tmExtlYXsK4011O9VLcyEJriZNcIt8dgNVjcs72K8/1jtHhkQiCtHFKQIxeGGJ8Oc9sK/drR3FZfTm6mj2c9lonhRg62BrhxXfGy04rnIyLs317Nr88OeHJkrpv4ZXs/ShGXd+Xt26oQwTPxIK0cUpCDrQEyfWlLHn17LbIzfLx1cwXPn+71jLnsRvqCkzR1j8alEQLYv72K2Yji5RY9DiUWDrYEKMnLZMcSSstcj3J/FjevL+F5j7j7tHJIQQ62BLh5QzF5WfGZ6+nNm8oIBKc41z8Wl+OlIr9o7Qfi00MF2L66kILsdO3ui4FIRPHztgBvqStb1kj1a/HmTWU094x6wqLTyiHFuDwyQUtvMG6NEDBngeiGaOW83Bqg3J/FtlUFcTmeL03Yu6FU35MYaOoepT80Hfd3RSl49bz7p63RyiHFsMpdxJoRE8360lwqC7I4dM79D7wbCUcUv2gLcGtd7AkC0eyrLeHCwDiXR/Qc0yvBSvd+S138lMOuNYVkpad5QmnHaya4e0SkRUTaReThBdZ/QUSOm59WERmOWheOWvdMPOTRLM7B1gBVBdnUV14929tKERH21Rq9VB13WD4nO4cZHp/htob4NUJwxaJ7VSvtFXGwNcD21QWU+7PidsysdB83rSv2REcqZuUgIj7gi8B+YCvwgIhsjd5GKfUJpdRupdRu4F+A70etnrDWKaXujVUezeLMhiP8oq2f2+rj20MFoyEKBKc4r+MOy+Zga4A0gbfMmyM6VrZUF+i4wwoZmZjh2KXhuLqULPbVlnoi7hAPy2Ev0K6UOqeUmgaeBO67xvYPAE/E4byaZdLYPUpwcpa31Me3EYLouIP7e0Ru45X2AXasLqQ4b+WDrBZCxx1WzmvnBwlHVFxdShZW3OE1l8cd4qEcVgMdUb87zWVXISLrgA3Az6IWZ4vIERE5JCLvWuwkIvKQud2RQECn562EoxeHALh5fUncj72+NJcKf5ZuiJbJ9GyEE53D7EnAPQEdd1gpxy4NkZ4m7F5TFPdjX4k7JL9yWA73A08rpaLLeK5TSu0Bfgf4JxHZuNCOSqnHlFJ7lFJ7ysvjr81TgWOXhlhdlEPlCkpBXw8dd1gZZy6PMjUb4aZ1y6+MuxR03GFlHL04xLbVhWRn+OJ+7CtxB3d3pOKhHLqA6CLnNeayhbifeS4lpVSX+fcc8DJwQxxk0izAsYtDCWuEwGiI+nTcYVlY1lyi7suW6gL8Ou6wLGbCEU50DHPTCkrZL5V9taWccXncIR7K4TBQJyIbRCQTQwFclXUkIpuBYuDXUcuKRSTL/F4GvAk4HQeZNPPoHp7g8sgkN66Nv5lssa/WcI243Vx2E0cTaM2BEXe4ZUOJJ/Lq3cLpbsOau3FdIt8V98cdYlYOSqlZ4GPAc8AZ4LtKqSYR+ayIRGcf3Q88qV7vc9gCHBGRE8BLwKNKKa0cEsCVHmpifNsAG8rydNxhmRy7OMSNCbTmwGiIzveP0TOiZ4dbCscuJdaaA2/EHeJSP0EpdQA4MG/Zp+f9/swC+70C7IiHDJprc/TiEDkZPjZX+xN2Divu8Op5I+4Q73TZZMOy5m5KoDUHUXGH8wPct3vBXBFNFEcvDrGqMJvqwpyEncOKO7x63r0dKT1COkU4dmmIXWsKlz05+nK5aV0xvaNT9Og5jK+LHdYcwOYqPzkZPn5zyVsT3DuFHdYcGO9Kc0+QiWl3TrOrlUMKMDEd5nT3aELNZIudNUb1yhMduiG6HscuJd6aA0j3pbF9dQEnO/U9uR7dwxN0j0za9K4UEY4oTl8eSfi5VoJWDinAyc5hZiOKGxOYfWGxpbqA9DThRKc7H3g3ceziEDtrEm/NgdEQNXWP6hn7roMVb7DjXdlldqSOd7jzXdHKIQU4aj7wN9jwwGebPWHdS702E9Nhmmyy5sCw6KZmI7T0eGMWMqc4dnGY7Iw0tsapOu61qCjIpqog27XvilYOKcCxi0PUludREufyDIuxq6aIk50jRCJ6MNxiWNacXcrBGul7Ult01+TopSF21hTZYs2BkbXk1nuilUOSo5Ti2KXEDuiZz66aIoKTs5wf0IPhFsNOaw5gbUkuRbkZru2luoHJmTBNXSO2KWww3H3n+8cYmZix7ZxLRSuHJOfCwDiDY9P2PvBrDF+qbogW59jFYVutORFhx+pCHQu6Bic7RwxrzuaOFMApF94XrRySHKuB3lmT2Fz6aDaV55OT4eOESwNtbuBU1/Bcw2AXu2qKaO11b+qk05zqMp5Xq3NjBzus7D4XdqS0ckhymrpHyUxPoy6Ok/tcD506eW36gpP0jk6xPQ6T1i+HnTWFhCOKpm6ttBeiqWuEyoIsKvyJKWWyEIU5GWwoy3Nl6rdWDklOY9cIm6v8tgXYLHbp1MlFaeoeBYjbfNFLxQpKa9fSwjR2j7B9lb0KG4yUVjcGpbVySGKUUjR2jbDNgQd+55oinTq5CE2m+8KOdMlo3J466SQT02Ha+0K2K2wwXL49o5P0uayqgFYOSUzn0ASjk7NsX23/A28N8HFjj8hpmrpHWV+aS0F2hu3n3unSXqrTNPeMElGwzWZXHxjprOA+i04rhyTG8i07YSrr1MnFaewecaQRAti1xkydHHdf6qSTNJquPrvjQABbqwvxpYnr4g5aOSQxjV2j+NKEhqrE1u5ZCBFhZ00Rx132wDvNyPgMHYMTjrgv4Erq5MkufV+iaeoaoTg3g1WF9gWjLXIyfTRU+l2XsaSVQxLT2D1CXUV+QqY6XAq7agpp6wvp1MkonLTm4ErqpHYtvZ7GbiM251SZ+V1rCjnVNeKqKXbjohxE5B4RaRGRdhF5eIH1HxSRgIgcNz8fiVr3oIi0mZ8H4yGPxqCpe9SRYLTF1uoCwhFFa68OSls4lalkUZiTQU1xDqcvjzpyfjcyPRuhtSfENgdicxZbqwsYHp/hsosmZIpZOYiID/gisB/YCjwgIlsX2PQppdRu8/NVc98S4C+BW4C9wF+KiH3DE5OYvtFJAsEpxxohMCq0ApzRDdEcjd0jVBdmU5qf5ZgMW6oL9D2Joq0vyHQ44pg1B+58V+JhOewF2pVS55RS08CTwH1L3PftwPNKqUGl1BDwPHBPHGRKeRot94VDgU8wgtJ5mT5XPfBO41RqcTRbqwu40D+m3X0mTV3OBaMtNiepclgNdET97jSXzee9InJSRJ4WkTXL3FezTBrNB97uXPpo0sxg+JnL2q0EMDY1y7n+MUdSi6PZUl1AREGLdvcBRkcqPyuddSW5jsmQn5XO2pJcV70rdgWk/zewXim1E8M6eHy5BxCRh0TkiIgcCQQCcRcw2WjqHqG2LI/8rLhME75itlQXcKZn1FWBNqdo7hlFKeeC0RZbXdhLdZKm7lG2VheQlubsnOdbqv2uuifxUA5dwJqo3zXmsjmUUgNKqSnz51eBm5a6b9QxHlNK7VFK7SkvL4+D2MlNY9eoo1aDxdZVBQQnZ+kcmnBaFMexrDknA58ANcU55Gelu6ohcopwRHG6e9TxewLGeIfzA2OMT886LQoQH+VwGKgTkQ0ikgncDzwTvYGIVEf9vBc4Y35/DrhbRIrNQPTd5jJNDAyNTdM1POGoD9XCjYE2p2jsGqE0L5OqAvtz6aNJSxM2V7mrl+oU5/tDTMyEHbfmwLAclMI1JWdiVg5KqVngYxiN+hngu0qpJhH5rIjca272cRFpEpETwMeBD5r7DgJ/haFgDgOfNZdpYsBKU3QyU8lic5UfEVzlS3WKpm7DmnMqlz4aI2MpmPKz9c2lFrvAcrA6Um5JM46LQ1opdQA4MG/Zp6O+PwI8ssi+Xwe+Hg85NAZWj9B62JwkNzOd9aV5Kd9LnQlHaO8L8Za69U6LAhjPxrcPXaRzaIK1pc4FYp3mzOUgGT5hY7l9Je0Xo6Y4B3+2e9x9eoR0EtLSE6QsP5MyB3Ppo9lS7edMjzseeKe40D/GdDjiSCmThdhSbcjhll6qUzT3jLKxPN/2kvYLISJsqSpwjZXt/BXRxJ3mnqBrGiGALVUFXBwYJzTljkCbE5wx/chuuS8Nc+6+1FYOLT1BNrvknoChtJsvj7rC3aeVQ5JhlavYXOW8S8nCcm+1pLD10NJjFEHcVOG8+wIMd9+GstR2942Y5SoaXPaujE2H6Rgad1oUrRySjYsDY0zNusd9AbBllRVoc4e57AQtPUFqy/LISnemCOJCWGNQUhVrEKC7LAf3ZPdp5ZBkWGlwbnrgVxVmU+CiQJsTuM3VB8ZguI7BCYKTqTm3g2XJuum+NFT5SRN3dKS0ckgymnuCiEBdhXseeBFJ6WJvoSljEKCbFDZcCUo3uySv3m6ae4L4s9OpdmAOh8XIzvC5xt2nlUOS0dITZH1pHjmZ7nFfgGEut/SkZl59y1ww2j2+bXCXC8MJrGC0G8adROOWjpRWDklGS2+Qhkp39VDBcGGMT4e5OOh8oM1u3OjqA6gqyKYoN8MVDZHdKKWMd8Vl9wQM5WDM/+6su08rhyRiYjrMhYExVz7w9aZMqTjxT0vPKHmZPlYX5TgtyusQEeor/bT2hpwWxXa6RyYJTs66zpoD5jp3bQ7fF60ckoi2viBKua+HClBnpnC2paByaO4JUl/ld7zq50LUV+bT2htMuaq5VjB6iwvflfo55eDsu6KVQxLR7LKBVtHkZaVTU5xDS4r1Ui33hRsVNhi91ODkLD2j7pme0g6sd6XehfelpjiHnAyf4/NtaOWQRLT0BMnOSGNdaZ7ToixIQ6Wf1hTLjOkLTjE8PuPKOBBAXaXl7kstpd18OcjqohwKsjOcFuUq0tKE+sp87VbSxI+WniB1FX58LnRfgNEQnesPMROOOC2KbTS7NFPJwnJhpJrSbnHhuJNo6ir92nLQxI9ml9WJmU9DVT4zYcWF/jGnRbENy7ft1vtSkpdJuT8rpRIFpmcjnA2EXK0cGir9BIJTDI1NOyaDVg5JwkBoiv7QlKsf+PoUdGE09wSpLMiiOC/TaVEWxQpKpwrn+kPMRpRrFTa4I7tPK4ck4UouvTvdFwAby/NJk9Sa2N5wX7j3ngBz6aypMkCxxcWJGxb1lUZ2n+eVg4jcIyItItIuIg8vsP5PReS0iJwUkRdFZF3UurCIHDc/z8zfV7M0rAa3vsodVT8XIjvDx/rSvJTxb4cjiva+EA2V7r0nYCiHiZkwXcOpMc93S0+Q9DShtsy996WqIBt/drqjVnbMykFEfMAXgf3AVuABEdk6b7PfAHuUUjuBp4G/j1o3oZTabX7uRbMi2vpCFOVmUO6SCX4Wo64yn9a+1FAOHYPjTM1G5jKC3Irl7nPL3MWJpq0vxPqyPDLT3es4sQYoOmllx+Pq7AXalVLnlFLTwJPAfdEbKKVeUkpZdRMOATVxOK8mirbeIPUV7qsTM5+GSj8X+seYnAk7LUrCsVwC9S5XDnWWCyNFlHZbb3DObeNm6iv9tDk4QDEeymE10BH1u9NcthgfBp6N+p0tIkdE5JCIvGuxnUTkIXO7I4FAIDaJkwylFK29ITZ54YGv8hNRcDaQ/EHptj7jf3TLBD+LUZCdwarC7JRw903OGPW9NrmoavFiNFTmMzQ+QyA05cj5bbWrROR3gT3AP0QtXqeU2gP8DvBPIrJxoX2VUo8ppfYopfaUl5fbIK13CISmGJmYod7ljRBElwZIAeXQawy0ys9Kd1qU62Lk1Sf/PTkbCKEUnrEcAFp7nLkv8VAOXcCaqN815rLXISJ3AZ8C7lVKzalCpVSX+fcc8DJwQxxkSimshtbt7guA9aV5ZPgkJTKWWntDrrcaLBqq/JwNhJhN8gGKXnpXnE5njYdyOAzUicgGEckE7gdel3UkIjcAX8FQDH1Ry4tFJMv8Xga8CTgdB5lSCuvh8YJbKTM9jQ1lyZ+xFI4ozgZCnuihgtFYTs9Gkr6kelufkam03qUlZqIpy8+iJC/Tu8pBKTULfAx4DjgDfFcp1SQinxURK/voH4B84HvzUla3AEdE5ATwEvCoUkorh2XilUwli/pKf9IHP+cylTzg24YrbhanK4EmmtZe92cqRePkAMW4OEOVUgeAA/OWfTrq+12L7PcKsCMeMqQybb1B6iryXZ+pZNFQ6efHJy8zNjVLngf88SvBeqHrPGI5bKrIRwRaekLcs91paRJHW29wbgY8L9BQ6ef7x7pQStn+fntDfWoWxcpUcnsufTSWrFY2TzJi/W9euS+5memsKc5N6jIakzNhLg2Oe+aegPH8BKdm6R6xv6S6Vg4ex0uZShZWb7o9mZVDb5BVhdmeyFSyqKvIT+p7cjYQIuKRTCULa5IsJ+6LVg4ex8q+8FJvaF1JLpm+NNqSOO7Q1uctaw6ulFRP1owlq4H1ShwInJ0VTisHj+M13zZAui+N2vI82pM0r96qqVTnIWsOjF7qTFglbcZSa28QX5qwocz9mUoWxXmZlOVnastBs3za+kIU5ngnU8liU0V+0sYcrEwlL+TSR1M3l7GUnPeltTfE+tJcz2QqWTj1rnjrKmmuwqoT45VMJYu6Cj8dQ+NMTCdfjaW5shkesubAKKkO0J6k7r72vpDnFDYY74oTNZa0cvAwXsxUsqirzEclaY2lOVefx9xKeVnprC7KSUqLbnImzMWBMc++K6OTswSC9tZY0srBw1iZSl5rhMDZLIxE094XorowG78LJ6+/HnUumNg+EZwLjBFR3lPYcKVwo91KWysHD+OlOjHzWVeaR3qaJGXGUmtv0JM9VDAaz7OBEOEkmxXOes68+K5Y2VV2Zyxp5eBh2jzqvgCjxtL6sryk66VaNZW8eE/AaIimZiN0DiVXxlJbb8hzmUoWZfmZFOVmaMtBs3TmMpX83spUskjGQVddQxNMzkQ8NdAqmk1JmrHU1hf0ZKYSGLPC1VXY7+7z3pXSzNFm5tJ7LVPJoq4inwsDY0zNJk/GkuW+8MJkMgvhlH870RjvijfvCRjPU2ufvRlLWjl4mPY+78wXsBCbKo1Z4c73jzktStzwyuxvi1GQnUFVQXZSxYKmZsNcHBj37D0BoyM1PD7DwNi0befUysGjDISmGByb9vwDD8nlwmjrDVHhz6Iwx3uZShZ1lcnl7rvQP044ojxVRWA+TgxQ1MrBo3it6udCbCjLI02Sy4XR3hf0dCMEhtXT3hcikiQZS1dcfd69L5ZLzM4Bilo5eJQrRcS8+8BnZ/hYV5qXNCNylbJqKnlXYYPREI1Ph+kemXBalLjQ3hdC5MoIcC9SWZCFPyvd1o5UXJSDiNwjIi0i0i4iDy+wPktEnjLXvyoi66PWPWIubxGRt8dDnlSgvS9EXqaP6sJsp0WJiU0OZGEkissjk4xNhz3dQ4UoF0aSWHRtfSHWluSSneFzWpQVIyJssnmAYszKQUR8wBeB/cBW4AER2Tpvsw8DQ0qpTcAXgM+Z+27FmHN6G3AP8CXzeJrr0NYXZFOl37OZShZ1Ffmc7x9jJgnKRLclgTUHsMmqsZQkSru917vjTqKps7kAXzwsh71Au1LqnFJqGngSuG/eNvcBj5vfnwbuFKNVuw94Uik1pZQ6D7Sbx0sIX3ypnUefbU7U4W2lLVke+Mp8ZiOKC0mQsTQ3KNHDcSCwykRnJcWscLPhCOf6Q55NLY6mrsJPf2iKIZsyluKhHFYDHVG/O81lC26jlJoFRoDSJe4LgIg8JCJHRORIIBBYkaDNPUH+61T3ivZ1EyPjM/QFpzzvvoDoQJv3e6ntfSFK8jIpyct0WpSYqavIpz0JiiJeHBxnJqyS4l3ZXO2nodJvWzqrZwLSSqnHlFJ7lFJ7ysvLV3SMuop8OocmGJ+ejbN09tIe8G7ZjPlsLDcmtk8G/3abx8edRFNXmU97b8j2MtHxZm6mxCS4L2+pK+e5T9xq2zMWD+XQBayJ+l1jLltwGxFJBwqBgSXuGzfqKowy0ecC3nZheHG6w8XIyfRRU+z9MtFXMpW83wiB8a4Ep2bpHbW3THS8sUrCb0yS+2In8VAOh4E6EdkgIpkYAeZn5m3zDPCg+f19wM+U0SV5BrjfzGbaANQBr8VBpgW5koXhbV9qW2+I7Iw0VhfnOC1KXLAmM/EyXi6fvhCWj97770qQ1UU55GelOy2K54hZOZgxhI8BzwFngO8qpZpE5LMicq+52deAUk5RmEcAACAASURBVBFpB/4UeNjctwn4LnAa+AnwR0qphBXaWVeaR4ZPPJ862dYXYmN5Pr40b2cqWdRV5HOuf8zTE9tbmT1eD0ZbJMuUocnk6rObuKhTpdQB4MC8ZZ+O+j4JvH+Rff8G+Jt4yHE9MnxpbCjL87wLo70vxM3ri50WI25sqshnejZCx9CEJ0sqQ/KksVqU5mVS7ECZ6HgSjhiuvjfUljotiifxTEA6XnjdhRGamqVreCKpekNWb9vL96WtL4g/O92z5dPnY5SJ9nt69HrX0ARTs5GkelfsJOWUw6aKfC4NjjM5480y0Wfnqn4mh/sCkqNMtDXuxOuDEqPZVJlPq4czlqx4iddrXTlFyimHusp8Ih7OWJrLVEqiBz4/K51VhdmethyM2d+SR2GD4SIbmZghEPJmxpL1rmwqT677Yheppxw8noXR2hckwyesK8l1WpS4sqnS71nLYXBsmv6Qt8unL8TcAEWPBqVbe0OU+7MozPVu+XQnSTnlsL4sF1+aeHZEbntviNqyfNJ9yXXrrClDvTix/ZWyGUmmHDxegK+9L+jZ6VrdQHK1MEsgK93HutJcz6botSbBfAELUVeRz9RshK4h75WJbjUbz/okSWO1qPBn4c9O96SVHYkoz08N6jQppxzAqm7ovQd+fHqWzqGJpHzgvTxAsb03SH5WuufLp8/HqYnt40H3yATj0+Gk7EjZRYoqBz8XBsaZnvXWoKuzfWMoRVKaylbQ0IsujNZeY6BVMmUqWRjprN67J5ZCSzZrzk5SUzlU5hOOKC4MeCtjqTVJSkIvRGFuBhX+LE/2UtuS2LddV5nPwNg0Ax7LWJp7V5IsScBOUlI5zOXVe6whausLGZlKpcmVqWRhTGzvLbeSlamUjK4+uPKueM16aOszMpWKcr1fPt0pUlI5XCkT7a2GqK03SG1ZPhlJlqlkUVdhpLN6adBVsmYqWcyNXveacuhNXmvOLpKzlbkO2Rk+1pbkeu6Bb+0LsimJH/hNFfnmxPaTTouyZJI1U8liVWE2eZk+T1kOOlMpPqSkcgAzY8lDI3KtTKX6JH7gLf+wl6anTNZMJQsRYVNFvqfuic5Uig+pqxwq/Z6a2D6ZM5UsrN63l0bkJnOmkkWdx0av60yl+JCyyqGh0s9M2DsT26dCEbHivEzK/Vm0eKiX2tYXSmqFDca7EghOMWjT3MWxMveu6EylmEhZ5WA1sl5piFp7rUwlb853sFTqK73jwhgam6Y/NJX0vu36KuP/88p9sWoq6Uyl2IhJOYhIiYg8LyJt5t+rZqARkd0i8msRaRKRkyLy21Hrviki50XkuPnZHYs8y2FjeT5pYjxIXqCtN8iGsrykzVSyqK/009YbIuKBGkutSZ6pZFE/NyucN5RDW29QWw1xINaW5mHgRaVUHfCi+Xs+48DvKaW2AfcA/yQiRVHr/1wptdv8HI9RniWTneFjfVkerT0eeeD7Qkk5+G0+DZV+JmbCdHqgxlJbkmcqWVQVZOPPTveEla2UMl19yX1P7CBW5XAf8Lj5/XHgXfM3UEq1KqXazO/dQB9QHuN540J9hZ9WD4x1mJgO0zE0ntSZShaWAvSCC6MtyTOVLESE+kq/J6zsrmGdqRQvYlUOlUqpy+b3HqDyWhuLyF4gEzgbtfhvTHfTF0Rk0TkWReQhETkiIkcCgUCMYhvUV/m50D/m+lnhzgZCKJX87gu44sLwQi/Vmrw+mTOVLAzlEHT9AMUrc3knf0cq0VxXOYjICyLSuMDnvujtlPHULPrkiEg18G3g95VSVv7oI8Bm4GagBPiLxfZXSj2mlNqjlNpTXh4fw6PenBXubMDdPSKrF53sWTEA/uwMVhVme8JyaO1N/kwli4bKfIbHZwgE3V1jqU3XVIob6dfbQCl112LrRKRXRKqVUpfNxr9vke0KgP8CPqWUOhR1bMvqmBKRbwB/tizpY6RhbmL7ENtWFdp56mWRKplKFvVV7ndhpEqmkkX9nLsvREWBe91orb0hyvKzKM7TmUqxEqtb6RngQfP7g8CP5m8gIpnAD4BvKaWenreu2vwrGPGKxhjlWRbry/LI8InrXRitSV5TaT71lX7O9oWYdfEAReuZsdI8kx3r//TCu9JQpa2GeBBra/Mo8DYRaQPuMn8jIntE5KvmNh8AbgU+uEDK6ndE5BRwCigD/jpGeZZFhi+N2jL3l9Fo6QnSkCKNEBjKYToc4eLguNOiLEqLmeW2OUXuS1l+FqV5ma5+V8IRZSiHygKnRUkKrutWuhZKqQHgzgWWHwE+Yn7/d+DfF9n/jljOHw/qq/wc7xhyWoxFGZ2coWt4gt+5Za3TotiG5e5r7QmysdydvcDmniBF5hwUqUJdZb6rLYdLg+NMzkRSRmEnmtTwU1yD+op8OgYnGJuadVqUBWlNsR4qYGYAuduF0dIzSkOlPyUylSwazAGKbs1YaukZBUgpKzuRaOVgPkhuLUncbCqHVHrgczLNkuouDUpHIorW3lBKKWww3pXQ1KxrS6o39wQRSf5BiXahlUOluwNtLT1B/FnprC7KcVoUW6mr8Lv2nnQNTxCamqWhKrV82/VR7j430tITZF1JLjmZPqdFSQpSXjmsLcklKz3N1Q98fVVquS8AGqryOd8/xtSs+wYopqI1B8yN0Her0k61xI1Ek/LKwZcm1FXmz83o5SaUUjT3jKac+wKMXmo4ojjvwpLqqerbLszNoKrAnQMUJ2fCXBgYY3OKWXOJJOWVAxg9IuuFdxM9o5OMTs6mrHKAKymjbqK5J0hNcQ75WTEl+3mSusp8V96Ttt4QEZVaiRuJRisHjB5g7+gUQy6bzOSK+yL1ekO15Xmkp8ncNXATLT3BlG2ENlcZs8K5bYBic4pac4lEKwdgS7XR+J657C7rweqhNaRg9kVWuo9NFfmuuydTs2HO9Y+lbCO0pbqA6dmI69x9LT1BsjPSUqbEjB1o5cAV5XDaZQ1RS0+Q6sJsCnMznBbFEbZWF7hOOZztGyMcUSlpzYGL35XeIHUVfnxpqZW4kUi0cgDK/VmU+7M4c9ldLozmFM++2FJdQO/oFAMh91QCbek1GsVUdSttLM8nwyeuUw6p/q4kAq0cTLa4rJc6E47Q3pfaD/wVd597lHZzT5AMn7ChLDXdF5npaWyq8LvqngyEpggEp1JWYScKrRxMtlT7ae8LMeOSQNv5/jFmwiqlH/gt1cb/7ial3WLWe0qVCrkLsaXa77p7AjoYHW9S9wmfx9bqAqbDEddM/DOXqZTCFSZL87Oo8Ge5riFKZYUNxrsSCE7R7xJ3X6oOSkw0WjmYuC1jqaVnFF+asLEiNd0XFluqC1zj3x4Zn+HyyGTKBqMt3PeuBCnJy6Q8P3Uq5NqBVg4mtWV5ZKanucaX2nw5SG1ZHlnpqV0nZkt1AWcDIaZnnXf3nelJ7WC0hduUQ3MKVsi1g5iUg4iUiMjzItJm/i1eZLtw1EQ/z0Qt3yAir4pIu4g8Zc4a5wjpvjTqK92TV9/UPcr21e6dutQutlT7mQkrV1TNbeo2no1tq1PbcijJy6SqINsVHamZcIQzPUG2p/g9SQSxWg4PAy8qpeqAF83fCzGhlNptfu6NWv454AtKqU3AEPDhGOWJiS1VBZzuHnW8Xn0gOEXP6CTbVukHfquLeqlNXSNU+LOo8Lt3DmW7cEtQ2rIqdUcq/sSqHO4DHje/P44xD/SSMOeNvgOw5pVe1v6JYEt1AQNj0wSCzgbamrpHANi2Sj/wG+bcfc43RI3dI7oRMtlSXUB7X8jxqrmNXaY1p9+VuBOrcqhUSl02v/cAlYtsly0iR0TkkIhYCqAUGFZKWVOwdQKrY5QnJtwy+tNyX2zVlgPpvjQaKv1z/n6nmJgO094X0tacyZbqAmYjzrv7mrpHyMnwpey4k0RyXeUgIi+ISOMCn/uit1OGL2Yxf8w6pdQe4HeAfxKRjcsVVEQeMhXMkUAgsNzdl8RWlwy6auoeYV1pLoU5qVk2Yz6GCyPoqLuvuWeUiNI9VAu3DFBs6hpl66oCXTYjAVxXOSil7lJKbV/g8yOgV0SqAcy/fYsco8v8ew54GbgBGACKRMSqe1wDdF1DjseUUnuUUnvKy8uX8S8uncLcDFYX5TjuwmjsGmW7boTm2FpdwODYNH0OuvsaTWtOBz4NNpTlkZ3hrLsvElE0dY+wXVtzCSFWt9IzwIPm9weBH83fQESKRSTL/F4GvAk4bVoaLwHvu9b+duN0oG1kYoZLg+PapRSFG9x9p7tHKDI7DxpjkqyGSmfflQsDY4xNh9mm40AJIVbl8CjwNhFpA+4yfyMie0Tkq+Y2W4AjInICQxk8qpQ6ba77C+BPRaQdIwbxtRjliZkt1QWc6x9jYtqZQNvpuR6qfuAtNlvKodu5hqixa5Rtqwp0Ln0U1gBFp9x9ljWn40CJIaaprJRSA8CdCyw/AnzE/P4KsGOR/c8Be2ORId7sWF1IOKI4fXmEm9aV2H7+K5lK+oG3KMzJYH1pLic7hx05//RshJaeIL//pvWOnN+t7Kgp5MnDHXQMTrC2NNf28zd1j5DpS6OuIrUHJSYKPUJ6HrvWFAFwomPEkfM3do1QVZBNmS4F8Dp21hRxstOZe9LWF2Q6HNHui3nsqjHfFYeUdlPXKA1VfjLTdTOWCPRVnUdlQTaVBVmO9VKNkdHaapjPzppCLo9M0jc6afu5rdRiHfh8PVbD7MS7opQyx53oe5IotHJYAKd6qePTs5wNhHS65ALMWXQO3JemrhHyMn2s11NQvo4MXxrbVhU4YmV3DU8wPD7DVv2uJAytHBZgV00h5/rHGJmYsfW8Zy4HzVx63Ruaz7ZVBaQJjvRSG7uNXPo0nUt/FbtqimjsHiEcsTcobY2M1tZc4tDKYQGsXuopm3upVjBaZypdTW5mOvWVftsth3BEcbp7VFtzi7CzppBxc/S4nZzuHsGXJnNpzpr4o5XDAuxc7UygralrlJK8TKoLdWG3hdhVU8TJzmFbUyfP948xMRPWCnsRdjoUlG7sHmVTeT7ZGald0j6RaOWwAIW5zqROnugc1rn012DnmkKGx2foGJyw7ZzWM6ADnwtTW5aHPyvd1ndFKcXJzuGUL52eaLRyWAS7g9LByRlaeoPctG7BKTE0XEmdPG5jQ3T04hD+rHSdS78IaWnCjppCW4PSlwbH6Q9N63clwWjlsAhzqZNBe1Inj3cMoxT6gb8Gc6mTHfYqh91ri3Rht2uws6aI5p5R28p3H704BOh3JdFo5bAIu82g9EmbekRHLw4hcuW8mquxUiftsui0Nbc0dtUUMhNWtlVo1dacPWjlsAjbVhXiSxPbAm1HLw7RUOnHn63LdF+LXTVFnOoaYTac+DmlT3SMaGtuCVjZfXbFHY5dGtbWnA1o5bAIOZk+6irybUmdjEQUxy8Nc6NuhK7LzppCJmbCtAcSnzqprbmlUV1olHs5boO7Lzg5Q0vPKDeu1e9KotHK4RrYlTrZ1hciODXLTfqBvy5W6qQd7r6jl7Q1txREhF01hba4+050jBDR1pwtaOVwDXavLWJ4fIbz/WMJPY8OsC2d2rI8/NnpHLs0lNDzRCKK31wc0tbcEtm9poizgRAj44mtKjBnza3V1lyi0crhGuzdYJTsfvX8YELPc/TiEKV5maxzoOyx10hLE/auL0n4PdHW3PLYu6EEpeC1Cwl+V0xrrkBbcwlHK4drUFuWR7k/i0PnBhJ6nmOXjB6qHvy2NPbVlnK+f4yekcSlGVuWibbmlsauNUVkpacl9F2JRBS/uaStObuISTmISImIPC8ibebfq+6aiLxVRI5HfSZF5F3mum+KyPmodbtjkSfeiAj7aks5dG4gYXGHgdAU5/vHdCO0DPbVlgLw6vnENUTamlse2Rk+blxbnFDl0B4IEZzU1pxdxGo5PAy8qJSqA140f78OpdRLSqndSqndwB3AOPDTqE3+3FqvlDoeozxxZ19tCb2jU1wYGE/I8Y9dMjI8dPbF0tm6qgB/VjqHziXOhXHs4hA3rNXW3HLYV1vK6cujCYs7WLE5bTnYQ6zK4T7gcfP748C7rrP9+4BnlVKJaWkTgNVLTVSP6OjFIdLThJ01urDbUvGlCXs3lPBqgu7J4Ng057Q1t2z21SY27nD04hAleZms19acLcSqHCqVUpfN7z1A5XW2vx94Yt6yvxGRkyLyBRFZdG5MEXlIRI6IyJFAIBCDyMsj0XGHYxeH2La6UFeXXCb7aks51z9GbwJmhjums8dWRKLjDscuDnGjtuZs47rKQUReEJHGBT73RW+nDKf8oo55EakGdgDPRS1+BNgM3AyUAH+x2P5KqceUUnuUUnvKy8uvJ3bcSGTcITQ1y7FLQ+yrLYnrcVOBRFp0v2zvJzsjTVtzyyQ7w8cNa4sSck86h8Y51z+m3xUbua5yUErdpZTavsDnR0Cv2ehbjX/fNQ71AeAHSqk5h6RS6rIymAK+AeyN7d9JDImKO7zS3s9sRHF7fUVcj5sKJDLucLA1wBtqS7U1twISFXf4eWs/ALc32NcxTHVidSs9Azxofn8Q+NE1tn2AeS6lKMUiGPGKxhjlSQhz2TFx7hEdbA2Ql+nT7osVkKi4w8WBMc73j3F7g1bYK2FfbSlKweE4xx0OtvaxuiiHjeX5cT2uZnFiVQ6PAm8TkTbgLvM3IrJHRL5qbSQi64E1wMF5+39HRE4Bp4Ay4K9jlCchJCLuoJTiYGuAN24qIzNdDzdZCVbcoS+OcYeftxrxrNvqdQ91JexeU0RmnOMOM+EIv2of4LaGch1vsJH0WHZWSg0Ady6w/AjwkajfF4DVC2x3Ryznt4srcYdBlFJxeUDPBsboHJrgo7dtjIOEqclc3OH8IPfuWhWXY77cEmBdaS7ry/LicrxUwxjvUMShOI5BOXpxiNDUrFbYNqO7rEtkX20JPaOTnA3Ep87SQd1DjZmtqwrwZ6fzq7b+uBxvajbMK2cH9D2JkX21pTR1jzI4Nh2X4x1sDZCeJrxxY2lcjqdZGlo5LJG3mj7o55p64nK8g60BasvzWFOic7ZXii9NuL2hghfO9BKOxJ5JduTCEBMzYa0cYuTOzZUoBS+c7o3L8Q62BLhpXbGujmszWjkskVVFOexeU8RPGmNXDpMzYV49N6CzlOLA/u1VDIxN81ocCvEdbA2Q6Uubc1dpVsb21QXUFOfwbOPl6298HfpGJzl9eZTbdJaS7WjlsAzesaOKU10jdAzGltJ66NwAU7MR/cDHgdsbysnOSItLQ3SwJcDNG4rJy4opFJfyiAj7t1fxy/Z+RiZiS2n9ueky1Nac/WjlsAz2b68GiNl6ONgaICs9jVs26AE9sZKbmc5bGyp4trGHSAyupcsjE7T0BnUjFCf276hmJqz4WXNsrqWDrQHK/VlsrS6Ik2SapaKVwzJYU5LL9tUFHIihl6qU4qXmPm7Rg6zixj3bqwgEpzgawwRAP2s2xm/eqpVDXNhdU0R1YTYHTq28IzU9G+EXbQHeUlemU1gdQCuHZbJ/ezW/uTTM5ZGJFe1/5OIQFwbG+a2d1XGWLHW5Y3MFmelpPBtDQ/S9I51sqsinodIfR8lSl7Q04e3bqjjYGiA0NbuiY7x4ppfh8Rn+j53xSVPWLA+tHJbJ/u1VwMpdS0+8don8rHStHOKIPzuDW+vKeLbx8opcS809oxzvGOb+m9foHmoceceOaqZnI7zUfK2qOovzxOEOqguztTXnEFo5LJPa8nw2V/lX1EsdmZjhwKnL3Lt7FbmZOugZT/Zvr+byyCQnOoeXve+Tr3WQ6UvjPTfWJECy1OWmdcWU+7NWlCzQMTjOL9oCvH/PGnxpWmE7gVYOK2D/9moOXxxcdrnoZ453MTkT4YGb1yZIstTlri2VZPiEA6eW1xBNzoT5wW+6uHtbJSV5mQmSLjXxpQn3bKvipeYA49PLcy1972gnAB/YoxW2U2jlsALu3W34QL/xqwtL3kcpxROvdbBtVQE7dCnouFOYm8Edmyt46nAHo5NLT5/8SWMPIxMzPLBXK+xE8K4bVjMxE+Y/Xr205H3CEcX3jnRwa105NcV6kKhTaOWwAjaU5XHvrlV869cXGAhNLWmfU10jnL48yv03r0mscCnMH99Rx+jkLN9chtJ+8vAl1pTk8AY98C0h3LSumDduLOXLB88xMR1e0j4HW/u4PDKp3xWH0cphhfzxHXVMzIT5t1+cX9L2Tx7uIDsjjftuuKr+oCZObF9dyF1bKvnqL84tyXo43z/GoXOD3H/zWtK0Xzth/I876+gPTfGdVy8uafsnX+ugLD+TO7dcb2JJTSLRymGFbKrIX7L10DE4zg9/08U7d6yiQNeHSSh/cpdhPTy+BOvhf/2sHV+a8L6btF87kdxSW7pk6+F09ygvNvfx3ptqdCl7h9FXPwaWYj2EI4r/+d0TpInwibfV2ShdajJnPfzy/DWth5829fCfxzr577fWUlmQbaOEqclSrIfJmTCfeOo4JXmZfPRWXcreabRyiIFo62GxCWe++otzvHZhkM/cu00H12ziT+6qY2Rihq8uorQDwSke+f4ptq0q4E/uqrdZutQk2noILqK0//GnLbT0Bvn79+2kWGeOOU5MykFE3i8iTSISEZE919juHhFpEZF2EXk4avkGEXnVXP6UiHjuifj4nXWEI4r3f+XXnAuEXrfuzOVR/vGnrbx9WyXvvVHHGuxi++pC3rmzmn9+sY1/ffksSl0ZGKeU4pHvnyQ4NcsXfnu3dl3YyP+8u56h8Wk+8JVD9Iy8vjP167MDfPWX5/k/b1k7Vx5f4yyxvhmNwHuAny+2gYj4gC8C+4GtwAMistVc/TngC0qpTcAQ8OEY5bGdjeX5PPHQPoKTs7znX1/hyIVBOofG+fahi/zhd45RkJPB3757hx55azOf/8Au7t21is/9pJlP/bCR8elZDrYG+OTTJ3nhTB+ffHsD9bpUhq3ctK6Er3/wZi4NjPHuL/2K5p5RzveP8bVfnucTTx1nXUkun3rnFqfF1JhIdK9qxQcReRn4M3N60Pnr3gB8Rin1dvP3I+aqR4EAUKWUmp2/3bXYs2ePOnLkqlM5ysWBMT74jcNcHBjDquCwtiSXR9+zgzduKnNWuBQlElH8vz9t4UsvnyVNIKIgKz2Nd9+wmr999w6doeQQp7tH+dA3D9MXnJx7V+oq8vn8B3brMUAJRkSOKqUW9fJEY0cNh9VAR9TvTuAWoBQYVkrNRi1f1PciIg8BDwGsXeu+AUvrSvP4/h+8kS+93E5lQTa3N1SwsTxPWwwOkpYmfPKezWyuLuBExzBvrivjDboaruNsXVXAD/7ojXzl4Dlqy/O4vb6CtaU6Huc2rqscROQFoGqBVZ9SSv0o/iItjFLqMeAxMCwHu867HIrzMvnUO7def0ONrdy7axX37tKVPd1EdWEOn7l3m9NiaK7BdZWDUuquGM/RBUQPdawxlw0ARSKSbloP1nKNRqPROIwdqRqHgTozMykTuB94RhnBjpeA95nbPQjYZoloNBqNZnFiTWV9t4h0Am8A/ktEnjOXrxKRAwCmVfAx4DngDPBdpVSTeYi/AP5URNoxYhBfi0UejUaj0cSHuGQr2Y0bs5U0Go3G7SwnW0mPANJoNBrNVWjloNFoNJqr0MpBo9FoNFehlYNGo9ForsKTAWkRCQAL1f4tA/ptFmc5aPlix+0yul0+cL+MWr7YWUzGdUqp8qUcwJPKYTFE5MhSI/FOoOWLHbfL6Hb5wP0yavliJx4yareSRqPRaK5CKweNRqPRXEWyKYfHnBbgOmj5YsftMrpdPnC/jFq+2IlZxqSKOWg0Go0mPiSb5aDRaDSaOKCVg0aj0WiuwnPKQUTeLyJNIhIRkT3z1j0iIu0i0iIiC043apYOf9Xc7imzjHiiZH1KRI6bnwsicnyR7S6IyClzO9sqCorIZ0SkK0rGdyyy3T3mNW0XkYftks889z+ISLOInBSRH4hI0SLb2XoNr3dNRCTLvP/t5vO2PtEyRZ17jYi8JCKnzXflfyywze0iMhJ17z9tl3xRMlzznonBP5vX8KSI3GijbA1R1+a4iIyKyJ/M28b2aygiXxeRPhFpjFpWIiLPi0ib+bd4kX0fNLdpE5EHr3sypZSnPsAWoAF4GdgTtXwrcALIAjYAZwHfAvt/F7jf/P5l4A9skvsfgU8vsu4CUObAtfwMxtzf19rGZ17LWiDTvMZbbZTxbiDd/P454HNOX8OlXBPgD4Evm9/vB56y8ZpVAzea3/1A6wLy3Q782O5nbjn3DHgH8CwgwD7gVYfk9AE9GAPIHL2GwK3AjUBj1LK/Bx42vz+80DsClADnzL/F5vfia53Lc5aDUuqMUqplgVX3AU8qpaaUUueBdmBv9AZiTOh8B/C0uehx4F2JlDfqvB8Ankj0uRLAXqBdKXVOKTUNPIlxrW1BKfVTdWWe8UMYMwY6zVKuyX0YzxcYz9udYtOE4kqpy0qpY+b3IMY8KovOz+5i7gO+pQwOYcwcWe2AHHcCZ5VSC1VlsBWl1M+BwXmLo5+1xdq0twPPK6UGlVJDwPPAPdc6l+eUwzVYDXRE/e7k6heiFBiOamwW2iYRvAXoVUq1LbJeAT8VkaMi8pAN8kTzMdNk//oi5uhSrqtdfAijJ7kQdl7DpVyTuW3M520E4/mzFdOddQPw6gKr3yAiJ0TkWRFxYkLn690ztzx797N4x87pawhQqZS6bH7vASoX2GbZ1/K6c0g7gYi8AFQtsOpTSilXTSW6RFkf4NpWw5uVUl0iUgE8LyLNZg8hofIB/wr8FcZL+lcYrq8PxeO8y2Ep11BEPgXMAt9Z5DAJu4ZeRUTygf8E/kQpNTpv9TEMN0nIjDX9EKizWUTX3zMzJnkv8MgCq91wDV+HUkqJSFzGJ7hSOSil7lrBbl3AmqjfNeayaAYwTNN0sze30DbL4nqyikg6T9+IIAAAAk5JREFU8B7gpmsco8v82yciP8BwW8TlJVnqtRSRfwN+vMCqpVzXmFjCNfwg8FvAncp0oC5wjIRdwwVYyjWxtuk0n4FCjOfPFkQkA0MxfEcp9f3566OVhVLqgIh8SUTKlFK2FZRbwj1L+LO3BPYDx5RSvfNXuOEamvSKSLVS6rLpdutbYJsujBiJRQ1G3HZRksmt9Axwv5klsgFDg78WvYHZsLwEvM9c9CCQaEvkLqBZKdW50EoRyRMRv/UdIwDbuNC28Wae//bdi5z3MFAnRpZXJoaJ/Ywd8oGRFQR8ErhXKTW+yDZ2X8OlXJNnMJ4vMJ63ny2m2OKNGdv4GnBGKfX5RbapsmIgIrIXoy2wU3kt5Z49A/yembW0DxiJcp/YxaJWv9PXMIroZ22xNu054G4RKTbdx3ebyxbHzkh7PD4YjVgnMAX0As9FrfsURhZJC7A/avkBYJX5vRZDabQD3wOyEizvN4GPzlu2CjgQJc8J89OE4Uqx61p+GzgFnDQfsOr58pm/34GR8XLWTvnMc7dj+EqPm58vz5fRiWu40DUBPouhxACyzeer3Xzeam28Zm/GcBWejLpu7wA+aj2LwMfMa3UCI9D/Rpvv64L3bJ6MAnzRvManiMpOtEnGPIzGvjBqmaPXEENRXQZmzHbwwxixrBeBNuAFoMTcdg/w1ah9P2Q+j+3A71/vXLp8hkaj0WiuIpncShqNRqOJE1o5aDQajeYqtHLQaDQazVVo5aDRaDSaq9DKQaPRaDRXoZWDRqPRaK5CKweNRqPRXMX/D4Oc6m0DA82PAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us quickly generate some random data and draw a scatter plot."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7ff892db3240>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = np.random.normal(42, 3, 100)\n",
"y = np.random.gamma(7, 1, 100)\n",
"\n",
"plt.scatter(x, y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case Study (continued): Importing the Iris data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sklearn library provides several sample datasets, among which is also the Iris dataset.\n",
"\n",
"As a table, the dataset would look like:\n",
"<img src=\"raw/iris.png\" width=\"50%\">\n",
"\n",
"However, the data object imported from sklearn is organized slightly different. In particular, the so-called **features** are seperated from the **labels**."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import load_iris"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"iris = load_iris()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using Python's **dir()** function we can inspect the data object, i.e. find out what **attributes** it has."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['DESCR', 'data', 'feature_names', 'filename', 'target', 'target_names']"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(iris)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"iris.data provides us with a Numpy array, where the first dimension equals the number of observed flowers (**instances**) and the second dimension lists the various features of a flower."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[5.1, 3.5, 1.4, 0.2],\n",
" [4.9, 3. , 1.4, 0.2],\n",
" [4.7, 3.2, 1.3, 0.2],\n",
" [4.6, 3.1, 1.5, 0.2],\n",
" [5. , 3.6, 1.4, 0.2],\n",
" [5.4, 3.9, 1.7, 0.4],\n",
" [4.6, 3.4, 1.4, 0.3],\n",
" [5. , 3.4, 1.5, 0.2],\n",
" [4.4, 2.9, 1.4, 0.2],\n",
" [4.9, 3.1, 1.5, 0.1],\n",
" [5.4, 3.7, 1.5, 0.2],\n",
" [4.8, 3.4, 1.6, 0.2],\n",
" [4.8, 3. , 1.4, 0.1],\n",
" [4.3, 3. , 1.1, 0.1],\n",
" [5.8, 4. , 1.2, 0.2],\n",
" [5.7, 4.4, 1.5, 0.4],\n",
" [5.4, 3.9, 1.3, 0.4],\n",
" [5.1, 3.5, 1.4, 0.3],\n",
" [5.7, 3.8, 1.7, 0.3],\n",
" [5.1, 3.8, 1.5, 0.3],\n",
" [5.4, 3.4, 1.7, 0.2],\n",
" [5.1, 3.7, 1.5, 0.4],\n",
" [4.6, 3.6, 1. , 0.2],\n",
" [5.1, 3.3, 1.7, 0.5],\n",
" [4.8, 3.4, 1.9, 0.2],\n",
" [5. , 3. , 1.6, 0.2],\n",
" [5. , 3.4, 1.6, 0.4],\n",
" [5.2, 3.5, 1.5, 0.2],\n",
" [5.2, 3.4, 1.4, 0.2],\n",
" [4.7, 3.2, 1.6, 0.2],\n",
" [4.8, 3.1, 1.6, 0.2],\n",
" [5.4, 3.4, 1.5, 0.4],\n",
" [5.2, 4.1, 1.5, 0.1],\n",
" [5.5, 4.2, 1.4, 0.2],\n",
" [4.9, 3.1, 1.5, 0.2],\n",
" [5. , 3.2, 1.2, 0.2],\n",
" [5.5, 3.5, 1.3, 0.2],\n",
" [4.9, 3.6, 1.4, 0.1],\n",
" [4.4, 3. , 1.3, 0.2],\n",
" [5.1, 3.4, 1.5, 0.2],\n",
" [5. , 3.5, 1.3, 0.3],\n",
" [4.5, 2.3, 1.3, 0.3],\n",
" [4.4, 3.2, 1.3, 0.2],\n",
" [5. , 3.5, 1.6, 0.6],\n",
" [5.1, 3.8, 1.9, 0.4],\n",
" [4.8, 3. , 1.4, 0.3],\n",
" [5.1, 3.8, 1.6, 0.2],\n",
" [4.6, 3.2, 1.4, 0.2],\n",
" [5.3, 3.7, 1.5, 0.2],\n",
" [5. , 3.3, 1.4, 0.2],\n",
" [7. , 3.2, 4.7, 1.4],\n",
" [6.4, 3.2, 4.5, 1.5],\n",
" [6.9, 3.1, 4.9, 1.5],\n",
" [5.5, 2.3, 4. , 1.3],\n",
" [6.5, 2.8, 4.6, 1.5],\n",
" [5.7, 2.8, 4.5, 1.3],\n",
" [6.3, 3.3, 4.7, 1.6],\n",
" [4.9, 2.4, 3.3, 1. ],\n",
" [6.6, 2.9, 4.6, 1.3],\n",
" [5.2, 2.7, 3.9, 1.4],\n",
" [5. , 2. , 3.5, 1. ],\n",
" [5.9, 3. , 4.2, 1.5],\n",
" [6. , 2.2, 4. , 1. ],\n",
" [6.1, 2.9, 4.7, 1.4],\n",
" [5.6, 2.9, 3.6, 1.3],\n",
" [6.7, 3.1, 4.4, 1.4],\n",
" [5.6, 3. , 4.5, 1.5],\n",
" [5.8, 2.7, 4.1, 1. ],\n",
" [6.2, 2.2, 4.5, 1.5],\n",
" [5.6, 2.5, 3.9, 1.1],\n",
" [5.9, 3.2, 4.8, 1.8],\n",
" [6.1, 2.8, 4. , 1.3],\n",
" [6.3, 2.5, 4.9, 1.5],\n",
" [6.1, 2.8, 4.7, 1.2],\n",
" [6.4, 2.9, 4.3, 1.3],\n",
" [6.6, 3. , 4.4, 1.4],\n",
" [6.8, 2.8, 4.8, 1.4],\n",
" [6.7, 3. , 5. , 1.7],\n",
" [6. , 2.9, 4.5, 1.5],\n",
" [5.7, 2.6, 3.5, 1. ],\n",
" [5.5, 2.4, 3.8, 1.1],\n",
" [5.5, 2.4, 3.7, 1. ],\n",
" [5.8, 2.7, 3.9, 1.2],\n",
" [6. , 2.7, 5.1, 1.6],\n",
" [5.4, 3. , 4.5, 1.5],\n",
" [6. , 3.4, 4.5, 1.6],\n",
" [6.7, 3.1, 4.7, 1.5],\n",
" [6.3, 2.3, 4.4, 1.3],\n",
" [5.6, 3. , 4.1, 1.3],\n",
" [5.5, 2.5, 4. , 1.3],\n",
" [5.5, 2.6, 4.4, 1.2],\n",
" [6.1, 3. , 4.6, 1.4],\n",
" [5.8, 2.6, 4. , 1.2],\n",
" [5. , 2.3, 3.3, 1. ],\n",
" [5.6, 2.7, 4.2, 1.3],\n",
" [5.7, 3. , 4.2, 1.2],\n",
" [5.7, 2.9, 4.2, 1.3],\n",
" [6.2, 2.9, 4.3, 1.3],\n",
" [5.1, 2.5, 3. , 1.1],\n",
" [5.7, 2.8, 4.1, 1.3],\n",
" [6.3, 3.3, 6. , 2.5],\n",
" [5.8, 2.7, 5.1, 1.9],\n",
" [7.1, 3. , 5.9, 2.1],\n",
" [6.3, 2.9, 5.6, 1.8],\n",
" [6.5, 3. , 5.8, 2.2],\n",
" [7.6, 3. , 6.6, 2.1],\n",
" [4.9, 2.5, 4.5, 1.7],\n",
" [7.3, 2.9, 6.3, 1.8],\n",
" [6.7, 2.5, 5.8, 1.8],\n",
" [7.2, 3.6, 6.1, 2.5],\n",
" [6.5, 3.2, 5.1, 2. ],\n",
" [6.4, 2.7, 5.3, 1.9],\n",
" [6.8, 3. , 5.5, 2.1],\n",
" [5.7, 2.5, 5. , 2. ],\n",
" [5.8, 2.8, 5.1, 2.4],\n",
" [6.4, 3.2, 5.3, 2.3],\n",
" [6.5, 3. , 5.5, 1.8],\n",
" [7.7, 3.8, 6.7, 2.2],\n",
" [7.7, 2.6, 6.9, 2.3],\n",
" [6. , 2.2, 5. , 1.5],\n",
" [6.9, 3.2, 5.7, 2.3],\n",
" [5.6, 2.8, 4.9, 2. ],\n",
" [7.7, 2.8, 6.7, 2. ],\n",
" [6.3, 2.7, 4.9, 1.8],\n",
" [6.7, 3.3, 5.7, 2.1],\n",
" [7.2, 3.2, 6. , 1.8],\n",
" [6.2, 2.8, 4.8, 1.8],\n",
" [6.1, 3. , 4.9, 1.8],\n",
" [6.4, 2.8, 5.6, 2.1],\n",
" [7.2, 3. , 5.8, 1.6],\n",
" [7.4, 2.8, 6.1, 1.9],\n",
" [7.9, 3.8, 6.4, 2. ],\n",
" [6.4, 2.8, 5.6, 2.2],\n",
" [6.3, 2.8, 5.1, 1.5],\n",
" [6.1, 2.6, 5.6, 1.4],\n",
" [7.7, 3. , 6.1, 2.3],\n",
" [6.3, 3.4, 5.6, 2.4],\n",
" [6.4, 3.1, 5.5, 1.8],\n",
" [6. , 3. , 4.8, 1.8],\n",
" [6.9, 3.1, 5.4, 2.1],\n",
" [6.7, 3.1, 5.6, 2.4],\n",
" [6.9, 3.1, 5.1, 2.3],\n",
" [5.8, 2.7, 5.1, 1.9],\n",
" [6.8, 3.2, 5.9, 2.3],\n",
" [6.7, 3.3, 5.7, 2.5],\n",
" [6.7, 3. , 5.2, 2.3],\n",
" [6.3, 2.5, 5. , 1.9],\n",
" [6.5, 3. , 5.2, 2. ],\n",
" [6.2, 3.4, 5.4, 2.3],\n",
" [5.9, 3. , 5.1, 1.8]])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To find out what the four features are, we can list them:"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['sepal length (cm)',\n",
" 'sepal width (cm)',\n",
" 'petal length (cm)',\n",
" 'petal width (cm)']"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.feature_names"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Similarly, we can also print the flowers' labels (a.k.a. targets):"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.target"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The three flower classes are encoded with integers. Let's show the corresponding names:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['setosa', 'versicolor', 'virginica'], dtype='<U10')"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.target_names"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case Study (continued): Simple Visualizations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since the data is four dimensional, we cannot visualize all features together. Instead, we can plot the distribution of the flower classes by a single feature using histograms."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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wwYKCws566yzGDFiBABf+cpX2LhxI9OmTeOKK67gG9/4RoN1r1+/nvz8fM4991wAvvCFLwDw6quvMm3aNAD69+/PWWedxdtvv91g2VdffZWFCxcCMGrUKHbs2MEnn3wCwJVXXkmXLl1i2f9mA9zM5gMXAT3MrAaYQeKsk5OBRdFdlP/q7lNiqUhEpAXGjh1LWVkZH330EePGjeP999/n3nvv5aabbmowX3V1NaeccsqR1927d2fVqlW89NJLPProoyxYsIA5c+a0er31a0hXMmehfMfd8909290L3P0Jd/+qu/dy93Oih8JbRDJi3LhxPPvss5SVlTF27FguvfRS5syZw549ewCora1l69atRy23fft2Dh06xDXXXMPPfvYzKisrG7zfr18/Nm/ezIoVKwDYvXs3dXV1fP3rX2fevMTHfm+//TYffPAB/fr1a7Bs/XmWLVtGjx49jhzBx0ntZEUkPhlo4zlw4EB2795Nz549yc/PJz8/n3Xr1nH++ecD0LVrV5555hk6d+7cYLna2lomTpzIoUOHAPjFL37R4P2TTjqJ5557jmnTprFv3z66dOnC4sWLmTp1KjfffDNFRUVkZWUxd+5cTj755AbLzpw5k0mTJjF48GByc3NbrX+42skeh9rJSuja4iwUtZONn9rJioicABTgIiKBUoCLiARKAS4iEigFuIhIoBTgIiKB0nngIhKbVE5dbEoqzbU2bdrEbbfdRllZWYuWu/HGG7nzzjsZMGDAced59NFHyc3NbdDbJJMU4CLSoZx55pnHDO/m2rc+/vjjza57ypT2ddG5hlBEJFjTp09n1qxZR17PnDmTX/3qVwwaNAiAuXPncuWVVzJq1ChGjx7NoUOHmDp1Kv3792fMmDFcfvnlR8L+oosu4vCFhl27duVHP/oRQ4YMYcSIEWzZsqXB+gHeeecdLrnkEoYMGcLQoUN599132bNnD6NHj2bo0KEUFRXx+9//vlX3XwEuIsE6VjvZ4cOHN5insrKSsrIy/vznP/P8889TXV3N2rVrefrpp1m+fPkx17t3715GjBjBqlWruPDCC3nssceOmmf8+PHccsstrFq1ir/85S/k5+eTk5PDCy+8QGVlJUuXLuWuu+6iNa921xCKiATrWO1ke/Xq1WCeMWPGcNpppwGJNq9jx46lU6dOnHHGGUfdiOGwk0466cjt0YYN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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"feature_index = 2\n",
"colors = ['blue', 'red', 'green']\n",
"\n",
"for label, color in zip(range(len(iris.target_names)), colors):\n",
" plt.hist(iris.data[iris.target==label, feature_index], \n",
" label=iris.target_names[label],\n",
" color=color)\n",
"\n",
"plt.xlabel(iris.feature_names[feature_index])\n",
"plt.legend(loc='upper right')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Also, we can draw scatter plots of two features."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"first_feature_index = 1\n",
"second_feature_index = 0\n",
"\n",
"colors = ['blue', 'red', 'green']\n",
"\n",
"for label, color in zip(range(len(iris.target_names)), colors):\n",
" plt.scatter(iris.data[iris.target==label, first_feature_index], \n",
" iris.data[iris.target==label, second_feature_index],\n",
" label=iris.target_names[label],\n",
" c=color)\n",
"\n",
"plt.xlabel(iris.feature_names[first_feature_index])\n",
"plt.ylabel(iris.feature_names[second_feature_index])\n",
"plt.legend(loc='upper left')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using the higher level library pandas, one can easily create a so-called **scatterplot matrix**."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x576 with 16 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)\n",
"\n",
"pd.plotting.scatter_matrix(iris_df, figsize=(8, 8));"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Concept of Generalization"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The goal of a supervised machine learning model is to make predictions on new (i.e., previously unseen) data.\n",
"\n",
"In a real-world application, we are not interested in marking an already labeled email as spam or not. Instead, we want to make the user's life easier by automatically classifying new incoming mail.\n",
"\n",
"In order to get an idea of how good a model generalizes, a best practice is to split the available data into a training and a test set. Only the former is used to train the model. Then predictions are made on the test data and the predictions can be compared with the actual labels.\n",
"\n",
"Common splits are 75/25 or 60/40."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/generalization.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case Study (continued): Train/Test Split for the Iris data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is common practice to refer to the feature matrix as X and the vector of labels as y."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"X, y = iris.data, iris.target"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A naive splitting approach could be to use array slicing."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"X_train, X_test, y_train, y_test = X[0:100, :], X[100:150, :], y[0:100], y[100:150]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"However, this would lead to unbalanced label distributions. For example, the test set would only be made up of flowers of the same type."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0, 0, 50])"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.bincount(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"sklearn provides a function that not only randomizes the split but also ensures that the resulting label distribution is proportionate to the overall distribution (called **stratification**)."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 1, 2, 2, 2, 2, 1, 0, 1, 0, 0, 2, 0, 0, 1, 0, 1, 2, 2, 0, 2,\n",
" 1, 2, 0, 0, 2, 2, 1, 2, 1, 1, 0, 0, 1, 1, 1, 0, 1, 2, 0, 0, 2, 2,\n",
" 1])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, test_size=0.3, stratify=y)\n",
"\n",
"y_test"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([15, 15, 15])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.bincount(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A simple Classification Model: k-Nearest Neighbors"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To predict the label for any observation, just determine the k \"nearest\" observations in the training set (e.g., by Euclidean distance) and use a simple majority vote."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"raw/knn.png\" width=\"60%\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Case Study (continued): Train and Predict the Iris data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"sklearn provides a uniform interface for all its classification models. They all have a **fit()** and a **predict()** method that abstract away the actual machine learning algorithm."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.neighbors import KNeighborsClassifier"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"knn = KNeighborsClassifier(n_neighbors=5)\n",
"\n",
"knn.fit(X_train, y_train)\n",
"\n",
"y_pred = knn.predict(X_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let us list the labels predicted for the test set ..."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 1, 1, 2, 2, 2, 1, 0, 1, 0, 0, 2, 0, 0, 1, 0, 1, 2, 2, 0, 2,\n",
" 1, 1, 0, 0, 1, 2, 1, 2, 1, 1, 0, 0, 1, 1, 1, 0, 1, 2, 0, 0, 2, 2,\n",
" 1])"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and compare them with the actual labels."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 0, 1, 2, 2, 2, 2, 1, 0, 1, 0, 0, 2, 0, 0, 1, 0, 1, 2, 2, 0, 2,\n",
" 1, 2, 0, 0, 2, 2, 1, 2, 1, 1, 0, 0, 1, 1, 1, 0, 1, 2, 0, 0, 2, 2,\n",
" 1])"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_test"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Numpy can show us the indices where the predictions are wrong."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([ 3, 23, 26]),)"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.where(y_pred != y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, we can calculate the fraction of correctly predicted flowers."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9333333333333333"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.sum(y_pred == y_test) / len(y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is important to mention that we can also \"predict\" the training set. Surprisingly, the model does not get the training set 100% correct."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9523809523809523"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_train_pred = knn.predict(X_train)\n",
"\n",
"np.sum(y_train_pred == y_train) / len(y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A visualization reveals that the misclassified flowers are right \"at the borderline\" between two neighboring clusters of flower classes."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ybp163yOvfPOOxkwYAAvvfQSb731FpdddhkrV64EoLy8nCVLltC2bduwfmZjTMsV0cSgqj8AR9Yrm+H1/DHgsUjGUF/h/MK6pOBR83MNhfMLw04MAwYMYNu2bWzZsoWqqirat29fN5vqgAEDANizZw9ffPEFmZmZZGVlkZubC8Bxxx3HV199xY033sj555/PyJEjfepeu3YtnTt3ZsiQIQC0a+dM9rdkyRJuvPFGAHr27ElWVtZBiWHJkiW88MILAJx55pls376dXbuc1rvRo0dbUjDG+JV0jcsbdmwIqTxYY8eOZd68eXz77beMGzeOyspKbr/9dq655hqf/SoqKjj00EPrXrdv355Vq1bxxhtvMGPGDObOncvTTz/dpFiC4R2DMcZ4S7opMTI7ZIZUHqxx48bx3HPPMW/ePMaOHcvZZ5/N008/zZ49ewDYvHkz27ZtO+i47777jgMHDnDxxRczdepUVqxY4bO9R48efPPNN3z88ccA7N69m3379nHKKadQUuL0jaxbt44NGzbQo0cPn2O991m8eDEdO3asu+MwxpiGJN0dQ9FFRT59DADprdMpuqioSfX27t2b3bt306VLFzp37kznzp35/PPPGTp0KACHHXYYf/3rX2nVqpXPcZs3b+aKK67gwIEDAPzxj3/02d66dWvmzJnDjTfeyI8//kjbtm158803mThxItdddx05OTmkpqYyc+ZMDjnkEJ9j77rrLq688kr69u1Lenq6rd9gjAlKck67vbSEwvmFbNixgcwOmRRdVBR2/4Lxz6bdNia+2LTbjcjPzbdEYIwxDUi6PgZjjDGBWWIwxhjjwxKDMcYYH5YYjDHG+LDEYIwxxoclhgjZsmULY8aMCfm4X//615SXlwfcZ8aMGTz77LPhhmaMMQEl5fcYYilZprlOpN+JMckglO8xJOUdQ1lZGdOnT+fuu+9m+vTplJWVNam+hqbd7tOnDwAzZ85k9OjRnHnmmeTl5XHgwAEmTpxIz549GTFiBOedd17dFNunn346nsR32GGHUVhYSL9+/cjNzWXr1q0+9QOsX7+es846i379+jFw4EC+/PJL9uzZQ15eHgMHDiQnJ4eXX365ST+fMSa5JF1iKCsrY8GCBVRXVwNQXV3NggULmpQcxo0bx9y5c+tez507l5NOOslnnxUrVjBv3jzeeecdXnzxRSoqKigv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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"first_feature_index = 3\n",
"second_feature_index = 0\n",
"\n",
"correct_idx = np.where(y_pred == y_test)[0]\n",
"incorrect_idx = np.where(y_pred != y_test)[0]\n",
"\n",
"colors = [\"darkblue\", \"darkgreen\", \"gray\"]\n",
"\n",
"for n, color in enumerate(colors):\n",
" idx = np.where(y_test == n)[0]\n",
" plt.scatter(X_test[idx, first_feature_index], X_test[idx, second_feature_index], color=color,\n",
" label=iris.target_names[n])\n",
"\n",
"plt.scatter(X_test[incorrect_idx, first_feature_index], X_test[incorrect_idx, second_feature_index],\n",
" color=\"darkred\", label='misclassified')\n",
"\n",
"plt.xlabel('sepal width [cm]')\n",
"plt.ylabel('petal length [cm]')\n",
"plt.legend(loc='best')\n",
"plt.title(\"Iris Classification results\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In practice, the number of neighbors is to chosen before the model is trained. Therefore, it is possible to \"optimize\" it. This process is referred to as **hyper-parameter** tuning. For the Iris dataset this does not make much of a difference."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 0.9777777777777777\n",
"2 0.9333333333333333\n",
"3 0.9555555555555556\n",
"4 0.8888888888888888\n",
"5 0.9333333333333333\n",
"6 0.9333333333333333\n",
"7 0.9333333333333333\n",
"8 0.9333333333333333\n",
"9 0.9555555555555556\n",
"10 0.9333333333333333\n",
"11 0.9555555555555556\n",
"12 0.9333333333333333\n",
"13 0.9333333333333333\n",
"14 0.9333333333333333\n",
"15 0.9333333333333333\n",
"16 0.9333333333333333\n",
"17 0.9333333333333333\n",
"18 0.9333333333333333\n",
"19 0.9333333333333333\n",
"20 0.9333333333333333\n",
"21 0.9333333333333333\n",
"22 0.9333333333333333\n",
"23 0.9111111111111111\n",
"24 0.9333333333333333\n",
"25 0.9111111111111111\n",
"26 0.9333333333333333\n",
"27 0.9111111111111111\n",
"28 0.9111111111111111\n",
"29 0.9333333333333333\n",
"30 0.9333333333333333\n"
]
}
],
"source": [
"for i in range(1, 31):\n",
" knn = KNeighborsClassifier(n_neighbors=i)\n",
" knn.fit(X_train, y_train)\n",
" y_pred = knn.predict(X_test)\n",
" correct = np.sum(y_pred == y_test) / len(y_test)\n",
" print(i, correct)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## WHU's Python Course in the BSc program"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- free [online book](https://github.com/webartifex/intro-to-python) by the author of this workshop"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Literature on Machine Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Depending on the programming language one chooses, the following books are recommended:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [Python Machine Learning](https://www.amazon.de/Python-Machine-Learning-scikit-learn-TensorFlow/dp/1787125939/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=python+machine+learning&qid=1575545025&sr=8-1) by Sebastian Raschka\n",
"\n",
"<img src=\"raw/python_ml.png\">"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- [An Introduction to Statistical Learning](http://faculty.marshall.usc.edu/gareth-james/ISL/)\n",
"\n",
"<img src=\"raw/r.png\">"
]
}
],
"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.6.9"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}