{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "np.random.seed(36)\n", "X = 2*np.random.rand(100, 1)\n", "y = 4 + 3*X + np.random.randn(100, 1)*0.9" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'y')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEKCAYAAAAfGVI8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAHeNJREFUeJzt3X+wXWV97/H3l5BCYm0TzLHV6DEw44QreCH0jKPm1gpYA0IF6a3iVActNddba9XOTSeOrXKduZdzBzvaTn8NtbR2yiAImMstV4Fr6HXEBntiwJAi/gCNHNQcK2mlpHgSvv1jrx12dvbae629fjzrWevzmslkn7XX3uvZ6+yzvut5nu/zPObuiIhId50QugAiIhKWAoGISMcpEIiIdJwCgYhIxykQiIh0nAKBiEjHKRCIiHScAoGISMcpEIiIdNyJoQuQxbp163zDhg2hiyEiEpXdu3f/wN1nJu0XRSDYsGEDCwsLoYshIhIVM/t2lv3UNCQi0nEKBCIiHadAICLScQoEIiIdp0AgItJxCgQiIh0XRfqoiEjT7dizyDV3PMRjBw/x/DWr2LZlI5duWh+6WJkoEIiIFLRjzyLvv3Uvh5aPALB48BDvv3UvQBTBQE1DIiIFXXPHQ0eDQN+h5SNcc8dDgUqUT2WBwMyuM7MDZvbAwLZfMbN9Zva0mc1VdWwRkTo9dvBQru1NU2WN4K+AC4a2PQBcBny+wuOKiNTq+WtW5dreNJUFAnf/PPDDoW0PunscdSURkYy2bdnIqpUrjtm2auUKtm3ZGKhE+aizWEQ6p+wMn/5rlTVUMjPbCmwFmJ2dDVwaEWmLqjJ8Lt20PpoL/7DGZg25+7XuPufuczMzE6fTFpFI7dizyOb5nZy6/XY2z+9kx57FSo8Xe4ZPFRpbIxCR9guRfx97hk8VqkwfvQH4e2CjmT1qZlea2RvM7FHgFcDtZnZHVccXkeYLcXcee4ZPFSqrEbj7m1Oe+nRVxxSRuIS4O9+2ZeMxtRCIK8OnCo3tIxCR9gtxd37ppvVcfdlLWb9mFQasX7OKqy97abQdvWVQH4GIBBPq7jzmDJ8qKBCISDCx59+3hQKBiJRi2kFaujsPT4FARAqLfRrmrlNnsYgUpkFacVMgEJHCNEgrbmoaEpHCnr9mFYsjLvpdHqQ1qs8EmtkxrkAgIoVpkNaxRvWZbPvU/WCwfMSPbmtKP4qahkSkMA3SOtaoPpPlp/1oEOhrSj+KagQiUgqlgT4jT99IE/pRVCMQESlZnr6RJvSjKBCIiJRs1NKVK08wVq6wY7Y1pR9FTUMiIiVLmzpj1LYmNKeZu0/eK7C5uTlfWFgIXQwRkaiY2W53n5u0n2oEIiIVmHbupRAqCwRmdh1wMXDA3c9Mtp0C3AhsAL4FvNHdH6+qDCIiIUw791Ko4FFlZ/FfARcMbdsOfM7dXwx8LvlZRKRVppl7qR88Fg8ewnkmeOzYs1hxaSsMBO7+eeCHQ5svAT6RPP4EcGlVxxcRCWWauZdCTtxXd/roz7j7dwGS/59b8/FFRCo3zRKcISfua+w4AjPbamYLZrawtLQUujgikmLHnkU2z+/k1O23s3l+Zy1NGU03ahzBpDEDIdZv7qs7EHzfzJ4HkPx/IG1Hd7/W3efcfW5mZqa2AopIdiHbtctWdkA76cRnLq9rV6+cOPfSNMGjLHUHgtuAK5LHVwD/u+bji0iJ2rIgTZkBrf9eBw8tH932b8tPT3xdyIn7qkwfvQF4NbDOzB4FPgTMAzeZ2ZXAfuBXqjq+iFSvLQvSjAtoeS/ERd4r1MR9lQUCd39zylPnV3VMEalXWxakKTOgxRgcG9tZLCLNF7Jdu0xldtSG7PSdlgKBiEytLQvSlBnQir5XiCwszTUkIsfIO81BGxakSZstdJrPVeS9pp2aoijNPioiRw1fiKB3N1vnXX5Mk7VllfUzbZ7fObLPZf2aVdyz/bzcx806+6iahkTkqNDpoG0al9CX5zOF6mhWIBCRo0JnvIQORFXI85lCdTQrEIjI0Q7KtIbiujJeQgeiKuT5TKGysBQIRDpusOlilDrTQWNMvZwkz2cKlYWlrCGRjhvVdNG3vubO2m1bNo7srI5tXMKgvJ8pRBaWAoFIx6U1XRhMlalSRJlpnE0Rw2dSIBDpuKZNE9GGcQnDmv6Z1Ecg0nFtmSZCpqcagUjHxdB0IdVSIBCRxjddxCa20dEKBCLSSVVdrEPNF1SE+ghEpHOqnMoixtHRQQKBmb3HzB4ws31m9t4QZRCR7qryYh3j6OjaA4GZnQm8A3gZcBZwsZm9uO5yiEh3VXmxjnF0dIgawX8Adrn7k+5+GPj/wBsClENEOqrKi3WM6bghAsEDwKvM7Dlmthp4HfDCAOUQkY6q8mId46pttWcNufuDZva/gLuAJ4D7gcPD+5nZVmArwOzsbK1lFJF2q3rsRGzpuMFXKDOz/wk86u5/kraPVigTEckv6wplQcYRmNlz3f2Amc0ClwGvCFEOkTaKbTBTmbr82YsINaDsFjN7DrAMvMvdHw9UDpFWiXEwU1mq+OxdCSxBxhG4+8+7+0vc/Sx3/1yIMoi0UYyDmcpS9mcfNejsfTfex+/u2FtCaZtFI4tFWiTGwUxlKfuzjwosDly/a38pI5CbRHMNidSsyuaGpq0tUKcyPvvg7yYtjcbpBYk2NREpEIjUqOo2/DYu9ZhVns8+KhgDx70+TdtqWAoEIjUa146dNRCMq1G0eW2BSTWprJ89LRifvPKETEEA2lfDUiAQqVHRduwsNYrhC2K/szTmYJC1JpVlIFdaMM4aBNpYw1JnsUiNis5xkyUzpsoplkMpMyMob7PO2tUro5ouYhqqEUitupKXnaZoG36WGkUZzU9NU2ZGUFqn8ppVK3nq8NPH/W4+9EtnRHveslKNQGrTxjvVvIpOSJalRtHGFNIyZwtNm3DuqtefEd1kcWVRjUBq08Y71WkUmZAsS42ijSmkZWZDTepU7tJ3sU+BQGrTxjvVumXJjIkphTRrU2HZ2VCxzQ5aNQUCqU0b71RDmHQRiyWFNO+YCl28q6NAILWJ6U41djFcNNVU2BwKBFKbWO5UpR5qKmwOBQKpVQx3qlKPtKbCn161MkBpuk3poyISxLYtG1l5gh23/V9/fLhTKcVNoEAg0kI79iyyeX4np26/nc3zOxt5Yb1003p+8uTjGyWWj3gn1k9okiCBwMzeZ2b7zOwBM7vBzE4OUQ6RNopp4N7BJ5dHblc/Qb1qDwRmth74LWDO3c8EVgCX110OkbaKaZWyMkcMy/RCNQ2dCKwysxOB1cBjgcoh0joxZeOkTfeglOJ61Z415O6LZvYRYD9wCLjT3e8c3s/MtgJbAWZnZ+stpESvy5PbxTRwTynFzWDuaQuyVXRAs7XALcCbgIPAp4Cb3f1v0l4zNzfnCwsLNZVQYjc8YhV6d5lNnUCs7KAV2+eX6pjZbnefm7RfiKah1wCPuPuSuy8DtwKvDFAOaamY2sir6NgtOsOpdE+IAWX7gZeb2Wp6TUPnA7rdl9LE1EZe1TQLGrgnedReI3D3e4GbgS8De5MyXFt3OaS9YspEiSloSXsFyRpy9w+5++nufqa7v9XdnwpRDmmnmDJRYgpa0l4aWSyNVGRkbExt5DEFLWkvTTonjZNnnvq0jJtY2siVPilNoEAgjZO1AzXvwiZNFUvQkvZS05A0TtYO1JjSREWaTDWCyHRhxGzWkbHKuBEph2oEEYlpVskisnagKuOmO2KYVjtmCgQR6UpTSNasH2XcdENXboBCUtNQRNraFDIu82ccZdyEVVczpRa5r54CQUSqnlUyRP9D0cwfZdyEUWfGVltvgJpETUMRqbIppIrqd5Z23a40d7VNnb839QVVT4EgIlWOmC37DztrYNHdXpzq/L2pL6h6ahqKTFVNIWX/YWdt183S3NWFlNnY1Ln4jfqCqjcxEJjZbwLXu/vjNZRHAin7DztrYNm2ZePIRVT6d3ttGT3cNpN+b2VTX1C1sjQN/SzwD2Z2k5ldYGZWdaGkfmVXv7O26/abu9auXnl020knPvO1VB9CT5V59NO8d0wT+8lkE2sE7v67ZvZ7wGuBtwN/ZGY3AX/h7t+suoBSj7Kr33nvGP9t+emjjw8eWj56168+hGprRUXeW3fp7ZGpj8Dd3cy+B3wPOAysBW42s7vc/XeqLKDUp8w/7DyBZdxdf0wLsVelyjz6q27bpxx9ydRH8FvAFcAPgI8D29x92cxOAL4O5AoEZrYRuHFg02nAB939Y3neR5ova2AZd9f/0TedXWtbdFnK7OCuqla0Y88iBw8tV/LeEpcsNYJ1wGXu/u3Bje7+tJldnPeA7v4QcDaAma0AFoFP530faY9xd/0xZoyU3ZRTVa1oXD9Ll2pckq2P4INjnnuw4PHPB745HGSkWyb1J8TWFl12U05VGTrj7vqbXuOScoUeR3A5cMOoJ8xsK7AVYHZ2ts4ySc1ivOsfp+ymnKrOT1pNY+3qldGee5mOuXuYA5v9BPAYcIa7f3/cvnNzc76wsFBPwUQK2jy/c+QFdv2aVdyz/bwAJRptuAkLejWNPGmgGuzXbGa2293nJu0XcoqJC4EvTwoCItMKNYd9LFMiFB0LoOmh2yNk09CbSWkWkvx0Z3asvB22ZZ6/mJq6ivS/aHro9ggSCMxsNfCLwH8Jcfy2GXfRgzguSGXLc5GqYsBWbB3c09Bgv/YIEgjc/UngOSGO3UZpF72rbtvHU4ef7uQ8PXkuUpOChmpbo2mwX3toGuoWSLvoHTy03Nl5evLMYT8uaIxqB3/vjfex6cN3dr4tPJa+EJlMgaAF8t6BdaHqnuciNS5ojKotADz+5HLnO0Y18Vx7hB5HICVIG3B08soTePzJ46cQ6ELVPU+H7bgBW++78b7UY2TpGG17s1IX+kK6QIGgBdIuekCU8/SUJetFalzQuOaOh0a2g/eNq11pLQWJhQJBS4y76LX5jrQsaedvVG1h0LjaldIrJRYKBC2nqnsx/XN31W37jpupc1LtSumVEgt1FotMcOmm9dz3odfysTednatjNE/mkkhIqhFILWLuNB0u+0ffdHamste9rq/ItBQIpHIxd5oWXcoR1EcjzadAIJWLudO0aNnVRyMxUB+BVC7mTtOYyy6SlWoEUrkmz0kzqe+iyWUXKYsCgVSuKZ2mwxf9c0+f4Zbdi2Pb/5tSdpEqKRBELJZMnCZ0mo7q9L1+136G1+cbbv9vQtlFqhZsqco8tFTl8cpYZjDtfdt40UtbPnIUAx6Zv6jaAonUIOtSlaEWplkDfBw4E3Dg19z970OUJSaDF+kTzDgyFMSLZuLEmuaZJXjl6dxV+790TaimoT8APuvu/zlZxH51oHJEY/giPRwE+voXvGnu7GNI85ymnR/SO30NjmkeUvu/dFHt6aNm9lPAq4C/AHD3H7v7wbrL0VRpC66nzYs/7PlrVuVeVLx/zLSmk6xNKlUb9bmu37U/0+I7aesT/OrLZzWfvnReiBrBacAS8JdmdhawG3iPu/9rgLI0yrimmSxNG/272SLr9Y5iyX51XSDTajOjPldaD9fw+VKnr0i6EIHgROAc4N3ufq+Z/QGwHfi9wZ3MbCuwFWB2drb2QoYw7gKe1rSxwoyn3Y+5sKUtppJ1vd5hnuxXx0WzaDDsG9XOr1G+IqOFGFn8KPCou9+b/HwzvcBwDHe/1t3n3H1uZmam1gKGMm4Ua1rTxu+/8Swemb+Ie7afd/QiV8Z6vdPuV9SkYDiKDf2sdn6RfGoPBO7+PeA7Ztb/Sz0f+Me6y9FE4y7gedaHLWO93mn3K2qaYKh2fpFiQmUNvRu4PskYehh4e6ByNMqkUaxlLL2Y5ZjD6rzDHjelg9r5RaqhAWUNE2JA16iUzLu/uhTkYlvVQDmRLso6oEyBQBqnraObRerW6JHFIuPUmd2joCOiQCAdFuuUGiJlUyCQzioypYZqEtImCgQBVH0R0UUqm2lXH1NNQtpGS1XWLO88QE17/zbJM/Bu0LiahEiMFAhqVsZFJG1iuqzvP+71XZJn4N0grWMsbaOmoZoVvYhMapaY9P5q1njGtAPUtI6xtI0CQc2KXkQmdXBOev8Y1hyo0zSpqrGtY6w+I5lETUM1m7Y5om/SHf+k9097/eLBQ51vKsoqz7xPoanPSLJQjaBmRefLmXTHP+n9014PHHOhGHwvOV4sU1qrBihZKBAEUOQiMqlZYlIzQJZJ5rpyoehCk4k6tiULBYLIjLvjz9IRPPz6rCt8tU1XOs3VsS1ZKBBEKK1GkbUZYPD1aWsVt/1C0ZUmk9g6tiUMdRa3yDTNAEU7r2PVlSaTmDq2JRzVCKbUxPblaZoBurrYS5eaTGLp2JZwggQCM/sW8CPgCHA4y3zZTdLU9uVpmwG6eKFQk4nIM0LWCM519x8EPP7Umtq+3NW7+2noXIk8Q01DU6iqfbmM5qYu3t1PS+dKpCdUZ7EDd5rZbjPbGqgMU5t21spxNAJUREIJFQg2u/s5wIXAu8zsVcM7mNlWM1sws4WlpaX6SzhGFZk2mtpYREIJEgjc/bHk/wPAp4GXjdjnWnefc/e5mZmZuos4VhUpeV1JZxSR5qm9j8DMngWc4O4/Sh6/Fvhw3eUoquz25S6lM4pIs4SoEfwM8AUzux/4EnC7u382QDkapasDu0QkvNprBO7+MHBW3cdtOqUzikgoSh8tqMwRxkpnFJEQFAgKaOoI4xg0cYoOka7SpHMFKOVzOhozIdIsqhEUEFvKZ1Puwps6RYdIV6lGUEAVI4yr0qS78NgCqEjbKRAUEFPKZ5OasWIKoCJdoEBQQEyLfjTpLjymACrSBeojKCiWlM8mjVzWmAmRZlEg6IhRC7EAPPnjw+zYs1j7RTiWACrSBQoEU2pKBk5W/bJddds+Dh5aPrr98SeXJ459iO2zikg+6iOYQpMycPK4dNN6nnXS8bF/XKdxrJ9VRLJTIJhCFRk4O/Yssnl+J6duv53N8zsru9Dm7TRuUraRiFRDgWAKZWfg1HnXnTd1s0nZRiJSDQWCKZSdB1/nXXfe1E3l/Iu0nwLBFMrOg5/2rnua5qS8Yx+U8y/Sfq3PGhqX8TJtNkzZefDT5PgXmfk0T+qmcv5F2s/cPcyBzVYAC8Ciu188bt+5uTlfWFjIfYzhiyX07mavvuylAKnP1X2RG1fOtLJsnt85MnisX7OKe7afV1lZRSQeZrbb3ecm7ReyRvAe4EHgp6o6wKS296bMgDnNXbc6cUWkLEECgZm9ALgI+B/Ab1d1nGkulqEupHlH2jZpyggRiVuoGsHHgN8Bnl3lQSZdLGO4kKb1Y4yaMmK4E3f4teeePsPdX11SW7+IHKP2rCEzuxg44O67J+y31cwWzGxhaWlpqmONy3iJIRtm3PiCSdk/o177N7v2a4SwiByn9s5iM7saeCtwGDiZXh/Bre7+lrTXTNtZDNVkDdWlSIdw2muHrTDj9994VqM+t4iUI2tncbCsIQAzezXw36rKGsqqqQHh1O23M+q3Y8Aj8xdN9dpRQmVLiUi1sgaCzg8oa/KkakVG9ebp69DcQSLdFjQQuPvfTaoNVK3Jk6oV6ccY9dpxlHYq0l2drxE0OR+/yFKYo177lpfPssJs5P5Ny5YSkfq0foqJNP1+gbR29KZcGIus5DXqtXMvOmVi2qmIdEsnA8GoKR0GtfnCqLmDRGRYJwPBqH6BvvWRXhjzZD5pvWARGdTJQJDW/m8Q5YRtRWYiFRHpZGdx2xZbaXLmk4g0XycDQQzTS+TR5MwnEWm+TgaCImmZTdS2Go6I1KuTfQTQrg7TLDORioik6WwgaBOlhIpIEQoELdGmGo6I1KszgaCpM4yKiITWiUCgPHsRkXSdyBpSnr2ISLpOBALl2YuIpOtEIFCevYhIuhCL159sZl8ys/vNbJ+Z/feqj9m2kcQiImUK0Vn8FHCeuz9hZiuBL5jZZ9x9V1UHVJ69iEi62gOBuzvwRPLjyuRf1nXWp6Y8exGR0YL0EZjZCjO7DzgA3OXu947YZ6uZLZjZwtLSUv2FFBHpiCCBwN2PuPvZwAuAl5nZmSP2udbd59x9bmZmpv5Cioh0RNCsIXc/CPwdcEHIcoiIdFmIrKEZM1uTPF4FvAb4at3lEBGRnhBZQ88DPmFmK+gFopvc/W8DlENERADrJfE0m5ktAd8u8BbrgB+UVJwyqVzZNbFMoHLlpXLlU7RcL3L3iZ2sUQSCosxswd3nQpdjmMqVXRPLBCpXXipXPnWVqxNTTIiISDoFAhGRjutKILg2dAFSqFzZNbFMoHLlpXLlU0u5OtFHICIi6bpSIxARkRRRBwIzu8DMHjKzb5jZ9hHPn2RmNybP32tmGwaee3+y/SEz21JzuX7bzP7RzL5iZp8zsxcNPHfEzO5L/t1Wc7neZmZLA8f/9YHnrjCzryf/rqi5XB8dKNPXzOzgwHOVnC8zu87MDpjZAynPm5n9YVLmr5jZOQPPVXmuJpXrV5PyfMXMvmhmZw089y0z25ucq4Way/VqM/vngd/VBweeG/v7r7hc2wbK9EDyfTolea6S82VmLzSzu83sQetNxf+eEfvU+/1y9yj/ASuAbwKnAT8B3A+8ZGif3wD+LHl8OXBj8vglyf4nAacm77OixnKdC6xOHv/XfrmSn58IeL7eBvzRiNeeAjyc/L82eby2rnIN7f9u4LoaztergHOAB1Kefx3wGcCAlwP3Vn2uMpbrlf3jARf2y5X8/C1gXaDz9Wrgb4v+/ssu19C+vwTsrPp80RtUe07y+NnA10b8Ldb6/Yq5RvAy4Bvu/rC7/xj4JHDJ0D6XAJ9IHt8MnG9mlmz/pLs/5e6PAN9I3q+Wcrn73e7+ZPLjLnqT71Uty/lKs4XeLLE/dPfHgbsob36ovOV6M3BDScdO5e6fB344ZpdLgL/2nl3AGjN7HtWeq4nlcvcvJseF+r5bWc5XmiLfy7LLVdd367vu/uXk8Y+AB4HhOfJr/X7FHAjWA98Z+PlRjj+ZR/dx98PAPwPPyfjaKss16Ep6kb/vZOtNv73LzC4tqUx5yvXLSVX0ZjN7Yc7XVlkukia0U4GdA5urOl+TpJW7ynOV1/B3y4E7zWy3mW0NUJ5XWG9lws+Y2RnJtkacLzNbTe+CesvA5srPl/WaqzcBw1Px1/r9CjHXUFlsxLbhFKi0fbK8dlqZ39vM3gLMAb8wsHnW3R8zs9OAnWa2192/WVO5/g9wg7s/ZWbvpFebOi/ja6ssV9/lwM3ufmRgW1Xna5IQ363MzOxceoHgPw1s3pycq+cCd5nZV5M75jp8md50B0+Y2euAHcCLacj5otcsdI+7D9YeKj1fZvaT9ALPe939X4afHvGSyr5fMdcIHgVeOPDzC4DH0vYxsxOBn6ZXTczy2irLhZm9BvgA8Hp3f6q/3d0fS/5/mN4U3ZvqKpe7/9NAWf4c+Lmsr62yXAMuZ6jqXuH5miSt3FWeq0zM7D8CHwcucfd/6m8fOFcHgE9TXnPoRO7+L+7+RPL4/wIrzWwdDThfiXHfrdLPl/WW6b0FuN7dbx2xS73fr7I7Qur6R6828zC9poJ+J9MZQ/u8i2M7i29KHp/BsZ3FD1NeZ3GWcm2i10H24qHta4GTksfrgK9TUsdZxnI9b+DxG4Bd/kwH1SNJ+dYmj0+pq1zJfhvpdd5ZHecrec8NpHd+XsSxnXlfqvpcZSzXLL0+r1cObX8W8OyBx18ELqixXD/b/93Ru6DuT85dpt9/VeVKnu/fID6rjvOVfO6/Bj42Zp9av1+lnewQ/+j1rH+N3kX1A8m2D9O7ywY4GfhU8ofxJeC0gdd+IHndQ8CFNZfr/wHfB+5L/t2WbH8lsDf5Y9gLXFlzua4G9iXHvxs4feC1v5acx28Ab6+zXMnPVwHzQ6+r7HzRuzv8LrBM7y7sSuCdwDuT5w3446TMe4G5ms7VpHJ9HHh84Lu1kGw/LTlP9ye/4w/UXK7fHPhu7WIgUI36/ddVrmSft9FLHhl8XWXni15znQNfGfg9vS7k90sji0VEOi7mPgIRESmBAoGISMcpEIiIdJwCgYhIxykQiIh0nAKBSE7J7JGPDMxSuTb5+UWTXivSRAoEIjm5+3eAPwXmk03zwLXu/u1wpRKZnsYRiEwhmSJgN3Ad8A5gk/dmzxSJTsyTzokE4+7LZrYN+CzwWgUBiZmahkSmdyG96QvODF0QkSIUCESmYGZnA79Ib0Kw9yWLhohESYFAJKdklbs/pTeP/H7gGuAjYUslMj0FApH83gHsd/e7kp//BDjdzH5hzGtEGktZQyIiHacagYhIxykQiIh0nAKBiEjHKRCIiHScAoGISMcpEIiIdJwCgYhIxykQiIh03L8DiTmG060MyuEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y)\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"y\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import sklearn.linear_model as slm" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lin_reg = slm.LinearRegression()\n", "lin_reg.fit(X, y)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "xx = np.linspace(0, 2, 100).reshape(-1, 1)\n", "yy = lin_reg.predict(xx)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3XmYFMX5wPHvy4KwKGRBUHFlBRQvUERXNGKiqAmKB0hMxIgaRdF4oxJR8QKRRTzwiD+CRzRqFERBjEZEDlEBzSIohxAUkLAg4AGCrLBA/f6oWZxd5uiZ7p7pnnk/z8PD7ExPd03v7NvVVW9ViTEGpZRS4Vcn2wVQSinlDQ3oSimVIzSgK6VUjtCArpRSOUIDulJK5QgN6EoplSM0oCulVI7QgK6UUjlCA7pSSuWIupk8WLNmzUyrVq0yeUillAq92bNnf2OMaZ5su4wG9FatWlFeXp7JQyqlVOiJyFdOttMmF6WUyhEa0JVSKkdoQFdKqRyhAV0ppXKEBnSllMoRGtCVUipHZDRtUSmlgm78nAqGT1zMqvWV7FtUSP+uB9OjY3G2i+WIBnSllIoYP6eCW1+bR2XVdgAq1ldy62vzAEIR1LXJRSmlIoZPXLwzmFerrNrO8ImLs1Si1CQN6CLyjIisFZH5Uc/9XkQWiMgOESn1t4hKKZUZq9ZXpvR80DipoT8LnFbruflAT2C61wVSSqls2beoMKXngyZpQDfGTAe+q/Xc58aYcNyDKKWUQ/27HkxhvYIazxXWK6B/14OzVKLUaKeoUiq0vM5IqX6vZrnEISJ9gb4AJSUlfh9OKZUn/MpI6dGxODQBvDbfs1yMMaOMMaXGmNLmzZNO56uUCqnxcyroXDaF1gPepHPZFMbPqfD1eGHPSPGDNrkopVzLRv522DNS/OAkbfElYCZwsIisFJE+InKOiKwEfgm8KSIT/S6oUiq4slFbDntGih+S1tCNMefHeWmcx2VRSoVUNmrL/bseXOOuAMKVkeIHHSmqlHItG7XlHh2LGdrzcIqLChGguKiQoT0PD22Hphe0DV0p5Vq2asthzkjxgwZ0pZRrYc/fzhUa0JVSNaQ7WEdry9mnAV0ptVPYp4/Nd9opqpTaSQfrhJsGdKXUTjpYJ9y0yUUptdO+RYVUxAje+TxYJ1afAgSzA1gDulJqJx2sU1OsPoX+r3wKAlXbzc7ngtLPoE0uSqmddLBOTbH6FKp2mJ3BvFpQ+hm0hq6UqkHTD3+WSt9BEPoZtIaulFJxpNJ3EIR+Bg3oSikVR6wl6erVEeoVSI3ngtLPoE0uSikVR7wpDWI9F4RmKjHGJN/KI6Wlpaa8vDxjx1NKqVwgIrONMaXJttMaulJKJeB6IerqSrNI4u084GTFomdEZK2IzI96rqmITBKRJZH/m/hbTKWUyrzqPPSK9ZUYfs45T7Ze6vg5FXQeOpk//f4e5u/fjv8MG5mR8jrpFH0WOK3WcwOAycaYtsDkyM9KKZVT0pnbZvwnK5k47Cn++tifeXbs3RRt+Ibnyyt8XzQbnC1BN11EWtV6ujtwUuTxc8A04BYPy6WUUlmX0tw2xsCECRxyVX96rFrCil/szV9Ou45x7btQVVCP2RMX+95xmm4b+t7GmNUAxpjVIrKXh2VSSqlAcDS3zY4dMG4cDB4Mn35Kg6IW3NztBsYfdhLbCn4OsZkYeOR7p6iI9AX6ApSUlPh9OKVUmlx3/uWghHPbbN8OY8fCvffC/Plw0EHwj39w0Yp9WLFx6y77ysTAo3QHFq0RkRYAkf/XxtvQGDPKGFNqjClt3rx5modTSvkp3c6/IBo/p4LOZVNoPeBNOpdNcf0Z6tf9OUw2aViPod0Po8fn78Hhh0OvXrBtG7z4IixcCBdeyI3dDttlMFKmBh6lG9AnABdHHl8MvO5NcZRS2ZArC1t4eWGq3tf6yioACnZs57ezJ3HKuV3gggugoABeftnWzv/4R/sz2Z3gLGmTi4i8hO0AbSYiK4G7gDJgjIj0AVYAv/ezkEopf+XKwhaJLkypBtTqfdXdvo0eC6dx9czRtP5+NUtaHECjV1+FHj2gTuw6cbYmOHOS5XJ+nJdO8bgsSqksyZWFLby8MK379gfOmz+Fq2eOoWTDGubtfQCX9xzIuwcey7KeZ7otqi90pKhSKmcWtvDkwrRlCzz7LO89dRct1q/h033acvepVzDlgGNAhOIAX+Q0oCul4k5CFbYsF1cXpp9+gqefhrIyWLmS+ocfRd/Truadko47h+2ncpHLRtaQBnSlclSqASUXFrZI68JUWQlPPgnDhsGqVdC5MzzzDE1PPZVuc1exII2gHGvpukwsU6ezLSqVg2oHFLC1y0wuJxf4vPbNm+Fvf4P774evv4YTT4S77oKTToo7kZbTz9S5bErMpp/iokI+HHByykV1OtuiLnChVA7KdhpioPPaN22C4cOhdWu48UY49FCYNs3+69IlYTB3+pmylTWkAV2pHJTtNMRsX1Bi2rjRto+3bg1/+QsceSS8/z5MmWJr50mk8pnidcL6nTWkAV2pHFI9SjJeQ2qm0hCzfUGpYcMGGDIEWrWCW2+FY46BmTNh4kQ44QTHu0nlM8Vaui4TWUPaKapUjojVbh4tk2mIgchrX78eHnkERoywj888E+680wb0NKTymbKVNaQBXakcEatJoFpxhjsls5rX/t13Nog/8gj88IMd0XnHHXDUUa52m+pnykbWkAZ0pXJEvCYBgbQyK9zISg31m2/goYfgscdsx+e558LAgdChgye7D0OuvgZ0pXJEIJo5omSshrp2LTzwADzxhE1F/P3vbY28fXvPDxX0XH3tFFUqR2SrIy5rvv4abrrJdnY++KBtWlmwAEaP9iWYh4HW0JXKEWFoEvDEqlV2VOeoUbB1K/TuDbfdBgfn6IUrBRrQlcohQW8ScGXlSptH/tRTdlGJiy6yaYht2/p2yMCPdq1FA7pSKti++soG8meeset3XnIJDBgAbdoA/gXdbM3H4oa2oSulgmnZMujb19bAn34aLr0UvvjCNrVEBXO/phgI5GjXJFwFdBG5XkTmi8gCEbnBq0IppfLYl1/a4N22LTz3nA3qX34J//d/sP/+NTb1M+gGarSrQ2kHdBFpD1wOdAI6AGeKiH+NWUqp3Pbf/8LFF9vOzZdegmuugaVL4fHHoWXLmG/xM+hmaz4WN9zU0A8FZhljNhtjtgHvAed4UyylVN74/HObqXLoofDKK3D99TaQjxgBxYnbqv0MumFMA3UT0OcDvxaRPUWkIdANiH0ZVUqp2hYsgF69oF07GDfO5pQvW2Zzylu0cLQLP4Nuj47FDO15OMVFhQh2+oRMziefjrSzXIwxn4vIMGASsAn4FNhWezsR6Qv0BSgpKUn3cEqpXPHZZzB4MIwdC3vsYTNW+vWD5s1T3pXfufdhSwP1bMUiEbkPWGmMeSLeNrpikVJ57JNPbCAfPx4aN4brroMbboA998x2yQLP6YpFrvLQRWQvY8xaESkBegK/dLM/pdTPwjaoJa7ycrjnHvjXv6CoCO6+2wbzJk3iviVnPnuGuR1Y9KqI7AlUAVcbY773oExK5b0wDmrZxUcfwaBB8NZbNngPHgzXXgu/+EXCt/nx2fPlAuEqD90Y8ytjzGHGmA7GmMleFUqpfBfGQS07zZgBXbvCccfZoD5kCCxfbqeyTRLMwfvPHmvwUb/Rcxk4fl5a+wsyHSmqVACFcVAL06fDKadA584wZ44drr98uZ04q3Fjx7vx+rPHukAY4MVZK4KxaLWHdC4XpdLk52180OY2j8sYmDbNtpG/9x7svbdNO7ziCth997R26cVnj/7dxEv7MNhgn0tNLxrQlUqD323cWV3CzQljYPJkG8g/+MDmjY8YYYfpF7q76KTy2WNdVIGEa6tGC/QdTxo0oCuVhkTtvE4DeqIafmDnNjcGJk60nZ0zZ9qRnI8/Dn36QIMGjnaR7M7G6WePd1FtUK+Oo2AOAbzjcUkDulJpcNvO66SGXzuwVXcKZiWoGwNvvmkD+X/+AyUldrKsSy6B+vUd78bpnY2TAT3xLqpOg3mg7ng8op2iSqXB7RwiTjI5/Jwa1jFj4PXXobQUzjoL1q2z09cuWQJXXplSMAdvM1hSbS5p0rBeqIbxp0Nr6Cot+ZLXG4/bNm4nNXwvmnXStmOHnV9l8GD49FM44AC7wETv3lCvXtq79TKDJV7naVFhPbZs27HL7+aus9rl/HdUa+gqZYGoOWaZ24mbnNTws5K6uGMHjBkDHTrAuefC5s12TvJFi2zziotgDt7OjhhvYq67z24Xukm1vKI1dJWyrNYcA8TNxE1OavgZTV3cvt0G8nvvhYUL4ZBD4IUX7GyIBQXJ3++Ql9k7yTpP8+m7WE0DukpZKAe9BIyTTI6MpC5u22YXkxgyBBYvtlPZvvyyrZ2nEMidNsF5nb0TttkQ/aYBXaUsNINeAi5ZMPI1dbGqCl580QbyL76AI46w09mecw7USa0lNtWcfA3C/tGArlIW+EEvOcTz4Ld1Kzz/PNx3n10VqGNHeO016N495UBeTZvggkMDukpZYAe9qPi2bIFnn4WhQ+Grr2wa4ogRcOaZIOJq19oEFxwa0FVa9LY5JH76yaYblpXB//4Hxx5rBwSddprrQF4tXhPcLwrdZcSo1GnaolK5qLISHnvM5o9ffTW0bAlvv22H659+umfBHGwTXL06u+7vx63b8iqVNQg0oCsVYOPnVNC5bAqtB7xJ57IpyQPk5s3w8MPQpo1dFeiAA+Ddd+0EWl27ehrIq/XoWMweDXa92a/absIxf3sOcbsEXT/gMuxMlPOAS4wxP3lRMKXyXUrZIz/+aJtShg+HtWuhSxebfnjiiRkp6/rNVTGf13b0zEq7hi4ixcB1QKkxpj1QAPTyqmBK5TtH855s3AjDhkGrVtC/vx3hOX06TJmSsWAO3o4AVelz2+RSFygUkbpAQ2CV+yIppSBJ9siGDTaHvFUrGDAAjj7aLv32zjvwq19ltqDEH4avqayZlXaTizGmQkQeAFYAlcA7xph3am8nIn2BvgAlJSXpHk7lqXyeBCxW9kjjnzZx3fx/Q6vesH49nHEG3HkndOqUpVJamsoaDGJMvAWakrxRpAnwKnAesB54BRhrjHkh3ntKS0tNeXl5WsdT+ad2GzLYWl9QJ1ry+uIT/fl/UbmRS8tf59LZE2i0ZTOcfbYN5Ecf7eEnUEElIrONMaXJtnPTKXoqsMwYsy5ywNeA44G4AV2pVIRpBKIfS9L16FjMbt9/x7rBZfScMY5GWytZdfLpNHrwPjjySM/KrnKHmzb0FcBxItJQRAQ4Bfjcm2IpFa4RiF4u3ADYhSQGDKDb2b/k4vdeolGPs+Czz9h38lsazFVcbtrQPxKRscAnwDZgDjDKq4IpFaZJwDy7+KxZAw88AE88YUd5nnceDBwIhx3mQSlVrnOV5WKMucsYc4gxpr0x5kJjzBavCqZUmDInXKftrVoF/fpB69bw0EPwu9/Zecn/+U8N5soxnctF+cpNR2GYMifSnoFy5UqbR/7kk3Zu8osugttugwMP9LnEKhdpQFe+SaWjMF7gD8skYClffFassDMfPvOMXfbt4ottIG/TJoOlVrlGA7ryjdMsFT8yRLLB0cVn+XI7F/mzz9qfL73UDgxq1crn0ql8oJNzKd847Sj0PEMkiL78Ei67DNq2tYsuX365XSlo5EgN5sozWkPPknwYAek0SyVM6Ykp++9/bY38hRegXj3485/hllugOLd+1yoYtIaeBdVNDBXrKzH83MSQa3NHO81SycmJnRYtgt694dBDYcwYO5Xt0qXw6KN5HcxTng5YpUQDehbkRRMDtk15aM/DKS4qRIDiosKYw/bDlJ6Y1IIFcP75NtVw3Di46SZYtsymIrZoke3SZVW+VGSySZtcsiBXmxgSZaokEqb0xLg++wzuvRfGjoXdd4e//MUG8+bNs12ypDLV/BemqRzCSgN6Fvg9AjIb7fNuM1XCkp64i7lzYdAgWxtv1MimHvbrB3vume2SOZLJDKNcrcgEiTa5ZIGfTQx+3NY6affMl2akncrLoXt36NjRLiZx5502JfHee0MTzCGzv7ec7CsJGA3oWeC0bTkdXv+BOr1A5E3t66OP7BzkxxwD778P99xjA/k990DTptkuXcoy+XvLqb6SgNImlyzxq4nB6z9Qp+2eTpqRQp2qOWOGbVqZONEG7iFD4JproHHjbJfMlUxOgJYTfSUBpwE9x3j9B+r0ApFsLpPQjgZ9/30byN99F5o1g7IyuOoq216eA9KegyZNoe0rCQltcskxXt/WOm33rG5GatKw3s7n6tf9+esVqjZ2Y2DqVOjSBX79a5vBMny4bVq55RZXwdzPPOx09u1n85/KPK2h5xivb2tTrcH9VLVj5+P1lVU7a+GhaGM3BiZPtjXy99+HffaBhx+Gvn2hYUPXu/fzLsXNvrXWnDs0oOcgL/9AU7lAJKqFB3qxCmPgnXdsIJ8xw47kfOwx6NMHCr0rn5952HdPWKA53ir9gC4iBwOjo55qA9xpjBnhulQqUJxeIBLVwh8+78iMttU6Ygy89ZYN5B9/DC1b2pWCLr0U6tcHvO3I9esuZfycCtZXVvmybxUubpagWwwcCSAiBUAFMM6jcqkQSlQLD1SGgzHwxhs2kM+ebWc7HDXKzkm+2247N/O6icSvu5RE/RCBuANSGeNVk8spwJfGmK882p8KoWTt7Vlvq92xA15/HQYPhjlz7GISTz8NF15oZ0KsxesmEr8yShLVwjXHO794leXSC3gp1gsi0ldEykWkfN26dR4dTgVRYDMmduyAV16BI4+Enj1h0ya7wMTixbZ5JUYwB++bSPw6P/Fq4U0a1sv+uVcZJcYYdzsQ2Q1YBbQzxqxJtG1paakpLy93dTylHNu+3QbywYPtgsuHHAIDB8J550Hd5DenncumxGwiKS4q5MMBJ/tR4rTUbhoCW/NP5WIR6kFfeUBEZhtjSpNt50UN/XTgk2TBXKl0pZxfvW2bXVCiXTs7la0IvPQSzJ8PF1zgKJhDeIaqu63567S2ucOLNvTzidPcolKnNaWaUuqY3LaN2fc9TvNHH6Dk2wq+2Kc13w0bSaebL4c6qdddAtWRm4Sb/gmd1jZ3uAroItIQ+A1whTfFyW+JgheEI7B4zVGwqaqC55/nx7sGcfTKr1iwVxuuOOc23ml7HA021mPop6vTPldZ78jNgFAM+lKOuAroxpjNQHjmCg24eMHr7gkL2LJtR/jmQfFAwmCzdavt3Bw6FJYv53/FB/FAzzt498BOtpmFmsFf735iC/SgL5USncslQOIFr/WVVeGZB8VjsYLKbtuquGrRJGjbFq64AvbaC958k9MveJB32x67M5hXW7W+MmY78Q2j59Jx0Dt531Yclr4ClZwG9ABJtUaUD7fE0cGm/ratXDz7DaaPuoz+rz9ih+i//TbMmgXdurFvk9jzrexbVBjz7gfg+81Ved8BGNh0U5UyncslQOINPGlQrw7fb951aHc+3BL36FhMQWUlS+97mF7vvczem77jm47HwvDRcPLJNWrjiQbu9Bs9N+4xnHQA5npzTT70FeQDDegBEi+rAgjePCiZ8OOPMHIkZw0fDmvWwEknwV130eykk2JunigrZfjExTHbiaslutsJ7VzuKu9oQA+YRDWlXK4h1rBxo50k64EH4Jtv4NRTYcwYOzd5EvHOX6zae7REdzua1qfCQgN6SOTFLfEPP8Djj8ODD8J330HXrnbx5eOPd73r6nN394QFu8xMmOxuR9P6VFhop6jKvg0b7PD8Vq3g9tvhuONsR+fbb3sSzKv16FjM3Lt+y4jzjkypA1BXq1dhoTV0lRJPOwe//x4eeQRGjLBB/eyzbY386KO9LXRE7bI/fN6Rjsqe6XU3lUqXBnTlmGedg99+a5d2e/RR217es6edNKtjRz+KDbhfog3yqA9DhZYGdOWY687BdevgoYdsO/mPP8Lvfgd33AFHHOFTiX/mtux50YehQk8DunIs7c7BNWtsxsoTT0BlpZ2+duBAOxtihmjHpsoHGtCVYynP+bF6NQwfDiNHwpYt8Mc/2k7PQw7xvGzJ2vZ1vhKVDzSgK8ccdw6uXAn332/X6dy2DXr3httug4MO8qQctYN3l0Oa8+rsioTt49qxqfKBBvQACMuw8qSdgytWwLBh8NRTdtm3iy6CW2+FAw/0rAyxOjdfnLWC2utu1W4f145NlQ9cL0GXCl2CbldeLB8Wb78ZC17Ll9spbP/+d/vzJZfAgAHQurXnh4q3LFwsAiwrO8PzMiiVaU6XoHO7wEUR8BTQHjDApcaYmW72mQ+ig20dEbbXuqi6HVaesblHli6F++6D556zKwJddpkN5CUlae3OyUUolU5MbR9X+cZtk8sjwNvGmHMji0XHnr9U7VQ72NYO5tWqA1c6NW3f5x5ZssQG8ueft+tzXnkl3HIL7Lef412k0w4O8Ts3BWo0u2j7uMpHaQ/9F5HGwK+BpwGMMVuNMeu9KljYxVvYON683LXtW1SY8uK91ceM1yThtKkirkWL4MILbZbKyy/DtdfaWvpjj6UczGt/rhdnrXC0iEe8xRguOK5E5/NWec9NDb0NsA74u4h0AGYD1xtjfvSkZCGWqMnDSZNBde0ylZp2rLb42iSyXcqBbuFCO9fK6NFQWAj9+sHNN8M++yR8W7y7i1ifK15PTu3zpZ2bSsXnJqDXBY4CrjXGfCQijwADgDuiNxKRvkBfgJI021bDJlEgjtdkUCDCDmNqBKh4izLEuig4qfmbyHaOg9+8eTaQjx0LDRtC//5w0012ybck3F7UqsVqB9dRm0rF5ma2xZXASmPMR5Gfx2IDfA3GmFHGmFJjTGnz5s1dHC48Eo1KjNdk8OAfOrCs7Aw+HHDyzmCVyix/ToOko+3mzrXD8o84ws54eOutNpNl2DBHwRySX9RikVo/azu4UqlJO6AbY74G/ici1X9xpwALPSlVyCUKxKms35jK4r1OMzoSbjd7NnTvbifJmjzZzny4fDkMGQLNmjnaf7V0LmraDq6UO26zXK4FXoxkuCwFLnFfpPBLNirRaZNBKu3FyVbkqV2GGj7+GAYNgjffhKIiuOceuO46+zhNiYbaazu4Uv7QgUU+ycboz1ipgFMXrYtfhpkzbSB/+21o2tS2j19zDTRu7ElZ/BgwpVQ+cjqwSAN6PvrgA1sLf/dd25Ry881w1VXQqJGnhwnLlAZKBV1GRoqqkJk2zdbIp061nZv33w9//jPssYcvh8tkNopePJTSgJ77jIEpU2wgnz7d5o4//DD07WtTEXNAxqY6UCrgNKDnKmNg0iQbyD/8EIqL7YjOPn3s4KAc4maqA63Zq1yiAd0Fv4NBWvs3xnZyDhoEs2ZBy5bw17/aQF6/vmdlC5J0VyPSmr3KNW4GFuW1VOdZ8X3/xsAbb0CnTtCtm10t6G9/gy++sB2eORrMIbUBWNES1eyVCiMN6GnyIhjEm8DL6f7Hz6nghPve5Yqet7N4v4Pg7LPh22/tAhNLlth28t12S/MThkcqA7Ci6TqjKtdok0ua3AaDZLf7yfY/fvb/mDp0JE9O/yeHrlvOsiYtuPWsGzlu4LV079QqxU8TbukOVNJ1RlWu0YCeJrfBIFlHXrz979d4Nxg9miOuH0CPNcv5smkx/c64kQmHncj2OgVMn7I07wI6pJciGbZ1RrUDVyWjTS5pSvc2v1qyGnjt/Rfs2M7vF73HW09eBb16sX3bdq47qz+/6fME49qfzPY6dtuK9ZUxm3DUrlKZVyfb/O6zUblBa+hpcjsfSbIafvV+HnprIcfM/DfXzxpDybcV0L49jBnDJUuasPKHLTH3Hf0HH70vtauwTMXr+ypUKidoQHfBTTBIdrv/+sfLWXD/E/xj8gu0Wr+aDQcdBqMehR49oE4dbnawoEW+/MHnQ1OEduAqJzSgZ0ncGn675sy5436Ofuwhum9Yw7y9D+DyngP54NDjGdr6CHrUqRPz/U5X/Mk1+ZJLrh24ygmdnCsotmyBv/8dhg6FFSuY2+IgHul8PlPblILYpR+Kiwr5cMDJMd8eby3RRO/JBfnyuXX2yvymk3OFxU8/2bzxsjKoqIDjjuPiY/vwXuujdgbyaolq22HL2PBKvjRF6Bzyyom8D+hZa3+trIRRo+yybqtXwwknwLPPwimn8MWwqZDi7XW+/sHnU1NEWDpwVfa4CugishzYCGwHtjm5JQiSrLS//vijHZJ///2wZg2ceCK8+CKcdNLOGnm6te18/IPP1zsTpWLxoobexRjzjQf7ybiMpoJt2gRPPAEPPADr1sEpp8Do0Tag15Kvte106LlS6md53eTiV/trdDPOgQ12MOLbGbR76Uk7z0rXrnDHHdC5c8J95GNtO116rpSy3AZ0A7wjIgb4mzFmlAdlyhg/2l+rm3HqbdzANbPfoE/56xT9tImvTziZfR64D4491k2RlVIqLrcBvbMxZpWI7AVMEpFFxpjp0RuISF+gL0BJSYnLw3nLj/bXkePLuWLqaC4tn0DjLT8y6cBOPHr8+Xx36BF8qMFcKeUjVwHdGLMq8v9aERkHdAKm19pmFDAKbB66m+N5zdP212+/hYcf5pXhD9FoayUT2x7Ho53PZ8HeBwAgOZZGp5QKnrQDuojsDtQxxmyMPP4tMMizkmWI6/bXb76Bhx6yy7tt2sR/2v+a4cecy+d7tamxWS6m0SmlgsVNDX1vYJzYVLu6wD+NMW97UqowWLMGHnzQZq5s3gx/+AMMHMgPVU1Y/to80DQ6pVSGpR3QjTFLgQ4eliUcVq+G4cNh5Eg7XL9XLxg4EA49FIAekc00jU4plWl5nbYYLemI0YoKOxho1CioqoILLoDbb4eDDtplX5pGp5TKBg3oJBkx2myHnWflqadgxw648EK47TY48MBsFjkw8mHqWqXCQgM6sUeMNv1mNVz5V5gzEYyBSy6BW2+F1q2zVMrgyZepa5UKCw3o1BwZ2nL911w1cwznzp+MQaDvZTBgAOy/fxZLWFNQasW6io5SwaIBHZtSWHfZl1wzYwznLJjC9joF/PPI0xj/m97lJCviAAALXklEQVSMK+uV7eLVEKRacb5MXatUWGhAX7yYlz54guK3xlFVUJd/HHUmI4/9HRub7sXQnodnu3S7CFKtOJ+mrlUqDPI3oC9cCEOGwMsvU1K/Pkt6X86NLU9l/vZC9i0qZGhAO/eCVCvWqWuVCpb8C+jz58PgwfDKK9CwIdx0E9x8M2332os3sl02B4JUK9apa5UKlvwJ6J99BoMGwauvwh572IyVfv2gWbNslywlsWrFAJu3bmP8nIqMB1PNuVcqOHI/oH/yia2Rjx8PjRvbuchvuAGaNgWCkzHiVHXZ7p6wgPWVVTuf/35zVdLO0bB9VqVUaupkuwC++c9/4Kyz4OijYdo0uPtu+OorW0uPCua3vjaPivWVGH7OGBk/pyKbJU+qR8didq+/67W4unM0lrB+VqWUc7kX0GfOhNNPh06dYMYMuPdeWL4c7roLiopqbJooYyRd4+dU0LlsCq0HvEnnsim+BcxUO0f9+KxKqWDJnSaXDz6wte9Jk2DPPWHoULj6amjUKO5bvM4YyWSOeKqdo0HKjlFK+SP8NfTp0+2Cy7/6FcydayfQWr7cju5MEMwhfvBLN2Mkk7Xg/l0PprBeQY3nEqUMev1ZlVLBE86AbgxMmQInnmj/LVxoF5lYvhz697dZLA6kGhSTSbcWnE4zTY+OxQzteTjFRYUIUFxUyNCeh8e9E/D6syqlgic0TS7j51Qw/O1FHDB3Bjd9NIYOX82HffeFRx5hwjHdGPbeClYNmppS9obXedTp5Ii7aaZJJWVQc8aVyn1ijLtlPkWkACgHKowxZybatrS01JSXl6d8jPGfrOSt4X/nyukvctSqxaxq1IynO/+BDnfdyI76DWKOVkxUW/VL7eDspCydy6bEvAgUFxXy4YCTfSurUio8RGS2MaY02XZe1NCvBz4HGnuwr5gef+NTxo6/n027FXJb16sZ2/5UttatR/G0rwACM7dJOrVg7axUSnnFVUAXkf2AM4AhwI2elCiGLyvhj73uY0mzllQV1Nv5fKKgl62AmOrIySAN5VdKhZvbGvoI4C9A4nQSl/YtKmQhbWI+D4QiIMYbpelkgqva7+1ySHOmLlqnbeFKqRrSznIRkTOBtcaY2Um26ysi5SJSvm7durSOlShDIwzZG4lGaSbLVon13hdmrdARn0qpXaTdKSoiQ4ELgW1AA2wb+mvGmN7x3pNupygknock6HOUuOn4jPfe2gpEePAPHQL1uZVS3nDaKeo6yyVysJOAm/3KcnEqqIG99YA3iXWWBVhWdkZa740lW9k9Sil/OQ3o4RxYFEOQJ59yM0ozlb4AnZtFqfzmSUA3xkxLVjv3W5Ann3LTzh/rvYlouqNS+StnauhBzudOdZh+svf2Pq6EApGY2wctu0cplTmhGfofT3W7ebx25qAEODcr+8R6b+n+TXU9T6VUDaEO6LGG2kfL5QCnc7MopWoLdUCP1W5erTikAS6VTB1dz1MpFS3UAT1e+7hAKCe2yuQCGUqp3BPqTtFcW7QhyJk6SqngC3VAD8Ow/1QEOVNHKRV8oQ7obtIBgyjX7jiUUpkV6jZ0yK2OQSczLyqlVDyhD+i5RFMRlVJuaEAPmFy641BKZVboAnpQZ1RUSqlsC1VA1zxtpZSKL1RZLpqnrZRS8YUqoGuetlJKxReqgK552kopFZ+bRaIbiMjHIvKpiCwQkXu8LFgsuTYyVCmlvOSmU3QLcLIxZpOI1AM+EJF/G2NmeVS2XWietlJKxZd2QDd2delNkR/rRf65X3E6Cc3TVkqp2Fy1oYtIgYjMBdYCk4wxH8XYpq+IlItI+bp169wcTimlVAKuAroxZrsx5khgP6CTiLSPsc0oY0ypMaa0efPmbg6nlFIqAU+yXIwx64FpwGle7E8ppVTq3GS5NBeRosjjQuBUYJFXBVNKKZUaN1kuLYDnRKQAe2EYY4z5lzfFUkoplSqxySoZOpjIOuArF7toBnzjUXG8pOVyLohlAi1XqrRcqXFbrv2NMUk7ITMa0N0SkXJjTGm2y1Gblsu5IJYJtFyp0nKlJlPlCtXQf6WUUvFpQFdKqRwRtoA+KtsFiEPL5VwQywRarlRpuVKTkXKFqg1dKaVUfGGroSullIojEAFdRE4TkcUi8oWIDIjxen0RGR15/SMRaRX12q2R5xeLSNcMl+tGEVkoIp+JyGQR2T/qte0iMjfyb0KGy/UnEVkXdfzLol67WESWRP5dnOFyPRxVpv+KyPqo13w5XyLyjIisFZH5cV4XEXk0UubPROSoqNf8PFfJynVBpDyficgMEekQ9dpyEZkXOVflGS7XSSKyIep3dWfUawl//z6Xq39UmeZHvk9NI6/5cr5EpKWITBWRz8VOIX59jG0y+/0yxmT1H1AAfAm0AXYDPgUOq7XNVcDIyONewOjI48Mi29cHWkf2U5DBcnUBGkYe/7m6XJGfN2XxfP0JeDzGe5sCSyP/N4k8bpKpctXa/lrgmQycr18DRwHz47zeDfg3IMBxwEd+nyuH5Tq++njA6dXlivy8HGiWpfN1EvAvt79/r8tVa9uzgCl+ny/s4MqjIo8bAf+N8beY0e9XEGronYAvjDFLjTFbgZeB7rW26Q48F3k8FjhFRCTy/MvGmC3GmGXAF5H9ZaRcxpipxpjNkR9nYScp85uT8xVPV+ysmN8ZY74HJuHd/Duplut84CWPjh2XMWY68F2CTboD/zDWLKBIRFrg77lKWi5jzIzIcSFz3y0n5yseN99Lr8uVqe/WamPMJ5HHG4HPgdpze2f0+xWEgF4M/C/q55XselJ2bmOM2QZsAPZ0+F4/yxWtD/ZKXK2B2GmDZ4lID4/KlEq5fhe5xRsrIi1TfK+f5SLSNNUamBL1tF/nK5l45fbzXKWq9nfLAO+IyGwR6ZuF8vxS7Epl/xaRdpHnAnG+RKQhNjC+GvW07+dLbDNwR6D2FOIZ/X65mcvFKxLjudqpN/G2cfLedDnet4j0BkqBE6OeLjHGrBKRNsAUEZlnjPkyQ+V6A3jJGLNFRK7E3t2c7PC9fparWi9grDFme9Rzfp2vZLLx3XJMRLpgA/oJUU93jpyrvYBJIrIoUoPNhE+ww9A3iUg3YDzQloCcL2xzy4fGmOjavK/nS0T2wF5AbjDG/FD75Rhv8e37FYQa+kqgZdTP+wGr4m0jInWBX2Bvv5y8189yISKnArcDZxtjtlQ/b4xZFfl/KXZq4Y6ZKpcx5tuosjwJHO30vX6WK0ovat0S+3i+kolXbj/PlSMicgTwFNDdGPNt9fNR52otMA7vmhmTMsb8YIzZFHn8FlBPRJoRgPMVkei75fn5Erv85qvAi8aY12Jsktnvl9cdBWl0LNTFdgi05ufOlHa1trmamp2iYyKP21GzU3Qp3nWKOilXR2xHUNtazzcB6kceNwOW4FEHkcNytYh6fA4wy/zcEbMsUr4mkcdNM1WuyHYHYzupJBPnK7LPVsTv5DuDmp1WH/t9rhyWqwTbJ3R8red3BxpFPZ4BnJbBcu1T/bvDBsYVkXPn6PfvV7kir1dX9HbPxPmKfO5/ACMSbJPR75dnJ9vliemG7SH+Erg98twgbK0XoAHwSuQL/jHQJuq9t0fetxg4PcPlehdYA8yN/JsQef54YF7kSz0P6JPhcg0FFkSOPxU4JOq9l0bO4xfAJZksV+Tnu4GyWu/z7Xxha2urgSpsragPcCVwZeR1Af4aKfM8oDRD5ypZuZ4Cvo/6bpVHnm8TOU+fRn7Ht2e4XNdEfbdmEXXBifX7z1S5Itv8CZskEf0+384XthnMAJ9F/Z66ZfP7pSNFlVIqRwShDV0ppZQHNKArpVSO0ICulFI5QgO6UkrlCA3oSimVIzSgK6VUjtCArpRSOUIDulJK5Yj/Bxuo/ZqAkwwqAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y)\n", "plt.plot(xx, yy, \"r\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Polynomial regression" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "m = 100\n", "np.random.seed(36)\n", "X = 6 * np.random.rand(m,1)-3\n", "y = 0.5 * X**2 + X + 2 + np.random.randn(m, 1) * 0.9" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'y')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y)\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"y\")" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['x0', 'x0^2']\n", "[[1.37104315 1.87975932]\n", " [0.60968527 0.37171613]\n", " [2.713084 7.36082482]]\n", "[[1.37104315]\n", " [0.60968527]\n", " [2.713084 ]]\n" ] } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "from sklearn.preprocessing import PolynomialFeatures\n", "poly_feat = PolynomialFeatures(degree=2, include_bias=False)\n", "X_poly = poly_feat.fit_transform(X)\n", "print(poly_feat.get_feature_names())\n", "print(X_poly[0:3])\n", "print(X[0:3])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[('x0', 1.371043149574354), ('x0^2', 1.8797593179947645)]\n" ] } ], "source": [ "print(list(zip(poly_feat.get_feature_names(), X_poly[0])))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1.00643092 0.48808698]] [2.13867156]\n" ] } ], "source": [ "lin_reg = LinearRegression()\n", "lin_reg.fit(X_poly, y)\n", "print(lin_reg.coef_, lin_reg.intercept_)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "xx=np.linspace(-3, 3, 100).reshape(-1, 1)\n", "yy=lin_reg.predict(poly_feat.transform(xx))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y)\n", "plt.plot(xx, yy, \"r\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Overfitting" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "poly_feat = PolynomialFeatures(degree=20, include_bias=False)\n", "X_poly = poly_feat.fit_transform(X)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lin_reg = LinearRegression()\n", "lin_reg.fit(X_poly, y)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "xx=np.linspace(-3, 3, 1000).reshape(-1, 1)\n", "yy=lin_reg.predict(poly_feat.transform(xx))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y)\n", "plt.plot(xx, yy, \"r\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Decision trees" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ".. _iris_dataset:\n", "\n", "Iris plants dataset\n", "--------------------\n", "\n", "**Data Set Characteristics:**\n", "\n", " :Number of Instances: 150 (50 in each of three classes)\n", " :Number of Attributes: 4 numeric, predictive attributes and the class\n", " :Attribute Information:\n", " - sepal length in cm\n", " - sepal width in cm\n", " - petal length in cm\n", " - petal width in cm\n", " - class:\n", " - Iris-Setosa\n", " - Iris-Versicolour\n", " - Iris-Virginica\n", " \n", " :Summary Statistics:\n", "\n", " ============== ==== ==== ======= ===== ====================\n", " Min Max Mean SD Class Correlation\n", " ============== ==== ==== ======= ===== ====================\n", " sepal length: 4.3 7.9 5.84 0.83 0.7826\n", " sepal width: 2.0 4.4 3.05 0.43 -0.4194\n", " petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)\n", " petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)\n", " ============== ==== ==== ======= ===== ====================\n", "\n", " :Missing Attribute Values: None\n", " :Class Distribution: 33.3% for each of 3 classes.\n", " :Creator: R.A. Fisher\n", " :Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\n", " :Date: July, 1988\n", "\n", "The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken\n", "from Fisher's paper. Note that it's the same as in R, but not as in the UCI\n", "Machine Learning Repository, which has two wrong data points.\n", "\n", "This is perhaps the best known database to be found in the\n", "pattern recognition literature. Fisher's paper is a classic in the field and\n", "is referenced frequently to this day. (See Duda & Hart, for example.) The\n", "data set contains 3 classes of 50 instances each, where each class refers to a\n", "type of iris plant. One class is linearly separable from the other 2; the\n", "latter are NOT linearly separable from each other.\n", "\n", ".. topic:: References\n", "\n", " - Fisher, R.A. \"The use of multiple measurements in taxonomic problems\"\n", " Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\n", " Mathematical Statistics\" (John Wiley, NY, 1950).\n", " - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.\n", " (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218.\n", " - Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\n", " Structure and Classification Rule for Recognition in Partially Exposed\n", " Environments\". IEEE Transactions on Pattern Analysis and Machine\n", " Intelligence, Vol. PAMI-2, No. 1, 67-71.\n", " - Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\". IEEE Transactions\n", " on Information Theory, May 1972, 431-433.\n", " - See also: 1988 MLC Proceedings, 54-64. Cheeseman et al\"s AUTOCLASS II\n", " conceptual clustering system finds 3 classes in the data.\n", " - Many, many more ...\n" ] } ], "source": [ "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "print(iris.DESCR)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.33, random_state=42)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, presort=False,\n", " random_state=None, splitter='best')" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import tree, metrics\n", "model = tree.DecisionTreeClassifier(max_depth=2)\n", "model.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import graphviz\n", "dot_data = tree.export_graphviz(\n", " model, out_file=None,\n", " class_names=iris.target_names,\n", " feature_names=iris.feature_names,\n", " impurity = False, filled = True,\n", " label = 'none')\n", "graph = graphviz.Source(dot_data)\n", "graph.format = 'png'\n", "# graph.render(\"iris\", view=True)\n", "\n", "# Display in jupyter notebook\n", "from IPython.display import Image\n", "Image(filename = 'iris.png')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict(X_train)\n", "print(metrics.confusion_matrix(y_train, y_pred))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "y_pred = model.predict(X_test)\n", "print(metrics.confusion_matrix(y_test, y_pred))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }