{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 01 - Introduction to Machine Learning\n", "\n", "by [Alejandro Correa Bahnsen](albahnsen.com/)\n", "\n", "version 0.2, May 2016\n", "\n", "## Part of the class [Machine Learning for Security Informatics](https://github.com/albahnsen/ML_SecurityInformatics)\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. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "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": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEECAYAAAAh5uNxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X14VNWdB/DvzSST13nJhEzeSUhIiEwhEcK7yGtrS9EG\nZEfYVmGrUlnY0qxo11q0W1R0pSIrStttC13dFoMKKAhaEURBEBREJyBGCBiSkEmGTGaSTMJM7v4R\nnCESIMncmTvJ/X6ex8e5kzv3/HK4ub8559x7jiCKoggiIlKcMLkDICIieTABEBEpFBMAEZFCMQEQ\nESkUEwARkUIxARARKVS4vweor6/H2rVrYbfbIQgCpk2bhhkzZsDpdOLZZ5+F1WqF0WhESUkJYmJi\npIiZiIgk4HcLQKVSYf78+XjmmWfw+OOP46233sK5c+ewZcsWDBs2DGvWrIHJZMLmzZu7dTyLxeJv\nSP0G68KHdeHDuvBhXfj0pi78TgB6vR5ZWVkAgKioKKSlpaG+vh6HDx/GpEmTAACTJ0/GoUOHunU8\n/oP6sC58WBc+rAsf1oWPLAngcrW1tThz5gzy8vJgt9uh1+sBdCQJu90uZVFEROQnyRKAy+XCM888\ngwULFiAqKuqKnwuCIFVRREQkAb8HgQHA4/Hgd7/7HW6++WaMGjUKQMe3/oaGBu//dTpdl5+1WCyd\nmi5ms1mKkPoF1oUP68KHdeHDuvAxm80oLS31bptMJphMpmt+RpBiMri1a9dCo9Fg/vz53vdeeukl\nxMXFobi4GFu2bEFTUxN+/OMfd+t4VVVV/obUL2g0GjgcDrnDCAmsCx/WhQ/rwic1NbXHn/G7BXDi\nxAm8//77GDhwIB588EEIgoB58+ahuLgYq1evxu7du5GYmIiSkhJ/iyIiIglJ0gKQGlsAHfjtxod1\n4cO68GFd+PSmBcAngYmIFIoJgIhIoZgAiIgUigmAiEihmACIiBSKCYCISKGYAIiIFIoJgIhIoZgA\niIgUigmAiEihmACIiBSKCYCISKGYAIiIFIoJgIhIoZgAiIgUigmAiEihmACIiBSKCYCISKGYAIiI\nFIoJgIhIoZgAiIgUigmAiEihmACIiBQqXIqDrFu3Dp988gl0Oh1WrVoFANi0aRN27doFnU4HAJg3\nbx4KCwulKI6IiCQgSQKYMmUKfvCDH2Dt2rWd3p85cyZmzpwpRRFERCQxSbqA8vPzERsbe8X7oihK\ncXgiIgoASVoAV7Nz507s3bsXOTk5uOuuuxATExPI4oiIqAcClgBuueUWzJkzB4IgYOPGjfjrX/+K\nRYsWXbGfxWKBxWLxbpvNZmg0mkCF1aeo1WrWxSVy1oXb7YHFYkVz80UMHmxAYuKVrd1g4nnhw7ro\nrLS01PvaZDLBZDJdc/+AJQCtVut9PW3aNDz11FNd7tdVkA6HI1Bh9SkajYZ1cYmcdfH++9X4yU/e\nhNvdjnnzbsAjj4yBVhshSywAz4vLsS58NBoNzGZzjz4j2W2goih26vNvaGjwvj548CAyMjKkKooo\naEQReO65I3C72wEAf//7cVRXN8scFZE0JGkBrFmzBmVlZXA4HFi0aBHMZjMsFgsqKiogCAISExOx\ncOFCKYoiCqqwMAHDhg3Avn3nAABarRpxcfJ9+yeSkiCG4K06VVVVcocQEqRq3ra1tePo0XocOFCF\nkSOTUFSUiMhIlQQRBo+cTf2amha88sqXOHu2EfPnm2AyxcsSxzfY7eHDuvBJTU3t8WcCehcQhYay\nsguYPXsLvkn1W7YUY9SoRHmD6kOSk6Pxb/9WAIC3NlP/wqkgFKCmphmXX7eqqpzyBdNHfXuMi6g/\nYAJQgNxcPRISogEAGo0a+fkGmSMiolDALiAFyMnR4PXXi3HunBMpKbHIzuZ900TEBKAYWVlxyMqK\nkzsMIgoh7AIiIlIoJgAiIoViAiAiUiiOAVBIq6pqRlVVE5KTXUhPj5I7HKJ+hQmAQlZlZTPmzduG\nU6fs0GrV2LKlGEOG6OQOi6jfYBcQhawvv2zAqVN2AEBjYxs+/vi8pMcXBAGCIEh6TKK+hC0AClkJ\nCVEQBHifYk5Pl+75hTNnmrBhw+dobW3HvfcOw6BBvEWWlIcJgEKO2y3izBknoqLCsXXrLGzdWo5x\n49IwYoQ08xc1N7uxbNke7N/fMengwYNVePXV26DXc5ZPUhYmAAopogi8/fbX+NnP3kZ7u4hnnpmM\nRx4ZA71eA6dTmjmMXC4Pyst961WcOmWHy+UBwARAysIxAAopFy60YfnyD9De3tHv8x//8T7q6lqv\n6Ks/f96FL76ww2Zr63EZOp0aDz00xrv98MNjYTCo/QucqA9iC4BCSmSkCmlpcaipaQIApKTEQq3u\n/D3l9Gkn5s59A5WVTtx8czrWrJkCo7H7t4iqVAKKi7MxbNgAtLeLyM7WXlEGkRIwAVBIiY1VYc2a\nqVi16hDa2trxwAOjrvh2/sEH51BZ2dEdtHdvJU6cuACjMaVH5ajVYbjhBn2n95qbPYiMVEHVt9bK\nIeo1JgAKOYMGxeGFF6YC6HoBlm+mtv6Gv0s0ejwi9u6txhNPHEB2th6//vUYZGTE+nVMor6ACYBC\n0rUWXxkzJgm//OVo7N59FnfdZcLQof4t0VhR4cSCBTvgdrejrKweRmMMHntsHBeAoX6PCYBkdfZs\nEy5ccCE1NRaJid3rx09IiMTSpYVYvLhAku6a1lYP3O5277bV2uz/QYn6AI58kWy++KIRP/jBq5gx\n4zXMn78T1dUt3f6sKIqS9dVnZsbhwQdHAQAMhigsXTqC3/5JEdgCINm8/34lGhpaAQCffmpFeXkD\nUlKir/Mp6cXGhmPhwmEoLs5FVJQKSUmcdI6UgQmAZHP51A6CAOj18l14o6NVyMzkwC8piyQJYN26\ndfjkk0+g0+mwatUqAIDT6cSzzz4Lq9UKo9GIkpISxMTESFEc9RNjxyZh1arJ+PDDc5gzZwjy8/XX\n/1A/Z7O1oby8ATExEcjL0/H5BAooSc6uKVOm4OGHH+703pYtWzBs2DCsWbMGJpMJmzdvlqIo6kf0\nejXmzcvFc89Nwc03pyAiIjgzczY1uXHgQC127vwalZWhM+Db2HgRjz66H7NmbcX3v/8K3nmnUu6Q\nqJ+TJAHk5+cjNrZz8/nw4cOYNGkSAGDy5Mk4dOiQFEVRPxTsAde33jqL22/firvv3om77noTtbWu\noJZ/NbW1LXjttS8BdMyJ9PvfH8XFixyMpsAJWPvSbrdDr+9o0uv1etjt9kAVRdRtgiB4L7IA8MUX\nF2C1dv/uo0CKi4tAUpKvm3TUqOSgtYpImYI2CHy1hTcsFgssFot322w2Q6ORbt73vkytVrMuLpGq\nLkRRxK235mD37rMAgKwsHVJStCFRz3FxcXjllVnYsuUkkpJiMWNGTpdx8bzwYV10Vlpa6n1tMplg\nMpmuuX/AEoBer0dDQ4P3/zpd10v5dRWkw+EIVFh9ikajUXxdtLa24/jxC2hpaUdOjhZGY6Tfx5wx\nIxOpqTPR0NCK4cMTYTCoQqaes7NjcP/9N3q7xbqKi+eFD+vCR6PRwGw29+gzkiUAURQ79eWOHDkS\ne/bsQXFxMfbs2YOioiKpipKNxyPi888v4LPP6pCfb8Dw4QbepRFgb711FosW/QMAMGXKQDz33BTE\nx/s3dbNGE4GJE32Tx9XXt6KiwgGNRo3BgzUIC5O324UPoVGwSJIA1qxZg7KyMjgcDixatAhmsxnF\nxcVYvXo1du/ejcTERJSUlEhRlKyOH2/Arbe+Bo+n4w/09ddnYeTIATJH1X95PMD69Z95t3fvPgur\ntaVXCaClxYOmJje02ohOSdtma8OyZe/h7bfPIDw8DBs3zsS4cUmSxE8U6iRJAEuXLu3y/eXLl0tx\n+JBRVeX0XvwB4MyZRiaAAAoPFzBpUgY++qgGAJCWFgedruddQNXVLXj00f3Yt+8cfvrTYbj33u9A\nq+2YQfTcOSfefvsMAMDtbsdf/vI5xo9P5rdwUgQ+CdwDgwbpoNWq0djYhqgoFYYMMcgdUr8miiLu\nvPMGZGfr0djYhvHjU72LxF/lnoIuffDBOWzffgoA8MwzhzFhQhrGjjUCALTaSGg0ajgcHSuL3Xij\nESdP2lFR0YhBg7QYPFgr+e9FFCqYAHogN1eLN96YjbNnG5GWFochQ7oe2CbpJCRE4rbbsnD8eCPu\nuOMNOBxt+O//nobp09O63Vd/easNgHe5SQDIzIzFK6/chldeOYmcHD1uvNGI6dM3we1uh1arxrZt\ns5GT0/O7TKxWF5qa3EhMjEJsLP/MKDRxBLOHBg/WYOrUNF78g8jlaseyZbtRVeWEw9GGe+99q0cz\nh06cmIbJkzMQFaXCffcVwGTqvH7Ad74Tj//8z7G4884h+PRTq3dq6MbGNpw509jjeMvLHZgx4zVM\nmPB3PPHEIdjtF3t8DKJg4FcTCnmC0DEe8I2e3qWTlhaDP/xhOpqa3NDrIxAZeeU80t/0+efl+ZJD\nZKQKqalxPYxVwMaNJ1BV1bGm8YYNn2P27FyOFVFIYgKgkBcZGYZVq6Zi4cKdaGxswzPPTEFqas8m\nFoyLC0dc3PVP94KCBGzdOgtnztiRn29Afn7PWnqiKCIx0TeltSAA0dH8M6PQxDOT+oQbb0zG1q0/\ngtstXrFIvJTU6jAUFQ1AUVHvv7HfdlsOvvrKjqNHa/Hzn49Abi4Hkik0MQFQnyAIgvfWzVCXkhKN\nJ5+cgLa2dkRFcZiNQhfPTqIACAsDL/4U8niGEhEpFBMAyeJqs8MSUfBwDICC6uLFdnz8cR0++KAS\no0enYPRoI6Kirrwtk4gCjwmAgspiuYA5c7bim6l2XnvtRxgzxihvUEQKxQRAAVVd3YJz55xISIjG\noEFxOH++GZfPs1Zd3SRfcEQKxwRAAVNZ2Yyf/GQ7vvyyARqNGlu2FCM3Nx6JidGwWlug1aoxdGiC\n3GESKRYTAAXMV1814MsvGwAADkcbDhyoxoIF+di6dRaqqpxITo7BoEFczo9ILkwAFDAJCdEICxO8\ns28OHNjxRGxmZiwyM2PlDI2IwARAAZSfr8PLL9+KnTtPo6goGaNGJcodEhFdhgkgBLW3iygra8DZ\ns18jMzMOQ4fG92gBlFARHh6G8eOTMGGCPCtsnTrlgNN5ERkZcX6vI0zUHzEBhKCysgb88Ievwe1u\nR0REGLZvvx0mkz5o5VdXt6CxsQ1GY7QkF045Lv4ff1wHs/l1uFweFBcPxuOPT4BezyRAdDk+CRyC\nKioavYuSXLzYjooKe9DK/vLLRsyY8RqmTi3FL36xB1Zra9DKloogCPjTn47B5fIAALZsKcfXXzt7\ndaymJjcOHqzFnj1VqK11SRkmkeyYAEJQVpYWEREd/zRqtQpZWcFbfeyttypQW9sMAHjnnTMoL28I\naHkeT2CmhTCZfNM5R0eHIy6u59/+BUHAK6+UY/bsrfjxj7dj2bL3uLoX9SvsAgpBQ4fqsX37bJw9\n68TAgRoMHRq87p/kZN/dOYIAxMUFZgpml8uDnTvPYsOGzzFlykD85Cf5SEiIlOTYoijCbM6DIAAn\nTtjw058Ow6BBPVvZCwCam9146aUy7/auXWdhs7mg0/WNaamJrocJIASFhQkwmeIxduxAOByOoJY9\naVIaHnhgFPbtO4e77x6OIUMCk3zKyi5g8eJ3AACHDtUgNzceM2YM9Pu4VqsL1dXNiI+PxJIlBQB6\nPwYRFaXC9OmZKCurBwDk5xug1XIcgfqPgCeAxYsXIyYmBoIgQKVSYeXKlYEukvyQmBiFkpIbsXRp\nYUDvPHI6O3el1NV1f5H3q6mpacHPfvYPHD58HgZDFF599UfIy+v9alyCANxzz3dQWGiEw9GGMWOS\nJWulEIWCgCcAQRDw6KOPIi6u501wkocoigG/7TQ/Px4335yOvXsrkZ4eh4kT0/w+Znm5HYcPnwcA\n2GwuvPfe18jLM/l1zISESNxyS4bfsRGFooAnAFEUZbkNkEKb0RiFF16YBqu1BTpdJJKSovw+pk4X\nCUGAd7K5jAxOMyEVT0sL2i5cQHhsLCJ0wbspgQIrKC2Axx57DGFhYZg2bRqmT58e6CKpj4iPV0v6\ngFZ+vg4vvvhDvPzyCUyYkIaxY5MlO7aStdntOLJ6NT7785+RWFiI777wAmIy2CrqDwQxwF/PL1y4\ngPj4eDQ2NmLFihW4++67kZ+f7/25xWKBxWLxbpvN5qAPfIYqtVqNtrY2ucMICd2ti8tP5/666liw\nz4vT776LzcXF3u2Jjz+OoiVLQqJ++Tfio9FoUFpa6t02mUwwma7dBRrwFkB8fDwAQKvVYvTo0Sgv\nL++UALoKkgmgg0ajYV1cwrrwCXZdiN+60KvUajidvXuwTmo8L3w0Gg3MZnOPPhPQB8FaW1vhcnU8\nPelyuXDs2DFksOlI1KfE33ADxj/6KGJTUjC4uBjpU6bIHRJJJKAtALvdjqeffhqCIMDj8WDixIko\nKCgIZJFEJLHw2FgMvftu5P7TPyE8JgZhkbwVtr8IaAIwGo14+umnA1kEEQWBoFJBfak7l/oPzgVE\nRKRQTABERArFBEBEpFBMAERECsUEQESkUEwAREQKxQRARKRQTABERArFBEBEpFBMAERECsUEQESk\nUEwAREQKxQRARKRQTABERArFBEBEpFBMAERECsUEQETSaW+H6HbLHQV1ExMAEUnCefo03rn3Xmyb\nMwf1R47IHQ51AxMAURcEQQDa2+UOo88Q3W7se+QRnN65EzWHDmHbvHloqamROyy6DiYAom9prqzE\nBw88gDfvuAPWjz6SO5w+of3iRTSfP+/dbnM40N7WJmNE1B1MAESXEQQBR59/HmX/9384t38/3pg3\nD84zZ+QOK+SpoqMx4be/hSoqCgBw88qViE5Oljkqup5wuQMgCiWiKKLx7FnvtsflgsflkjGivsM4\ndizmvvcePG1tiE1PR5haLXdIdB1sAZCiOCsqUPXee7B/8cVV9xm1bBkiYmMBACN+/nPEpqcHK7w+\nLyY9HZrsbF78+4iAtwCOHj2KDRs2QBRFTJkyBcXFxYEukqhLzooKbCkuRovVClVUFGa9/jriTaYr\n9ku48UaYd+2C2+VCTGoqwi8lg2C6YLGg/vPPoRs0CIaCAqgiI4MeA/V/AU0A7e3t+POf/4xHHnkE\n8fHxeOihhzBq1CikpaUFsliiLtlPnUKL1Qqgo2vH+umnXSYAAIjJyAhmaJ3YT5zA5ltvhae1FQDw\no9deg3HMGNniof4roF1A5eXlSElJQWJiIsLDwzFhwgQcOnQokEUSXVVscjLCwn3fefTZ2TJGc3XO\n6mrvxR8AbNforiLyR0BbADabDQkJCd5tg8GA8vLyQBZJdFW6/HwUb92Kmo8+QoLJhISCArlD6pI2\nMxNR8fFwXbiAsPBwGEM0Tur7ZL8LyGKxwGKxeLfNZjM0Go2MEYUOtVrNurhEqrrQ3HQTMm+6CcCl\nh71CUNzw4ZizfTsaTp1CXGoqkgoLobqs5SL1eSGKovd1qNbJ1fBvpLPS0lLva5PJBNNVuji/EdAE\nYDAYUFdX59222WwwGAyd9ukqSIfDEciw+gyNRsO6uERpdRGdmYnozEwAQHNLS6efSVkXFx0OVH/w\nAeosFmROn97RKupDSUBp58W1aDQamM3mHn0moGMAgwcPRk1NDaxWK9xuN/bt24eioqJAFkkU8i42\nNsJZUYE2m03S4wqC0ONv8DX79+Ote+7Bx6tXY+usWbCfPClpTBTaAtoCCAsLw913343HHnsMoihi\n6tSpSOc91aRgrXV1+ODhh3Fq2zbE5+XhBxs2IPbSN/2rEkU0nT2Ldo/nqs8kNJ48iU//+EdEJyRg\n6J13Iqabf2f1ZWXe1562NrTU10PX7d+G+rqAjwEUFhZizZo1gS6GqE+wHT+OU9u2AQAunDyJyvff\nx5DrJIDq99/Hjvnz4Wlrw+Tf/Q7D77yz089dtbV43Wz23uLqPHcOk9esAVSq68YzcOpUfPLcc/C0\ntiI+Nxe6rKze/WLUJ8k+CEykJBExMZ22I7Xaa+7vdjjwwa9/Dc+lidXee+ABZE2digij0bdPS4v3\n4g8A9SdOwNPaCtW3yuqKoaAAc956Cy11ddBkZiI6NbUnvw71cZwKgiiI9Pn5uPm//gsJN9yAgvvu\nQ/LYsdfcPywiAonDhyN94kREDxiASL0eqm9NsxBtNGLE0qUAACEsDKMffLBbF/9vaHNzkTRuHGJ4\n8VccQbz8HrAQUVVVJXcIIYF3OPj0p7oQBAHupiaooqOve8dNq82Gk3//O75+7z1kf//7SJkwAWkj\nR8LpdHbaz+10ovH0aagiI6HNyYHQje6f/qA/nRf+Su1FAmcXEFGQiaLY7W/o5w8cwIEnngAAnNu3\nD7O3b+/yTp/wuDgYhg2TNE7q/9gFRBTCmmtrO223NTbKFAn1R0wARCEsbeJExF5aWCV13DjEDxki\nc0TUn7ALiCiEaXJyMGvbNrQ2NCDaaETkZXNrEfmLCYAoxEWnpCA6JUXuMKgfYhcQEZFCMQEQESkU\nEwARkUIxARARKRQHgalP8bS0oPbQIViPHUPq+PFIKChQzFOvFHhtNhvCIiIQrpBFZpgAqE+pO3IE\n2+bNAwAIKhVu37Hjqgu7E3WbKKJq7168t2wZIvV6TH/+eWjz8uSOKuDYBUR9iv30ae9r0eNB8/nz\nMkZD/UXzuXPYMX8+nFVVqC8rwwcPPwzR7ZY7rIBjAqA+xXjjjQiPjgYAxCQlQZedLXNE1B+I7e0Q\n29u9256LF4HQmydTcuwCoj5FP3Qobt+xA83nz0OTkXH91bSCSBAEhODkutQNMWlp+O66dXj3F79A\npE6HiY8/DiEiQu6wAo7TQYcwTnXrE8p14XG5UHvwIKoPHUL6TTdhwIgRCPvWnP1SCuW6CDYp60L0\neNBaV4ewiAioDQZJjhlMnA6aSAb1R49i2z//MwDg42efxe3bt8NQUCBzVN3X3toKd3MzIrRaRd9R\nJahUiEpKkjuMoOIYAJGfmqqrfRui2KcGpluqqrBn6VK88t3v4vj69XA3N8sdEgUREwBRF5ynT6Pu\n44/RUlNz3X0TTCaoL903HmM0Qp+bG5CYBEFAWFiYpOMMZ955B1+98Qaaqqux79FH0XDihGTHptDH\nLiCib7EfP44ts2ahzeGA4YYbMON///eai6Vr8/Iw+8030Xz+POJSUwMyMN187hw+/8tf0HjmDIqW\nLoVeotW/PC5Xp20l3PpIPmwBEH3L13v3ou3SwKLt+HE0fPXVdT+jyc5G0rhxAbn4C4KAo88/j09/\n/3uc3rEDW+bMQVNlpSTHzvr+95FYWAghLAwF990HPRecUZSAtQA2bdqEXbt2QafTAQDmzZuHwsLC\nQBVHJBn9Zc8WCCoVomW+I0T0eNBQXu7dvuh0StZXHztwIH74t7/B3dwMtV7fsVA9KUZAu4BmzpyJ\nmTNnBrIIIskljRmDaWvX4vzhw8ieORO6/Hx5AwoLQ9G//ztqDh+Gp7UVhffdh9he3PJ3NRE6HSIu\nfVEjZQloAgjBRwyIritCq0X2rFnImT07ZM5h49ixMO/aBXdLCwbk5cEdHvzhu4uNjXBZrYjQaBBl\nNAa9fJJeQM+inTt3Yu/evcjJycFdd92FmJiYQBZHJKlQufh/I27QIABAtAwPgrXZbDjw29/ii02b\nEJuails3boQmJyeoMZD0/HoSeMWKFbDb7d5tURQhCALmzp2LvLw8aDQaCIKAjRs34sKFC1i0aNEV\nx7BYLLBYLN5ts9nMpxwvUavVaGtrkzuMkMC68JGjLir27MFrt93m3R51//246ZFHIAhCUOP4Np4X\nPhqNBqWlpd5tk8kE03VmyvWrBbB8+fJu7Tdt2jQ89dRTXf6sqyCZADrwkX8f1oWPHHURFhXVaTs6\nMRFOpzOoMXSF54WPRqOB2Wzu0WcCdhtoQ0OD9/XBgweRkZERqKKIKMB0ubn43h/+AGNhIYbfcw8y\nv/tduUMiCQRsDOCll15CRUUFBEFAYmIiFi5cGKiiiBRFjrGJMLUamTNnIuN73wvoRHcUXAFLAEuW\nLAnUoYkUyd3UhJr9+3H+44+RMWUKBowcibAg3w3Ei3//wqkgiPqIuiNHsGPBAgDAkeefx+1vvol4\niaaEIGXiVBBEfUTj2bPe12J7O5qt1mvu32azoe3ChUCHRX0YEwBRH5E0YoR31tG49HToBw++6r7W\nQ4fw6i234NVbbkH9kSPBCpH6GK4IFsJ4i5sP66KD49QptNlsiE5ORkx6epf7tNbVYdPUqWiprwcA\naDIy8KNXXwVUKkQZjRDCOn/v87hccDscCNdqoYqMDPjvICWeFz69WRGMLQCiPkSTnY2sKVOuevH/\nxuXf68T2dnz2l7/g7+PHo/If/+i0+Lmrthb7H34YL0+ahI9WrEDrpaRBysAEQNTPRA4YgO/9z/8g\nOiEBMUYjxjz4IL54+WV4Wlvx9s9+1mmRG+uRIzixcSNa7XZ8vn496j79VMbIKdh4FxBRP5Q0diz+\n6d13IbrdeLekBK5Lg8EqtRphl3UBXdED3EWPsCAIITcvEkmDLQAiPzWePImqPXvgOHVK7lA6iRww\nAFHJyZjwm99gwHe+A11WFma8+CKikpO9+xhHjMDg4mKER0cjf+5cDLhsMfu2hgZ8+be/Yfe//iuq\n9uxB+8WLcvwaFEAcBA5hHODyCdW6aDh+HJtvvRXulhZE6vWYtXUrNNe4O0cKvakLt9MJ0ePpct5/\nd1MT3E4nIjQaqC6bsbfy7bex41/+pWNDEHD7jh0whNhzB6F6XsihN4PA7AIi8oPt+HG4W1oAAK0N\nDbCfOhXwBNAb4XFxV/9ZbCzCY2OveL/x8mUnRRGtfKag32EXEJEfNAMHel8LKhViU1JkjEZa6RMn\nIio+HgCQWFAAfW6uzBGR1NgCIPJDwvDh+NHmzaj7/HMkFRZCP3So3CFJRpubi9k7dsBlsyE2JYWr\ngPVDTABEfghTq2EcPRrG0aPlDiUgYjMyEMup3PstdgERESkUEwARkUIxARARKRQTABGRQjEBEBEp\nFO8CIurY2GuVAAAIO0lEQVQlT2srbMeOwXH2LAxDh0J/ww1+HU/0eOBuakJEbCygUkkUJdHVMQEQ\n9VL9J59g65w5AIDwmBjc/uab0PbyYanW+nocW7cOp3fsQN6cOTD99KddTttAJCV2ARH1kvWzz7yv\n3c3NcPoxh5X1yBEcXbcO9ooKHFq1CnXHjkkRItE1MQEQ9VJSUZF3da2o+PhO00L0lMfl6rzd2upX\nbETdwS4gol5KKCjA7DffRFN1NfQ5OdAMGtTrYxlHjEDquHGo+vBDZH7vexgwfLiEkRJ1za/poA8c\nOIBNmzahsrISK1euRHZ2tvdnmzdvxu7du6FSqbBgwQIUXDbP+PVwOugOnOrWRwl1cdFux0WHAxE6\nHSIuLf7eFSXURXexLnyCvibwwIEDsWzZMgz91gRYlZWV+PDDD7F69Wo89NBD+NOf/sQVhYiuI0Kn\nQ0x6+jUv/kRS8isBpKamIqWL6W8PHz6M8ePHQ6VSwWg0IiUlBeXl5f4URUREEgvIILDNZsOAAQO8\n2waDATabLRBFERFRL113EHjFihWw2+3ebVEUIQgC5s6di6KiIr8DsFgssFgs3m2z2QwNm8AAALVa\nzbq4hHXhw7rwYV10Vlpa6n1tMplgMpmuuf91E8Dy5ct7HITBYEBdXZ13u76+HgaDoct9uwqSgzod\nOMDlw7rwYV34sC58NBoNzGZzjz4TkC6goqIi7N+/H263G7W1taipqcHgEFwnlYhIyfx6DuCjjz7C\n+vXr0djYiCeffBJZWVn41a9+hfT0dIwbNw4lJSUIDw/HPffcA0EQpIqZiIgk4NdzAIHC5wA6sHnr\nw7rwYV34sC58gv4cABER9V1MAERECsUEQESkUEwAREQKxQRARKRQTABERArFBEBEpFBMAERECsUE\nQESkUEwAREQKxQRARKRQTABERArFBEBEpFBMAERECsUEQESkUEwAREQKxQRARKRQTABERArFBEBE\npFBMAERECsUEQESkUEwAREQKFe7Phw8cOIBNmzahsrISK1euRHZ2NgDAarWipKQEaWlpAIDc3Fzc\nc889/kdLRESS8SsBDBw4EMuWLcMf//jHK36WnJyMp556yp/DExFRAPmVAFJTU6/6M1EU/Tk0EREF\nmF8J4FqsVit++ctfIiYmBnfccQfy8/MDVRQREfXCdRPAihUrYLfbvduiKEIQBMydOxdFRUVdfiY+\nPh4vvPAC4uLicOrUKTz99NNYvXo1oqKipIuciIj8ct0EsHz58p4fNDwccXFxAIDs7GwkJyejqqrK\nO0h8OYvFAovF4t02m83X7FpSGo1GI3cIIYN14cO68GFd+JSWlnpfm0wmmEyma+4fkNtAGxsb0d7e\nDgA4f/48ampqkJSU1OW+JpMJZrPZ+9/lv4DSsS58WBc+rAsf1oVPaWlpp2vp9S7+gJ9jAB999BHW\nr1+PxsZGPPnkk8jKysKvfvUrHD9+HKWlpQgPD4cgCLj33nsRGxvrT1FERCQxvxLA6NGjMXr06Cve\nHzNmDMaMGePPoYmIKMBC7kng7jRblIJ14cO68GFd+LAufHpTF4LIG/aJiBQp5FoAREQUHEwAREQK\nFbAngXvqahPLAcDmzZuxe/duqFQqLFiwAAUFBTJGGlybNm3Crl27oNPpAADz5s1DYWGhzFEF19Gj\nR7FhwwaIoogpU6aguLhY7pBks3jxYsTExEAQBKhUKqxcuVLukIJm3bp1+OSTT6DT6bBq1SoAgNPp\nxLPPPgur1Qqj0YiSkhLExMTIHGngdVUXvbpWiCHi3LlzYlVVlfib3/xG/Oqrr7zvf/311+IDDzwg\nut1u8fz58+KSJUvE9vZ2GSMNrtLSUvGNN96QOwzZeDweccmSJWJtba148eJFcdmyZWJlZaXcYclm\n8eLFosPhkDsMWRw/flw8ffq0eP/993vfe/HFF8UtW7aIoiiKmzdvFl966SW5wguqruqiN9eKkOkC\nSk1NRUpKyhXvHz58GOPHj4dKpYLRaERKSgrKy8tliFA+ooLH6cvLy5GSkoLExESEh4djwoQJOHTo\nkNxhyUYURcWeD/n5+Vc8T3T48GFMmjQJADB58mTFnBtd1QXQ82tFyHQBXY3NZkNeXp5322AwwGaz\nyRhR8O3cuRN79+5FTk4O7rrrLkU0cb9hs9mQkJDg3TYYDIr7AnA5QRDw2GOPISwsDNOmTcP06dPl\nDklWdrsder0eAKDX6zvNW6ZEPb1WBDUB9GZiOSW4Vr3ccsstmDNnDgRBwMaNG/HXv/4VixYtkjFa\nktOKFSsQHx+PxsZGrFixAunp6Zxp9zKCIMgdgmx6c60IagLozcRyBoMBdXV13u36+noYDAYpw5Jd\nd+tl2rRpiltk59v//jabrd/9+/dEfHw8AECr1WL06NEoLy9XdALQ6/VoaGjw/v+bAVAl0mq13tfd\nvVaEzBjA1RQVFWH//v1wu92ora1FTU0NBg8eLHdYQdPQ0OB9ffDgQWRkZMgYTfANHjwYNTU1sFqt\ncLvd2Ldvn2Jbi62trXC5XAAAl8uFY8eOKe58+PYYyMiRI7Fnzx4AwJ49exR1bny7LnpzrQiZJ4Ev\nn1guNjbWO7Ec0HEb6Lvvvovw8HDF3Qa6du1aVFRUQBAEJCYmYuHChd4+T6U4evQo1q9fD1EUMXXq\nVMXeBlpbW4unn34agiDA4/Fg4sSJiqqLNWvWoKysDA6HAzqdDmazGaNGjcLq1atRV1eHxMRElJSU\nKGLiya7qwmKx9PhaETIJgIiIgivku4CIiCgwmACIiBSKCYCISKGYAIiIFIoJgIhIoZgAiIgUigmA\niEihmACIiBTq/wG+ZZpoFF7RHQAAAABJRU5ErkJggg==\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": { "collapsed": false }, "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', n_iter=200, n_jobs=1,\n", " penalty='l2', power_t=0.5, random_state=None, shuffle=True,\n", " 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, n_iter=200, fit_intercept=True)\n", "clf.fit(X, Y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "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": { "collapsed": false }, "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": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\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": { "collapsed": false }, "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": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0.48162694]\n", "1.33687374876\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": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n0vjmAAAAAElFTkSuQmCC\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": { "collapsed": 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": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['target_names', 'target', 'DESCR', 'feature_names', 'data'])" ] }, "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": { "collapsed": false }, "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": { "collapsed": false }, "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": { "collapsed": false }, "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": [ "### Dimensionality Reduction: PCA\n", "\n", "Principal 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": { "collapsed": false }, "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": { "collapsed": false }, "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": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAb4AAAEuCAYAAADx63eqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8XNWZ97/33umj3qslWXK33AvNJgYbFsMmLBgISQhh\nl900CMkmsO8mG0KA3WQ3m5DykuybBPgQNsGQZE1I1qEb24AN7iUYF1xkSbZ6G0295f1jfMcjadSl\nmZF0vnz4WKO5c8+5o5nzu89zniIZhmEgEAgEAsEUQU70BAQCgUAgiCdC+AQCgUAwpRDCJxAIBIIp\nhRA+gUAgEEwphPAJBAKBYEohhE8gEAgEUwrLQE/W19fHax4CgUAgEIwZRUVF/T4nLD6BQCAQTCmE\n8AkEAoFgSiGETyAQCARTCiF8AoFAIJhSCOETCAQCwZRCCJ9AIBAIphRC+ARJy4YNG/jmN7+Z6GlM\nCJ5//nlmzpyZ6GkIBBMCIXyCuPOVr3yFz3zmM4Me98QTT/DP//zPIx5n5cqVlJSUUFJSQmVlJcuX\nL+fuu+/m1VdfHfa5fvCDH3D11VePeC4jZTiCJknSmI//la98hZKSEkpLSykvL+eyyy7jkUcewefz\n9Thu8+bN3HrrrcydO5cZM2awdu1a/v3f/52WlpYex4VCIaqrq5k1axYej2fM5ysQDAUhfIKkIxQK\nAZCeno7L5RrxeSRJ4qtf/Sr79+9n+/bt/OxnP6O0tJS77757RJbkeAjLYBiGkZBxo1m9ejX79+9n\nx44d/NM//RNPP/00jz76aOT57373u3zuc5+jurqap59+mjfffJOHH36Y2tpafvWrX/U410svvURZ\nWRlLly5l06ZN8b4UgQAQwidIAr7yla9w55138tOf/pRly5axfPlyoK+rc/Pmzaxdu5bKykrmzZvH\nhg0b+lgUvXG5XOTk5FBUVMSyZcv41re+xb/927/x1FNPsWPHjshx3/nOd1i9ejWVlZVccskl/Ou/\n/ivBYBAIW10/+MEPOHr0aMT6+e1vfwvAz3/+c9auXcuMGTNYunQp999/P52dnZHzdnV1ce+997Jw\n4UIqKyu5/PLLeeKJJ3o8/8ADD7Bw4UJmzZrFhg0bOHjwIAA7duzgq1/9Kl6vNzLuY489NuD1vvrq\nq6xatYrKykpuueUWampqAKitraW0tJRDhw71OP7Xv/411dXVqKra7zltNhvZ2dkUFhbysY99jJtu\nuomXXnoJgH379vF//+//5cEHH+Sb3/wmy5cvp7i4mMsuu4yf/OQn3H333T3OtXHjRjZs2MDNN9/M\ns88+O+C1CATjhRA+QVKwc+dOjhw5wm9+8xuee+65Ps83NTXxxS9+kdtuu41t27axadMmNmzYMKKx\nbr/9dtLT09m8eXPkdy6Xi8cee4xt27bxne98hxdffJEf//jHAHz0ox/ls5/9LJWVlRw4cIB9+/bx\n0Y9+FABFUXj44Yd58803+elPf8r+/ft7iPW///u/c+zYMZ555hm2bdvG97//fQoKCiLP33HHHTQ2\nNvLMM8/wyiuvcMkll3DbbbfR1NTEsmXL+Pa3v43T6YyM+7nPfa7f6woEAvzwhz/khz/8IS+++CK6\nrvP3f//3AJSUlHDllVeycePGHq957rnnuOWWW7BYBqxe2AO73R65Kdi0aRNut5u77ror5rGpqamR\nn2tra9m5cycf+9jHWL9+PSdOnODIkSNDHlcgGCuE8AmSAofDwWOPPcbMmTOZNWtWn+cbGhpQVZX1\n69dTXFzMzJkz+fjHP052dvawx5JlmenTp3PmzJnI7+677z6WLl1KcXExa9as4Z577uGFF16IzM3t\ndmOxWMjOziYnJwe73Q7A3/3d33HZZZdRXFzMypUr+cY3vsGf/vSnyHnr6uqorq5mwYIFFBcXc8kl\nl3D99dcD8NZbb3HkyBH+3//7fyxYsICysjK+9rWvUVpayu9//3usViupqalIkhQZ1+l09ntdmqbx\n8MMPs3TpUubNm8ePf/xjjhw5wltvvQWEBf+FF16IiNbx48fZt28ft99++5Dfu3379rFp0yZWr14N\nwKlTpygrK0NRlEFf+/zzz7Nq1SoyMzNxOp2sX7+e3/zmN0MeWyAYK4Z+mycQjCOzZs0a0OqYO3cu\nV1xxBVdddRWrV69m1apV3HDDDWRlZY1ovN57Z3/605944oknOH36NN3d3WiahmEYg57nrbfe4vHH\nH+f48eN0dXWhaRrBYJDGxkby8vL49Kc/zT/8wz9w4MABVq9ezbp167jkkksAOHz4MF6vl+rq6h7n\nDAaDnD59etjXJMsyixYtijwuLi4mPz+f48ePc8UVV3DttdfyjW98gz//+c987GMfY+PGjSxatIgZ\nM2YMeN4tW7Ywc+ZMNE1DVVWuvfZaHnnkkWHNzTAMnnvuOf7lX/4l8rubbrqJz3/+83zzm9/EZrMN\n72IFglEghE+QFAwWxCLLMs8++yx79+5l69atbNy4ke9+97v8/ve/Z86cOcMaS9d1Tp06xZIlSwDY\ns2cPX/ziF/nqV7/KRz7yEdLS0nj55Zd7BHDEoq6ujjvvvJNPfepT3H///WRmZnLw4EHuueeeSIDO\nmjVreO+999iyZQtvvfUWn/70p/nrv/5rvv/976PrOnl5eWzatKmPyEa7CIfDQIEwFouFDRs2sHHj\nRm644Qb+53/+hwceeGDQc15yySV873vfQ1EUCgoKelh3FRUVvPfee6iqOuCNy9atW6mrq+Pee+/l\nnnvuifxe13U2b97MjTfeOMQrFAhGj3B1CiYUS5Ys4Stf+QqbN28mPz+fF198cdjn+PWvf01nZyc3\n3HADALt376awsJAvfelLLFiwgPLycmpra3u8xmq1omlaj98dOHAAVVV56KGHWLJkCRUVFZw/f77P\neJmZmdx000384Ac/4D//8z/57W9/SygUYv78+TQ1NSFJEmVlZT3+Ny1Zm83WZ9z+0HWdffv2RR7X\n1dXR0NBAVVVV5He33347b7/9Nk8//TTd3d2RvcqBcDqdTJs2jeLi4j4uzb/5m7/B6/Xy1FNPxXyt\nGejz7LPPsn79el555RVeffXVyP+33367CHIRxB1h8QkmBHv37mX79u185CMfIScnh8OHD3Pu3LmY\n+4HRdHd309TURCgUor6+nj/+8Y88/fTT3HXXXaxYsQKA6dOnc/78eTZt2sTSpUvZsmULf/jDH3qc\np7S0lNraWg4fPkxRUREpKSlUVFSg6zo///nPWb9+PXv27OkRsQnwn//5n1RXVzNz5kxUVWXz5s2U\nlZVhtVpZvXo1y5cv56677uIb3/gGVVVVNDQ0sHXr1shzJSUlBAIBtm3bxvz583E6nf3u8ymKwre+\n9S2+/e1vY7fbeeihh5g9ezarVq2KHFNZWcmKFSt49NFHufHGG3G73SP5c0RYvHgxn//853n00Uep\nr69n/fr1FBUVcebMGTZu3EhFRQV33nknr776Kj//+c/75CTefvvtfPSjH6WmpoZp06aNai4CwVAR\nFp8gaYl226WlpbF7924+85nPsHr1ah555BG+/OUvD+oie+yxx1iyZAmrVq3i85//PHV1dfzyl7/k\n4Ycfjhyzbt06Pve5z/HQQw+xbt063nrrLe6///4e51m/fj1XXXUVt912GwsXLuQPf/gDc+bM4eGH\n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\nETa8AAAAAElFTkSuQmCC\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": [ "### 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": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nAElFTkSuQmCC\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": { "collapsed": false }, "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": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plot_confusion_matrix(cm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Classification Logistic Regression" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.706666666667 0.6 0.6241 0.0152210015731\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 cross_validation\n", "\n", "errors = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = cross_validation.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 = (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": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "errors = []\n", "for i in range(1000):\n", " X_train, X_test, y_train, y_test = cross_validation.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 = (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": null, "metadata": { "collapsed": false }, "outputs": [], "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 Security Informatics\n", "\n", "There are several applications of machine learning for security informatics\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Intrusion Detection\n", "\n", "![Intrusion Detection](images/Header_IPS_Intrusion_Detection_01.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An Intrusion Detection System (IDS) is a software that monitors a single or a\n", "network of computers for malicious activities (attacks) that are aimed at stealing\n", "or censoring information or corrupting network protocols. Most techniques used\n", "in today’s IDS are not able to deal with the dynamic and complex nature of cyber\n", "attacks on computer networks. Hence, efficient adaptive methods like various\n", "techniques of machine learning can result in higher detection rates, lower false\n", "alarm rates and reasonable computation and communication costs.\n", "\n", "![Intrusion Detection](images/download.jpg)" ] }, { "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)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Phishing Detection\n", "\n", "Phishing, by definition, is the\n", "act of defrauding an online user in order to obtain personal information by posing as\n", "a trustworthy institution or entity. Users usually have a hard time differentiating\n", "between legitimate and malicious sites because they are made to look exactly the\n", "same. Therefore, there is a need to create better tools to combat attackers.\n", "\n", "![phishing Detection](images/detect_phishing_intro.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Malware Classification\n", "\n", "In recent years, the malware industry has become a well organized market involving large amounts of money. Well funded, multi-player syndicates invest heavily in technologies and capabilities built to evade traditional protection, requiring anti-malware vendors to develop counter mechanisms for finding and deactivating them. In the meantime, they inflict real financial and emotional pain to users of computer systems.\n", "\n", "One of the major challenges that anti-malware faces today is the vast amounts of data and files which need to be evaluated for potential malicious intent. For example, Microsoft's real-time detection anti-malware products are present on over 160M computers worldwide and inspect over 700M computers monthly. This generates tens of millions of daily data points to be analyzed as potential malware. One of the main reasons for these high volumes of different files is the fact that, in order to evade detection, malware authors introduce polymorphism to the malicious components. This means that malicious files belonging to the same malware \"family\", with the same forms of malicious behavior, are constantly modified and/or obfuscated using various tactics, such that they look like many different files.\n", "![malware Detection](images/malware.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Man-in-the-Browser Attacks\n", "\n", "Man-in-the-Browser (MITB) attacks are the most destructive threat on the Internet stealing money from customer accounts right\n", "now. These attacks infect a webpage by taking advantage of security vulnerabilities in browsers and common web plugins,\n", "modifying web pages and transactions as they are happening in real time. Cybercriminals launching an MITB attack can intercept\n", "and change the content on a website by injecting new HTML code and then perform unauthorized transactions while a customer\n", "has an online banking session open, but the client will only see the transaction performed as they intended on their screen. If the\n", "customer checks the URL or SSL certificates of the transactional site, they will be the same. Even the most sophisticated security\n", "professional may not know an incident is happening, because the entire point of an MITB attack is to mimic the page that malicious\n", "code is being injected into as much as possible, so that the banking customer doesn't realize that something is amiss. \n", "![malware Detection](images/html_injection.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.5.1" } }, "nbformat": 4, "nbformat_minor": 0 }