No Description

simple-linear-regression.ipynb 42KB

    { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple Linear Regression\n", "\n", "*By James Peret – 30/07/2017*\n", "\n", "> Linear regression is a prediction method that is more than 200 years old.\n", "\n", "In statistics, [linear regression](https://en.wikipedia.org/wiki/Linear_regression) is an approach for modeling the relationship between a scalar dependent variable y and one or more explanatory variables (or independent variables) denoted X. The case of one explanatory variable is called simple linear regression.\n", "\n", "[Simple linear regression](https://en.wikipedia.org/wiki/Simple_linear_regression) is a linear regression model with a single explanatory variable. That is, it concerns two-dimensional sample points with one independent variable and one dependent variable (conventionally, the x and y coordinates in a Cartesian coordinate system) and finds a linear function (a non-vertical straight line) that, as accurately as possible, predicts the dependent variable values as a function of the independent variables. The adjective simple refers to the fact that the outcome variable is related to a single predictor.\n", "\n", "### Libraries\n", "\n", "We will be using [pandas](https://pandas.pydata.org) for handling data structures and [matplotlib](https://matplotlib.org/) for plotting graphs." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# imports\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "\n", "# this allows images to appear directly in the notebook\n", "from IPython.display import Image\n", "from IPython.core.display import HTML \n", "\n", "# this allows plots to appear directly in the notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data\n", "\n", "In this notebook we will be using a dataset of housing prices from the city of São Paulo, Brazil. The data was scraped from the web using this [notebook](../data/housing-prices-sao-paulo.ipynb)." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>meters</th>\n", " <th>price</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>100.0</td>\n", " <td>1150.0</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>102.0</td>\n", " <td>760.0</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>63.0</td>\n", " <td>519.0</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>30.0</td>\n", " <td>278.2</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>55.0</td>\n", " <td>400.0</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " meters price\n", "0 100.0 1150.0\n", "1 102.0 760.0\n", "2 63.0 519.0\n", "3 30.0 278.2\n", "4 55.0 400.0" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filename = '../data/housing-prices-sao-paulo.txt'\n", "data = pd.read_csv(filename, sep=\",\")\n", "data.columns = [\"meters\", \"price\"]\n", "data = data[data.price < 10000]\n", "data = data[data.meters > 25]\n", "data.head()" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1069, 2)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# print the shape of the DataFrame\n", "data.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we will plot this data using *panda's plot function* and see how it looks like:" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.text.Text at 0x10e7064a8>" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x10da14b00>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.plot(x=\"meters\", y=\"price\", s=2, kind='scatter', style=\"o\")\n", "plt.xlabel(\"Size (m²)\")\n", "plt.ylabel(\"Price (1000 of R$)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple Linear Regression with sklearn" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 438.17463796 846.37629325 1254.57794855 1662.77960384 2070.98125914]\n" ] } ], "source": [ "from sklearn import linear_model\n", "X = data[[0]]\n", "y = data.price\n", "z = pd.DataFrame([50, 100, 150, 200, 250], columns=['size_in_meters'])\n", "lm = linear_model.LinearRegression()\n", "model = lm.fit(X,y)\n", "predictions = lm.predict(z)\n", "print(predictions)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.text.Text at 0x1076849b0>" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEKCAYAAAAFJbKyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8lOWZ8PHfRRISAgFCgxLlpBJEZBUKiFaXekClFEu3\ntR6wlVpct311i+/rotAWrdKtuHRbaWttrdhqV+pZikhBwaq1q1GiKOeDyNFwNJAAIeRwvX88zzOZ\nmUwyM8mc5/p+Pvkkzz3PPHPPDMw19+m6RVUxxhhjItUp2RUwxhiTXixwGGOMiYoFDmOMMVGxwGGM\nMSYqFjiMMcZExQKHMcaYqFjgMMYYExULHMYYY6JigcMYY0xUcpNdgXgoKSnRgQMHJrsaxhiTVioq\nKg6oau9w52Vk4Bg4cCArV65MdjWMMSatiMj2SM6zripjjDFRscBhjDEmKhY4jDHGRMUChzHGmKhY\n4DDGGBMVCxzGGGOiYoHDGGNMVCxwmKxWsb2KG+eXU7G9KtlVMSZtWOAwWW3e8k28ufkA85ZvSnZV\njEkbGbly3JhITRs3OOC3MSY8Cxwmq40cUMwTU8ckuxrGpBXrqjLGGBMVCxzGGGOiYoHDGGNMVCxw\nGGOMiYoFDmOMMVGxwGEyni3yMya2LHCYjGeL/IyJLVvHYTKeLfIzJrYscJiMZ4v8jIkt66oyxhgT\nFQscxhhjomKBwxhjTFQscBhjjImKBQ5jjMkEc+eCCAwfHveHimvgEJH/KyJrRWSNiPxZRApE5DQR\nKReRLSLytIh0ds/Nd4+3uLcP9LvOTLd8o4hcGc86G2NMWnn7bSdg3Hmnc/ytb8X9IeMWOETkVOD7\nwChVHQbkANcBDwC/UNVBQBUw1b3LVKDKLf+Fex4iMtS939nAeOA3IpITr3obY0xaOHgQcnPhC19o\nLtu7F+64I+4PHe+uqlygi4jkAoVAJXAp8Jx7++PAV92/J7nHuLdfJiLilj+lqnWq+gmwBTgvzvU2\nJiNYupUM1NQEX/86lJRAY6NT9sYboAonnZSQKsQtcKjqbuBnwA6cgHEYqAAOqWqDe9ou4FT371OB\nne59G9zzP+dfHuI+PiJyi4isFJGV+/fvj/0TMiYNWbqVDDN/PuTkwAsvOMezZzsBY+zYhFYjbivH\nRaQYp7VwGnAIeBanqykuVPUR4BGAUaNGabwex5h0YulWMsTq1XDOOc3H550Hb70FeXlJqU48U46M\nAz5R1f0AIvICcCHQU0Ry3VZFX2C3e/5uoB+wy+3a6gEc9Cv3+N/HGNMGS7eS5o4cgbIy2LOnuWz7\ndujfP3l1Ir5jHDuA80Wk0B2ruAxYB/wNuNo9ZwrwF/fvRe4x7u2vqaq65de5s65OA8qAd+NYb2OM\nSS5V+O53oaioOWgsWuSUJzloQBxbHKpaLiLPAe8DDcAHOF1JLwNPichP3LL57l3mA38SkS3AZzgz\nqVDVtSLyDE7QaQBuVdXGeNXbGGOS6oUXnMFvz7Rp8OCDyatPCOJ8qc8so0aN0pUrVya7GsYYE7mt\nW+GMM5qPTzsN1qyBwsKEVUFEKlR1VLjzbOW4McYkU12dM/DtHzTWrXMCSQKDRjQscBhjskpKrW2Z\nNQsKCpxZUwB/+pMzjnHWWcmtVxi2kZMxJqt4a1uA5M04W74cLr+8+fiGG5ygIZKc+kTJAocxJqsk\ndW1LZSWcckrzcVER7NgBPXsmvi4dYF1VJulSquvAZDxvbcvIAcWJe9DGRrjsssCg8d57UF2ddkED\nLHCYFGBpMUxGe/BBJxnha685x/PmOeMYo8JOXkpZ1lVlks7SYpiM9O67MMZvDOXyy+Gvf3VyTaU5\nCxwm6SwthskoVVVQWupMs/VUVkKfPsmrU4xZV5UxxsSCKlx3HfTq1Rw0VqxwyjMoaIAFDmOM6bjH\nH4dOneDpp53je+5xAsallya3XnFiXVXGGNNe69bB2Wc3H48YAe+8A507J69OCWCBwxhjonX0qLO6\ne6ffHnNbtzr5pbKAdVUZY0w0vv996NatOWi8+KLTLZUlQQOsxWGMMZFZtAgmTWo+vvVW+PWvk1ef\nJLLAYYwxbdm2LbA10bcvbNgAXbsmrUrJZl1VxhgTyokTzupu/6CxZo3TRZXFQQMscBhjTEv33gv5\n+VBR4Rw/9pgzjuE/gyqLWVeVMcZ4Xn8dLrmk+fjaa+HPf06bdOeJYoHDmBAqtlcxb/kmpo0bnNgs\nqiY59u4NXN2dnw+ffuqsAjctWFeVMSFYxt4s0dgI48cHBo2334bjxy1otMEChzEhTBs3mLFlJZax\nN5P9+tdOuvNly5zjn/3MGcc4//zk1isNWFeVMSFYxt4MVlERuBfGJZfAK684QcRExFocJmPYToKm\nTYcPQ/fugUFj925ngyULGlGxwGEyho1LmJBU4cYbnS1aa2qcsldeccr9t3I1EbPAYdLSgvIdjLjv\nFRaU7/CV2biEaWHBAifd+Z/+5Bz/4AdOwLj88uTWK82Jqia7DjE3atQoXblyZbKrYeJoxH2vUHWs\nnuLCPD64+4pkV8ekmo0bYciQ5uOzz3bGNvLzk1enNCAiFaoadjN0a3GYtDT9yiEUF+Yx/coh4U82\n2aO2FgYNCgwaW7Y4qUIsaMSMBQ6TliaP6c8Hd1/B5DH9k12VtJAVEwfuuAMKC+Hjj53jZ591uqXO\nOCO59cpANpXAmCzgTRwAMm+a8csvw8SJzcf/+q/wu99ZmpA4iipwiEhX4LiqNsapPsaYOPAmDGTU\nxIGdO6G/X4vz5JNh82YoKkpenbJEm11VItJJRCaLyMsisg/YAFSKyDoRmSsigxJTTWNMR3gLGjMi\n71Z9vbO62z9ofPgh7NljQSNBwo1x/A04A5gJ9FHVfqp6EnAR8A7wgIh8M851NBkiK/rZTXz99KfQ\nuTOUlzvHv/+9M45xzjnJrVeWCddVNU5V64MLVfUz4HngeRHJi0vNTMbJ6H72DrBMvBH4+99h7Njm\n43/5F3juOWeNhkm4NgNHqKAhIp2BPFU92to5xoSSkf3sMWABtQ3798NJJzUfi8C+fVBSkrw6mfDT\ncUVkmoic6f79RWAnsFlE/k+8K2cyS0b1s8eQrXgPoakJvvKVwKDx1ltOuQWNpIuknfdtYIv794+A\nrwBlwPfC3VFEeorIcyKyQUTWi8gFItJLRF4Vkc3u72L3XBGRX4rIFhH5SEQ+73edKe75m0VkStTP\n0pgUZgE1yG9/Czk58NJLzvGcOc44xoUXJrdexqfNrioRuQc4Gfih20U1HLgSGA8UicjdwOuq+mYr\nl5gHLFXVq937FwI/AFao6hwRmQHMAO4CvoQTkMqAMcDDwBgR6QXcA4wCFKgQkUWqaiOsxmSSVatg\nxIjm4wsvdLZytcy1KSfcGMe9IjIG5wO7K/C8qt4nIp2A8ap6X2v3FZEewFicFguqegI4ISKTgIvd\n0x4HXscJHJOAJ9RJnvWO21opdc991R2QR0RexQlcf27PEzbGpJjqajj9dDh4sLls507o2zd5dTJt\niqSrairQDagBprtlg4FHw9zvNGA/8AcR+UBEHnUXEJ6sqpXuOXtwWjQAp+KMn3h2uWWtlZs0FOmU\nXJu6mwVU4TvfgR49moPGkiVOuQWNlBY2cKhqparepap3q2qNW7YBeCrMXXOBzwMPq+oI4ChOt5T/\ntRWnNdNhInKLiKwUkZX79++PxSVNjPgHgUj3zLC9NTLc0087U2n/8Afn+D/+wwkYX/pScutlIhLJ\nrKpTRWSUO0aBiJwkIj8FNoe56y5gl6q6K3V4DieQ7HW7oHB/73Nv3w3087t/X7estfIAqvqIqo5S\n1VG9e/cO97RMAvkHgUhnEMVyplG6tl7Std5t2rLFmVJ73XXO8eDBcOwYzJ2b3HqZqIRLOXI7sAr4\nFc64w83AeqALMLKt+6rqHmCnN5UXuAxYBywCvJlRU4C/uH8vAm50Z1edDxx2u7SWAVeISLE7A+sK\nt8ykCf8gEOkMoljONErX1ku61juk48edVOdlZc1lGzc6P126JK9epl3CTVe4BThTVT8Tkf7AJuBC\nVa2I8Pr/Djzptla2AjfhBKtnRGQqsB24xj13CTABZ+rvMfdc3MeeDbznnnefN1Bu0oMXBJIlXRce\npmu9W5gxAx54oPl4wQK4/vrk1cd0WJs7AIrI+6rqv57iQ1U9NyE16wDbAdCYFLBsGYwf33x8000w\nf76lO09hke4AGK7F0VdEful3XOp/rKrfb28FjTGJk9B8WLt3B86KKi6Gbduge/f4Pq5JmHCBY3rQ\ncaRdVMaYFJKQfFgNDXDJJU5qEM/77wcu6jMZIdwCwMcTVRFjTPzEfbxk7ly4887m49/8Br4XNiuR\nSVO2lt+YLBC3CQpvvw1f+ELz8Ze/DIsWWbrzDGeBwxgTvYMHncy1TU3NZXv3BmazNRkr3DqOB9zf\n30hMdUyqWVC+gxH3vcKC8h3JropJBU1N8LWvOanNvaDxxhvOqm8LGlkjXHtygogIztaxJgvNXbaB\nqmP1zF22IdlVMck2f76T7vzFF53j2bOdgOG/M5/JCuECx1KgCjhHRKpFpMb/dwLqZ5Js+pVDKC7M\nY/qVQ6K6X0amy8hWq1c7ay9uvtk5Pu88OHECfvSj5NbLJE2bCwB9J4n8RVUnJaA+MWELAJPvxvnl\nvLn5AGPLSmw71HR15AgMGuSMXXi2b4f+/ZNXJxNXsVoACICqThKRk4HRblG5qloKWtOqjEmXkY1U\nW86KWrQIrroqOfUxKSeiOXPu4Pi7wDdwcku9KyJXx7NiJr3ZdqhpavLkwKAxbZoTSCxoGD+RTsf9\nETBaVfcBiEhvYDlOqnRjOiyhKTFMS8uXw+WXB5bt3+/MnjIB7N9qhC0OoJMXNFwHo7ivMWFlVArx\ndFJd7Qx8+weNF15wWhkWNEKyf6uRtziWisgymvf5vhYnDboxMWFjIkkQnKX2iiucjLamTfZvNcJZ\nVQAi8jXgIvfw76r6Ytxq1UE2q8qYNsycCXPmBJY1NlqaEBPbWVUAqvoC8EKHamWMSZ7334eRQRt3\nbtsGAwYkpTomfdlXjAxhC+7alqjXJyXfhxMnnG4p/6Dxm9844xgWNEw7WJLDDJGQ/RbSWKJen5R7\nHwYMgB1+ecbOOAO2bElefUxGiLjFISK9RKRXPCtj2m/auMGMLSvJ6gE7f8Hf/Nv7+kTbgkiZ9+HX\nv3ZaGf5B48QJCxomJsLtOd4f+C/gMuAQIEB34DVghqpuS0Ado2aD4yZWKU/SLnXK1q1Oq8LfqlVw\n7rnJqY9JK5EOjodrcTwNvAj0UdUyVR0ElAILgac6Xk2TSCnZ/x4nsfrmnzItiHCampwWhn/Q+NGP\nnHEMCxomxsK1ODaralm0tyWbtThCS7tvzyYyl10Gr70WWBbhNHtj/MVqOm6FiPwGeBzY6Zb1A6YA\nH3SsiibRbOFShnnuOfhG0B5rNTXQrVty6mOyRrgWR2dgKjAJONUt3g0sAuaral3ca9gO1uKIjOXc\nSVP797fcbe+11+CSS5JTH5MxYtLiUNUTwMPuj8kwKTd11IQXnCZkyhT44x+TUhWTvcLtOZ4rIv8m\nIn8VkY/cn7+KyHdFJC9RlTTxEenAbzYNqqesqVNbBo2mJgsaJinCjXH8CWca7r3ALresL84Yx//g\nJDs0acrbMyMca5kk0euvt+yC2ru3ZVeVMQkULnCMVNXgr6O7gHdEJHtzCmcZG1RPgqNHWw5yP/UU\nXGvf1UzyhQscn7m7/z2vqk0AItIJZydA67fIEpG2TEyM5OQ43VCesWPhjTeSVx9jgoRbAHgdcDWw\nV0Q2ichmYC/wNfc2Y0ys/PjHzjiGf9BobLSgYVJOuFlV23DHMUTkc27ZwfhXy5gssno1nHNOYNmW\nLS1ThxiTIsJmxxWRIfit4xCR3cBfVHVDnOtmYsjWbKSgujooKAgse/BBmDYtOfUxJkLhpuPehZOT\nSoB33R8BnhKRGfGvnvF0dEqs7ZOcYkRaBg1VCxomLYQb45gKjFbVOar6P+7PHOA89zaTIB394I9F\nsj5bzxED//ZvLddjHD1quaVMWgkXOJqAU0KUl7q3mQTp6Ae/NzOqI91UqdpqSYuAtnq1EzAeeaS5\nbNEiJ2AUFiavXsa0Q7gxjtuBFe5sKi/JYX9gEHBbJA8gIjnASmC3qk4UkdNwur8+B1QA31LVEyKS\nDzwBjAQOAtd6+32IyEycFk4j8H1VXRb5U8wMqTAlNlXXc6T0AsWmJmd6rb/hw+EDyxFq0le4WVVL\nRWQwTteUf5LD91S1McLHmAasx9kACuAB4Beq+pSI/BYnIDzs/q5S1UEicp173rUiMhRn6u/ZOK2f\n5SIyOIrHNzHSkeAVz8H5VA1oLbqkwLqkTEYIu3Wsqjap6juq+rz7846qNopI2NzNItIX+DLwqHss\nwKXAc+4pjwNfdf+e5B7j3n6Ze/4k4ClVrVPVT4AtOIHMpJF4dnPFohsupv7rv1oGjb17LWiYjBHx\nnuMhrIvgnAeBO2keD/kccEhVG9zjXTS3ZE7F7Q5zbz/snu8rD3Efk0LaGmtIm530OmLXLidg3HVX\nc9lDDzkBw3JLmQzSZleViPy/1m4C2mxxiMhEYJ+qVojIxe2rXuRE5BbgFoD+/fvH++FMCCk91hBv\nwS2MnBxoaAh9rjFpLlyL46dAMVAU9NMtgvteCHxFRLbhDIZfCswDeoqIF7D64oyZ4P7uB046d6AH\nziC5rzzEfXxU9RFVHaWqo3r37h2maukjLWYMudpqVaTqjKwOGzAgdLpzCxomg4X78H8fWKiq9wb/\nADVt3VFVZ6pqX1UdiDO4/Zqq3gD8DSf/FTjp2f/i/r3IPca9/TV1tidcBFwnIvnujKwynIWIWSGd\nPnDbGmvIuK6qp55yAsaOHc1lGzc63VKhBsVbkU5fDIzxhJuOexPOt/5Qwm4v2Iq7cFae/wRn3/L5\nbvl84E8isgX4DDeJoqquFZFncMZUGoBbs2lGVcrOGIpSKkwnjonqaujRI7Bs+nRnQLwdsrp7z6St\nNvccT1e253jipHMOrNbq3upzisP02nR+/UzmiXTP8XC5qn4vIv/Uym1dReQ7InJDeytp0l86daUF\na63uLconTGgZNOrrYzK9NuWmEhsTgXBdVQ8Bs9zgsQbYDxTgjDN0Bx4DnoxrDU3cLCjfwdxlG5h+\n5RAmj2nfTLR07kprre7e8Q+LDrQMGP/4B3zhCwmpnzGpKqKuKnex3yicHFW1wHpV3RjnurWbdVVF\nZsR9r1B1rJ7iwjw+uPuKZFcnddTXQ+fOgWWTJsHChcmpjzEJEpOuKo+qHlHV11X1z6q6MJWDhonc\n9CuHUJSfQ0m3/IyZ1dPhWUoiLYOGqgUNY/x0ZOW4SXOTx/RnRP9iNu87kpZjFKG0e8zl9ttbdkvV\n1FiaEGNCsMCR5VpbXxHr9QUduV409416vciGDU7AmDevuezZZ52A0S1sOrYO19eYdBR261h/IlKo\nqsfiVRmTeK2tr4j1+oKOXC+a+0a8XkQVOgV9byorg00db3nZ2gyT6SIKHCLyBZwMt92A/iJyLvBv\nqvp/4lk5kzyxni3VkevFfOZWnNOdp/NMM2MiEemsqnKcNCCLVHWEW7ZGVYfFuX7tYrOqUlvSFr39\n8pct9/T+9FMoLU1cHYxJYTGdVQWgqjuDirIm7YeJrYQvGtyzx2ll+AeNn//caWVY0DAmapGOcex0\nu6tURPJo3tXPmKgltCvHduEzJuYibXF8F7gVZwOl3cBw99iYqCUkzcbQoaHTnVvQMKbDIl0AeEBV\nb1DVk1X1JFX9pqq2ljXXpKGMmUL64otOwFjv1yBeuzbqdOeejHldEsxet8wWUeAQkcdFpKffcbGI\nPBa/aplES+dkhQAcOeIEhq99rbnsttucgDF0aLsvm/avS5LY65bZIh3jOEdVD3kHqlolIiPiVCeT\nBP7jDqmW6jtsfeI4jmFTa9vHXrfMFul03A+Bi1W1yj3uBbyhqiFTriebTcftmBvnl/Pm5gOMLStJ\niQVsrdbn6qvh+ecDT66ra5lryhgTkUin40ba4vhv4G0ReRYQnDUd/9mB+pkUlmrfFlvU5+23W6Y2\n/9vf4OKLE1sxY7JUxDsAishQ4FL38DVVXRe3WnVQNrc4Iu1mSrXuqIg0NEBeXmDZFVfAsmXJqY8x\nGSYmLQ4R6a6q1W7X1B5ggd9tvVT1s45X1cRSpHmS0i6fkq3HMCZlhJtV5QWKCmCl3493bFJMpNlh\n/c9L6amTM2e2DBqHDiU0aKT062NMErTZ4lDViSIiwBdVdUeC6mTawb/rKZIWhH8WWW/wGVKo9bFl\ni5Ot1t+TT8LkyQmvStq1zoyJs7DrONQZBHk5AXUxHRA8b76tb8nBt0W9h0UHtfkN3luo5x80TjnF\nKW9n0GhPi8H/Pol+fYxJdZHOqnpfREar6ntxrY1pt+CZR219Sw6+LZI9LGI5mN5q3QoKnOm0/mLQ\nJdWeFkPwfaylYUyzSHNVjQHeEZGPReQjEVktIh/Fs2KmbcHfooPzP7X1LTncN+hQ39BjuRK4xeM/\n8ojTyvAPGjt2xHQRX7QtBv/7zFmynkE/WMKcJZbX0xiIfAHggFDlqro95jWKgWyYjtvaorhYtAxC\nXTsu03cPHIDevQPLfvpTZ0C8HeI1xfiMmS/TqJAj8PH9X47ZdY1JNbGajluAkxl3ELAamK+qDbGp\noumI1hbpdXQgt2J7FdW19Qzv1zO+ffpxmF4br0Hs0h4F7Dp0nNIeBTG7pjHpLNwYx+NAPfB34EvA\nUJy9OEyStTYu0d5V39639eraelbtOszYshJGDihmQfkO5i7bQEm3fDbvOwJ08EM5VMBobGy5/3c7\nxGvF+7zrP+9ryRhjwo9xDHVTqP8OJ83IPyegTqYNocYf/Msi2euirTEMRALGA+Yu20DVsXp2Vx2j\nuDCP8cPauWPe/Pktg8brrzutjBgEDYjfPh8J2T/EmDQS7n9svfeHdVGlhlCD1JEMXPsHi1BTd6uP\nNzC8bw9mTRwasL7j2lH9KC7M49TiQqqO1bN0TWV0FfbSnd98c3PZuec6AeOLX4zuWsaYlBCuq+pc\nEal2/xagi3ssOEs8use1dqaFUN0xkXTRzF68jlU7D1F9vIFrRvVj9e7DvtbDvOWbWLXzEMWFzXmg\n/McLPrj7ioCB54hZmhBjMlKbLQ5VzVHV7u5Pkarm+v1tQSMJou028VoaR4+7jUdVlq6ppOpYPXOX\nbfAtcCsuzKPqWL2vFRI8hTWqxx0ypGXQOHrUFzTikcLD0oIYkzix6Vw2SdVWV5V3W9eCPMaWlTDr\nqrOZNm4wRfk5VB2rZ/ZLaxk5oJhHp4xuf6DwrFjhBIyNG5vLnnjCCRiFhRHVt71sxzljEifSleMm\nhXkf9uOHlfLVX78FIsyaOJSRA4oDurH8g8AZJxWxauchX8sgktXjrWpshNwQ/5Ra6ZaKx+ynVNtD\nxJhMFvF+HOkkGxYAhuKfrDDc7n0xWyxn4xjGZIxIFwBaV1UGmTZuMMP79gi5eM8bA1hQvoMb55cD\ntGuKqXedz676WougMe4//syCd0InE4h2DMLGLIxJXdZVlUFGDihm4W0Xhbxt9ktrWbXrMG9tPkAT\nUF1b3+q5bXn2iWU8cff1gYWzZsF997G8jftFu6rbUpkbk7ri1uIQkX4i8jcRWScia0VkmlveS0Re\nFZHN7u9it1xE5JcissVNpPh5v2tNcc/fLCJT4lXnVNbaN/BQ5QvKdzDivldYUO63hYrbOmgKOg53\n/QAizAkOGqpw331h6x9tokFLZW5M6opnV1UDcIeqDgXOB2519y2fAaxQ1TJghXsMTkqTMvfnFuBh\ncAINcA9Oht7zgHu8YJNNWps1FKrcW+09d9kGX9msiUMpyncamEX5ucyaODSi6wNOkAkey2hqimos\nI9pZWrZa25jUFbfAoaqVqvq++3cNsB44FZiEkwML9/dX3b8nAU+o4x2gp4iUAlcCr6rqZ6paBbwK\njI9XvVNVa9/AQ5VPv3IIxYV5TL9yiK9s5IBi/vid8xhbVsIfv3Neiw/kkNe/996WAWP16ubNlowx\nWSkhg+MiMhAYAZQDJ6uql7diD3Cy+/epwE6/u+1yy1orT3vRDAC39g3cm3I7b/km33Umj+nPB3df\nweQx/X3nLSjfwbcfK2frgaPMfmlti8cMuP7evU5g+PGPm0+4+monYAwbFtFzCe4us8FuYzJH3AOH\niHQDngduV9Vq/9vcbWljMndTRG4RkZUisnL//v2xuGTcxWrRWrjrVGyv4u6/rKGmrpFdVbWs2nU4\n4NyAD3UR6NMn8AKq8OyzUdUhuLvMFugZkzniOqtKRPJwgsaTqvqCW7xXREpVtdLtitrnlu8G+vnd\nva9bthu4OKj89eDHUtVHgEfAWccRw6cRN7FatBbuOvOWb6KhyXlJehd1pmeXzlTX1vuy6c5bvokn\nbj6/5R3r60Mv7IugDtOvHMLcZRt83WW2QM+YzBG3BYAiIjhjGJ+p6u1+5XOBg6o6R0RmAL1U9U4R\n+TJwGzABZyD8l6p6njs4XgF4s6zeB0aq6metPXa2LgAMZUH5Du5fso7GJjhW38jYshKA5h3+CrbA\nN78ZeKdly+CKK5JQW2NMMsVkB8AOuhD4FrBaRFa5ZT8A5gDPiMhUYDtwjXvbEpygsQU4BtwEoKqf\nichs4D33vPvaChqZxFvdPX5YKUvXVPq+rc9evA5UmXXV2b4xD+/coaXdebJ8B32653PTRadz91/W\n0NCkFOXnBAx+5504zvygVkZd/4Hkb/+kw/WN9dat3mZS068cEjBuY4xJDks5ksK8FCJe5triwjwG\n9Cpk1a7DAL5AMG/5JioPH/ft0Ofx7pfbSbhv0rDmD90QM6IG3rU4bJqSSOvb0esEG3HfK77n/8Hd\n1hIyJl5SocVhOsB/7+9rRvXzDTaXdGukKD+XPt3zGT+slJsff4+qY/UU5ef47psjcHpJV2666HRf\nS2XkgGIYNQoqKgIfqLqais8aGBuDrVHjMY5Rsb2Krp1zqK6t59pR/cLfwRgTd5arKgkimZo6b/km\nVu06TPf2Z7oZAAAWLUlEQVSCXCaP6e9Le941P5eaugb2VB/n/iXrfS2KG8YM8OWpeua7X+DVOy5m\n8pj+PDF1DF3fe8dpZfgHjd/9jgXvbGfEL95m456amCy2i8eivXnLN7Hr0HEaFdZVVoe/gzFZLFHT\n3i1wJEEkU1NDbaQ0bdxgUKUwL4eaukZq6hrIEWhoUp5euZNZV53NwlsvbB73+OQgiDDkGxMCL64K\nt9zC/UvWUXWsnlkLV0f1Dy2RazLaStyYaWyti+moRE17t8CRBMFBIdQHRqhv714rJMfvXSvt2YWi\n/FyqjtXz7cfebb6GCCNPLwl43IF3LWbEvct8x316dAGgUQn7D62tPcvjyUvc6B8QM5WtdTEdlagc\nbzbGkQTBmyZFmgnWf8Om+5eso6aukZKunSnp2plVuw5TU9fAkW9OgbdeCrjfBd/7A7kD+lNc1xCQ\nhmTO189h9ktrQSTsPzT/OtqajPiw19V0VIc2ZIuCtTiSILiFMbS0O7mdhKGl3UPe7pV5U10nj+nP\nzAlDKcrP4eiJRq4Z3Z9Jsp9tD0zki/5B4447qNj2GWUjz+LB60b40pB41weYddXZdC8I//1h2rjB\nDO/Xk8rDx5n90tqYT7k1qZXY0brNTFusxZEEwS2Mp1fupKFJebJ8B+sqq6k8VMvm/Ud9e2ZUbK/y\nzZ7y7rN0TaUzzrHvCJPPH8Dk4Adxp1mPpGUrxv/xgVZbO8HrMroX5DrbzbrXsH0yMpfth2LaYoEj\nCVpLz9G1c07AB/r6yhr+6Z6l9OjirMfIEaebypuqu+2BiS2uPeLHS5k+/qyWgcTP+GGlrN59mPHD\nSjmzT1FAXfwFf3hMGzeY6uMNoBp1d0okiwPjtYAw3aTC62DdZqYt1lUVZ201+TfuqfF1Gf3TqT3o\n0jkwjtc1NlFT10jl4eOAM4h9/5J1bLjm2yz8938OvNbTixk082WqahsC9uEIZemaSqqO1bN0TWXI\n7Loe/4E278Ns1sShLLztopAfaG0910gGfm1w2JEKr0MqdZuZ1GMtjjjzPgSqa+vp3iWPoaXdefSt\nT2hoUj7YUUVNXSPlWw9S16j07VlAv+Iu7K6qJSdHqG90upsKO+fQo0seJz6t5N0HvhVw/f1Fvehd\nfZD/nF9OQ9MBcjtJwAB4qG+v/t8mQ3WDefwH2rxV4d45oa7bVvdGJN9g7Vuuw14Hk+oscMSJf54p\ngOrjDby5+QD/+/FBGpqU3E5Cnx5dqNl3hBNugPjsaD2n9iygCWhqbE4FU1PXyOr7vtTiMQbNfNlJ\nJULgjKulayo5s0+RL/Nt8Id5cEDw0nm09UHl370FoYNEWx94kcz2SNSMkFRnr4NJdRY4YsD/2zfA\n7JfWsmnvEY7VN1J9vIGFt17oO6dX184s/qiSmy86jcvP7sO85ZvYsKeGfTV1dCvIYeuBo4CTNuSq\nc0/hwes/3+Lx3t9YyYN/387Npd2Zu2wDOw4eZV1lta/LKXhcAgI/zP3r6397W90S/t1bk8f0D3nd\neH3gpUKffzxk6vMymc8CRwwEz1LykhACfLyvhgXlO1i6ppLxw0qZu2wDDU3K7/++lcUffUpJUQE9\nCnLZV1PH4WMNeA2Naz/4Kz+d81DA4/zHhNt58ZxxPJOfzxNTx/iS/3ldX9CyGyrUB5NX39W7D/Po\nlNERfdgHtzgS+a04U2f4ZOrzMpnPAkcMBH/7rjx8nB0Hj1LfpNTUNfoSFK7efdg3ltCosOvQcXYd\nOk7f4i6MLSuh/JOD5NfXsfHnX2/xGBfdv5xdh46Du8p72rjBdM3P5XBtPcVd8zi1Z6EvQHgtj+ra\nel8Q8/9gmjZusK8us19aS/cueb77thZsglscrYnHt+hM7fPP1OdlMp8FjhgI/vZd2qPAl+K8uDCP\n6VcOYemaSoaWdufplTv54uDerFi/j5q6BgA+O3KCt+66tNV05wDDiwoo6ZbvW+U9b/kmdlXVArC/\n5gRn9XEWD944v5zq4w2s2nmI4f16hkw/MHJAMY9OGe0EF3fsBZzg0tq34Eg/5OLxLTpT+/wz9XmZ\nzGeBI0Lhvkn7D4ZX19ZTdlI3uubnMmviUEYOKGbymP6+geg3Nu1n5oSz+MnitRyrb6L8v78BPwnc\nS2PEvz9JycBTGd45B0R81/F4ayqOHq+na0FewPjG8L49fAGjtW/93odW8PhMawEi0g85+xZtTOaz\ndRwRCje33rv9/iXrWLXrMF075wQk5ltQvoPyTw4CUHWsnvuXrGP45vfZ9sBEimqbg8aLl13PnJfX\nQUkJZ5/SnY/3H+HAkTpmL17XIgnirIlDKe3ZxRdUvHUXs646O+I5+MHz9Vtb1xFJCoq2gqulsDAm\nc1iLI0LB36S97UyvHdWPdZXVvpbGpr1uEHC7neYsWc/v/76VRv+NFlVDTq/1uqXy/7GNusYmFq76\nFICaulp2VdW2SPMR3C0U3Cpo73hDqO6mSLqg2jrHBoKNyRwWONrJG/D2gsJbWw6Ql9OJuoYmCvNy\nQJWK7VU8+tYnAUEjVJoQL2DkdoKGJmfFeLCi/JwWU2q9HQLHDyvlxvnljB9WyjPv7fB1bUXyYR1u\ngaCnowv4rAvLmMxhe45HKHg/ba/F0bVzjjPbyU9RvrPREkBhXieO1Tfx6qPfo+zgzoDzLpv6MJ/0\n7sc5fXty9Hg9m/cfbfG4Rfm5nNG7K9eM7h+wDexXH/qHbwC8e0FuwN7k4OxH7k3/9VaSe3/7z4qK\n1z7hxpj0E+me4zbGEYbXNz9+WGnIGUoTzzkF/7lQfYu7cKKhORj3/XQr2x6YGBA03hpwLgPvWszH\nJf04pWcXFt56IaU9u7R47OF9ezBzwll075LHMyt3Bo6xeAHfTTg4tqyE6VcOYXjfHpSd1I3q2nqe\nWbnTN4XW2+3v/iXrAh4jURu/GGMyhwWOMLzunqVrKn3jCHOWrOcHL672Lb7rW+x86Jed1I3Pjpzw\ndTVte2Airzx2W8D1Bt61mG9e958AdBKYd90IKrZXUXn4OEX5OQzv2yPg/KVrKp3uJlWG9+tJdW09\nC8p3cODoCXIEBpZ0ZfbidVTX1nNmnyIW3nYRpT0KnPUbqr6g4O325/2GyGaK2YB2bNhraTKJjXGE\nEapv/tG3PvH93dCkFOR2orgwj8uGnMQjb24NOY5x2p2LUAmM090Lcpm92GkBeOs+1nxa3XyC3858\n/tNtt3+2wdcltfijSt+qcW/wPFQakcuGnMQnB45y2ZCTfJcPNwYSvOuft1tg8NTgSKRieo1E1skm\nB5hMYoEjhOC1DeCkQPfWaRR3zWN/zQnfbd7YxCmzprP1/ZcDrjX167NYMSj0B8WhWmehXn6OOAPq\nKMfqmyjKz+GMk4q4ZlQ/34c1BCYy/MM/PmHP4VpuGDOAl1dX8umhWt8OgqE88fY2GpqUJ97exowJ\nZwVcr7VuKv/bZ7+01rcKvT2bOKXiB2ci62STA0wmscARgn8up5Ju+Wzed4R/bDlAoxKQNsTT69hh\n3v/VDS2u482WCqeuUaGx0TfQ7X24+Kc7v/nx9wLySvkPcD+9cieN6vyeMeGsVj4QneBzvL6Jiu1V\njBxQHHZRX8DtbvAqys9t14dfKn5wJrJOtkrcZBKbVRVCxfYqvv1YOTV1jb5ZUeCMSQhEPL02Ep0E\nTulRwOHaBmZOOIsz+xQF5Jkqys8BnNTqxYV5PDpldEBOKf/Wx8wJQwG4f8l6+nTPZ87V5/q6YOYs\nWc9v39wKOIPu/vmpwr0W3uP4z+rqqFTsujIm20U6q8paHEG8abY9CztTU1dLvl/gaAoTMIb8v+c4\nnlcQ1eN95dxTWLF+LzV1jTyzcqdvau3wfj2dgXIRrhnVz7duxPuw9VojXguoKD+HZ1bu5ON9NdTU\nNZJ7VAI+kNdVOmMnxYV5IBJxF028unNSsevKGBMZm1UVxPuAPnTsBMP79qDqWEPA7V9bs6JF0PjR\n5d9j4F2LIw4ancRZ3wHw0oef+tZ8+E+tnTVxKN275LFq5yGWrqlk+pVDKC7MY/ywUuYt3+TbfMkr\nr6lrZNXOQ/Tp0cVX7s+77qNTRjNr4tBWp+AGz/6J13RdmwZsTPqyFkeQLw7uzcJVn9Kne0HAvhp5\njfVs/tm/tDg/XLfUd8eezp7q4770IQAXDSrx5a1qVHyD4bMmDg24b8Dg9GJnHcYzK3cya+JQqmvr\nQYQz+xTx6JTRzHjuQ/ZU13HThaeFTHse3MceadqQWPXNB3dNWZ+/MenLAkeQV9buBQhYxd3ecYye\nXZyX96UPPw0o97aP9RR0zuHjfTVs3FPTvG4D54Pb9+Hqt+Bv5IBiunfJ8y0IfGLqGEp7dmHz/qNh\n98sIJ14DxtY1ZUzmsMAR5HhDo+/vtx6+ib7V+wNuH33rE+zv1iuiax2qbeB3b27FCxH5OULn3Bxu\nGNOfFev3svXAURoV39TeH764mkG9uzK8X88WeamO1jVQlJ/LNaOdoBAqDXr18Qaqa+t9s6baI14t\ngVScVWWMaR8LHEGaFEbvXMOzC2YElD8x4svcfcX3Ir6ONxvLCxoCLLjlAt8H+owJZ1GxvYrZL63l\nw12HUUBxWjpjy0pabPXqtYCeWbnTN/PKf0bSyAHFvoH19qyziDfrmjImc1jgCNLR6bWenE6dGN63\niANHT7CrqpZBJ3Vr0QoYOaCYhbddxILyHdy/ZB09Czvzua6dQ2bB9U0LVu3wLn3GGNMRFjj8/e//\nBhy2J2AM79eT7QePUnWsnu5d8ph11dktVqEHmzymf6vjEvOWb2LVrsMtFgdC+3fpM8aYjrAFgEH+\nZ8QEHrrgGiq79476vv7TS2O1uM0WyhljEiXSBYBpEzhEZDwwD8gBHlXVOa2d25HAMXDGy+FPcuUI\nXDiohDc3H+Crw0/hwetGtOsxjTEmFWTUynERyQEeAi4HdgHvicgiVV3X9j2j992xp/PoW59QVJBD\n1bEGOkngivGy3l3pWpAHqsy66mxrBRhjsk5aBA7gPGCLqm4FEJGngElAzAPHjAln+WY8RdpFZN1J\nxphski4pR04F/Pdd3eWWxY030NxaIPBPzeHNcvLtzmeMMRksXVocYYnILcAtAP37t3/ldKSCNzny\n/22MMZksXQLHbqCf33Fft8xHVR8BHgFncDzeFQreZc+mwRpjskW6BI73gDIROQ0nYFwHTE5mhSxY\nGGOyVVoEDlVtEJHbgGU403EfU9W1Sa6WMcZkpbQIHACqugRYkux6GGNMtkuXWVXGGGNShAUOY4wx\nUbHAYYwxJioWOIwxxkTFAocxxpiopE123GiIyH5geys3lwAHElidVGLPPTvZc88+7X3eA1Q17J4S\nGRk42iIiKyNJG5yJ7Lnbc8822frc4/28ravKGGNMVCxwGGOMiUo2Bo5Hkl2BJLLnnp3suWefuD7v\nrBvjMMYY0zHZ2OIwxhjTAVkVOERkvIhsFJEtIjIj2fWJNRHpJyJ/E5F1IrJWRKa55b1E5FUR2ez+\nLnbLRUR+6b4eH4nI55P7DDpGRHJE5AMRWewenyYi5e7ze1pEOrvl+e7xFvf2gcmsd0eJSE8ReU5E\nNojIehG5IIve8//r/ltfIyJ/FpGCTH3fReQxEdknImv8yqJ+n0Vkinv+ZhGZ0p66ZE3gEJEc4CHg\nS8BQ4HoRGZrcWsVcA3CHqg4FzgdudZ/jDGCFqpYBK9xjcF6LMvfnFuDhxFc5pqYB6/2OHwB+oaqD\ngCpgqls+Fahyy3/hnpfO5gFLVXUIcC7Oa5Dx77mInAp8HxilqsNwtly4jsx93/8IjA8qi+p9FpFe\nwD3AGOA84B4v2ERFVbPiB7gAWOZ3PBOYmex6xfk5/wW4HNgIlLplpcBG9+/fAdf7ne87L91+cHaF\nXAFcCiwGBGcBVG7w+4+zr8sF7t+57nmS7OfQzufdA/gkuP5Z8p6fCuwEernv42Lgykx+34GBwJr2\nvs/A9cDv/MoDzov0J2taHDT/I/PscssyktsMHwGUAyeraqV70x7gZPfvTHpNHgTuBJrc488Bh1S1\nwT32f26+5+3eftg9Px2dBuwH/uB20z0qIl3JgvdcVXcDPwN2AJU472MF2fG+e6J9n2Py/mdT4Mga\nItINeB64XVWr/W9T52tGRk2lE5GJwD5VrUh2XZIgF/g88LCqjgCO0txdAWTmew7gdrFMwgmepwBd\nadmVkzUS+T5nU+DYDfTzO+7rlmUUEcnDCRpPquoLbvFeESl1by8F9rnlmfKaXAh8RUS2AU/hdFfN\nA3qKiLfLpf9z8z1v9/YewMFEVjiGdgG7VLXcPX4OJ5Bk+nsOMA74RFX3q2o98ALOv4VseN890b7P\nMXn/sylwvAeUuTMuOuMMoi1Kcp1iSkQEmA+sV9Wf+920CPBmT0zBGfvwym90Z2CcDxz2a/amDVWd\nqap9VXUgzvv6mqreAPwNuNo9Lfh5e6/H1e75afmNXFX3ADtF5Ey36DJgHRn+nrt2AOeLSKH7b997\n7hn/vvuJ9n1eBlwhIsVui+0Ktyw6yR7sSfDA0gRgE/Ax8MNk1ycOz+8inKbqR8Aq92cCTj/uCmAz\nsBzo5Z4vODPNPgZW48xOSfrz6OBrcDGw2P37dOBdYAvwLJDvlhe4x1vc209Pdr07+JyHAyvd930h\nUJwt7zlwL7ABWAP8CcjP1Pcd+DPOWE49TktzanveZ+A77muwBbipPXWxlePGGGOikk1dVcYYY2LA\nAocxxpioWOAwxhgTFQscxhhjomKBwxhjTFQscBhjjImKBQ5jWiEiP3RTdn8kIqtEZIxb/mgsMiuL\nyO0icmMU508QkV+LyCsiMkhEOovIm36rpI1JCFvHYUwIInIB8HPgYlWtE5ESoLOqfhqj6+cC7wOf\n1+aEfJHe97+AZ1X1PRG5B9iiqk/Gol7GRMJaHMaEVgocUNU6AFU94AUNEXldREaJyFfclsgqcTYI\n+8S9faSIvCEiFSKyzMslFORS4H0vaLjX/IWIrBRnM6bRIvKCu9nOT7w7icjtwDpVfc8tWgjcEL+X\nwZiWLHAYE9orQD8R2SQivxGRLwafoKqLVHW4qg4HPgR+5iaZ/BVwtaqOBB4D/jPE9S/ESQHu74Sq\njgJ+i5Nz6FZgGPBtEfmciPw7cDNwkV991gCjO/xsjYmC9Y0aE4KqHhGRkcA/A5cAT4vIDFX9Y/C5\nInInUKuqD4nIMJwP+1edvHvk4OQXClZK4G6F0Jx0czWwVt3kgyKyFeinqr/CCUr+9WwUkRMiUqSq\nNe18usZExQKHMa1Q1UbgdeB1EVmNk330j/7niMg44BvAWK8I50P/gjCXr8VJuuevzv3d5Pe3d9zW\n/9V84HiYxzMmZqyrypgQRORMESnzKxoObA86ZwBOBtJvqGqtW7wR6O0OriMieSJydoiHWA8MikE9\nP4czFlPf0WsZEylrcRgTWjfgVyLSE2jASUF9S9A538ZJa73Q7Zb6VFUniMjVwC9FpAfO/7EHgbVB\n9/0rThrwjroEeDkG1zEmYjYd15gkEZEXgTtVdXMHrvECMENVN8WuZsa0zbqqjEmeGTiD5O3i7mS5\n0IKGSTRrcRhjjImKtTiMMcZExQKHMcaYqFjgMMYYExULHMYYY6JigcMYY0xU/j8o7NIR+/GntgAA\nAABJRU5ErkJggg==\n", "text/plain": [ "<matplotlib.figure.Figure at 0x10d736748>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = data.plot(x=\"meters\", y=\"price\", s=2, kind='scatter', style=\"o\")\n", "p.plot(X, model.predict(X), color='red')\n", "plt.xlabel(\"Size (m²)\")\n", "plt.ylabel(\"Price (1000 of R$)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### References\n", "\n", "- [DAT4/notebooks/08_linear_regression.ipynb](https://github.com/justmarkham/DAT4/blob/master/notebooks/08_linear_regression.ipynb) - Introduction to Linear Regression\n", "- [Simple and Multiple Linear Regression in Python](https://medium.com/towards-data-science/simple-and-multiple-linear-regression-in-python-c928425168f9) - Quick introduction to linear regression in Python\n", "- [Basic linear regressions in Python](http://jmduke.com/posts/basic-linear-regressions-in-python/)\n", "- [How To Implement Simple Linear Regression From Scratch With Python](http://machinelearningmastery.com/implement-simple-linear-regression-scratch-python/)\n", "- [Linear Regression In scikit-learn](https://chrisalbon.com/machine-learning/linear_regression_scikit-learn.html)\n", "- [Example of Regression Analysis](http://facweb.cs.depaul.edu/mobasher/classes/CSC478/Notes/IPython%20Notebook%20-%20Regression.html)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "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.0" } }, "nbformat": 4, "nbformat_minor": 2 }