{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.19.1\n",
      "0.20.3\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import os\n",
    "import sklearn\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.cross_validation import train_test_split\n",
    "%matplotlib inline\n",
    "\n",
    "print sklearn.__version__\n",
    "print pd.__version__"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Loading data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>independent</th>\n",
       "      <th>dependent</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>24</td>\n",
       "      <td>21.549452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>50</td>\n",
       "      <td>47.464463</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>15</td>\n",
       "      <td>17.218656</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>38</td>\n",
       "      <td>36.586398</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>87</td>\n",
       "      <td>87.288984</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   independent  dependent\n",
       "0           24  21.549452\n",
       "1           50  47.464463\n",
       "2           15  17.218656\n",
       "3           38  36.586398\n",
       "4           87  87.288984"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# read data with read_table\n",
    "# put sep=',' as data is ',' seperated\n",
    "# renames the 0th row which is header with easy to read names\n",
    "# display top 5\n",
    "DATA_DIR = '../data'\n",
    "\n",
    "df = pd.read_table(\n",
    "                    os.path.abspath(os.path.join(DATA_DIR,'day1/regression.csv')), \n",
    "                    sep=',', \n",
    "                    header=0, \n",
    "                    names=['independent', 'dependent']\n",
    "                  )\n",
    "df.head(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[False]\n",
      "[False]\n"
     ]
    }
   ],
   "source": [
    "# checking for any NaN value in the dataset\n",
    "print df['dependent'].map(lambda x: np.isnan(x)).unique()\n",
    "print df['independent'].map(lambda x: np.isnan(x)).unique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "X = df.iloc[:,:1].values\n",
    "Y = df.iloc[:,1].values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# ideal practice is to use test as 20% - 30% of training data\n",
    "# defined by test_size in train_test_split()\n",
    "# random_state is required to avoid sequential biasness in the data distribution\n",
    "def data_split(X, Y):\n",
    "    X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size=0.2, random_state = 10)\n",
    "    return X_train, X_test, Y_train, Y_test\n",
    "\n",
    "X_train, X_test, Y_train, Y_test = data_split(X, Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(799, 1) (200, 1)\n"
     ]
    }
   ],
   "source": [
    "print X_train.shape, X_test.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Regression Functionality"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class Regression:\n",
    "    \n",
    "    def __init__(self):\n",
    "        self.regressor = LinearRegression()\n",
    "    \n",
    "    def train(self, X_train, Y_train):\n",
    "        model = self.regressor.fit(X_train, Y_train)\n",
    "        return model\n",
    "\n",
    "    def predict(self, model, X_test):\n",
    "        return model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "regress = Regression()\n",
    "model = regress.train(X_train, Y_train)\n",
    "predictions = regress.predict(model, X_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f23a6aea550>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XuMHNd15/Hv6eaMNE0ZJjlkBIsy\nexRYcCIF8QOEoUCLhWHKga0Ykf8wDC+GDCEJoCJmE+axSOTlX/sHFzYQxGEWJhWuRYqWJn5EMVZC\nICixGBvBeh2tKUeQLcleKQ6HJi2ZD0mMxEeGM3P3j1s1Xd1T1X2r3139+wADdtXUdN9GS2funDr3\nXHPOISIixVUa9ABERKS3FOhFRApOgV5EpOAU6EVECk6BXkSk4BToRUQKToFeRKTgFOhFRApOgV5E\npODWDHoAABs3bnQzMzODHoaIyEh59tlnzznnNrW6bigC/czMDMePHx/0MERERoqZzYdcp9SNiEjB\nKdCLiBScAr2ISMEp0IuIFJwCvYhIwSnQi4j009wczMxAqeT/nZvr+UsORXmliMhYmJuDu++Gq1f9\n8fy8PwaYne3Zy2pGLyLSL3v21IJ87OpVf76HFOhFRPrl/Pl857tEgV5EpOAU6EVE+uW66/Kd7xIF\nehGRXkirrrnmmvRrs853iapuRES6ZW4O9u711TRm4Jw/Pz8Pu3bBpUvpP9fjHL0CvYhINzSWTsZB\nPpYV5MHP+ntIqRsRkbzS0jJppZOhlpe7ObpVWgZ6MztsZmfM7IeJcxvM7Jtm9nL07/rovJnZX5jZ\nK2b2vJl9sJeDFxHpu7k5n4aZn/ez9jgtE5h+MRYxlhNfiz0ecNiM/mHgYw3nHgCOOeduBo5FxwAf\nB26OvnYBB7szTBGRAUibue/duzoN0ywtk+CDegmwxFep58G+ZaB3zv0j8HrD6buAo9Hjo8AnE+e/\n7Lx/AtaZ2bu6NVgRkb7JmrnPB23qVMdYwFimFuTrv9vrLHq7z369c+7V6PFrwPXR483ATxPXnYrO\nrWJmu8zsuJkdP3v2bJvDEBHpkayZe7mcfv30NKxZXd9iLODrXuIZfP91/GvEOecA1/LC1T93yDm3\n1Tm3ddOmlnvbioj018mT6eeXlqBSqT9XqcCnP+1LKiNxLr4W5Aen3UD/8zglE/17Jjp/Gnh34rob\no3MiIqNly5b089Uq7NxZm9mXSj7AHzzI5NU3V26y1ufim3HAgKtuMjwB7Iwe7wQeT5z/raj65jbg\nQiLFIyIyOvbtWz1zB5+jP3jQz+zBl0ZevMgkF7nKFPU3WpuJkyHLuOnrW1zbmZDyyq8A3wXea2an\nzOxe4HPAR83sZeCO6BjgSeAnwCvA/wR292TUIiK9NjsLhw75GXwT6zmDsZwI8iEcsIijhGONT/v0\nkLnG1VsDsHXrVnf8+PFBD0NEJJ2lB/D1nOFNNpIvwIMP8pO109UqnDjRxrDsWefc1lbXaWWsiEiy\nXn7jRv+VfNygzBWM5TaC/HI0i5+s/1YbJZt5qNeNiIyn3bt9aibOtceSK1xTVruWucIyk4QF+GTG\nZNmnadJklWx2iQK9iIyf3bv9DdUcagEewm60wgSXWWBt6ydv/GXTZUrdiMj4OXQo1+X1s/jWQX4d\n53CUwoI8tLzh2ynN6EVk/ATOoGu9afxRc34Wv45zvMEvhI+lUvGlnD2kGb2IjI/4pmuA1Q3ImvHz\nd0cpLMjHVTzVqv/rYnY2aEzt0oxeRMbD3Bxs397yslrJJITO4ksssMS1YeOoVv0MvsfBPUmBXkTG\nwz33ZH6r1nisdqY1Vx/gt22D7363dcviNurlO6XUjYgUQ6ta+IWF1B9b3V0yrHXBqln8t78dtJJ2\nEBToRWT0NfaOP3/efyUfN5jkYhvdJWuLnlalapaWfDrmxAnfsjhN1vkeU6AXkdGX1ju+idUNyFpJ\nNCALyXjv3w8TE6vPnz9f26mqjxToRWT0ZfWOb2AstdWALK6LDwry4Gf2R47U0jjJXjnxTlV9DPYK\n9CIynHbv9js2mfl/dzdphrthQ8unM5bI30LYhdfFN+bm4zROtepTSEmXLvm/QvpEgV5Ehk/coiBe\n2LS05I+zgv2VK5lPFbcRzhfg4xbCOeri5+fT0zJZf20E/hXSDQr0IjJ8sloUZJ2/eDH1dH0b4dZB\nfoLL6d0lmzGrzdjT0jJZO1Vlne8BBXoRGT5ZLQoCWxfEFTVhbYT9LD64AdmqH2+RlknbqaoPbQ+S\nFOhFZPg0a9ubTI8kWhpUuLCyX2t4RY0P8rkakIVIpmWSO1WZ9a3tQZJ2mBKR4dOqjXCl4jfoPnoU\nLl2iwgUu8w7y7/TkcLTZC75Sgamp1Br9dneMyks7TInI6DpwwLcUyHLpEhw8yK2X/g/Gcu4gXyuX\nbDPIx7Py/fsHnpYJoV43IjJ85uZ835gmbuU5XuRXyTuLz91GOKlSSU+77N3r0zVbtvS9YVkIpW5E\nZPjMzGTuo5qvu2Qs8GZrsoKm0QC6Trai1I2IjJ745mrLIJ9v0VNQkK9U4Ld/2y/OSlqzBh591Ofc\nhyjI56FALyLDIdmYrMEdPJW7XHKKt1YWPbUM8nHO/cABePjh+gqZhx8e2QAfU+pGRIZDxkz+Dp7i\nGL9OaPOxW3ieF3h/+OtOT8O5c+HXDxGlbkRkuCT7xQe0CriV5zCWA4O8n8U3DfKlEkw2rHidnPSV\nMwWnQC8ivdfYL35+Hnbs8OmROOhv2LCyotVYTlTUtA7ycblk05n8fffB4cP1aZnDh0c+LRNCqRsR\n6a65uVq5YaUCly/D8nLznzFj0r2du30wBJRLlsv+l8yBA4HPOzr6kroxsz8wsxfM7Idm9hUzu9bM\nbjKzZ8zsFTP7mpnl6A4kIiMpTsuY+Zl6PHO/eLFlkF/PGcwt5Q7y2/j75t0lKxVfLbO4WMggn0fb\ngd7MNgO/B2x1zv0KUAY+A3we+IJz7j3AG8C93RioiAypxmqZHFmCfOWSEOfit/H3PM3Hsi8bQD+Z\nYdZpjn4NMGVma4AK8CrwEeCx6PtHgU92+BoiMsxybuMHsJkTOcolY/5mq6Pkg3y1CvffX2uAVi77\nY+dGuua9F9oO9M6508CfAifxAf4C8CzwpnNuMbrsFLA57efNbJeZHTez42fPnm13GCIyaDk30NjM\nCX7GFvIueqqrqJmY8KtUDxzwqRnnlKJpopPUzXrgLuAm4AZgLTT7W6qec+6Qc26rc27rpk2b2h2G\niPRSq5JICN5AI170VAvyzdRWtMaLnuoqaiz0rwCBzlI3dwD/6pw765y7CnwDuB1YF6VyAG4ETnc4\nRhHphVZBPK0kMm1T6337/Ay7ifpFT+HlkpkrWhcW+rrn6qjrJNCfBG4zs4qZGbANeBH4FvCp6Jqd\nwOOdDVFEui4kiKfl3rM2tc6YYRsLuRc9BXeX7OOeq6Oukxz9M/ibrt8HfhA91yHgT4A/NLNXgGng\noS6MU0S6KSuIb99em92Hbmq9d6+fYTcwFvD1GmGz+Bs4Gb4ZN/R1z9VRpwVTIuOoVGpeBtls9ySA\ntWszF0LVbrZC2CwebuAkp5lJv8TMjyX5iymrL/yYUa8bEcnWajZ86ZIP8lk3PRsWQiVbF+SpqIkX\nPWUGefCtgwe85+qo0w5TIuNo3z6fk29V/x7wF/8kF9tqXbCNbzZf9NTYukCBvW0K9CLjKA6ae/dm\nbvLRTC24x/IE+UUckz79Ymv9XwdpbrwRbr8999hkNaVuRMbV7KxfQZpT/Qw+X+uClSAP/q+JrCAP\n2eWckpsCvci4u+66oMviUsl8aRpIVtSsBPlQWeWckosCvci4e/vtlpfkK5WEZOuCphU109M+hdOM\n6uU7pkAvUkQhrQsCrOcMxjK1IN9M/WbcceuCzCBfqfjdneKKmiyql++YAr1I0YS2LmghXwvh+uAe\nvBn37GztXsGjj66e3VcqvkJIOqJAL1I0zVa9btzov0ql2uMGZa7kaCFcm8G3DO6t2gjPzqpevke0\nMlakaFqtek3RXrlkQxVNFq1i7RmtjBUZVzlz2vnLJVNKJWNm/gbr9LRm5UNEC6ZEiiLelHt+3gfZ\nFrP6W3mOF/nV6Ch8wVPT7pKtNgGXgVCgFymC+AZsnJt3rmmwrwX5fG0Lmgb5wHp86T8FepFRlpzF\nN3LOd5lMrD41FqllbMODfIkFlrg2+5I1a+DBB0NHLX2mHL3IqEqWUWZJDfL59mptGeSrVXj4YeXh\nh5hm9CKjKq2MMkWFC1zmHdFRWH/4oHLJNWsU4EeEZvQiwyq5ujVZ/x6vdA3oOlkL8mGz+Ft4PnzB\nk4L8yNCMXmQYNd5cTe70FK90LZUyq1za2eXpFp7nBd7femzlcltdL2VwFOhFhlGrtEzK98pcYbmu\nrj100dMyLk8o2LUr/FoZCgr0IsMoZ8fGWpDPVy4ZFOTjMs3GHZ9kZChHLzKMAle3VriAsZw7yE/x\nVtSAbA1MZrQwiPvSLC/7fxcXFeRHlAK9yDDat69ln/Z8N1ohLpec4i0u8c7a6VLJB/Vy2R/HzccU\n1AtDgV5kmMSVNjt2wNSU7xnT4Faew1hOBPkQtV2e6oI8wJUrPqgvLmrmXlAK9CKDkLYxSGMf+fPn\n4fJlv7o1Ut+6IHzRU9NdnqCjzUlk+OlmrEi/zc3Bzp2wtOSP5+d9r/g0ly5BqZTYBARCyyVbrmhN\niks2QbXxBaQZvUi/3XdfLcgHWL/8Wq6dnuIbrcFBPqaNuAtLgV6kl9JSNIn+M81McjH3Tk+rbrTm\npY24C6mjQG9m68zsMTP7kZm9ZGa/ZmYbzOybZvZy9O/6bg1WZKi02oA7be/WHTuCnnr1ZiDN1FoX\ndBTkQRtxF1SnM/r9wFPOuV8C3ge8BDwAHHPO3Qwci45FiiUriJvVgn7a6tYWm4Gs5wzGciLIN+Nn\n8S1bF1SrfuNta/F82oi7sNreM9bM3gk8B/yiSzyJmf0Y+LBz7lUzexfwbefce5s9l/aMlZEzMxPU\nVCxEu60L1nGON6Z/2R8me+EkTU/DuXP+cbMxV6s+yOtG7Ejpx56xNwFngSNm9s9m9iUzWwtc75x7\nNbrmNeD6Dl5DZDh1KZdd37ogvGRyZaen666D/fuzZ+uvv157nLYIq1Lxs/0TJxTkC6yTQL8G+CBw\n0Dn3AeAiDWmaaKaf+ieDme0ys+Nmdvzs2bMdDENkADrMZRtLbbUumOAyjlJtO7+4LHLDhtbjnJ31\nG3VXq9q4e8x0EuhPAaecc89Ex4/hA//Po5QN0b9n0n7YOXfIObfVObd106ZNHQxDZAACWhRkMZYI\nn8FDPIvP3Azk0iW/ujXNnXfWH8/O+tn78rJm8WOk7UDvnHsN+KmZxfn3bcCLwBPAzujcTuDxjkYo\nMoySs+NA8Y3W8AAPcZqm5WYgWSWbTz4ZPD4prk6rbn4XmDOz54H3A/8d+BzwUTN7GbgjOhYZXa3K\nKAPUVrbma12wkotvl+rihQ5bIDjnngPS7vhu6+R5RQYiLok8edLntuNSw7vvhqtX/eP5eX/8ne/A\nQw/BwkLTp2xnv9ZcrQvAp5CmptIrb1QXL6jXjYjXuHVffJPTrBbkY1evwoMPtqyJr28j3IqfwTvK\nGU9Wqa/JjzcDicsioX788c+oLl5QCwQRL21x06VL2bnvJkG+zJUcbYRraZrMIB9XxySrZR55xI8h\nvqGqihppou0FU92kBVMycKVSyxl6M7VKmtqZ1gJy8JWKArZk6seCKZHRlHZzNSuXXWr9v8jqcsmc\ni56S1q6tvWa57NsZK8hLhxToZbyk9ajZtcvXm6etGr3vvsxgH3eXzFsuGbcRTp3Jx3u0gm9lfPSo\nNgSRjinQy3jJysU/+aSfPSf3Td0ZLQeJA29Cvu6SENxGOG1s6hEvHVKOXsZDXDrZrBHZ5GR9uWTj\nMckAD3lm8blLJpPMUn/ZiITm6FVeKcXXWDqZpbEmPjPIh87gveAgXyqlB3TVwkuHlLqR4ktL1+Rg\nLObuEe/LJUvhW/pNTPj7AWn3CVQLLx1SoJfi66ANgLGI/98krJom7i6ZWROfplqFI0fgwAHVwktP\nKHUjxbdlS/PcfLzKNKF+M5Cw1gWZ3SWbMfOLnmLx4ieRLtKMXoqvsVVvUiLIxz3i6/vEh8/icwd5\nUP5d+kKBXkZfq+6SX/969s8mgnw7i55yzeKVf5cBUaCX4dYqiGctgEpel7WfKrUbrXkXPcFyvll8\nWr8a5d+lT1RHL8MnWfPemD9v7P2SteF1tVrLfWfsp1p/ozVEPI5lXJ7bW+pXIz2iXjcympIzdFjd\naCxeKRrP9LNuss7PZ24SUuFCNIvPF+RLLEQVNWuyN+NupJm7DAHN6GW4NAveSY392QOvy98j3ktd\n9JSycrbO2rXw9tsBryPSHs3oZTSF1LyXy+ELoKLr4lx8/h7xTRY9HT6cvWdsqQR/+ZdhYxTpMQV6\nGS6tyg0rFd/VMYe8i57iG60tFz3Nzvr7AM7Bo4/W32j98peVrpGhoUAvw2XfvtVliHE+PFm5EmA9\nZ3Lk4uNZfOCN1sbWxXHQX16u7fokMiQU6GW4pG2J17htXtovgwbrOcObbCR0Fh/3iA+uprnvvrDr\nRIaAWiDI8MlqAxCXXZ48CRs2wNTUqhr5WoCH0NYFLXvEr10Lly/72Xq57KuCDhwIfz8iA6ZAL8Mt\nq498IsDXKmlioRU1iTRNuZye+0/W44uMKAV6GV4BfeTzlUtC5qKnrBu8HXS+FBkWytHL4LRqb9Ck\nj7yxkKNcMuY35E7NxZczKmzUdEwKQDN6GYzG2XrcoybWZNs/YwH/n26+Wfw6zqVvyF2p+P1hjx6t\n/8WipmNSEJrRy2BkbdK9fTvs2JEa5Mtcicol8wX5eBa/EuQba94PHdKmH1JoHbdAMLMycBw47Zz7\nhJndBHwVmAaeBXY455qsE1cLhLESskl3itpGIPlaF6TO4oeg7YdIN/SzBcIe4KXE8eeBLzjn3gO8\nAdzbhdeQImhsWBZgMycaNgJpxi96qtXEl9JTNSJjpqNAb2Y3Ar8BfCk6NuAjwGPRJUeBT3byGlIg\nOTfp3swJfsYWwlsXLOIota6JFxkznd6M/XPgj2GliHkaeNM5txgdnwI2d/gaUhSBpYrt7Nfqg/xk\n0yspl9VoTMZS2zN6M/sEcMY592ybP7/LzI6b2fGzZ8+2OwwZJRs2ZH4r7hGfd7/WWo/4RJCPe+NM\nT/uv+Obq0aO6uSpjqZPUze3Ab5rZCfzN148A+4F1Zhb/pXAjcDrth51zh5xzW51zWzdt2tTBMGSg\nWtXCB6hf9BS+X2tqj/hkb5xz5/yXGo3JmGs7deOc+yzwWQAz+zDwX5xzs2b218Cn8MF/J/B4F8Yp\nw6hZLXxaUH399brDfCmamOMGTnKamfRvq12ByCq9qKP/E+APzewVfM7+oR68hgyDrFr4vXvh1lt9\nyiT5lShrrC+XDC2ZbBHkp6fbex8iBdeVlbHOuW8D344e/wT4UDeeV4Zc1s3VJuWT+bpLxjLSNEkT\nE7B/f+DziYwXrYyV9rXoCd8ob4/4prn4pGoVjhxRDl4kg3rdSPsuXw66rJ1yydQe8XFq5vXXfbOx\nffsU3EUCaEYv2VpV1Cwvt3yKfLn4WrnkSpCvVn1vGlXRiLRNM3pJF9JdsonaqlYIncWvStFMT6uK\nRqQLNKOXevEsfvv29IqaPXsy+9XcwVMri57ytC6Iu0uuysOfP1//l0QXavZFxpEC/ThpFShDmo6d\nP5/ar+YOnuIYv07eRU+p3SUt8bPxXxK7d9fG5lztvIK9SEsdtynuBrUp7oO0bfkqFd9zHdpqHQxg\nXAXKK0dhAippGmlPV5FVQtsUK0c/LrIWN+3Z46tncnSVjNWCfL6dnnIHedCeriIdUOpmXGQFxIxU\nTDNxA7K8Qf4GTqbn4kNoT1eRtinQj4suBcTVDchaCWhdkDQ9vXohVqXi005p57Wnq0hLCvTj4s47\n088HbsQxyUWM5USQb8anaLZtA/foX+EmrgkL8pWKb2OQtner9nQVaZty9OPiySfTz197ra9iaZK+\nmeQiV5kizwzeuejaOeqraJJKJZia8q/duNI1LYDPziqwi7RBM/pRlqeuvFmOfmoqtfNjnIsPC/Jx\nb5ol3KNfqZ3euxcWUvaGr1b9Dda339ZKV5EeU6AfVcma95C68mY5+vPn4a236oJ9vlx8ckPuifpV\ns1m/YFQtI9I3CvSjqlkv+DT79jXvNrmwABcurMziw3PxbnUDsmQ9ftYvGFXLiPSNAv2oyjtTnp2F\nnTtTyxRX9mtdXMg1i5/gcn0DsljyNdJ+wahaRqSvFOhHVdZG243n4zy+GTz44KqFR+3u1zrBZRbI\nqNhJvsbsrKplRAZMVTdF1tj2INHuwlig9vGHL3pK7RPfqFqtP1a1jMhAKdCPqoaNtlecPw8bN9Ye\np6gF+XytC4KCvNIyIkNHqZtR1aqKJiXIG4tR64J8QT6uqAmaySstIzJ0FOhHVdZK1wzGIv7jzrdf\na9AsHmpdJNOCvPrIiwyUAv0oSAuUWStdGxhL0Sw+DvLN1IK7r4kPmMXHsloc5633F5GuUz/6YZfV\nRz6g46SxRL7mY4u4lU28U1xzDfz7v6d/r1yGxcXV52dm0n8JqI+8SMdC+9FrRj/sshZGNVFrI5wn\nTZMS5JMbczsHV65kP03efvFaGSvSN6q6GXaBuz6t5wxvsjFxJnQWv4zL+s8gbcZdrWbP0NNs2ZJ+\nvVbGivSNZvTDLqvzY0ItyOdb9NQ0yGfJu9JVK2NFBk6BftBaVaQ0uYcS32itBfkQURthSs2DfCnj\nP428K121MlZk4Nq+GWtm7wa+DFyPjx6HnHP7zWwD8DVgBjgBfNo590az5xrbm7Fzc3DPPfVtfCcn\n4fDhWiDMmNHnu9EK8aInH+QztuVLWrvWtxAWkaHVj5uxi8AfOeduAW4DfsfMbgEeAI45524GjkXH\nkmbPntW92hcWYPv2zHrz9ZzJcaM1liyZDAjy0NZm4SIynNoO9M65V51z348evwW8BGwG7gKORpcd\nBT7Z6SALK6NFAeBvYN5zT92p1bn4ZtpY9JSkm6UihdGVHL2ZzQAfAJ4BrnfOvRp96zV8akfaEc32\ny1zJkYv3wX0d58IWPW3bppulIgXXcaA3s+uAvwF+3zn3b8nvOX8DIPUmgJntMrPjZnb87NmznQ5j\nNKVs39eozBWWmSTPLN5R4g1+ocUTl+H+++Hpp3WzVKTgOgr0ZjaBD/JzzrlvRKd/bmbvir7/LuBM\n2s865w4557Y657Zu2rSpk2GMhrTqmk9/OvPy3fwP1nA1EeSbqaVpgnPwi4tw4IB/PDvra+a1d6tI\nIbW9YMrMDHgIeMk592eJbz0B7AQ+F/37eEcjHGVzc35l6/y8ny3HFU7z87Bjx6rSyXYXPa3jXOsZ\nvIiMrU5Wxt4O7AB+YGbPRef+Kz7Af93M7gXmgexpaxFlBffGMtbMIJ+vXLKtIB+QMhKR4mg70Dvn\n/jfZUWlbu8870prs6JSlVg8PeYJ8iQWWuDb/GCcmYP/+/D8nIiNLK2O7Ka0BWRP1i55Ce9N0EOSr\nVThyRDl4kTGjQN9NgR0Z2130dD9fxFEKC/LxitpkB0rdaBUZSwr03RSwyKidRU9lFrmfL3KA3w0b\nR7UKjzyi4C4igAJ9+9LKJZts7xf3iG9n0dMiE+FB3kzBXUTqqB99Oxpvusbb401NpV5e4QKXeQd5\n8vDB9fCN1LpARBpoRp9HPIvfvj1916eG3jVx64KwIJ9z0dP0tFoXiEgQBfpYq77wc3Nw993BOz7l\nbV1Q600TEOQrFV8iqdYFIhJAqRvITsVALXDu2QNXr7Z8qkkucpU4hRMyi8+56Kla9bP2eFwK7CLS\ngmb0kL0B9969teMmLYXjckljOQryYbP4uEd8UJCvVHyZpG60ikhOCvSQXf8+P5+5AUis3f1ac/WI\nV1pGRDowfoE+LRffrFIlmcZJiGfxefvTlFho3SMeam2EVQsvIh0arxx9Vi5+5044ejS7fUHD+XYb\nkOVqXbC4GPjcIiLNjdeMPisXf/Cgr4Fv0dUx36KnmGOCy+GtC8DP5kVEumQ8An2crmlWGnn+PFy+\nnPnt+kVP4TXxE1xmgbX5xpuSKhIRaVfxUzeN6ZpmUq6pBXjoSblkUrnsxxrv/CQi0gXFD/Q5Wwcn\n5W1d0NFOT9PTcO5cez8rItJE8QN9YOvgpNqqVuj5LB5gclKbgYhIzxQ/Rx/Y5GszJ1YWPeVpXZBr\n0VOaahUOH1b5pIj0TLECfVqN/L59fvu8JjZzgp+xhZ4uemqkla4i0ifFCfTxTdf5eb/IKK6R/853\narstNTAWMJYTQT5EbRYfFOTj156e9l9qQCYifVacHH1WjfyhQ7C0tOpyYwH/9vMtegqaxZv5XzaN\nDchERAagOIE+66ZrQ5DP110ylmNDbgV3ERkyxUndbNiQfj6RtqkF+XyLnloGeW3ALSJDrDgz+izX\nXMP6KyejtgUQWi55Ayc5zUzr569WfXAXERlSoz+jjyttMvrF14J86Cx+EUcpPcg33tTV1n0iMgJG\nO9A32d7vVp7L0YAsTtMs4lYWSqV45BFt3SciI2e0UzcN2/vV6uFjYa0LghqPbdvmg7oCu4iMmJ7M\n6M3sY2b2YzN7xcwe6MVrAHXpmnYXPQUH+aef7mysIiID0vUZvZmVgS8CHwVOAd8zsyeccy92+7Ug\nb1+aWGADMjUaE5EC6MWM/kPAK865nzjnFoCvAnf14HUSQT5kBg/xLD4oyKvRmIgURC8C/Wbgp4nj\nU9G5rqsF+RCOW3geN72JN6Z/ufmlajQmIgUysJuxZrYL2AWwJbDDZH5u5dEt607zwhvvA6JUzJo1\nqa0RKJdVFy8ihdKLGf1p4N2J4xujc3Wcc4ecc1udc1s3bdrU5SH4FM0NnMRRwlHihQtbfFlk3NUy\na7s+beMnIgXTi0D/PeBmM7vJzCaBzwBP9OB1KLFActbu+ZYFqxY9uei6+Xm45x64/Xa4//7aRtzl\nsj/WNn4iUjBdT9045xbN7D8DfweUgcPOuRe6/ToAS+W1lJcuJqpuCGs+trDga/DPnVNgF5HC60mO\n3jn3JPBkL567ztJSWEfJNBkRxq54AAAElklEQVQtE0REima0WyCURnv4IiL9MNqRcnm5/Z+dnu7e\nOEREhthoB/p2TUxoMZSIjI3RDvShs/LG/VqPHNFiKBEZG6Md6Pfv97PzLJWK3/np3Dn/tbysHaBE\nZOyMdqCfnfWz87hHfOPMXf3iRURGvB89qEe8iEgLoz2jFxGRlhToRUQKToFeRKTgFOhFRApOgV5E\npODMucY2vwMYhNlZYL7Dp9nIyq4iY0Hvt9jG7f3C+L3nbrzfqnOu5YYeQxHou8HMjjvntg56HP2i\n91ts4/Z+Yfzecz/fr1I3IiIFp0AvIlJwRQr0hwY9gD7T+y22cXu/MH7vuW/vtzA5ehERSVekGb2I\niKQoRKA3s4+Z2Y/N7BUze2DQ4+k2M3u3mX3LzF40sxfMbE90foOZfdPMXo7+XT/osXaTmZXN7J/N\n7G+j45vM7Jnoc/6amU22eo5RYWbrzOwxM/uRmb1kZr9W5M/XzP4g+m/5h2b2FTO7tkifr5kdNrMz\nZvbDxLnUz9O8v4je9/Nm9sFuj2fkA72ZlYEvAh8HbgH+k5ndMthRdd0i8EfOuVuA24Dfid7jA8Ax\n59zNwLHouEj2AC8ljj8PfME59x7gDeDegYyqN/YDTznnfgl4H/59F/LzNbPNwO8BW51zvwKUgc9Q\nrM/3YeBjDeeyPs+PAzdHX7uAg90ezMgHeuBDwCvOuZ845xaArwJ3DXhMXeWce9U59/3o8Vv4ILAZ\n/z6PRpcdBT45mBF2n5ndCPwG8KXo2ICPAI9FlxTm/ZrZO4H/CDwE4JxbcM69SYE/X3yL9CkzWwNU\ngFcp0OfrnPtH4PWG01mf513Al533T8A6M3tXN8dThEC/Gfhp4vhUdK6QzGwG+ADwDHC9c+7V6Fuv\nAdcPaFi98OfAHwPxDvDTwJvOucXouEif803AWeBIlKr6kpmtpaCfr3PuNPCnwEl8gL8APEtxP99Y\n1ufZ8xhWhEA/NszsOuBvgN93zv1b8nvOl08VooTKzD4BnHHOPTvosfTJGuCDwEHn3AeAizSkaQr2\n+a7Hz2JvAm4A1rI6zVFo/f48ixDoTwPvThzfGJ0rFDObwAf5OefcN6LTP4//xIv+PTOo8XXZ7cBv\nmtkJfCruI/gc9rroT30o1ud8CjjlnHsmOn4MH/iL+vneAfyrc+6sc+4q8A38Z17UzzeW9Xn2PIYV\nIdB/D7g5umM/ib+p88SAx9RVUX76IeAl59yfJb71BLAzerwTeLzfY+sF59xnnXM3Oudm8J/nPzjn\nZoFvAZ+KLivS+30N+KmZvTc6tQ14kYJ+vviUzW1mVon+247fbyE/34Ssz/MJ4Lei6pvbgAuJFE93\nOOdG/gu4E/h/wL8Aewc9nh68v/+A/zPveeC56OtOfN76GPAy8DSwYdBj7cF7/zDwt9HjXwT+L/AK\n8NfANYMeXxff5/uB49Fn/L+A9UX+fIH/BvwI+CHwCHBNkT5f4Cv4+w9X8X+x3Zv1eQKGrxz8F+AH\n+Gqkro5HK2NFRAquCKkbERFpQoFeRKTgFOhFRApOgV5EpOAU6EVECk6BXkSk4BToRUQKToFeRKTg\n/j+l8PIKPGe9hAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_train , Y_train, color = 'red')\n",
    "plt.scatter(X_train , model.predict(X_train), color ='blue')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f23a6a320d0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X_test , Y_test, color = 'red')\n",
    "plt.scatter(X_test , predictions, color ='blue')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}