{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 01 - Introduction to Machine Learning\n", "\n", "by [Alejandro Correa Bahnsen](http://www.albahnsen.com/) & [Iván Torroledo](http://www.ivantorroledo.com/)\n", "\n", "version 1.2, Feb 2018\n", "\n", "## Part of the class [Machine Learning for Risk Management](https://github.com/albahnsen/ML_RiskManagement)\n", "\n", "\n", "\n", "This notebook is licensed under a [Creative Commons Attribution-ShareAlike 3.0 Unported License](http://creativecommons.org/licenses/by-sa/3.0/deed.en_US). Special thanks goes to [Jake Vanderplas](http://www.vanderplas.com)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What is Machine Learning?\n", "\n", "In this section we will begin to explore the basic principles of machine learning.\n", "Machine Learning is about building programs with **tunable parameters** (typically an\n", "array of floating point values) that are adjusted automatically so as to improve\n", "their behavior by **adapting to previously seen data.**\n", "\n", "Machine Learning can be considered a subfield of **Artificial Intelligence** since those\n", "algorithms can be seen as building blocks to make computers learn to behave more\n", "intelligently by somehow **generalizing** rather that just storing and retrieving data items\n", "like a database system would do.\n", "\n", "We'll take a look at two very simple machine learning tasks here.\n", "The first is a **classification** task: the figure shows a\n", "collection of two-dimensional data, colored according to two different class\n", "labels. \n", "\n", "### Type of Learning\n", "\n", "Usually, ML problems can be classified according to the learning type. Two of the more importants are:\n", "\n", "* **Supervised Learning:**\n", "\n", "Supervised Learning models is the set of algorithms that tries to approximate a function $f(x)$ that represents the relation between a dependent variable $Y$ (label, target) and an independent set of variables $X$. This characteristic makes supervised algorithms a type of predictive models, such that given a set of $X$ data, it can be forecasted dependent $Y$ variable. \n", "\n", "According to the type of values in $Y$, it can be define two main types of problems and algorithms to analyze data:\n", "\n", "- Classification Problems:\n", "\n", "Whether dependent variable $Y$ define a group of categories (not ordered values) like approved and denied or good and bad, the task of predict $Y$ variable can be defined as a classification problem. The output variables are often called labels or categories.\n", "\n", "Some examples of Classification algorithms are:\n", "```\n", "Logistic Regression, Decision Trees, Random Forest, KNN and Suppor Vector Machine.\n", "```\n", "\n", "- Regression Problems:\n", "\n", "A regression problem is the task of predict a dependent (target) variable $Y$ with continous values. Some examples of regression problems can be: the prediction of the price of a stock or the number of potential customers for a product.\n", "\n", "Some examples of Regression algorithms are:\n", "```\n", "Linear Regression, Decision Trees, Neural Networks. \n", "```\n", "\n", "* **Unsupervised Learning:**\n", " \n", "Opposite to Supervised Learnig, in Unsupervised Learning dependent variable or labeled data $Y$ is not included in the data set. Then insted of predict a variable, this set of algorithms tries to use techniques in the input data $X$ to detect patterns, find rules, or summarize and group data. Usually, Unsupervised algorithms are mainly used in descriptive anlysis and modelling, where is particularly useful to find out insights and information that human expert doesn't know. In Unsupervised Learning, there are two main tasks:\n", "\n", "- Dimensionality Reduction: \n", "\n", "Dimensionality reduction is the methodology to reduce the amount of variables in dataset $X$ that are into consideration. One of the most important methods applied in dimensionality reduction is the Principal Component Analysis (PCA). \n", "\n", "- Clustering Analysis: \n", "\n", "Cluster analysis or clustering is the task of grouping a set of data $X$ in such way that segments of $X$ in the same group are more similar between them than to those in other groups (clusters). It is the most common technique for exploratory data mining and data analysis. An example of this algorithms are k-means.\n", "\n", "\n", "#### Other Types of Learing\n", "\n", "Despite Supervised and Unsupervised Learning cover a vast amount of techiniques to use, there area other less common but usefull Learning types like Semi-Supervised Learning and Reinforcement Learnig. However these are outside the scope of this course. To read more about:\n", "\n", "https://medium.com/machine-learning-for-humans/reinforcement-learning-6eacf258b265" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Import libraries\n", "%matplotlib inline\n", "import numpy as np\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "plt.style.use('ggplot')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Supervised Learning \n", "\n", "### 1.1 Classification Problem\n", "\n", "The first task we are going to study is a **classification** problem: the figure shows a collection of two-dimensional data, colored according to two different class labels." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a random set of examples\n", "from sklearn.datasets.samples_generator import make_blobs\n", "X, Y = make_blobs(n_samples=50, centers=2,random_state=23, cluster_std=2.90)\n", "\n", "plt.scatter(X[:, 0], X[:, 1], c=Y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A classification algorithm may be used to draw a dividing boundary\n", "between the two clusters of points:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SGDClassifier(alpha=0.01, average=False, class_weight=None, epsilon=0.1,\n", " eta0=0.0, fit_intercept=True, l1_ratio=0.15,\n", " learning_rate='optimal', loss='hinge', max_iter=200, n_iter=None,\n", " n_jobs=1, penalty='l2', power_t=0.5, random_state=None,\n", " shuffle=True, tol=None, verbose=0, warm_start=False)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import SGDClassifier\n", "clf = SGDClassifier(loss=\"hinge\", alpha=0.01, max_iter=200, fit_intercept=True)\n", "clf.fit(X, Y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Plot the decision boundary. For that, we will assign a color to each\n", "# point in the mesh [x_min, m_max]x[y_min, y_max].\n", "x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n", "y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n", "xx, yy = np.meshgrid(np.arange(x_min, x_max, .05), np.arange(y_min, y_max, .05))\n", "Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.contour(xx, yy, Z)\n", "plt.scatter(X[:, 0], X[:, 1], c=Y)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This may seem like a trivial task, but it is a simple version of a very important concept.\n", "By drawing this separating line, we have learned a model which can **generalize** to new\n", "data: if you were to drop another point onto the plane which is unlabeled, this algorithm\n", "could now **predict** whether it's a blue or a red point." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next simple task we'll look at is a **regression** task: a simple best-fit line\n", "to a set of data:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1.2 Regression Problem" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAEi9JREFUeJzt3X+M5Hddx/HnbJcTWwrHOku329YUCGkkh4I0loihNVVyanUxgY80J6lAWU1A8XIE+RGvzSVEEpSjUWOyQm2JZ+UtVI8YVEgTWk3gIm2AMzRn8GzK9W57ezkOmiqc2x3/mLmyN+zuzM73OzPf72eej+RyO9/93sz7wzd98Z3P5/39fhutVgtJUv1NjbsASVI5DHRJyoSBLkmZMNAlKRMGuiRlwkCXpEwY6JKUCQNdkjJhoEtSJqZH/HlelipJg2n02mHUgc7Jkye3/H2z2eTMmTMjqmb0HF995Tw2cHxVNj8/39d+TrlIUiZ6nqGnlO4GbgFOR8Surt+9B/gIMBsR9fy/PknKRD9n6PcAu7s3ppSuAX4ReLzkmiRJA+gZ6BHxEHB2g18dBN6LC52SVAkDLYqmlH4NeCIivpZS6rXvIrAIEBE0m82tC5qe7rlPnTm++sp5bOD4crDtQE8pXQp8EHh9P/tHxBKw1HnZ6rXKXOeV6H44vvrKeWyQ//h2rp7n7D1/SuvcWRo7Z2BhD1Ozc+Muqy/D7HJ5KfBi4GsppceAq4FHUkr1+F9G0sRZW1nm3J3vpnXkQTh2lNaRB2kd3M/ayvK4SyvVts/QI+Io8KILrzuhfr1dLpIq6/AhnnnyiYu3rSzD4UNw+77x1DQEPc/QU0r3AV8CrkspnUgpvX34ZUlSeVrnNurr2Hx7XfU8Q4+IW3v8/trSqpGkIWjsnNmwHa+xc2aon7vW+RYwqnn7kV/6L0kjt7CHSx775sXTLrNzsLBnaB+5trJM6+D+9tQOnf7u48dY23tgaKHupf+Ssjc1O8fOO++iccONcN0raNxwI40hBivQnp/vXnS9MG8/JJ6hS5oI03PzTI1wAXQc8/aeoUvSEGw2Pz/MeXsDXZKGYWFPe55+vSHP2zvlIklDMDU7x9reA3a5SFIOpmbnRnrhklMukpQJA12SMmGgS1ImDHRJyoSBLkmZMNAlKRMGuiRlwkCXpEwY6JKUCQNdkjJhoEtSJgx0ScqEgS5JmTDQJSkTPW+fm1K6G7gFOB0RuzrbPgL8KnAe+C/grRFxbpiFSpK21s8Z+j3A7q5tXwB2RcRPAv8JvL/kuiRJ29Qz0CPiIeBs17bPR8Rq5+WXgauHUJskaRvKmEN/G/BPJbyPJKmAQo+gSyl9EFgFDm2xzyKwCBARNJvNrQuanu65T505vvrKeWzg+HIwcKCnlG6jvVh6c0S0NtsvIpaApc7L1pkzZ7Z832azSa996szx1VfOYwPHV2Xz8/N97TdQoKeUdgN/ANwYEf8zyHtIksrVT9vifcBNQDOldAK4g3ZXy48AX0gpAXw5In5niHVKknroGegRcesGmz8xhFokjcjayjIcPkTr3FkaO2dgYQ9kPr88CQotikqqn7WVZVoH98PKMgAtgOPHWD3wZzC9Y6y1qRgv/ZcmzeFDz4b5s1aWefq+pY33V20Y6NKEaZ07u+H2Z87WswNEP2CgSxOmsXNmw+2XzDiHXncGujRpFvbA7NzF22bnuOzWxfHUo9K4KCpNmKnZOdb2HvihLpfpuXmo6YU3ajPQpQk0NTsHt+8bdxkqmVMukpQJA12SMmGgS1ImDHRJyoSBLkmZMNAlKRMGuiRlwkCXpEwY6JKUCQNdkjJhoEtSJgx0ScqEgS5JmTDQJSkTBrokZaLn/dBTSncDtwCnI2JXZ9sM8CngWuAxIEXEt4dXpqR+rK0s/9CDK6a6n06kbPVzhn4PsLtr2/uAByLiZcADndeSxmhtZZnWwf20jjwIx47SOvIgrYP72yGvidAz0CPiIaD7MeELwL2dn+8F3lByXZK26/Ah6A7vzhm7JsOgj6C7IiJOAUTEqZTSizbbMaW0CCx29qXZ3PrJ4tPT0z33qTPHV19VH9vZp5/i/zbYPv30U8z0UXfVx1dU7uODETxTNCKWgKXOy9aZHg+hbTab9NqnzhxffVV9bGuXXb7h9tXLLu+r7qqPr6g6j29+fr6v/QbtcnkypXQlQOfv0wO+j6SyLOyB7gXQ2bn2dk2EQc/QPwvcBny48/fh0iqSNJCp2TnW9h6wy2WC9dO2eB9wE9BMKZ0A7qAd5JFSejvwOPCmYRYpqT9Ts3Nw+75xl6Ex6RnoEXHrJr+6ueRaJEkFeKWoJGVi6F0uUtV5daVyYaBrol24uvLCBTktgOPHWNt7wFBX7Tjlosnm1ZXKiIGuidY6131Xi623S1VmoGuiNXbObGu7VGUGuiabV1cqIy6KaqLV+epKu3PUzUDXxKvj1ZV252gjTrlIdWR3jjZgoEs1ZHeONuKUizQiZc55N3bOtKdZNtiuyWWgSyNQ+pz3wh44fuziaRe7cyaeUy7SKJQ85z01O0dj7wEaN9wI172Cxg030nBBdOJ5hi6NwDDmvOvYnaPh8gxdGgGvSNUoGOjSKHhFqkbAKRdpBOp8Rarqw0CXRsQ5bw2bUy6SlAkDXZIyUWjKJaW0F7id9nUSR4G3RsT3yihMkrQ9A5+hp5SuAn4PuD4idgGXAG8uqzBJ0vYUnXKZBn40pTQNXAqcLF6SJGkQAwd6RDwB/DHwOHAK+E5EfL6swiRJ29NotTa6Z1tvKaUXAp8BfgM4B/wd8OmI+Ouu/RaBRYCIePX58+e3fN/p6WlWV1cHqqkOHF995Tw2cHxVtmPHDoBGr/2KLIr+AvDfEbECkFK6H/hZ4KJAj4glYKnzsnXmzJkt37TZbNJrnzpzfPWV89jA8VXZ/Px8X/sVCfTHgdeklC4F/he4GfhKgfeTJBVQZA79CPBp4BHaLYtT/OBMXJI0YoX60CPiDuCOkmqRJBXgvVykLax/bNx3rriStd1v9IZaqiwDXdpE92PjvnfsKDz69cEfGycNmfdykTZT8mPjpGEz0KVNDOOxcdIwGejSJnxsnOrGQJc242PjVDMuikqb6H5s3HOvuJLv2+WiCjPQVUvr2wmH+XzO9Y+Ne0GNLx3XZDDQVTvd7YQtgOPHbCfUxHMOXfVjO6G0IQNdtWM7obQxA121YzuhtDEDXfVjO6G0IRdFVTvd7YTD7HKR6sRAVy2tbyeU1Gaga+xG1VMu5c5A11jZUy6Vx0DXeG3VUz6GKRW/LajODHSNVZV6yv22oLoz0FVYkce0NXbOtINzg+0jV7FvC9J2GegqpPBj2hb2wPFjFwfpmHrKq/RtQRpEoUBPKe0EPg7sov0N9W0R8aUyClNNFDyrrVJPeaW+LUgDKHqGfhfwzxHxxpTSDuDSEmpSjZRxVluZnvIKfVuQBjFwoKeUng+8DvgtgIg4D5wvpyzVRU5ntVX6tiANosgZ+kuAFeCvUko/BTwMvDsini6lMtVDZme1lfm2IA2g0WptdH7VW0rpeuDLwGsj4khK6S7guxHxh137LQKLABHx6vPntz6Jn56eZnV1daCa6iDH8a0un+Tp+5Z45uwZpn9slkvf/A6m5+bHXVbpcjx26zm+6tqxYwdAo9d+Rc7QTwAnIuJI5/Wngfd17xQRS8BS52Wr1yO8mpk/5ivL8U3vgLe8C4DnXxhfbmMk02O3juOrrvn5/k6QBr59bkQsA99KKV3X2XQz8I1B30+SVEzRLpffBQ51OlyOA28tXpIkaRCFAj0ivgpcX1ItkqQCfGKRJGXCQJekTHgvFxVW5OZckspjoKuQwjfnklQap1xUzFY355I0Uga6CvGWs1J1GOgqZLObcNXx5lxS3RnoKmZhT/tmXOvV+OZcUp25KKpCum85+9wrruT7drlIY2Ggq7D1t5x9QY1vgCTVnYE+BOv7sn1IgqRRMdBL1t2X3QI4fsy+bElD56Jo2ezLljQmBnrJ7MuWNC4Gesnsy5Y0LgZ62ezLljQmLoqWrLsv2y4XSaNioA/B+r5sSRoVp1wkKRMGuiRlwkCXpEwY6JKUicKLoimlS4CvAE9ExC3FS5IkDaKMM/R3A4+W8D6SpAIKBXpK6WrgV4CPl1OOJGlQRc/QPwa8F1groRZJUgEDz6GnlG4BTkfEwymlm7bYbxFYBIgIms3m1gVNT/fcp84cX33lPDZwfDlotFqtgf5hSumPgLcAq8BzgecD90fEb27xz1onT57c8n2bmT/xxvHVV85jA8dXZfPz8wCNXvsNfIYeEe8H3g/QOUN/T48wlyQNkX3okpSJUm7OFRFfBL5YxntJkgbjGbokZcJAl6RMGOiSlAkDXZIyUYsnFq2tLPtIN0nqofKBvrayTOvgflhZBqAFcPwYa3sPGOqStE71p1wOH3o2zJ/VOWOXJP1A5QO9de7strZL0qSqfKA3ds5sa7skTarKz6GzsAeOH7t42mV2rr29RONYeHWxV1KZKh/oU7NzrO09MNTgG8bCa6+wdrFXUtkqH+jQDnVu3ze8D9hq4XWAz90qrLlwP+aSP1OSKj+HPgqlL7z20ZnjYq+kshnolL/w2k9Yu9grqWwGOrQXWLvnrQssvPYV1iV/piTVYg592PpdeO27K6WPzpxRLPZKmiwGekevhdftdKX0G9ZDX+yVNFEM9H5tsyvFsJY0as6h98muFElVZ6D3ya4USVVnoPfLrhRJFTfwHHpK6Rrgk8AcsAYsRcRdZRVWNXalSKq6Iouiq8C+iHgkpXQ58HBK6QsR8Y2SaqscFzolVdnAUy4RcSoiHun8/BTwKHBVWYVJkranlDn0lNK1wKuAI2W8nyRp+xqtVqvQG6SUngc8CHwoIu7f4PeLwCJARLz6/PnzW77f9PQ0q6urhWqqMsdXXzmPDRxfle3YsQOg0Wu/QoGeUnoO8I/Av0TER/v4J62TJ09uuUOz2eTMmTMD11R1jq++ch4bOL4qm5+fhz4CfeApl5RSA/gE8GifYS5JGqIiXS6vBd4CHE0pfbWz7QMR8bniZUmStmvgQI+If6OPrwCSpNHwSlFJyoSBLkmZMNAlKRMGuiRlwkCXpEwY6JKUCQNdkjJhoEtSJgx0ScqEgS5JmTDQJSkTRW7ONRJrK8s+x1OS+lDpQF9bWaZ1cD+sLAPQAjh+jLW9Bwx1SepS7SmXw4eeDfNndc7YJUkXq3Sgt86d3dZ2SZpklQ70xs6ZbW2XpElW6UBnYQ90z5XPzrW3S5IuUulF0anZOdb2HrDLRZL6UOlAh3aoc/u+cZchSZVX7SkXSVLfDHRJyoSBLkmZMNAlKRMGuiRlotFqtUb5eSP9MEnKSKPXDqM+Q2/0+pNSerif/er6x/HV90/OY3N8tfjTk1MukpQJA12SMlHFQF8adwFD5vjqK+exgeOrvVEvikqShqSKZ+iSpAFU6uZcKaXdwF3AJcDHI+LDYy6pVCmlx4CngGeA1Yi4frwVFZNSuhu4BTgdEbs622aATwHXAo8BKSK+Pa4aB7XJ2O4E3gGsdHb7QER8bjwVFpNSugb4JDAHrAFLEXFXDsdvi7HdSSbHbzOVOUNPKV0C/DnwS8DLgVtTSi8fb1VD8fMR8cq6h3nHPcDurm3vAx6IiJcBD3Re19E9/PDYAA52jt8rax4Gq8C+iPgJ4DXAOzv/veVw/DYbG+Rz/DZUmUAHfgb4ZkQcj4jzwN8CC2OuSVuIiIeA7ucBLgD3dn6+F3jDSIsqySZjy0ZEnIqIRzo/PwU8ClxFBsdvi7Flr0qBfhXwrXWvT5DfQWgBn08pPZxSWhx3MUNyRUScgvZ/WMCLxlxP2d6VUvp6SunulNILx11MGVJK1wKvAo6Q2fHrGhtkePzWq1Kgb3QlVG4tOK+NiJ+mPa30zpTS68ZdkLblL4CXAq8ETgF/Mt5yikspPQ/4DPD7EfHdcddTpg3Glt3x61alQD8BXLPu9dXAyTHVMhQRcbLz92ng72lPM+XmyZTSlQCdv0+PuZ7SRMSTEfFMRKwBf0nNj19K6Tm0A+9QRNzf2ZzF8dtobLkdv41UKdD/HXhZSunFKaUdwJuBz465ptKklC5LKV1+4Wfg9cB/jLeqofgscFvn59uAw2OspVQXgq7j16nx8UspNYBPAI9GxEfX/ar2x2+zseV0/DZTqQuLUkq/DHyMdtvi3RHxoTGXVJqU0kton5VDu130b+o+vpTSfcBNQBN4ErgD+AcggB8HHgfeFBG1W1zcZGw30f663qLd0vfbF+ab6yal9HPAvwJHabf2AXyA9lxzrY/fFmO7lUyO32YqFeiSpMFVacpFklSAgS5JmTDQJSkTBrokZcJAl6RMGOiSlAkDXZIyYaBLUib+H+QEY6HHHGxYAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 0.5\n", "b = 1.0\n", "\n", "# x from 0 to 10\n", "x = 30 * np.random.random(20)\n", "\n", "# y = a*x + b with noise\n", "y = a * x + b + np.random.normal(size=x.shape)\n", "\n", "plt.scatter(x, y)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "clf = LinearRegression()\n", "clf.fit(x[:, None], y)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.45686433]\n", "1.3280248907068941\n" ] } ], "source": [ "# underscore at the end indicates a fit parameter\n", "print(clf.coef_)\n", "print(clf.intercept_)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x_new = np.linspace(0, 30, 100)\n", "y_new = clf.predict(x_new[:, None])\n", "plt.scatter(x, y)\n", "plt.plot(x_new, y_new)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, this is an example of fitting a model to data, such that the model can make\n", "generalizations about new data. The model has been **learned** from the training\n", "data, and can be used to predict the result of test data:\n", "here, we might be given an x-value, and the model would\n", "allow us to predict the y value. Again, this might seem like a trivial problem,\n", "but it is a basic example of a type of operation that is fundamental to\n", "machine learning tasks." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Representation of Data in Scikit-learn\n", "\n", "Machine learning is about creating models from data: for that reason, we'll start by\n", "discussing how data can be represented in order to be understood by the computer. Along\n", "with this, we'll build on our matplotlib examples from the previous section and show some\n", "examples of how to visualize data.\n", "\n", "Most machine learning algorithms implemented in scikit-learn expect data to be stored in a\n", "**two-dimensional array or matrix**. The arrays can be\n", "either ``numpy`` arrays, or in some cases ``scipy.sparse`` matrices.\n", "The size of the array is expected to be `[n_samples, n_features]`\n", "\n", "- **n_samples:** The number of samples: each sample is an item to process (e.g. classify).\n", " A sample can be a document, a picture, a sound, a video, an astronomical object,\n", " a row in database or CSV file,\n", " or whatever you can describe with a fixed set of quantitative traits.\n", "- **n_features:** The number of features or distinct traits that can be used to describe each\n", " item in a quantitative manner. Features are generally real-valued, but may be boolean or\n", " discrete-valued in some cases.\n", "\n", "The number of features must be fixed in advance. However it can be very high dimensional\n", "(e.g. millions of features) with most of them being zeros for a given sample. This is a case\n", "where `scipy.sparse` matrices can be useful, in that they are\n", "much more memory-efficient than numpy arrays." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A Simple Example: the Iris Dataset\n", "\n", "As an example of a simple dataset, we're going to take a look at the\n", "iris data stored by scikit-learn.\n", "The data consists of measurements of three different species of irises.\n", "There are three species of iris in the dataset, which we can picture here:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Setosa\n", "\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Versicolor\n", "\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris Virginica\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Iris versicolor and the petal and sepal width and length\n", "From, Python Data Analytics, Apress, 2015.\n" ] } ], "source": [ "from IPython.core.display import Image, display\n", "\n", "display(Image(url='images/iris_setosa.jpg'))\n", "print(\"Iris Setosa\\n\")\n", "\n", "display(Image(url='images/iris_versicolor.jpg'))\n", "print(\"Iris Versicolor\\n\")\n", "\n", "display(Image(url='images/iris_virginica.jpg'))\n", "print(\"Iris Virginica\")\n", "\n", "display(Image(url='images/iris_with_length.png'))\n", "print('Iris versicolor and the petal and sepal width and length')\n", "print('From, Python Data Analytics, Apress, 2015.')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Quick Question:\n", "\n", "**If we want to design an algorithm to recognize iris species, what might the data be?**\n", "\n", "Remember: we need a 2D array of size `[n_samples x n_features]`.\n", "\n", "- What would the `n_samples` refer to?\n", "\n", "- What might the `n_features` refer to?\n", "\n", "Remember that there must be a **fixed** number of features for each sample, and feature\n", "number ``i`` must be a similar kind of quantity for each sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Loading the Iris Data with Scikit-Learn\n", "\n", "Scikit-learn has a very straightforward set of data on these iris species. The data consist of\n", "the following:\n", "\n", "- Features in the Iris dataset:\n", "\n", " 1. sepal length in cm\n", " 2. sepal width in cm\n", " 3. petal length in cm\n", " 4. petal width in cm\n", "\n", "- Target classes to predict:\n", "\n", " 1. Iris Setosa\n", " 2. Iris Versicolour\n", " 3. Iris Virginica\n", " \n", "``scikit-learn`` embeds a copy of the iris CSV file along with a helper function to load it into numpy arrays:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "iris.keys()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(150, 4)\n", "[5.1 3.5 1.4 0.2]\n" ] } ], "source": [ "n_samples, n_features = iris.data.shape\n", "print((n_samples, n_features))\n", "print(iris.data[0])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(150, 4)\n", "(150,)\n" ] } ], "source": [ "print(iris.data.shape)\n", "print(iris.target.shape)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 1 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 1 1 1 1 1 1 1 1 1 1 1 1 1 1 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 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", " 2 2]\n", "['setosa' 'versicolor' 'virginica']\n" ] } ], "source": [ "print(iris.target)\n", "print(iris.target_names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Unsupervised Learning \n", "\n", "### 2.1 Dimensionality Reduction: PCA\n", "\n", "Principle Component Analysis (PCA) is a dimension reduction technique that can find the combinations of variables that explain the most variance.\n", "\n", "Consider the iris dataset. It cannot be visualized in a single 2D plot, as it has 4 features. We are going to extract 2 combinations of sepal and petal dimensions to visualize it:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y = iris.data, iris.target\n", "from sklearn.decomposition import PCA\n", "pca = PCA(n_components=3)\n", "pca.fit(X)\n", "X_reduced = pca.transform(X)\n", "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y = iris.data, iris.target\n", "from sklearn.manifold import Isomap\n", "pca = Isomap(n_components=3)\n", "pca.fit(X)\n", "X_reduced2 = pca.transform(X)\n", "plt.scatter(X_reduced2[:, 0], X_reduced2[:, 1], c=y)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcUAAAE1CAYAAACWU/udAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXecVfWd//889dbpjd67gIAgoiDW2KIxisa4lhjNrnFTNL/ETb66G/XhZrNF3Y0p6+qu0axKMNa49iiCYMUGKEiHYRhggCm3l3N+f1zO4c6d29vcmTnPx4OHzsy5p91zPq/P+/15F0HXdSwsLCwsLCxA7O8TsLCwsLCwqBQsUbSwsLCwsDiKJYoWFhYWFhZHsUTRwsLCwsLiKJYoWlhYWFhYHMUSRQsLCwsLi6NYomhhYWFhYXEUSxQtLCwsLCyOYomihYWFhYXFUeRcNm5ra7PK31hYWFhYDDhGjBghZLOdZSlaWFhYWFgcxRJFCwsLCwuLo1iiaGFhYWFhcRRLFC0sLCwsLI5iiaKFhYWFhcVRLFG0sLCwsLA4iiWKFgOCZcuWcdttt/X3aQwI/vjHPzJ58uT+Pg0LiwGJJYoW/crNN9/MNddck3G7Bx98kJ/97Gd5H2fhwoWMHDmSkSNHMmHCBObPn8/111/Pq6++mvO+7rnnHs4444y8zyVf+lvsbr75ZvMejh07lkWLFnHXXXfh8/l6bffiiy9y2WWXMX36dCZNmsSZZ57JL3/5Szo6OnptFwqFmDVrFlOmTKG7u7ucl2JhkRJLFC0qmlAoBEBdXR1ut7ugfd1yyy18/PHHrF69mt/97neMGjWKG264gdtvv70YpzokWLJkCR9//DFr167l1ltv5ZFHHuGuu+4y//7LX/6Sv/mbv+G4447jkUceYeXKldx55520trby6KOP9trXyy+/zJgxY5g3bx7PPPNMuS/FwiIplihaVBSG5fib3/yGE044gfnz5wN93acvvvgiZ511FhMnTuS4447j0ksv5eDBg2n37Xa7aW5uZuTIkSxYsIA777yTX/ziFzz88MOsWbPG3O4Xv/gFS5YsYeLEiSxcuJC7776bQCAAxKy1e++9l82bN5tW0x//+EcAHnjgAc466ywmTZrECSecwI9//GO6urrM/XZ3d/P973+f2bNnM2HCBBYtWsSDDz7Y6++33nors2fPZsqUKVx66aV8+umnAKxdu5Yf/ehH+Hw+87j33HNP2ut99dVXWbx4MRMmTGDZsmXs2rULgD179jB69Ghz3waPPfYYM2fONCciyVBV1byHX//617nkkkt45ZVXAPj444+5//77uf3227njjjs48cQTGTVqFIsXL+bXv/41119/fa99LV++nEsvvZRly5axfPnytNdiYVEucirzZmFRDt59912qq6t57LHH0PW+lQUPHDjATTfdxE9/+lMuuOACvF4vH330UV7H+uY3v8k//dM/8eKLL3LKKacA4HA4uPfeexk2bBhffvklP/3pT1FVlVtvvZWLLrqIzZs38/rrr/OnP/0JgKqqKgBEUeSOO+5g7NixtLa28vd///fcfvvt3H///QD8y7/8C5s2beKRRx6hsbGRPXv2cOjQIQB0Xeeaa66hqqqKRx55hNraWp588kkuv/xyVq1axfz587nzzjv55S9/ydq1awFwuVwprysUCnHfffdx33334XA4+Id/+Aeuv/56XnvtNUaPHs2SJUtYvnw5xx9/vPkZQ6RUVc36/tntdsLhMADPPPMMTqeTb3/720m3rampMf+/tbWVd955h/vvvx+Hw8HPfvYzNmzYwMyZM7M+toVFKbAsRYuKw2azcc899zBt2jSmT5/e5+/79+8nHA7z1a9+ldGjRzNt2jSuvPJKmpqacj6WJEmMHz+e3bt3m7+75ZZbWLBgAaNHj+bMM8/k+9//Ps899xwQE0yXy4UsyzQ3N9Pc3IzD4QDgO9/5DosXL2b06NEsWrSI2267jRdeeAFN04CYEMycOZO5c+cyevRoTj75ZC688EIA1qxZw8aNG/mv//ov5s6dy/jx47n11lsZM2YMTz31FKqqUlVVhSAI5nHTiWIkEuGuu+5iwYIFzJw5k1/96lds3ryZ1atXA3DllVfy3HPPmRbwli1b+Oijj/jmN7+Z9b37+OOPeeaZZ1i8eDEAO3bsYOzYsSiKkvGzy5cvZ8mSJTQ0NOB0OjnvvPMsa9GiIrAsRYuKY+rUqdhstpR/nzFjBkuWLOGMM85g6dKlLF68mK9+9as0NDQU5fgvvPACDz30EDt37sTr9aJpGtFoNOPn3n77bX7961+zZcsWenp6iEajhEIhDhw4wLBhw7jmmmv467/+a9avX8+pp57K2WefzaJFiwBYv349fr+f2bNn99pnMBhk586dOV+DKIrMmTPH/HnUqFG0tLSwZcsWTj31VM455xxuu+02XnrpJb7+9a+zfPly5s6dy7Rp09Lud+XKlUyePJloNEo4HOacc87h7rvvBkhq1SdD0zRWrFjRyx2+bNkyvvvd73L77bdjt9tzvl4Li2JhWYoWFYfT6Uz7d0mSeOKJJ3j88ceZPn06y5cvZ/HixWzcuDHnY0WjUbZv387YsWMBWLduHTfddBNLly7l97//Pa+88go/+clPTBdhKlpbW7n22muZPHkyDzzwAC+99BL33nsvgPnZM844g/fff58bb7yRw4cPc80113DLLbcAMaFoamri1Vdf7fXvrbfe4tZbb835ujKhKIq5lheJRHjqqae44oorMn5u4cKFvPrqq6xatYrt27fz0EMP0djYCMCECRPYtWtX2jVJgLfeeou9e/fy/e9/nzFjxjBmzBiuuuoqOjs7efHFF4tyfRYW+WKJosWARBAE5s+fz49+9CNefPFFWlpaeP7553Pez+OPP05XVxcXXHABAB988AHDhg3jlltuYc6cOUyYMIG9e/f2+oyiKH0sx08//ZRQKMQdd9zB/PnzmThxIu3t7X2OV19fz7Jly/j3f/93/u3f/o0nn3ySYDDIrFmzOHjwIKIoMn78+F7/DNFRVdV0xWZC0zQ++eQT8+e9e/eyf//+XikdV155JWvXruWRRx7B4/Hwta99LeN+HQ4H48ePZ9SoUX3cpBdffDE+n4+HH3446WeNoKMnnniC888/v88E4K/+6q944oknsro+C4tSYblPLQYc69atY/Xq1Zx22mk0NTWxYcMG2tramDJlStrPeTweDhw4QDgcpq2tjRdeeIGHH36Y6667znRjTpgwgfb2dp5++mlOOOEEVq5cybPPPttrP6NHj6a1tZX169czcuRIXC4X48ePR9M0HnzwQc4//3w++ugjHnrooV6f+9d//VczLy8ajfLSSy8xduxYbDYbS5YsYcGCBXz729/mtttuY9KkSRw4cICVK1eyZMkSFi5cyKhRowgEAqxatYqZM2ficDjM9cxEZFnmjjvu4M4778Rut3PHHXcwdepUlixZYm4zceJETjzxRO6++24uuugiM2AoX+bNm8dNN93E3Xffzb59+7jgggsYPnw4u3fv5oknnmD8+PF861vf4rXXXuOBBx7o46q94oor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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from mpl_toolkits.mplot3d import Axes3D\n", "fig = plt.figure()\n", "ax = Axes3D(fig)\n", "ax.set_title('Iris Dataset by PCA', size=14)\n", "ax.scatter(X_reduced[:,0],X_reduced[:,1],X_reduced[:,2], c=y)\n", "ax.set_xlabel('First eigenvector')\n", "ax.set_ylabel('Second eigenvector')\n", "ax.set_zlabel('Third eigenvector')\n", "ax.w_xaxis.set_ticklabels(())\n", "ax.w_yaxis.set_ticklabels(())\n", "ax.w_zaxis.set_ticklabels(())\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 Clustering: K-means\n", "\n", "Clustering groups together observations that are homogeneous with respect to a given criterion, finding ''clusters'' in the data.\n", "\n", "Note that these clusters will uncover relevent hidden structure of the data only if the criterion used highlights it." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.cluster import KMeans\n", "k_means = KMeans(n_clusters=3, random_state=0) # Fixing the RNG in kmeans\n", "k_means.fit(X)\n", "y_pred = k_means.predict(X)\n", "\n", "plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y_pred);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets then evaluate the performance of the clustering versus the ground truth" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 0 50 0]\n", " [48 0 2]\n", " [14 0 36]]\n" ] } ], "source": [ "from sklearn.metrics import confusion_matrix\n", "\n", "# Compute confusion matrix\n", "cm = confusion_matrix(y, y_pred)\n", "np.set_printoptions(precision=2)\n", "print(cm)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Blues):\n", " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", " plt.title(title)\n", " plt.colorbar()\n", " tick_marks = np.arange(len(iris.target_names))\n", " plt.xticks(tick_marks, iris.target_names, rotation=45)\n", " plt.yticks(tick_marks, iris.target_names)\n", " plt.tight_layout()\n", " plt.ylabel('True label')\n", " plt.xlabel('Predicted label')" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAVEAAAEpCAYAAAAqBxHuAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XvcpHP9x/HXdd+7a1mswzorlBWiyCEibShC4RdvRVjnsp3JTyincko6OMQ6RKX4IBH6ETmkUrsiEkUOOWxkbTks1q75/fH93hnjvu+ZvWfue6657/dzH/O4Z6655ro+M/e9n/meru+3qFQqmJnZwHS1OwAzs07mJGpm1gQnUTOzJjiJmpk1wUnUzKwJTqJmZk1wErWWKopiVFEU5xVFMbMoikpRFJNadNyHi6I4ohXH6gRFUaycP79N2x2L9a/wONHhryiKJYH/BbYHVgKeBe4DzgF+XKlU5rbwXLsAFwCbAw8Cz1QqlTktOO5SwOxKpfJCs8dql6Iorgceq1QqkxvYtxtYCphZqVReGezYbOBGtTsAG1xFUawI/AaYC3wVuAN4BXgPcDBwF3BnC085EXi8Uqn8toXHpFKp/KuVxyuzoijG5C+ef7Y7FmtApVLxbRjfgJ+T/jOO7+W50cC4qvsnAI8Dc4C/ALvW7F8BDgR+CDwHPAocUvX8TXmfntvDVdvPqTnWET3P58dvB64F/g28ANwL7F71/MPAEVWPFwHOAv4FvARMBz5Y9fzKOQblz2A2qWS8e53PazLpC+f9wN3Ai8DNwPLAZqQvoReA64EVql63CvBT4Il8rrtr4j+/5rOpAJOq4twNuCYf++Sq7Zvm1yv/XjasOuYe+b2v2+6/s5F8a3sAvg3iLxeWAOZVJ59+9v0GMBPYGVgNOAx4Fdiiap8K8CSwH/BW4LN52/urzncy8BCwLLBU3t5IEr0L+DGwJvAW4EPAdlXP1ybRS/K2rYA1gO/kJLN6fr4nCT2YE9CqpC+JucDEfj6Hyfl93wS8G3gXcD/w67xtI2BdUnPIxVWvWxuYArwjfzafyefq+WzGA7cAF+fPZllgTFWcjwGfyO99ldokmo9xNvB3YNH8O3oO+Ey7/85G+q3tAfg2iL9c2DD/R/yfOvstBLwMHFiz/XLgV1WPK8B3a/a5Dzi+6vFRwAM1+zSSRP8DTO4nxv8m0ZwQK8A2Nfv8ETgv3+9JQl+sen4U8DxwQD/nmZxft07Vti/lbetVbfsC8HSdz/UK4Oyqx9cD59fs0xPnV/rYXp1EFwTuAYJUIv5Zu//GfKu4d36YK/LPer2Hq5JKRbfUbL+ZVM2uVtt++jiwzICie72TgXOKoripKIqjiqJ4Vz/7rpl/1sZ7C/3EW0kdaE9SP94KqTreo6dt8q6abUvmDiCKolioKIoTiqK4pyiKZ4qieB7YhtSR14g/1NuhUqm8COwC/A+wNLB3g8e2QeQkOrzdT6qa1iaWvtQm26KXbbU97RXq/x29ymsJvcfo1x2kUjmWVEUNYC3gtqIovlYv4Boti7dSqcyreQ2V1/eS95yn5319g1QdP4bUnroOqY1zTEORp7bQRvQMeVqMlEitzZxEh7FKpfIM8Avg00VRjK99viiK0UVRjAMeIFXn31ezy2ak6mOzniJ1zFR7Q0mzUqk8WKlUzqhUKjuRRhJ8qo/j9cS0Wc3299KaeAdiM+DCSqVycaVS+ROpLXa1mn3mAN0DPUFRFG8HTgEOIP1eLyqKYoGBHs9aw0l0+DuQNKTp9qIodi2KYs2iKFYtiuITpB7tiZVKZTbwXeDYoih2LopiYlEUh5HGlR7XghiuB7YsikL53IeSEh4ARVEsXBTF6UVRbF4UxSpFUawLbE0aIfAGlUrl76SOpTOKotiqKIrVi6L4DqkE+40WxDsQfwW2L4piw6Io1gSm8sYvjoeA9YqieGtRFBOKohj9hqP0oSiKscBFwJWVSuVcUufe4qRmEGsjjxMd5iqVyj9y++KhpE6fN5MG299LSjh/zrseTqp2f5s0yPsB4BOVSuWGFoRxASnBnUaq3l5IStp75OfnkhLCucByOb4bSeNY+7Jvjv9HpN7qu0m9+fe1IN6B+ALp4oUbSfFPBS4l9dT3+CapF/9PwDhStf/hBo//rfyaAwAqlcqsoih2A24siuKXlUrlyha8BxsAX7FkZtYEV+fNzJrg6ryZjViSHiZdtDAPmBsR60tagnRRxMqk5hZFxKy+juGSqJmNdO+PiHUiYv38+FDghoiYCNyQH/fJSdTM7PW2J3WGkn/u0N/Ors43zz1zZvXVXmwxYI88MbOy0vJL1t1v9uzZMydPnvxw1aapETG1ZrcKcJ2kCnBWfn6ZiJgBEBEzJPV7UYOTaAu81LLZOAdmTDfMmVd/v8G2+AafbncI3HrhIWy620ntDoNZ005rdwil+bsY2+Iss9LyS7LguvX/1l6847QlI2JCnd02iYgncqL8paT5HiLn6ryZdZ6u7vq3BkTEE/nnU6QJdzYEnpS0HED++VS/oTT1RszM2qHoqn+rQ9I4SYv03Ac+SLr45Epgz7zbnqTZuPrkJGpmnaco6t/qWwa4VdKfSLNoXR0R/0ead/YDku4HPpAf98ltombWeRooadYTEQ8C7+xl+0xgi0aP4yRqZp2nwTbPoeAkamadp7Hq+pBwEjWzztOC6nyrOImaWedxSdTMrAluEzUza4Kr82ZmTXASNTNrQrer82ZmA+eOJTOzJrg6b2bWBJdEzcya4CFOZmZNcHXezKwJrs6bmTXBJVEzsya4TdTMrAkuiZqZNcFtomZmTXB13sysCa7Om5k1wdV5M7OBK5xEzcwGruhyEjUzGzCXRM3MmlCmJFqeLq4WkTRZ0vLtjsPMBk9XV1fd25DFMmRnGjqTASdRs+GsaOA2RDqiOi9pHBDAikA3cCzwAHAKsDDwNCl5bgKsD1wo6UVgY+A9wMmk9zoN+FREvCzpBOAjwFzguog4WNKHgSOAMcBMYLeIeHKo3qeZNaZM1fmOSKLA1sATEbEtgKTxwC+A7SPiX5J2Ab4eEXtL+jRwcERMlzQWOB/YIiL+JukHwKfyzx2B1SOiImmxfJ5bgY3ytn2BQ4CDaoORtD+wP0BEMKbNF08U0PYYAG698JB2h8DqqyxTijjK8Psoy9/FYHASnX93AydLOhG4CpgFrAX8UhKk0umMXl73NuChiPhbfnwBMAU4DXgJOEfS1fmYkEq6F0tajlQafai3YCJiKjA1P6zMmdfcm2vWmG5odwwAm+52UrtD4NYLDylFHLOmndbuEErzdzF2ELLMULZ51lOeSPqRk+B6pGR6PPBR4J6IWCff1o6ID/by0l6/riJiLrAhcBmwA/B/+alTgdMiYm3gAGBsa9+JmbVEidpEOyKJ5t722RHxI1L75ruBpSRtnJ8fLenteffngEXy/fuAlSWtmh/vDtwsaWFgfERcA3weWCc/Px54PN/fczDfk5kNXFEUdW+NktQt6Q5JV+XHq0j6vaT7JV0saUx/r++IJAqsDfxB0p3A4cBXgZ2AEyX9CbiT1IEEqQ30zLxvAewFXCLpbuBV4ExSkr1K0l3AzcAX8muPyvv+mtRZZWYl1MokCnwOuLfq8YnAtyJiIqnpcJ/+XtwRbaIRcS1wbS9PbdbLvpeRquk9bgDWrdltBqk6X/vaK4ArBh6pmQ2FVl32KWlFYFvg68AXJRXA5sCueZcLSIWr7/V1jI5IomZm1VrYO/9t0iicnibAJYF/534TgMeAFfo7gJOomXWcRpOopOlVD6fmkTU9z20HPBURt0ua1HPoXg5T6e8cTqJm1nEaHeIUEev38/QmwEckbUMaibMoqWS6mKRRuTS6IvBEv7E0FImZWZm0YIhTRHw5IlaMiJWBjwG/iojdgBtJHdeQRun020/iJGpmHafFvfO1/pfUyfQAqY303P52dnXezDpOqy/7jIibgJvy/QfpZfROX5xEzazjeGZ7M7MmeAISM7MmOImamTXBSdTMrAluEzUza4JLomZmTXASNTNrQper82ZmA1eigqiTqJl1HlfnzcyaUKIc6iRqZp2nu7s8WdRJ1Mw6jqvzZmZNKFEOdRI1s87jkqiZWRM8TtTMrAkuiZqZNaFEOdRJ1Mw6j6vzZmZNcHXezKwJJcqhTqKtsPj7Dm/r+W8990A23eeMtsYAMGvaae0OgTHd5YjjpTnz2h0Coxbo4qU5r7Y7DMaO6m75MV0SNTNrgttEzcyaUKKCqJOomXUeV+fNzJpQohzqJGpmnaerq6vdIfxXn0lU0h6NHCAiftC6cMzM6uuUkuh+Dby+AjiJmtmQ6og20Yh471AGYmbWqI4c4iRpcWBrYLmIOEXSskBXRDwxaNGZmfWiRAVRGmqdlfRe4G/APsDRefPqwJmDFJeZWZ+6iqLubag0WhL9DrBbRFwnaVbedhuw4eCEZWbWt1bkSEljgVuABUi58NKIOFLSKsBFwBLAH4HdI2JOX8dpdJzAKhFxXb5fyT/nAKMHEryZWTO6u4q6twa8DGweEe8E1gG2lrQRcCLwrYiYCMwi1cD71GgSvU/SljXbNgf+3ODrzcxapiiKurd6IqISEc/nh6PzrULKbZfm7RcAO/R3nEar8wcDV0i6AlhQ0unAjvlmZjakGq3OS5pe9XBqREyteb4buB1YFTgd+Dvw74iYm3d5DFihv3M0lEQj4jeS1gV2J40LnQFsHBGPNPJ6M7NW6m4wi0bE+nWenwesI2kx4HJgjV52q/Sy7b8aHuIUEY8Cx0laPCJm1X2BmdkgafVg+4j4t6SbgI2AxSSNyqXRFYF+h3E2lEQljQe+DewCLCDpZeBi4AsR8e9mgjczm18t6p1fCnglJ9AFgS1JnUo3AjuReuj3BK7o7ziNdiydBywGvBtYPP9cNG83MxtSLRonuhxwo6S7gGnALyPiKuB/gS9KegBYEji3v4M0Wp3fHFg+Il7Mj+/OE5Q83uDrzcxaphWXfUbEXcC6vWx/kPkYA99oSfQB4M0121YE7m/0RGZmrVIU9W9DpdGp8K4FrpN0AfAo8CZgD+CHgxuemdkbDeVlnfXMz1R4/wDeX/X4UeB9LY/IzKyO8qRQT4VnZh2owcs6h4SXBzGzjtMRkzJXk7Q8aZzo+4AJ1c9FRPcgxGVm1qcS5dCGe+fPzPtuCzxP6v6/GjhwkOIyM+tTi2ZxaolGk+gmwOSImA5UIuJ2YC/g84MWmZlZH1oxi1OrNNomOo80fyjAf/LlUv8hjRU1MxtSJarNN5xEpwEfIl1D+kvgx8Bs0qzPZmZDqlPGiVbbndeq/p8lXVu6MHDKYARlZtafjlvtMyKeqbo/Gzhy0CJqgKRjgFsi4vr5fN0k4OCI2G5QAjOzIVGigmi/l31+tZEDRMQxrQvndecvgCIiXu3lnA3F1oIYRlXNcG1mJdEp1fmJDby+3xmfASSdCDwSEWfkx0cBz5GaB0Raae/yvMreysAvSPP5bQzsIOloYP18rvMi4luSzgeuiohLJW1AWo10HGnhqS2AV4Dv5dfNBb4YETfWxLUEaSq/t5Dad/ePiLtyfMsDKwNPA7s28DmY2RAqUQ7t97LP3Vt0jotIA/XPyI8FnABsShpvWgBXStqMdH3+24C9IuJASesBK0TEWgB5Cv//kjSGNDn0LhExTdKiwIvA5/J7WFvS6qTJU1arieto4I6I2EHS5qRlT9bJz60HbFo19d/rSNof2D+fg1vPbe9w2dVXWqrtMQCMKcFlFwXliGPUAo2OHhw83V2wcAniGAyNLg8yFAb9ss+IuEPS0vmqp6VIS5C+A/ggcEfebWFSyfcfpFLrbXn7g8BbJJ1KGtx/Ha/3NmBGREzL53oWQNKmwKl5232SHgFqk+imwEfzPr+StGSewR/gyr4SaN5/KtCz4FVl033O6GvXIXHruQfS7hgAZt389XaHwJhumDOv3VHAS3Pe0Ao15BZeoIvnX25/HIst1PpvtY677LMFLiVNt78sqWS6MnB8RJxVvVOuzr/Q8zgiZkl6J7AVMIVUit276iUFvTcpNPIJ97ZPz7Fe6OU5MyuJEnXON3zFUrMuAj5GSqSXkuYn3VvSwgCSVpC0dO2LJE0AuiLiMuArwLtqdrkPWD63iyJpEUmjgFuA3fK21UgTSv+15rXV+0wCnu4pyZpZuXXiZZ9NiYh7gEWAxyNiRkRcRxqw/ztJd5MS6yK9vHQF4CZJdwLnA1+uOe4c0uJ5p0r6E+lCgLGk9tfufOyLSZesvlxz7KOA9fP6KieQFqQysw7QVdS/DZWiUqnbwQ6ApPeTSpPL5M6YdwGLRMTNgxlgB6gsuMnhbQ3AbaKvKU+baPuDKFmbaCvTWuWQq2srlm900rZva/V5e9VQSVTSgaQV7x7ltdnt5wDt/19jZiNOi1b7bE0sDe53ELBlRHwN6PlquxdYY1CiMjPrR3dR/zZUGu2dXwR4JN/vqf+P4rWZnczMhkyZrlhqtCR6K3BwzbYpwEhvDzWzNuiIJZNrfAa4StJ+wCKS7iGVQrcZtMjMzPrQceNEI+Jx0qWQe5LWmz8AWD8iZgxibGZmvSrTONGGr1jKsyn9Jt/MzNqmTCXRRlf7fIg+ZmyKiLe0NCIzszqKEi0Q0mhJdN+ax8uR2kl/0tpwzMzqG1Wiyakandn+htptkm4AriFNc2dmNmSGyyxOL5ImNDYzG1Kd2CZauxzHQsC2vHF+TzOzQdeKgqikN5EmY1+WdCXm1Ij4Tl714mLSlJ0PA4qIWX0dp9GWhYk1t8WA00mrgJqZDalRXUXdWwPmAgdFxBrARsAUSWsChwI3RMRE4Ib8uO9Y6p1FUjdpirmIiJcaiczMbDC1oiSax7nPyPefk3QvafrN7YFJebcLgJtIy8T3qm5JNCLmAac6gZpZWXRR1L0BSJpeddu/r+PlVTXWBX5Pmu6zJ7nOAN4wYXy1RjuWrpa0TURc0+D+ZmaDptGSaESsX2+fvMLGZcDnI+JZSfMVS6NJtAv4qaRbSXOK/nfgfUTs3eerzMwGQYNtnnVJGk1KoBdGxE/z5iclLRcRMyQtBzzVbywNnut+4BsDD9XMrHVa1DtfkCabvzciTql66krSPCE9ywZd0d9x+k2ikj4eET+JiK80Ga+ZWcu0aD7RTUgjjO7O67gBHEZKniFpH9Iy7jv3d5B6JdGz8KWdZlYyrZi5PiJupe81mLZo9Dj1kmiJrgswM0s66bLP7rzKZ58RR8SvWhuSmVn/ypNC6yfRBUgNr33FXMHXz5vZECvTGkv1kugLni/UzMqm4yYgMTMrk05qEy1PpGZmWYnmZO4/iUbEIkMViJlZozqpTdQacNW5X2jr+SeuNL7tMdjrbXzs9e0OgUumbMTOp9/W7jC49/itWn7MTqrOm5mVTsdU583MysglUTOzJniIk5lZE7pKNHDISdTMOk6JavNOombWeQqXRM3MBq67REVRJ1Ez6zglyqFOombWeZxEzcya4Oq8mVkT3LFkZtaEEhVEnUTNrPO4JGpm1gS3iZqZNaFEOdRJ1Mw6T4lyqJOomXUez2xvZtaEEuVQJ1Ez6zzunTcza4JLomZmTXASNTNrgqvzZmZNcEnUzKwJrcihks4DtgOeioi18rYlgIuBlYGHAUXErP6OU6blm83MGlIURd1bA84Htq7ZdihwQ0RMBG7Ij/vlJGpmHaco6t/qiYhbgGdqNm8PXJDvXwDsUO84rs6bWcdptDovaXrVw6kRMbXOS5aJiBkAETFD0tL1zuEkamadp8EsGhHrD24grs6bWQfqKoq6twF6UtJyAPnnU3VjGeiZzMzapWjgNkBXAnvm+3sCV9R7Qamq85KWB74bETvN5+vOAU6JiL/0s88ngdkR8YMmwzSzdmvBGCdJPwEmARMkPQYcCZwAhKR9gH8AO9c7TqmSaEQ8AbwhgUoaFRFz+3ndvg0c+8wmwzOzkmjFVHgR8fE+ntpifo7TtiQq6UTgkYg4Iz8+CngO2Csi1pI0GdgWGAuMk7QlcBrwPuAhUlPEeRFxqaSbgIMjYrqk54HvkAbRvghsHxFP5uM/HxEnS1oVOBNYCphH+rZ5klR0XxwYDRwREXWL8mY29Ep0wVJbS6IXAd8GzsiPBXwS2Ktqn42Bd0TEM5J2Il1FsDawNHAvcF4vxx0H3BYRh0s6CdgP+FrNPhcCJ0TE5ZLGkhLyHGDHiHhW0gTgNklXRkSl9gSS9gf2B4gINlhp/Py/+xYat0B322MAGNPd7gjSf64yxHHJlI3aHQJvXXpcKeIYFCXKom1LohFxh6SlczvoUsAsUhtEtV9GRM9g2E2BSyLiVeCfkm7s49BzgKvy/duBD1Q/KWkRYIWIuDzH8VLePho4TtJmwKvACsAywD97iX0q0DPerDLtkf80+K4HxwYrjafdMQBssuqEdofAmG6YM6/dUcDOp9/W7hC4ZMpGpYjj3uO3avkxyzQBSbt75y8ltYHuQiqZ1nqh6n6jn9orVaXHebzxi6Kv4+xGSubrRcQ6pOr92AbPaWZDqKuofxuyWIbuVL26CPgYKZFeWmffW4GPSuqStAypV22+RcSzwGOSdgCQtICkhYDxpIkIXpH0fmClgRzfzIbAII5xml9tTaIRcQ+wCPB4z6VW/bgMeAz4M3AW8HtgoHXY3YHPSroL+C2wLKmddP18mdhuwH0DPLaZDbKigX9DFkul8oZ+k9KStHBEPC9pSeAPwCYR8YY2yyFWueG+p9sagNtEX1OWNtF1v3Jtu0MoW5toK7Na5YGnXqy706pLL9jq8/aqVONEG3CVpMWAMcCxJUigZtYGnpR5gCJiUrtjMLP2K1PvfEclUTMzcEnUzKwpTqJmZk1wdd7MrAkuiZqZNaFEOdRJ1Mw6T4OreQ4JJ1Ez6zglyqFOombWeUqUQ51EzazztGJm+1ZxEjWzzlOeHOokamadp0Q51EnUzDpPiWrzTqJm1nk8xMnMrAnlSaFOombWgUpUEHUSNbPO4wlIzMya4JKomVkTnETNzJrg6ryZWRO6ypNDnUTNrAM5iZqZDZyr82ZmTWhVx5KkrYHvAN3AORFxwvweo6s1oZiZDZ2iqH+rR1I3cDrwIWBN4OOS1pzfWJxEzazjFA38a8CGwAMR8WBEzAEuAraf31hcnW+BLVaf0O4QShFDWYwtwV/1vcdv1e4QgPLE0WKPLDialertNHv27JmTJ0+eXrVpakRMrXq8AvBo1ePHgHfPbzAl+HPreG1v4ZY0PSLWb3ccZeDP4jXD+LNYuZGdFlpoISKiv116+79bmd9gXJ03s5HqMeBNVY9XBJ6Y34O4JGpmI9U0YKKkVYDHgY8Bu87vQVwSHR6m1t9lxPBn8Rp/Fv2IiLnAp4FrgXvTprhnfo9TVCrz3QRgZmaZS6JmZk1wEjUza4KTqJlZE5xEbUST1PZxvtbZnERtxJJUREQl399d0qbtjsk6j5PoCCDJ44F7UZVAtyaNEfxreyMaei6JN89DnIY5SQeSrgd+GLg+In7d3ojKRdKGwMGkiSgOy9v+W0Idznrep6QPAKsBL0fEOe2Oq9O4JDqMSZoC7AycRpqx5jhJH25vVO3VS8lrJvAP4B2SNoFUQh0JJbT8PrcBvg38DfimpBPyFHHWIJdEhylJiwKfJU04uzewNXAZsAdwYkRc3cbw2qKmDXQ70mQTM4G7gS+TLoO+IiJ+174oh46kJYCfAAeRZjT6OukzmAYcEBGvtjG8juGS6DAkaZ2IeBY4FVge+AjwP8CVpBm8p0gaNxJKWzUKAEmfBI4D1gd+CuxI+rJ5Gdg1V/GHpZ7fuaQlIuIZ0rXiFeBrecanbYB9gGNG4N/HgDiJDjOSPkf6D7BiRPyH9Dt+kfQfZRIwHZgcES+MhHY/AEmr51Loq5KWJ080ERFHk0roxwKbAN8DZgAPtS/awVPVBrod8BNJy0XETFLp8x+SFgCWAn4EXDtS/j6a5SQ6jEjanlSy2CMiHpO0bETcS5qhJkilr7Mj4ql2xjmUJC1M6jg6KyeRJ0idbGMldUfEXaTq7HYR8U/g5Ij4V/siHjw5gW4CfA34ekTMyE89B/wT+D6pyefciPi1S6KNcRIdBiT1/B5XAv4IrCrpGOAqSb+NiAOATwIbRcSf2xVnm8wmdazNI3WgQPpSOQgYnx8vCSyQP8dXhjzCQSRpGUkfqtq0Imm2olskLUh68CCpFH42qZZyc97ukmgD3LE0DEhaPCJmSVqcVOKcB1wAXA2cAxwXEXe2M8ahVtOJ1AWsAXwJeDwiDpd0JrAsqRS2OrDXcPyCkfRR4C7gX8ALpKaMAyNi46p9NgbmRcQf2hNlZ3MS7XCS9ictrvUwcGdEnF313PbA8cAWVVW3Ya8mga4CVCLi4byS4xeBf0bEEZLeTuqV/ltEPNy+iAdX7oU/BvhdRFwo6cfAosC+wNuBs4D9I+JXbQyzYzmJdrBcyjiKNIRpNVLH0UzgCFJv/NHAzsOxhNUISV8AdiE1W91DagtcCPg8MBf45HCtstZ8kYwhJcw1gRuBq4AzgMWACaQhb9e0K9ZO5zbRDtJLQ/+iwDkRMY00VOd7pCFNbwJuBrYewQl0Y1IC/QDwHlLS/GJE3A18C3gJWKZ9EQ6u3In0Xkk7Am+NiDNIIzO2AD4UEftExEeBHSLiGnciDZyTaIeQNBrYMt//tKRJwCzSmM81IuLFiPgjsDgwISKejIhH2hfx0OolCTxP6kAanZeB+CTwbkn75C+WL+Xe+GGlp5NR0gbAD0lXrB0qaXJEnA/8Dtg+T7hSAP8GdyI1w0m0c3QDO0r6DXAA8HBE/Aw4EzhV0iRJOwNLM4AVCztZTdV1T0nvII2NfZl0Oef4iJhHKq2/BBARc9oW8CDIYzzJY2G3BPYilTJ3JQ1bmpQT6Q+BW4A/RkTFybN5TqIdIiJeAi4iVUH/ADyaZ2c6i3Ql0sGkntf9IuLxtgXaBlUJdAqp42hORDwA/Ip06ethecjXHqQq7bAiaQJpXoSF86Y1SCXvnuWAf01KpNtI2jcivj+QBdmsd06iHSL/R7kf2Jh0+eK3SNX2F0jtotsBH8uDx0cESUv2TPMnaTlAwEci4j6APCPRmcB9wOj83LCb7i4ingZOByYMBN3xAAAJBElEQVRIWjciTgUOAS6QNDEiZgG3Aj8mXRdvLeTe+Q6QS1jbAg+Qlnb9AWkc6AOkweE7kjpPnhsp1TNJq5KS5inAHNKA+Z8DH4yIZyWNiYg5kibkJDMs5auu5uX7XyV1HH0uIu6U9CXgC8CWEfEXSaNy+7C1kJNoyUn6GKlq9gngBGBURHxM0mLAFFJv/FkjqQTaI19csDKwdERcK+ks0nXgB0TEXEl7kzpWdiTNlTks/9jzF8qSEfF7SYeRvlC/EhF3SDqCdHXWisCLnpmp9ZxESyy3cX0QeARYD9gJ2CYniFUi4qGRVrro6YWvagc9mpRIzyVNHvIZ4L2kUumHgd2H4zCvqslE3kMaSL8Q8KmI+FNOnBsAx0bEdElvyZd22iBwEi0ppRnpFyD1Jp8I/CEieoY47QesCnw1Il5uX5RDq6YXfkfgyYj4bU4ay5M6T24klT5nA/dFxP1tC3iQSdqCdEXaCcB+wGPA1IiYJulrpC9eAc8P11J4GTiJlpCkA0hzOu4YEY9LOpF0tckUYDvSEKddR2oPq6QvAh8nzVZ1b952MPA24GLg5ogYVhOJ9EbSycBTEXFSHuJ0LPAu4KBcIp04nL9EysJJtGTyzDo/IV19dDupVLUCsCeplDUWOHokJdCaEuhawFTgfbw2R+oKEXGBpMNJ82EeFhGz2xXvYFNa0qMbWIT0ORyTv2xHk4ZwXQ8cGRHPa4SsF9VOTqIllCcV+SSpevZXUpvom4EjgVdGWhtoVQLdljQ64STSMK9/ksbNLgn8PCJOGQG98euQ5oX9KuliginAb0ljQbuAk0kXXFwWEae0K86RxONEy+kHpCr75Ij4Eunyzg2AYiQlUHhdB9IHSFPZvUCaWOVR4LSI2In0eY3L+w+rBCppldz+2zMW9vPAqxExPc8DcAOwDmnKw5+Sxod+j7wUig0+l0RLLF8HvRfpP87Hh2MvcyMkbQRcDnw+Ii6ueW4fUmls9+HYxCFpPVJh576IeC4P2zqA1IF0bt5nCdKXyCukNtGTgF2G4+dRRi6JlttY4FVAIymB9jKZyB9Js1Id2XONuKQFJb2NtEbSnsM1YUTE7cDTwHRJe0fEeaSZ+jeStHve55mIeJQ0kuNTpC/cYfl5lJFLoiU30joGatpAtyKVsO4kJZLjgImkUQuz8zyZ3RHxYtsCHmSSliYNX5pBmhN0akScL2k30sqc10XEBVX7jxluk6uU3ah2B2D9G0kJFF7XBnowabD8dNLkKl/OP08EbpQ0aTgnzyozgXcCS5A6G78v6ZVIM9R3A3fU7D/sh3aVjavzVjp5GY+1IuJ9pDlBnyVNoPEKKZn+mjSUadiStLykt+br4g8krVwwHvgccLSkPSLiB7lz6b9G2pduGbg6b6WSJxPehHxNPGmS6Y9ExCuSBFwfEc+0McRBJ2kcqcS9InAFcCFpIpFHI+LH+UqlORHx6zaGaZmTqJVG7lA6CHg3ac7UrYFPR8S9kibn57aKtHb8sCZpUeAdpFmqLicNqp9Imjvhr3mfEdVeXlZOolYKkhbKnUWjgF+QxsY+BrwFeIpUOtVI63WWtDzpkt+PkBYk3CzSMjBWEk6i1naSNieVtKZFxFV5YP1awP+RqvRLkJazGDFrRvVG0moR8bd2x2Gv5yRqbSfpLcDmpKU9ziatzPlR4JCI+EM7YysDSV3V84C6Gl8uTqJWGpJWI60TtQCpF/4S0mTUc500rKycRK1U8hVJBWlMaLj6amXnwfZWNnNyqfNr7Q7ErBEuiZqZNcFXLJmZNcFJ1MysCU6iZmZNcBI1M2uCk6iZWROcRK1tJK0sqZKvl0fSLyTtOQTnPUrSj/p4bpKkxxo8zmRJtw4whgG/1srF40StX5IeJq2oOY+0SNw1wGci4vlWnysiPjQfMe0bEde3Ogaz+eWSqDXiwxGxMGkRtA2AI2p3kFTkhfXMRhSXRK1hEfG4pF+QZlhC0k3Ab4BJpAS7tqR/kebA3Ia0yN73gSMjYl5ezuJEYDJptvpvVh8/H+9HEXFOfrwfaVKSFUlLJH+CNDnxm4GfS5oHHBMRJ+UVQU8hTRv3CPC5iLgpH2cV4Pwc423AXxt9z5IOJa1xtHSO4fCIuLxql0LSqcAepHWQpkTEDfm14/v6LBo9v5WfSw7WMElvIiWE6nV9dgf2BxYhJa8LSLMwrQqsC3yQtMAapGS0Xd6+PrBTP+faGTiKlJwWJc2nOTMidgf+QS4d5wS6AnA16VLRJUjX3V8mqWcJkR8DtwMTgGOB+Wl3/TvwXtLSHEcDP8rrv/d4N/BgPvaRwE/zEsbU+SxsmHBJ1BrxM0lzgf+QktVxVc+d3zNRsqRlgA8Bi+VF5F6Q9C1Skj0LEPDtvLwvko4nlWJ7sy9wUkRMy48f6Ce+TwDXRMQ1+fEvJU0HtpF0I6kJYsuIeBm4RdLPG33jEXFJ1cOLJX0Z2JC0bAekCaO/na/3v1jSQcC2kq6j/8/ChgknUWvEDv104jxadX8lYDQwIy2HBKTaTs8+y9fs398ky28ilQIbsRKws6QPV20bDdyYzzkrIl6oOe+bGjmwpD1ITQor500Lk0qdPR6vmabvkXzOep+FDRNOotas6gTyKPAyMCEi5vay7wxen7ze3M9xHwXe2sA5e/b9YUTsV7ujpJWAxSWNq0qkb+7lGG+QX3s2sAXwu9yueydpqr4eK9RMkvxm4ErqfxY2TDiJWstExIxcjf2mpK8AzwOrACtGxM1AAJ+VdBVpuNSh/RzuHOCUPJbyj6SE+kpeIuRJ0tpLPX4ETJO0FXA9qQS4EfBARDySq/ZHSzqMVBX/MCnR1TOOlGz/BSBpL3KnWpWl83s6A9gBWIPUtDCzzmdhw4Q7lqzV9gDGAH8hLTZ3KdDTEXM2cC3wJ1Ji/GlfB8ltkV8ndQo9B/yM1GkEcDxwhKR/Szo4t7FuDxxGSniPAl/itb/vXUkdQM+QOn9+0MgbiYi/kEYQ/I6UuNcmjUao9nvSKpxP53h3ioiZDXwWNkx4PlEzsya4JGpm1gQnUTOzJjiJmpk1wUnUzKwJTqJmZk1wEjUza4KTqJlZE5xEzcya8P+uIjHFWWrTgwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plot_confusion_matrix(cm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### A First Model for Classification: Logistic Regression" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7066666666666667 0.6 0.6241 0.015221001573118932\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", "from sklearn import model_selection\n", "\n", "errors = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, test_size=0.4, random_state=i)\n", "\n", " clf = LogisticRegression()\n", " clf.fit(X_train, y_train)\n", " y_pred = clf.predict(X_test)\n", "\n", " acc = float((y_pred == y_test).sum())\n", " err = 1- acc / n_samples\n", " errors.append(err)\n", "\n", "plt.plot(list(range(1000)), errors)\n", "\n", "errors = np.array(errors)\n", "print(errors.max(), errors.min(), errors.mean(), errors.std())" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6666666666666667 0.6 0.6203333333333333 0.009017267386027282\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "errors = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = model_selection.train_test_split(iris.data, iris.target, test_size=0.4, random_state=i)\n", "\n", " clf = RandomForestClassifier()\n", " clf.fit(X_train, y_train)\n", " y_pred = clf.predict(X_test)\n", "\n", " acc = float((y_pred == y_test).sum())\n", " err = 1- acc / n_samples\n", " errors.append(err)\n", "plt.plot(list(range(1000)), errors)\n", "\n", "errors = np.array(errors)\n", "print(errors.max(), errors.min(), errors.mean(), errors.std())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recap: Scikit-learn's estimator interface\n", "\n", "Scikit-learn strives to have a uniform interface across all methods,\n", "and we'll see examples of these below. Given a scikit-learn *estimator*\n", "object named `model`, the following methods are available:\n", "\n", "- Available in **all Estimators**\n", " + `model.fit()` : fit training data. For supervised learning applications,\n", " this accepts two arguments: the data `X` and the labels `y` (e.g. `model.fit(X, y)`).\n", " For unsupervised learning applications, this accepts only a single argument,\n", " the data `X` (e.g. `model.fit(X)`).\n", "- Available in **supervised estimators**\n", " + `model.predict()` : given a trained model, predict the label of a new set of data.\n", " This method accepts one argument, the new data `X_new` (e.g. `model.predict(X_new)`),\n", " and returns the learned label for each object in the array.\n", " + `model.predict_proba()` : For classification problems, some estimators also provide\n", " this method, which returns the probability that a new observation has each categorical label.\n", " In this case, the label with the highest probability is returned by `model.predict()`.\n", " + `model.score()` : for classification or regression problems, most (all?) estimators implement\n", " a score method. Scores are between 0 and 1, with a larger score indicating a better fit.\n", "- Available in **unsupervised estimators**\n", " + `model.predict()` : predict labels in clustering algorithms.\n", " + `model.transform()` : given an unsupervised model, transform new data into the new basis.\n", " This also accepts one argument `X_new`, and returns the new representation of the data based\n", " on the unsupervised model.\n", " + `model.fit_transform()` : some estimators implement this method,\n", " which more efficiently performs a fit and a transform on the same input data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Flow Chart: How to Choose your Estimator\n", "\n", "This is a flow chart created by scikit-learn super-contributor [Andreas Mueller](https://github.com/amueller) which gives a nice summary of which algorithms to choose in various situations. Keep it around as a handy reference!" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(url=\"http://scikit-learn.org/dev/_static/ml_map.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Original source on the [scikit-learn website](http://scikit-learn.org/stable/tutorial/machine_learning_map/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Machine Learning for Risk Management\n", "\n", "There are several applications of machine learning for Risk Management" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Credit Scoring\n", "\n", "The objective in credit scoring is to classify which potential\n", "customers are likely to default a contracted financial obli-\n", "gation based on the customer’s past financial experience,\n", "and with that information decide whether to approve or\n", "decline a loan.\n", "\n", "![Intrusion Detection](images/credit-score.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Income Prediction\n", "\n", "Many businesses would like to personalize their offer based on customer’s income. High-income customers could be, for instance, exposed to premium products. As a customer’s income is not always explicitly known, predictive model could estimate income of a person based on other information.\n", "![Income](images/income.jpg)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fraud Detection" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fraud detection is one of the earliest industrial applications of data mining and machine learning. \n", "Fraud detection is typically handled as a binary classification problem, but the class population is unbalanced because instances of fraud are usually very rare compared to the overall volume of transactions. Moreover, when fraudulent transactions are discovered, the business typically takes measures to block the accounts from transacting to prevent further losses. Therefore, model performance is measured by using account-level metrics, which will be discussed in detail later.\n", "![fraud Detection](images/fraud.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.3" } }, "nbformat": 4, "nbformat_minor": 1 }