Skip to content

Instantly share code, notes, and snippets.

@kshirsagarsiddharth
Created December 9, 2019 11:50
Show Gist options
  • Select an option

  • Save kshirsagarsiddharth/2e444882b8d7d9fcf81ed100e4d396a7 to your computer and use it in GitHub Desktop.

Select an option

Save kshirsagarsiddharth/2e444882b8d7d9fcf81ed100e4d396a7 to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Overfitting/UnderFitting a model:\n",
"We usually split our data in Training and testing and fit our model on the train data to make predictions of test data. Due to these two things may occur overfitting or underfitting of our model. These affect the predictability of our model, we might be using a model that has lower accuracy and/or is generalized(we can't generalize our predictions on other data).\n",
"\n",
"Overfitting: The model we trained has trained too well and has fit too closely to the training data. This usually happens when the model is too complex. This model will be too accurate on training data but will perform poorly on untrained or new data. This is because this model is not generalized, means you cannot generalize the result and cannot make any inference on other data which is ultimately what you are trying to do when this happens the model learns or describes noise in the training data instead of the actual relationship between the data. This noise is obviously not part of the new dataset hence it cannot be applied to it.\n",
"\n",
"Underfitting: The model does not fit the training data and therefore misses the trends in the data. It also means that the model cannot be generalized to new data. This is due to the simple model It could also occur when we fit a linear model to data that is non-linear. In this case, training data cannot be generalized to other data.\n",
"Train/Test split: The training set contains a known output and the model learns on this data in order to be generalized on other data later on."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from sklearn import datasets,linear_model\n",
"from sklearn.model_selection import train_test_split\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>age</th>\n",
" <th>sex</th>\n",
" <th>bmi</th>\n",
" <th>map</th>\n",
" <th>tc</th>\n",
" <th>ldl</th>\n",
" <th>hdl</th>\n",
" <th>tch</th>\n",
" <th>ltg</th>\n",
" <th>glu</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.038076</td>\n",
" <td>0.050680</td>\n",
" <td>0.061696</td>\n",
" <td>0.021872</td>\n",
" <td>-0.044223</td>\n",
" <td>-0.034821</td>\n",
" <td>-0.043401</td>\n",
" <td>-0.002592</td>\n",
" <td>0.019908</td>\n",
" <td>-0.017646</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.001882</td>\n",
" <td>-0.044642</td>\n",
" <td>-0.051474</td>\n",
" <td>-0.026328</td>\n",
" <td>-0.008449</td>\n",
" <td>-0.019163</td>\n",
" <td>0.074412</td>\n",
" <td>-0.039493</td>\n",
" <td>-0.068330</td>\n",
" <td>-0.092204</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.085299</td>\n",
" <td>0.050680</td>\n",
" <td>0.044451</td>\n",
" <td>-0.005671</td>\n",
" <td>-0.045599</td>\n",
" <td>-0.034194</td>\n",
" <td>-0.032356</td>\n",
" <td>-0.002592</td>\n",
" <td>0.002864</td>\n",
" <td>-0.025930</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.089063</td>\n",
" <td>-0.044642</td>\n",
" <td>-0.011595</td>\n",
" <td>-0.036656</td>\n",
" <td>0.012191</td>\n",
" <td>0.024991</td>\n",
" <td>-0.036038</td>\n",
" <td>0.034309</td>\n",
" <td>0.022692</td>\n",
" <td>-0.009362</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.005383</td>\n",
" <td>-0.044642</td>\n",
" <td>-0.036385</td>\n",
" <td>0.021872</td>\n",
" <td>0.003935</td>\n",
" <td>0.015596</td>\n",
" <td>0.008142</td>\n",
" <td>-0.002592</td>\n",
" <td>-0.031991</td>\n",
" <td>-0.046641</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>437</th>\n",
" <td>0.041708</td>\n",
" <td>0.050680</td>\n",
" <td>0.019662</td>\n",
" <td>0.059744</td>\n",
" <td>-0.005697</td>\n",
" <td>-0.002566</td>\n",
" <td>-0.028674</td>\n",
" <td>-0.002592</td>\n",
" <td>0.031193</td>\n",
" <td>0.007207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>438</th>\n",
" <td>-0.005515</td>\n",
" <td>0.050680</td>\n",
" <td>-0.015906</td>\n",
" <td>-0.067642</td>\n",
" <td>0.049341</td>\n",
" <td>0.079165</td>\n",
" <td>-0.028674</td>\n",
" <td>0.034309</td>\n",
" <td>-0.018118</td>\n",
" <td>0.044485</td>\n",
" </tr>\n",
" <tr>\n",
" <th>439</th>\n",
" <td>0.041708</td>\n",
" <td>0.050680</td>\n",
" <td>-0.015906</td>\n",
" <td>0.017282</td>\n",
" <td>-0.037344</td>\n",
" <td>-0.013840</td>\n",
" <td>-0.024993</td>\n",
" <td>-0.011080</td>\n",
" <td>-0.046879</td>\n",
" <td>0.015491</td>\n",
" </tr>\n",
" <tr>\n",
" <th>440</th>\n",
" <td>-0.045472</td>\n",
" <td>-0.044642</td>\n",
" <td>0.039062</td>\n",
" <td>0.001215</td>\n",
" <td>0.016318</td>\n",
" <td>0.015283</td>\n",
" <td>-0.028674</td>\n",
" <td>0.026560</td>\n",
" <td>0.044528</td>\n",
" <td>-0.025930</td>\n",
" </tr>\n",
" <tr>\n",
" <th>441</th>\n",
" <td>-0.045472</td>\n",
" <td>-0.044642</td>\n",
" <td>-0.073030</td>\n",
" <td>-0.081414</td>\n",
" <td>0.083740</td>\n",
" <td>0.027809</td>\n",
" <td>0.173816</td>\n",
" <td>-0.039493</td>\n",
" <td>-0.004220</td>\n",
" <td>0.003064</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>442 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" age sex bmi map tc ldl hdl \\\n",
"0 0.038076 0.050680 0.061696 0.021872 -0.044223 -0.034821 -0.043401 \n",
"1 -0.001882 -0.044642 -0.051474 -0.026328 -0.008449 -0.019163 0.074412 \n",
"2 0.085299 0.050680 0.044451 -0.005671 -0.045599 -0.034194 -0.032356 \n",
"3 -0.089063 -0.044642 -0.011595 -0.036656 0.012191 0.024991 -0.036038 \n",
"4 0.005383 -0.044642 -0.036385 0.021872 0.003935 0.015596 0.008142 \n",
".. ... ... ... ... ... ... ... \n",
"437 0.041708 0.050680 0.019662 0.059744 -0.005697 -0.002566 -0.028674 \n",
"438 -0.005515 0.050680 -0.015906 -0.067642 0.049341 0.079165 -0.028674 \n",
"439 0.041708 0.050680 -0.015906 0.017282 -0.037344 -0.013840 -0.024993 \n",
"440 -0.045472 -0.044642 0.039062 0.001215 0.016318 0.015283 -0.028674 \n",
"441 -0.045472 -0.044642 -0.073030 -0.081414 0.083740 0.027809 0.173816 \n",
"\n",
" tch ltg glu \n",
"0 -0.002592 0.019908 -0.017646 \n",
"1 -0.039493 -0.068330 -0.092204 \n",
"2 -0.002592 0.002864 -0.025930 \n",
"3 0.034309 0.022692 -0.009362 \n",
"4 -0.002592 -0.031991 -0.046641 \n",
".. ... ... ... \n",
"437 -0.002592 0.031193 0.007207 \n",
"438 0.034309 -0.018118 0.044485 \n",
"439 -0.011080 -0.046879 0.015491 \n",
"440 0.026560 0.044528 -0.025930 \n",
"441 -0.039493 -0.004220 0.003064 \n",
"\n",
"[442 rows x 10 columns]"
]
},
"execution_count": 86,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"columns = \"age sex bmi map tc ldl hdl tch ltg glu\".split()\n",
"diabetes = datasets.load_diabetes()\n",
"df = pd.DataFrame(diabetes.data,columns = columns)\n",
"y = diabetes.target\n"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"X_train,X_test,y_train,y_test = train_test_split(df,y,test_size = 0.2)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"lm = linear_model.LinearRegression()\n",
"model = lm.fit(X_train,y_train)\n",
"predictions = lm.predict(X_test)\n",
"#we have done fitting of the data now we are trying to predict the test data"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([270.79832547, 180.20575752, 185.84344173, 134.1215212 ,\n",
" 158.7031173 ])"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictions[0:5]"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, 'Predictions')"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de7SddX3n8fcHSOGotAGJNBxCk2KkE7wkekqZpuNSvOClLdFWjDPTwSmrqS0u0OVYg10z4liWUbws54IzKNrYqhAXFONliRh0GBkVT0y4BIhQQE3IQFSiKJmYhO/8sZ9zsnOyL8/e+7nvz2uts84+z977nO8+zzn7+/y+v5siAjMzM4Cjyg7AzMyqw0nBzMxmOSmYmdksJwUzM5vlpGBmZrOOKTuAUZx00kmxePHissMwM6uVzZs3/zgiFnS6r9ZJYfHixUxPT5cdhplZrUj6Qbf7cisfSTpO0m2Sbpe0TdK7k+MnSrpJ0n3J5xPannOppPslbZd0bl6xmZlZZ3n2KewDzomI5wHLgVdIOhtYC2yKiKXApuRrJC0DVgNnAq8ArpR0dI7xmZnZHLklhWj5RfLlvOQjgPOA9cnx9cCq5PZ5wDURsS8iHgTuB87KKz4zMztSrqOPJB0taSvwKHBTRHwHODkidgEkn5+RPHwS+FHb03ckx+Z+zzWSpiVN7969O8/wzczGTq5JISIORsRy4FTgLEnP7vFwdfoWHb7nVRExFRFTCxZ07Dw3M7MhFTL6KCL2SPoGrb6CRyQtjIhdkhbSakVAq2WwqO1ppwIPFxGfmZXvhi07ueLG7Ty8Zy+nzJ/g7eeewaoVRxQLLGd5jj5aIGl+cnsCeClwL7ARuCB52AXA55PbG4HVko6VtARYCtyWV3xmVh03bNnJpdffyc49ewlg5569XHr9ndywZWfZoY2dPFsKC4H1yQiio4ANEfFFSd8CNki6EPgh8DqAiNgmaQNwN3AAuCgiDuYYn5lVxBU3bmfv/sP/3ffuP8gVN253a6FguSWFiLgDWNHh+E+Al3R5zuXA5XnFZGbV9PCevQMdt/x47SMzK90p8ycGOm75cVIws9K9/dwzmJh3+FzViXlH8/ZzzygpovFV67WPzKwZZvoNPPqofE4KZlYJq1ZMOglUgMtHZmY2y0nBzMxmOSmYmdksJwUzM5vlpGBmZrOcFMzMbJaTgpmZzXJSMDOzWU4KZmY2y0nBzMxmOSmYmdksr31kZlYjeW9b6qRgZlYTM9uWzuxSN7NtKZBZYnD5yMysJnptW5oVJwUzs5ooYttSJwUzs5ooYttSJwUzs5ooYttSdzSbNUTeo1KsfEVsW+qkYNYARYxKabq6JNW8ty11UjBrgF6jUqr4xlY1/ZJqXRJGFpwUzBqgiFEpTdZvqOc4tcLc0WzWAEWMSmmyXkm1iLkBVeKkYNYARYxKabJeSXXcWmFOCmYNsGrFJO997XOYnD+BgMn5E7z3tc9pZHkjD72S6ri1wtynYNYQw4xKGacO1F76DfVs71OAZrfCnBTMxpSHsR6uW1ItYm5AlTgpmI0pD2NNL++5AVXiPgWzMTVuHaiWTm5JQdIiSV+XdI+kbZIuSY5fJmmnpK3Jx6vannOppPslbZd0bl6xmVm9hrHesGUnK9fdzJK1X2Llupu5YcvOskNqrDxbCgeAt0XEvwDOBi6StCy578MRsTz5+DJAct9q4EzgFcCVko7u9I3NbHR1GcY60/exc89egkN9H04M+cgtKUTEroj4XnL7ceAeoFdR7jzgmojYFxEPAvcDZ+UVn9m4q8sw1nGbPFa2QjqaJS0GVgDfAVYCb5b074BpWq2Jx2gljG+3PW0HHZKIpDXAGoDTTjst17jNmq4OHaju+yhW7h3Nkp4GXAe8JSJ+DnwUOB1YDuwCPjjz0A5PjyMORFwVEVMRMbVgwYKcojazqqhT30cT5JoUJM2jlRA+HRHXA0TEIxFxMCKeBD7GoRLRDmBR29NPBR7OMz4zq7669H00RZ6jjwRcDdwTER9qO76w7WGvAe5Kbm8EVks6VtISYClwW17xmVk91KXvoyny7FNYCfwZcKekrcmxdwJvkLScVmnoIeAvASJim6QNwN20Ri5dFBEHj/iuZjZ26tD30RS5JYWI+Cad+wm+3OM5lwOX5xWTmZn15mUuzKx2vJBffpwUzCw3ebx5eyG/fHntIzPLRV4zkT2ZLV9OCmaWi7zevD2ZLV8uH5nZwNKUhfJ68z5l/gQ7O3wPT2bLhlsKZjaQtGWhvGYiezJbvpwUzGwgactCeb15ezJbvlw+MrOBpC0L5bmNpSez5cdJwRrF49fzN0hN32/e9ePykTWGN2Mphmv6zeaWgjWGN6IfXZqWVp5lISufk4I1hsevj2aQmcIuCzWXy0fWGN6M5UiDbHjvmcIGTgrWIK51H27QPpZxaWkNkijHkZOCNYbHrx9u0Cv/cWhpeTBCf+5TsEZxrfuQQa/8337uGYf1KUDzWloejNCfWwpmDTXolf84tLTGpUQ2CrcUzBpqmCv/pre0vJhef24pmDXUOFz5D8qDEfpzS8GswZp+5T8oT7zrz0nBzMaKE2VvTgqWKS9IZ1ZvTgqWGW+oblZ/7mi2zHiZBLP6c1KwzHgMuFn9uXyUAdfRWzwG3Kz+nBRG5Dr6IeOwTEIadbpIqFOsVgyXj0bkOvohnixVrwXX6hSrFccthRG5jn64cR8DXqcF1+oUqxXHLYURjcNyw5ZenS4S6hSrFcdJYUReS8XalX2RMMgGMmXHWiRvrJOek8KIXEe3dmVeJAzaRzAuFzTuOxlMbn0KkhYBnwJ+E3gSuCoiPiLpROBaYDHwEHB+RDyWPOdS4ELgIHBxRNyYV3xZGvc6uh1S5oJrg/YRjMvicO47GUyqpCDpEuCTwOPAx4EVwNqI+GqPpx0A3hYR35N0PLBZ0k3AG4FNEbFO0lpgLfAOScuA1cCZwCnA1yQ9KyIOdvn+ZpVU1kXCMH0E43BB476TwaQtH/15RPwceDmwAPj3wLpeT4iIXRHxveT248A9wCRwHrA+edh6YFVy+zzgmojYFxEPAvcDZw3wWszG2jj1EQzCv5fBpE0KSj6/CvhkRNzedqz/k6XFtFoX3wFOjohd0EocwDOSh00CP2p72o7k2NzvtUbStKTp3bt3pw3BDGh2h+O49BEMyr+XwaTtU9gs6avAEuDSpBz0ZJonSnoacB3wloj4udQ1l3S6I444EHEVcBXA1NTUEfdbuao8Q7bf7PMqx57GuPQRDMq/l8GkTQoXAsuBByLiCUlPp1VC6knSPFoJ4dMRcX1y+BFJCyNil6SFwKPJ8R3Aorannwo8nDI+q4CqL/nRb/Z5lWNPaxz6CIbh30t6qcpHEfEk8AiwTNILaXUGz+/1HLWaBFcD90TEh9ru2ghckNy+APh82/HVko6VtARYCtyW9oVY+aq+5EevDseqx25WlLSjj94HvB64m9ZwUWiVdm7p8bSVwJ8Bd0ramhx7J60O6g2SLgR+CLwOICK2SdqQ/IwDwEUeeVQvVR/l0WsV16rHblaUtOWjVcAZEbEv7TeOiG/SvTP6JV2eczlwedqfYdVS9aWze63iesWN2ysde1bq0G9ShxibLG1SeACYB6ROCtZf0/74q750dr8OxyrHnoWq9/lAPWJsurRJ4Qlgq6RNtCWGiLg4l6jGQBP/+OswymNujDN9BnWIfVR1mNlbhxibLm1S2Jh8WEay+uMftbWRdWul6qM8+iXjKsc+qjr0mwwaY9Na21WQKilExHpJvwY8Kzm0PSL25xdW82XxDzpqa6OJrZVuZt48OvUbjMuVaNX7fGCwGMfp77dIqYakSnoRcB/w34Erge8nQ1NtSFlMvR91GOW4DMNsXyWzm5lk7BnP5RokxnH5+y1a2vLRB4GXR8R2AEnPAj4LvCCvwJoui07ZUVsbdSgnZKHTm8dcp8yfKPTKs4yyRx36TQaJcVz+fouWNinMm0kIABHx/WS2sg0pi3/QUcsBdSgnZKHfm0T7sNQiOjnLLHvUod8kbYzj8vdbtLQL4k1LulrSi5KPjwGb8wxsHKxaMcmta8/hwXWv5ta153T9R+hW0ujU1Bbw4t9ZkOrnV72ckFUpp9ebRPumSEVdebrskY2q//3WVdqWwl8BFwEX03rfuYVW34LlrN9V5fQPfsqnv/3D2ZUDA7hu806mfuvEvldbVS4nZHk13a1UN3eHvKKuPF32yEaV/37rLO3oo33Ah5IPK1C/ksbX7919xFKyg5Q8qlZOyGOUUNo3j6Im37nskZ2q/f02Qc+kIGlDRJwv6U46L2P93NwiGzPdOh77XVU26apzbuugk2FfV5o3j6KuPKs+89vGW7+WwiXJ5z/MO5Bx1qtU0u+qsklXnWlHCeUpTfIYdeSQyx5WZT2TwswOacBfR8Q72u9LVk59x5HPskH1KhH1u6ps0lVn2lFCZcqqr8NlD6uqtKOPXtbh2CuzDGSc9SoBrVoxyXtf+xwm508gDh8tA/S9v07SjhIqk0cOWdP161P4K+CvgdMl3dF21/HA/8kzsHHSrwTU76qyKVedaUcJlalJfThmnfRrKXwG+CNau6P9UdvHCyLi3+Qc29jweOuWOrR6sliexKzK+vUp/Az4maSPAD+NiMcBJB0v6fci4jtFBNl07ng8pOqtnib14Zh1knby2keB57d9/csOx2wEVX8ztBYncGu6tElBETE7TyEinpSU9rlmjeIEfiTva9AcqbfjlHQxrdYBtDqfH8gnJDOrk0GG6Tp5VF/aIalvAn4f2AnsAH4PWJNXUGZWH2mH6bbvaxEcSh5N2rOiCdKuffQosDrnWKxkTbmKa8rrqIu0w3S9/3I99Jun8DcR8X5J/5XOax9dnFtkVqimbG3YlNdRJ2mXWvEcj3roVz66J/k8TWv/hLkf1hBNmanblNdRJ2nn2XiORz30m6fwheTz+mLCsbI05SquKa+jTqq2NLmNpl/56At0KBvNiIg/zjwiK0URq60WUetv0qqxdVKlpcltNP06mj+QfH4t8JvAPyZfvwF4KKeYrCDtb9LznzKPeUeJ/U8eugbI8iquqFq/r0arzXM8qq9f+eh/AUh6T0S8sO2uL0i6JdfILFdz36Qfe2I/844W8yfm8bO9+zO/iitq5ImvRs1Gk3by2gJJvx0RDwBIWgKk2x3eKqnTm/T+g8FTjz2Gre96eeY/r8hav69GzYaXNim8FfiGpJlZzIuBv8wlIiuk9l50h6xr/Wb1kGpGc0R8BVhKa3vOS4AzIuLGPAMbV0XN+ix6eKCXBzerh1RJQdJTgLcDb46I24HTJHnf5hykGWd/w5adrFx3M0vWfomV624eKmEU/Sbdba8EYOTXYmbZSVs++iStyWr/Mvl6B/A54IvdniDpE8AfAo9GxLOTY5cBfwHsTh72zoj4cnLfpcCFwEHg4nFtifQr62S5RzAU2yE7t9bv2cdm1ZM2KZweEa+X9AaAiNgrSX2e8/fAfwM+Nef4hyPiA+0HJC2jtbbSmcApwNckPSsiDjJm+tXesxzFU3aHrNfCMauetKuk/krSBMlENkmnA/t6PSEibgF+mvL7nwdcExH7IuJB4H7grJTPbZR+ZZ0mzdht0msxa4q0SeFdwFeARZI+DWwC/mbIn/lmSXdI+oSkE5Jjk8CP2h6zIzl2BElrJE1Lmt69e3enh9Rav32Km7R+TJNeS9my6GcygxTlo6RMdC+tWc1nAwIuiYgfD/HzPgq8h1aL4z3AB4E/T77nXB2X14iIq4CrAKamprouwVFnvco6TZqx26TXUib3zViW+rYUkm04b4iIn0TElyLii0MmBCLikYg4GBFPAh/jUIloB7Co7aGnAg8P8zOarl9Lok6a9FrK5JVhLUtpO5q/Lel3I+K7o/wwSQsjYlfy5WuAu5LbG4HPSPoQrY7mpcBto/ysJptpScxMcnvrtVu54sbttVzOoezO7iZw34xlKW1SeDHwJkkPAb+kVe6JiHhutydI+izwIuAkSTto9Uu8SNJyWqWhh0hmRUfENkkbgLuBA8BF4zjyaBAuGdgMzxa3LKVNCq8c9BtHxBs6HL66x+MvBy4f9OeMKw/nLFeVtvx034xlqd9+CscBbwKeCdwJXB0RB4oIrExV+ofvZlxKBlU8F1VrpXllWMtSv5bCemA/8L9ptRaW0Vr7qLGq9g/fzTiUDKp6LqrYSnPfjGWl3+ijZRHxbyPifwJ/CvyrAmIqVV1GcozDAnNVPRfj0kqz8dQvKeyfuTEOZSOozz/8OAznrOq58KQ7a7J+5aPnSfp5clvARPL1zOijX881uhLUqSzT9JJBr3NRZl+DO3atyXq2FCLi6Ij49eTj+Ig4pu124xICFFuW8dIEvXU7Fy/+nQWF7DnRzTi00mx8pR2SOjaKGslR1U7UMnS76u92LqrQ0dv0VpqNL7VWsainqampmJ6eLjuMoaxcd3PH0sjk/AluXXtOCRGVY25yhFZroNeV95K1X+q4MJaAB9e9Op9AzRpE0uaImOp0n1sKGRm0xl3VTtSidbvqf9uG23nrtVs7/i7L6vep4pwJs6ylXTrbehhmX2WPYGnplgQPRnT9XZYxHLeovbPNyuakkIFhxtOPwzyDNNIkwbm/yzI6eqs6Z8Isa04KGRi2FHTcvEO//vkT88ZyBEun5NjJ3N/lqhWT3Lr2HD78+uUAvPXarbmO4HK5z8aFk0IGBi0FzZQiHntidm4g+w48mUtsVTf3qv/oLlt/d/pdFlnScbnPxoWTQgYGLQUVVYqoyzyImav+B9e9mg+e/7zUv8siSzou99m48OijDAw6t6GIUkSV5kEMMmpnkN9lkSUdr0Rq48JJISODTGYqYkhlFSZ4wXDJKe3vsuihqZ6wZuPA5aMSFFGKqErHaJ4lnjJLOnUpzZkNyi2FEhRRiqjKwn55JqeySjpVKs2ZZc1JoSR5lyKqspJn3smpjJJOVUpzZnlw+aihqrKSZ9NG7dywZWfHJAees2DN4JZCQcpYN6cKHaNNGrUzUzbqxnMWrAmcFArQqwYNzXjD7KUKySkLncpGM+rc+jFr56RQgG416Ms2bmPfgSfdYVkTvcpD47hEiTWT+xQK0O3NZM/e/V5krUa6lYcm5084IVhjOCkUYNBaszssD6nSfICmdZqbdeKkUIBubyYnPGVex8e7w7KlansYVGVEl1me3KdQgJk3jcs2bmPP3tbKqMfNO4pXP3ch123eWfpcgqqq4nyApnSam3XjpDCgUYaWti+P/dgT+7lu807+5AWTfP3e3Y0efTSsqizVYTZOnBQGMMryBt2uer9+725uXXtOPgEXJK85GFVZqsNsnDgpDGCUckYdrnqHeXPPcw5GVZbqMBsnTgoDGOWNvepXvcO2grolynd/YRv/b/9oczCaNBvarC5yG30k6ROSHpV0V9uxEyXdJOm+5PMJbfddKul+SdslnZtXXKMYZUvGqg9nHHaJ624J8bEnspmD0b4r261rz3FCMMtZnkNS/x54xZxja4FNEbEU2JR8jaRlwGrgzOQ5V0rqv5t7wbptMv/Erw70HSaZ13DGrMbxD9sK8hwMs2bJrXwUEbdIWjzn8HnAi5Lb64FvAO9Ijl8TEfuAByXdD5wFfCuv+IbRaWgptK6K05RGsh7OmOW6/sOWt7rV/Y895qjDfkczAli57maXgcwqqujJaydHxC6A5PMzkuOTwI/aHrcjOZaLUa6uV62Y5KnHHplLy1ieIstdzYYtb3VrAV32x2d2bFVB90loWc9ertJsaLO6qEpHszoci44PlNYAawBOO+20gX9QFlfXVRlJlGUco3Tq9moBXXHj9o4tkLmjtrLezcy7o5kNp+iWwiOSFgIknx9Nju8AFrU97lTg4U7fICKuioipiJhasGDBwAFkcXU9SodzlrKOI+tO3Znv1ynjw+HJK+u9nPPcG9qsyYpOChuBC5LbFwCfbzu+WtKxkpYAS4Hb8gggi6vrqowkKiOOYUoyaZJX1q2vqrTmzOomzyGpn6XVUXyGpB2SLgTWAS+TdB/wsuRrImIbsAG4G/gKcFFEdN7NZERZXF1XZWG0ouMYdoG6NMkr61ZPVVpzZnWjiI6l+1qYmpqK6enpgZ4zt9YMrTcor3bZ38p1N3fsH5icP9F3qY5+s6WzPi8+z2bdSdocEVOd7qtKR3NhPEt2eKOUZPoNx836vPg8mw1n7FoKNrxRWgpmVh29WgreZKfhshyrX5UOdjPLj1sKDdapri5aE0Amhyyn5LVMdp34d2B15z6FMdVprP7MJcCwk7nGfecxT4qzpnP5qMH6dQB7MtfgPCnOms5JocHSjMn3ZK7BeFKcNZ2TQoN1W+q7nSdzDcaT4qzpnBQKUNZqne0znuHIVQc9cmhwHoFlTeeO5pyV3THZ3jHsUTOj86Q4azoPSc2ZJ3yZWdV48lqJ3DFpZnXi8lHOht3mElzuMbPiuaWQs2E7JoddptrMbBROCjkbds8DT5IyszK4fDRHHiWbYZaGcF+EmZXBLYU2VSrZeJKUmZXBSaFNlUo2niRlZmVw+ahNlUo2niRlZmVwUmgzyvDRPIz7MtVmVjyXj9q4ZGNm484thTYu2ZjZuHNSmMMlGzMbZ04KFeOlLcysTE4KFXHDlp1ctnEbe/bunz3m/X/NrGjuaK6AmUlz7Qlhhpe2MLMiOSlUQKdJc+28tIWZFcVJoQL6vel7aQszK4qTQgX0etP3PAkzK5KTQgV0mjQHcMJT5qVaZtvMLCsefVQBnjRnZlXhpFCCbnMRnATMrGylJAVJDwGPAweBAxExJelE4FpgMfAQcH5EPFZGfHmaGX46M9rIcxHMrErK7FN4cUQsj4ip5Ou1wKaIWApsSr5unCrt2WBmNleVOprPA9Ynt9cDq0qMJTdV2rPBzGyuspJCAF+VtFnSmuTYyRGxCyD5/IySYsuVt9k0syorKymsjIjnA68ELpL0wrRPlLRG0rSk6d27d+cXYU68Z4OZVVkpSSEiHk4+Pwr8E3AW8IikhQDJ50e7PPeqiJiKiKkFCxYUFXJmVq2Y5L2vfQ6T8ycQMDl/wnMRzKwyCh99JOmpwFER8Xhy++XAfwY2AhcA65LPny86tqJ4+KmZVVUZQ1JPBv5J0szP/0xEfEXSd4ENki4Efgi8roTYzMzGWuFJISIeAJ7X4fhPgJcUHY+ZmR1SpSGpZmZWMicFMzOb5aRgZmazFBFlxzA0SbuBH5QdB3AS8OOygxhB3eOH+r8Gx1+uuscPg72G34qIjmP6a50UqkLSdNsaTrVT9/ih/q/B8Zer7vFDdq/B5SMzM5vlpGBmZrOcFLJxVdkBjKju8UP9X4PjL1fd44eMXoP7FMzMbJZbCmZmNstJwczMZjkpDEjSQ5LulLRV0nRy7ERJN0m6L/l8QtlxtpP0CUmPSrqr7VjXmCVdKul+SdslnVtO1Id0if8ySTuT87BV0qva7qta/IskfV3SPZK2SbokOV6Lc9Aj/jqdg+Mk3Sbp9uQ1vDs5Xpdz0C3+7M9BRPhjgA/gIeCkOcfeD6xNbq8F3ld2nHPieyHwfOCufjEDy4DbgWOBJcA/A0dXMP7LgP/Q4bFVjH8h8Pzk9vHA95M4a3EOesRfp3Mg4GnJ7XnAd4Cza3QOusWf+TlwSyEbld5fOiJuAX4653C3mM8DromIfRHxIHA/rU2QStMl/m6qGP+uiPhecvtx4B5gkpqcgx7xd1Op+AGi5RfJl/OSj6A+56Bb/N0MHb+TwuCasr90t5gngR+1PW4Hvd8AyvRmSXck5aWZZn+l45e0GFhB60qvdudgTvxQo3Mg6WhJW2nt6nhTRNTqHHSJHzI+B04Kgxt6f+maUIdjVRy3/FHgdGA5sAv4YHK8svFLehpwHfCWiPh5r4d2OFb6a+gQf63OQUQcjIjlwKnAWZKe3ePhlXsNXeLP/Bw4KQwoRthfumK6xbwDWNT2uFOBhwuOra+IeCT5J3kS+BiHmsaVjF/SPFpvqJ+OiOuTw7U5B53ir9s5mBERe4BvAK+gRudgRnv8eZwDJ4UBSHqqpONnbtPaX/ouDu0vDfXZX7pbzBuB1ZKOlbQEWArcVkJ8Pc38IydeQ+s8QAXjlyTgauCeiPhQ2121OAfd4q/ZOVggaX5yewJ4KXAv9TkHHePP5RyU1Ztexw/gt2n16N8ObAP+Njn+dGATcF/y+cSyY50T92dpNS3307qCuLBXzMDf0hqtsB14ZUXj/wfgTuCO5B9gYYXj/wNaTfc7gK3Jx6vqcg56xF+nc/BcYEsS613Af0qO1+UcdIs/83PgZS7MzGyWy0dmZjbLScHMzGY5KZiZ2SwnBTMzm+WkYGZms5wUrPEkPb1tFcn/O2dVyV8rMa6XSrqhrJ9v1skxZQdglreI+AmtZQCQdBnwi4j4QPtjkglaitbMULOx5ZaCjS1Jz5R0l6T/AXwPWCRpT9v9qyV9PLl9sqTrJU0n69qf3eH7TUs6o+3rb0p6nqSzJX1L0hZJt0pa2uG5fyfpLW1f3yvp1OT2BcnP3CrpSklHSTpG0j+otbfHXZIuzva3Y+PKScHG3TLg6ohYAezs8bj/Arw/IqaA84GPd3jMtcl9JG/oT4+I22ktNf0Hyc94D/B3aYNLFj17DfD70VoM7RhgNfACWvt6PCcing18Ku33NOvF5SMbd/8cEd9N8biXAme0qkwAnCBpIiL2tj1mA/AFWm/8r0++BpgPfErS6UPE91Lgd4Hp5GdP0FoS+cYkno8AXwa+OsT3NjuCk4KNu1+23X6Sw5ccPq7ttoCzIuJX3b5RRPxA0i8kLaOVFN6Y3HU5cGNEXCnpmcBXOjz9AIe33Gd+toBPRMR/nPsESc+ltYT7xcCfAGvmPsZsUC4fmSWSTubHJC2VdBStss2MrwEXzXwhaXmXb3MtcClwbETcnRz7DQ6Vpt7Y5XkP0SoJIeksDi17/DXgfEknJfc9XdJpkhbQ6hj/HPAuWtuVmo3MScHscO+gdSW/idaKrDMuAlYmO1zdDfxFl+d/DvjXHCodAbwPuELSrT1+7ueAkyVtobUK7AMAEXEn8G7ga5LuoFUmOplW0rgl2YnrY8A7B3qVZl14lVQzM4Q5L/sAAAAvSURBVJvlloKZmc1yUjAzs1lOCmZmNstJwczMZjkpmJnZLCcFMzOb5aRgZmaz/j99izYkPAllqAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(y_test,predictions)\n",
"plt.xlabel(\"True values\")\n",
"plt.ylabel(\"Predictions\")"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.4730262879567637"
]
},
"execution_count": 83,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.score(X_test,y_test)\n",
"#model with high score is better fit"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score,cross_val_predict\n",
"from sklearn import metrics"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.4554861 , 0.46138572, 0.40094084, 0.55220736, 0.43942775,\n",
" 0.56923406])"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cross_val_score(lm,df,y,cv=6)"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0.46930578, 0.48724994, 0.50955259])"
]
},
"execution_count": 87,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 92,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.collections.PathCollection at 0x7f9adda9fc18>"
]
},
"execution_count": 92,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"predictions2 = cross_val_predict(lm,df,y,cv=6)\n",
"predictions2[0:5]\n",
"plt.scatter(y,predictions2)"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.4908065838640776"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"accuracy = metrics.r2_score(y,predictions2)\n",
"accuracy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cross-validation:\n",
"it's very similar to train test split but it is applied to more subsets. Meaning we split our data into k-subsets and train on k-1 one of those subsets.\n",
"Types of cross-validation methods:\n",
"K-Fold Cross Validation: In this method, we split our data into k different subsets(folds).We use k-1 subsets to train our data and leave the last subset(or last fold) as test data. We then average the model against each fold and finalize our model. After that, we test again the test set."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"KFold(n_splits=4, random_state=None, shuffle=False)\n"
]
}
],
"source": [
"from sklearn.model_selection import KFold\n",
"import numpy as np\n",
"X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])\n",
"y = np.array([1, 2, 3, 4])\n",
"\n",
"Kf = KFold(n_splits = 4) #define number of splits\n",
"Kf.get_n_splits(X)\n",
"print(Kf)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train: [[3 4]\n",
" [1 2]\n",
" [3 4]], test: [[1 2]]\n",
"train: [[1 2]\n",
" [1 2]\n",
" [3 4]], test: [[3 4]]\n",
"train: [[1 2]\n",
" [3 4]\n",
" [3 4]], test: [[1 2]]\n",
"train: [[1 2]\n",
" [3 4]\n",
" [1 2]], test: [[3 4]]\n"
]
}
],
"source": [
"for train, test in Kf.split(X):\n",
"\tprint('train: %s, test: %s' % (X[train], X[test]))"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"train: [0.1 0.4 0.5 0.6], test: [0.2 0.3]\n",
"train: [0.2 0.3 0.4 0.6], test: [0.1 0.5]\n",
"train: [0.1 0.2 0.3 0.5], test: [0.4 0.6]\n"
]
}
],
"source": [
"# scikit-learn k-fold cross-validation\n",
"from numpy import array\n",
"from sklearn.model_selection import KFold\n",
"# data sample\n",
"data = array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6])\n",
"# prepare cross validation\n",
"kfold = KFold(3, True, 1)\n",
"# enumerate splits\n",
"for train, test in kfold.split(data):\n",
"\tprint('train: %s, test: %s' % (data[train], data[test]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"cross validation techniques"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"using cross_val_predict"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment