{ "cells": [ { "cell_type": "markdown", "id": "ea93e76e", "metadata": {}, "source": [ "# Interpretting Regression" ] }, { "cell_type": "code", "execution_count": 1, "id": "fa5a64e9", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "import numpy as np\n", "import pandas as pd\n", "import itertools as itr\n", "from sklearn import datasets, linear_model\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "from sklearn.model_selection import cross_val_score\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import PolynomialFeatures\n", "sns.set_theme(font_scale=2,palette='colorblind')" ] }, { "cell_type": "markdown", "id": "e1acdaf9", "metadata": {}, "source": [ "we'll return to the same data we used on Monday, first." ] }, { "cell_type": "code", "execution_count": 2, "id": "33d485e6", "metadata": {}, "outputs": [], "source": [ "tips = sns.load_dataset(\"tips\").dropna()" ] }, { "cell_type": "code", "execution_count": 3, "id": "6a421364", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(244, 7)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips.shape" ] }, { "cell_type": "code", "execution_count": 4, "id": "a5c2fabb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3
221.013.50MaleNoSunDinner3
323.683.31MaleNoSunDinner2
424.593.61FemaleNoSunDinner4
\n", "
" ], "text/plain": [ " total_bill tip sex smoker day time size\n", "0 16.99 1.01 Female No Sun Dinner 2\n", "1 10.34 1.66 Male No Sun Dinner 3\n", "2 21.01 3.50 Male No Sun Dinner 3\n", "3 23.68 3.31 Male No Sun Dinner 2\n", "4 24.59 3.61 Female No Sun Dinner 4" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips.head()" ] }, { "cell_type": "markdown", "id": "c47792ec", "metadata": {}, "source": [ "Again, we'll prepare the data." ] }, { "cell_type": "code", "execution_count": 5, "id": "92ed182d", "metadata": {}, "outputs": [], "source": [ "# sklearn requires 2D object of features even for 1 feature\n", "tips_X = tips['total_bill'].values\n", "tips_X = tips_X[:,np.newaxis] # add an axis\n", "tips_y = tips['tip']\n", "\n", "tips_X_train,tips_X_test, tips_y_train, tips_y_test = train_test_split(\n", " tips_X,\n", " tips_y,\n", " train_size=.8,\n", " random_state=0)" ] }, { "cell_type": "markdown", "id": "8df86619", "metadata": {}, "source": [ "Next, we'll fit the model" ] }, { "cell_type": "code", "execution_count": 6, "id": "a3ace32e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5906895098589039" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regr_tips = linear_model.LinearRegression()\n", "regr_tips.fit(tips_X_train,tips_y_train)\n", "regr_tips.score(tips_X_test,tips_y_test)" ] }, { "cell_type": "markdown", "id": "8466dbb0", "metadata": {}, "source": [ "This doesn't perform all that well, but let's investigate it further.\n", "We'll start by looking at the residuals" ] }, { "cell_type": "code", "execution_count": 7, "id": "cddf9627", "metadata": {}, "outputs": [], "source": [ "tips_y_pred = regr_tips.predict(tips_X_test)" ] }, { "cell_type": "markdown", "id": "2ecbebe4", "metadata": {}, "source": [ "## Examining Residuals\n", "\n", "The error, the difference between the predictions and the truth is called the\n", "residual." ] }, { "cell_type": "code", "execution_count": 8, "id": "02a259a9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64 0.092195\n", "63 -0.960007\n", "55 -0.593783\n", "111 0.730731\n", "225 0.104349\n", "92 0.585451\n", "76 -0.315843\n", "181 -2.361866\n", "188 -0.713567\n", "180 0.704514\n", "73 -1.523002\n", "107 -0.819782\n", "150 -0.108729\n", "198 0.287638\n", "224 0.748317\n", "44 -1.627113\n", "145 0.337270\n", "110 -0.615508\n", "243 -0.152549\n", "189 -0.734142\n", "210 1.939957\n", "104 -1.025283\n", "138 0.578198\n", "8 0.525219\n", "199 0.337033\n", "203 0.116940\n", "220 0.006281\n", "125 -0.285225\n", "5 -1.232034\n", "22 0.325922\n", "74 0.255195\n", "124 -0.282726\n", "12 0.952023\n", "168 0.444221\n", "45 -0.200007\n", "158 -0.284589\n", "37 -0.401728\n", "136 0.029040\n", "212 -3.290531\n", "223 -0.423739\n", "222 -0.060454\n", "118 0.432432\n", "231 -0.451826\n", "155 -1.220382\n", "209 0.034393\n", "18 -0.827854\n", "108 -0.964850\n", "15 -0.801360\n", "71 -0.318168\n", "Name: tip, dtype: float64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips_y_pred - tips_y_test" ] }, { "cell_type": "markdown", "id": "9b5db8b4", "metadata": {}, "source": [ "To examine these, we can plot them on the data:" ] }, { "cell_type": "code", "execution_count": 9, "id": "333ca912", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEFCAYAAADE/xFGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAj+klEQVR4nO3de5Qc5Xnn8W/PRdKgC0YykqUZQGRNXgLBIRPkSxzA1+MsK3w5Y8usFWNr7fggBwmntaCYcdaDneYatSNz8/pgJOPIOZbTB7PYGzvYJlwcn8NlDPbC6j2QA0YzEpIWCaNL68JM7x9VNVNdU9XT3VN9rd/nnDmleuvS79S0+um33vd9KlUoFBAREZmpjkZXQERE2oMCioiIxEIBRUREYqGAIiIisVBAERGRWHQ1ugIxmw2sAHYDYw2ui4hIq+gElgKPA8eqPUm7BZQVwCONroSISIu6EHi02oPbLaDsBjhw4DDj460zv2bRonm88sqhRlejaen6RNO1KU3XJ5r/2nR0pDjllLngfoZWq90CyhjA+HihpQIK0HL1rTddn2i6NqXp+kQLuTYz6ipQp7yIiMRCAUVERGKhgCIiIrFQQBERkVgooIiItLBcbjv9/eeyZMnJ9PefSy63vWF1abdRXiIiiZHLbSedXkc+nwdgZGQn6fQ6AAYGVtW9PmqhiIi0qEzmOvL5PGlgFEgD+XyeTOa6htRHAUVEpEWNjo4AMAQsc5f+8npTQBERaVG9vX0AzHfX5wfK600BRUSkRQ0Ofpmenp6isp6eHgYHv9yQ+qhTXkSkRU10vK/97ERZNntrQzrkQS0UEZGWFgwejQomoIAiIiIxUUAREZFYKKCIiEgsFFBERCQWCigiIhILBRQREYmFAoqIiMRCAUVERGKhgCIiIrFQQBERkVgooIiISCwUUEREJBYKKCIiEgsFFBERiYUCioiIxEIBRUREYqGAIiIisVBAERGRWCigiIhILBRQREQkFgooIiISCwUUERGJhQKKiIjEQgFFRERi0VXOTsaYdwEPlnnOM6y1L5Vxzq3Ap0rsYq21Z5f5miIi0mBlBRTgZeDbJba/FfgD4D+AnRXW4RfA8yHluys8j4iINFBZAcVauwP4dNR2Y8yz7j/vttYWKqzDXdbarRUeIyIiTWbGfSjGmHfgtE7GgK0zPZ+IiLSmODrl/5u7/LG1dlcM5xMRkRZUbh9KKGPMScDH3dVvVXmadxtj3gLMA/YAjwIPWGvHZ1I3ERGprxkFFOBjwHxgL/DDKs9xeUjZs8aYy6y1v6m6ZiIiUlczveXl3e66x1p7osJjnwLWA+fgtE6WASuBp92ynxpjemdYPxERqZNUoVDpoCyHMebNwHPu6jnW2v8bR4WMMbOAh4C3A7dba6+s4PDlwAtx1ENEpGWkUpP/rvIz3XUm8GK1B8/klpfXOvllXMEEwFp73BhzA3AfcEk153jllUOMj8/ootbVqafOZ9++g42uRtPS9Ymma1NaUq7Pqb5/l/v7+q9NR0eKRYvmzbgeVd3yMsZ0Mtn3UW1nfCk73KVueYmItIhq+1A+gPNhfwj4XnzVmbDIXR6qwblFRKQGqg0on3GX2621tfjQX+UuH6/BuUVEpAYq7kMxxrwRuNRdLXm7y+0L+Qhwr7X2i77y84E+4F+stWO+8i7gKpzRXwBfq7R+IiLSGNV0yn8S6AZ2WGv/fZp9lwLGXfotB+4F9htjhnHmsSwCzsMZPjwOXGOt/UkV9RMRkQaoJqCscZd3z+B1nwY242QpPge4ECgAI8AWnOHCT87g/CIiUmcVBxRr7Vsq2PfThGQptta+AHyh0tcWEZHmpSc2iohILBRQREQkFgooIiISCwUUERGJhQKKiIjEQgFFRERioYAiIiKxUEAREZFYKKCIiEgsFFBERCQWCigiIhILBRQREYmFAoqIiMRCAUVERGKhgCIiIrFQQBERkVgooIiISCwUUEREJBYKKCIiEgsFFBERiYUCioiIxEIBRUREYqGAIiIisVBAERGRWCigiIhILBRQREQkFgooIiISCwUUERGJhQKKiIjEQgFFRERioYAiIiKxUEAREZFYKKCIiLSwXK6r5Ho9KaCIiLSoXK6LdHpOUVk6PadhQUUBRRIrl9tOf/+5LFlyMv3955LLbW90lUQqksnMJp9PFZXl8ykymdkNqY8CiiRSLreddHodIyM7KRQKjIzsJJ1e15JBRYExuUZHnWBykHlFS6+83hRQJJEymevI5/OkgVEgDeTzeTKZ6xpcs8ps27atbQKjVK63twDAEEPsYilDDBWV15sCiiTS6OgIAEPAMnfpL28Vg4ODbREYpTqDg8fo6SmQZQO97CLLBnp6CgwOHmtIfRRQJJF6e/sAmO+uzw+Ut4qXXnoJaP3AKNUZGHidbPYofX3jpFIF+vrGyWaPMjDwekPqo4AiiTQ4+GV6enqKynp6ehgc/HKDalSd008/HWj9wCjVGxh4neHhw+zZc4jh4cMNCyaggCIJNTCwimz21qKybPZWBgZWNahG1clkMm0RGKU9KKBIYgWDR6sFE4DVq1e3RWCU9qCAItLi2iEwSntQQBERkVgooIiISCzKTvhijNkKfKrELtZae3YlL26M6QDWAmuAs4Ex4NfAHdbaf6rkXCIi0ljVtFB+AXw75OfeSk5ijOl0j7kNOAv4V+BRYAXwXWPM5irqJtL2/KlWli9frlnx0jSqSUl5l7V2awyv/QXgg8CzwHustXsAjDFnAY8A640xP7fW3hfDa4m0BS8HWT6fB+C3v/0t6fQ6rmhwvUSgQX0obuvkGnd1rRdMAKy1zwEb3dXBetdNpJlF5SATaQaN6pR/B7AYGLHWPhyy/fvACWCFMaa3rjUTaWJROchEmkE1AeXdxpisMeabxpivGmM+4HauV+KP3eXjYRuttUeAZ9zV86uoo0jNNDJdfFQOMpFmUE1AuRz4a+AvgS8BPwZ+Y4w5r4JznOkuf1tin5cC+4o0XKOfoxKVg0ykGVQSUJ4C1gPnAPNwWtwrgafdsp9WcHtqnrs8XGKfQ+5SX8KkaTT6OSpROchEmkGqUJjZg1iMMbOAh4C3A7dba68s45hv4rRwMtbaL0Xssw34BHCttfaGMquzHHihzH1FIOV7sl0Z/xc6OjooFAq8hvNN5yCwAEilUoyPj9eokiGC9a7w9xCJcCbwYrUHz/hJ9tba48aYG4D7gEvKPMxrfcwtsY/XijlYaZ1eeeUQ4+Ot85/q1FPns29fxb9mYtTy+pzq+3c5r9Hb28fIyM7QdPH1/BsG613p75EU+r8VzX9tOjpSLFo0b5ojphfXKK8d7rLcW14vusszSuxzWmBfkYZrl+eoiNTCjFsorkXu8lDJvSYNu8sVYRuNMScBf+iu/moG9RKJ1UQm37WfnShTungRR1wtFO9/U+gw4BC/BPYBfcaYi0K2fwzoBh631o7GUD8REamxsgKKMeZ8Y8xKd4a7v7zLGLMBZ/QXwNcC2+8xxuwwxhR11Ftrx4Cb3dU7jTGLfcecBdzormbK/1VEas8bNuxXz2HDIs2s3Ftey3ESOe43xgwDe3Fuc52HM3x4HLjGWvuTwHGnAwZ4Y8g5vwZcBFwKPGeM+RlOq+R9wBzgVuXxkmbjDRv284YN67aXJF25t7yeBjYDFmfOyQBwMXAE2AK81Vp7SyUv7LZSPgysA54HPuCe80lgtbV2ffTRIo3hpT4pt1wkScpqoVhrX8DJDlwRa+27ptk+jpO+/rZKzy3SCN6w4bBykaTTExtFKqBhwyLR4ho2LJIIGjYsEk0tFJEKBYOHgomIQwFFRKqSy3XR3z+XJUvm0d8/l1xONzySTu8AEalYLtdFOj2HfN5JSjkykiKdngMcZWDg9cZWThpGLRSRCngP10q6TGY2+XyKNJsYZRlpNpHPp8hkZje6atJACigiZfI/XCtYnjSjo07LZIghlrGbIfdhxF65JJMCikiZ/A/XCpbXUzCANSKg9fY6j4eY7+aD9ZZeuSSTAopImbzZ8EMR5fUQlUus3gYHj9HTUxw8enoKDA4eq3tdpHmoU16kTMGHa/nL6yUql1i9OR3vR2HtZFk2qw75pFMLRVqO1zG+ZMnJ9PefW7dbPmGz5L3yemmmnGHB4KFgImqhSEvxbvl438pHRnZO3PKp9QTDsFny9Xhdv6hcYiLNQC0UaSn+jvFRIM1k+vhy+Vs4lWr0rPioXGIizUABRVqKv2N8GZMd5OXeCvIP/S0UWm9E0sDAKrLZW4vKLrvsR0XrmrEujaKAIi3F6wD3Osa95RvecEpZ/SrBFk4reuyxTxatb9nyrqL1dHqOgoo0hAKKtJSwWz7d3d0cPnxootXh9auEBZVgC6fVbNw4my1bugOlxZMJNWNdGkUBRVpK2C2f+fPnc/z48bL6VYItnFZzzz3dBAPIKMs4yiwADjLPKdOMdWkABRRpOcGO8QMHDgDl9atEDf1tFWNjztLr/SkAy9gNpNjF0okUKJqxLo2ggCJ1kctt5+yzl7N48QIWL16AMctjmz8S1a8SNuEwrIXTSjo7neX9rGSMjom2yhyO0csusmzQjHVpGAUUqblcbjtXXfV59u/fP1F24MB+1q9fG0tQqfSxvI0e+jsTl19+AijwIe6ni7HA1gKnnDKuGevSMAooUnOZzHUTfRyvuj9p4MSJE7EkVgxrdbTrY3lvuukYa9acoLOzwOSNL8eddx7F2sN1CybNkKRSmosCitScf2TVye7PUGDbTCXpsbw33XSM3bsPsXfvoaLyerZKopJUKqgkmwKK1FzYyKpS/RzS/KKSVNY7lb80FwUUqbnBwS8za9asKeXd3d11Tawo8fFalgfd9YOBckkmBRSpuYGBVWzefMeU8q9//c6iW1ONyiIslfNalkPALiZvYarFmWwKKDJj1QaCYDDx59gqNdu9kcJSmmzcmLxZ6d7IuizQC2QpPbJOkkEBRWaknEAQ1oHrlXviyCJca7lcF1deOWdK+ZYt3YkLKt7Iur6+00ilUvT1nda2I+ukfKlWzLhawnLghVdeOcT4eOv8XqeeOp99+w5Ov2MT6u8/1wkiwAZgE8631b6+0xgefqZon+Bf5DTfPkuWnEyhUOA1nA77g8ACIJVKMT4+PuX6nLp4wcS/9+19LbIsin/fco/p75/LyEgHhUDqkxQFOjsL7N59KOLI2qnkd06iVv6/VWv+a9PRkWLRonkAZwIvVntOtVBkRspJJx/VUesvr2S2e6N4+bG8fFkwORNkLDjHUCSBFFBkRsoJBFFBwV9e6Wz3RvDyYw0xRJ7ZjJPiflYCkylRRJJMAUVmpJxAUM6z2Os52z3qWSHTPUNkcPAYnZ0FsmzgJI7SyTgf4n6g4KZEEUk2BRSZkXICQVRCxulmt9cqmKTTUzvWYfoHUw0MvM5ttx1l7txxnJtdBTo6CqxZc4KbblIyRhF1yjeBdug4LKdzONgRHrZfaGd7yPWptlM+qmMdnM71vr5xhocPhx7bjNQpX1o7/N+qFXXKi8xQsGPd+9qhB1OJzJwCirSF4K2qqFtX/o71XSzlflbqwVQiMVFAkRkrlcbcP4u+dq8/tV8kqj9kcPAYPT1Ox3ovu/gQ9+vBVCIxKT2sRWQa3iz4K3xl/lnx6fS6KVlpZ/6aXUWvNzg4m3y++FZVPp8ik5k9JaW7s36UTGY2IyMpOjudOSR9fU4w0YOpRKqnFkrCVJp3y9t/8eIFLF16CosXLyg6LiqN+bXXXjMlnUqQMcsrzv8V1hrZv7+4X2S6/pCBgdcZHj7M3r2HJp4rMjxcvwdTibQrtVASxGtNeAHAy7sF4UN0g/uPudPB/cdFzYI/cGA/Bw44j/wdovhZKP59gue7ImQ/v0xmamsEd8TWEENsYBOb2ACoP0Sk3tRCSZBKEzAG978v5LiwWfBpd9npTh8PCybefv7zXXvtU0Xbw/pAgqO0JtOgTPaLqD9EpDEUUBKknLxbpfa/NOS4sNQo3vaxsbHQGfL+/SbP9185cODGou1hHevBUVre6KxTTnHmkKRSzjKbPapbWCJ1poCSIJUmYAzu791o8h83MLCKhQsXFh3nbfdSmkcprsdmYG7Rdq9j3S84SstrjVx//TGGhw+zZ4/6Q0QaRQElQSpNwBiVgyt4XCZzc+T28tOnvBGYvmN9YOB1stmjao2INCF1yifIxIf72s9OlJVKwBi2f9hxAwOrpuzjbQ8O8Y1WqmN9alBRABFpPsrl1QTqnW+o0vxP5TyMKrjPN+48wrXXzubAgRSFiIbwQeYxn0McZB4LOIiTCGUyePT0FMhmj3LFFT3KxxRBubxKUy6vaLXI5VVWC8UY0w1cBFwCXAz8PjAH2Af8ErjNWvtvlbywMWYr8KkSu1hr7dmVnFMaY+PG2dwdKFu/fg4nTkTnxSowtTWycGGBk04qMDqaordXEw1FWk25t7wuBh5w//0y8DBwGDgHGAAGjDFftdb+jyrq8Avg+ZDy3VWcS+qkv38uo6MpenoKHDmSmhJQTpxIkWYTG9jEUWYzh2OcoJMuxigAP2QlWTaQdYNJT0+BTEYBRKSVlRtQxoEcsNla+4h/gzHm48A24G+NMQ9aax+ssA53WWu3VniMlCmX204mcx2joyP09vYxOPjlMvs0ShsZcW5jHTkS3QoZYoj5HOIos9jFUjb5AojDuS2ptCci7aGsUV7W2p9baz8aDCbutu8BW93Vv4ixbjJD3kz3kZGdFAqFohnp5Z8j/DtHmk2Msow0m4DJNPAwOUJrPocAmMPxiSG+3oOpwHkwldKeiLSPuIYN/8pdhk9okJqKys8VNTM+eGz4ObswZi5r14Y/3fAWrmYZuycmFt7PSsZJcZTZE2XFQ4ALwD7uvPMoe/c6+bP0lEOR9hLXsOGz3GU1/R7vNsa8BZgH7AEeBR6w1o7HVLe2Vio/l3+m+3x3mQ0cn06v47HHfo8HHri4KPtuKgWFQvjtrALQ4bZJvFaI82x1vzGG+O9s4H+yiTXAavr6HmVg4JkZ/sYi0qxm3EIxxrwJ+LS7mqviFJcDfw38JfAl4MfAb4wx5820bklQKj9X1Mx4v3z+w2zd+ja3TyTF2FgKSFEopCZuax2leLb61DAz7v44t7Jmzz5Od/dnyDJEL7vJcj09PT+InEApIu1hRvNQjDFdOAHgvcDPrLXvq+DYLwBjwE+Bl4AFQD+QAf4I2Av0W2vDMp9HWQ68UMH+La+jo4NCocBrOAHjIM6FTKVSfOc73+Fzn/sch48cmdg/xa0UWOdb/x2wYGJE1hP8CRfwJJvYUNSpPofjoa/vzCG5gVRqPePjk43Kbdu2MTg4yEsvvcTpp59OJpNh9erVNbkGiZbyhff2mlMmjTGjeSgzDSh3AZ8BdgJvtda+XPXJJs85C3gIeDtwu7X2ygoOX07CJjb295/rdLr7ylI4ebSGh59h48YnuHvLe3zbxosmGqYYB1K8xnzmc2hiaqE36TDK75gPFPgKbybLUxOvVwuanBZNExtL03snWi0mNlZ9y8sYsxknmLwMvDeOYAJgrT0O3OCuXhLHOdtZqfxcuVwX99zzrsAR4c8S8YLHZALI6GAC8AYO8gYOkeUpZs2apdtZIlJdp7wxZhOwHmem/Huttc/FWivY4S57Yz5v2wnLt5XPH+bKK53O9bAeD68VUigqqc7ChQvJZG6uIAmkiLSrigOKMeZmnL7fV4D3WWufjb1WsMhdlv6aLAA89tgnuQJ/csaUG0zC3c9K/gv/mx+5DcBUcXQpy17dXhGRgIpueRljbgSuBg4A77fW/romtQLv6+7jNTp/W9i48QkWL4YtW7qLykdZxn1cWjTx0O9D3E8XY+5Q3wIXXlj5d4JynwEvIslRdgvFGPN3wEbgVZxg8qvSR4Ax5gbgI8C91tov+srPx5kE+S/W2jFfeRdwFc7tNICvlVu/pNm48Qm2bHkrwYdSASxjN5fyQ1IwMcmwmNMc6eyEd77zWR5/fEXFr5/JXKfbXCJSpNxswx8EBt3V54F1xpiwXXdYa/3PcV0KGHfptxy4F9hvjBnGGSK8CDgP56mw48A11tqflPdrJM8995yFP5j4+0VSlOpcd1KeeLPU+/v/85TZ82EOUjyPJeqxwSKSXOXe8vI/4/UCnLTzYT9/Xub5nsZ55qtlMmPxxcARYAvOEORbyjxXW8nluujvn8uSJfPo758bmUtrbGxZ0XrKt9w1JX5P8gcTmAwM0w2sHAqsRz02WESSSw/YagKnnjqfb3wjz+DgbPbv97cvJh8yFUyeuHTp7xgbm/xQL/iOCc418QvOVfDmsaSBDTjNwzDBfvtv3HlX3W55aS5BNM1DKU3vnWhNNQ9F4rNtG1x1VRf79zvpT/yZfPP5FJnM7CnHXH75cziPpAlze+RrBTvTvXksWUqP0V64cGGJrdIIwb+lBkpIoymgNIGrrjrE8ePdE4Ekw7VFmXxHR6fOJbnppgtYs+YxOjtHcLqcJvX0XBP5Wun0uqIPnoGBVWSzt9LXd1rJOgb7WYLnkfrykoL66W8ijaZbXjUQ9lCrUreHFi+eC3RMpD/xS1Ggr2+c4eGo1ojDf+uj1LQSf1qWYJ3T6XUcieigD54z6jy1oNsWU02Xckcceu9E0y2vFpDLbWf9+kcYGXmYQuF1RkYeZv36R6b55vhS5JaeHudphpU6GFj6hY3Q8rIWV3JOjfRqnOBgCv1NpBkooMRsw4ZOTpy4mzQ5RukjTY4TJ27n2mufijxm0aIscJghhqaM0ArrkC/HELCLqaOzIHyEVtQHVKlzaqRX43jXfgj9TaR5KKDEKJfr4siRy4EOhhjy9YPM5cCBDZHHbd78Nrq7/4osA/RS/A2znGASbP10d3dPdLIHH6jlJY4MivqA8h/nP2fUeaQ+goMp9DeRZqCAUqFS80Sc0VgdpNnE3CkjsE6PPOfq1av5+tcvpK/vIlKpytKrhXXOplIpTjll4cTSL5u9NbQ/J+wDKnhcX99ppFIp+vpOizyP1Ic3mOKMM87Q30SahjrlK5DLdZFOzyGfD58nsmTJPAqFyWeLjJPiam4hywYWLjzIjh3h5w12HFYyt6CcztlyzxccTLBzZGfZ9agldaxG07UpTdcnmjrlGyyTmU0+Hz1PpLe3+DnrHRTIsgEokMlU9aSAacXZOTswsIrh4WfYs+d3GikkIhVTQKmANx+kuH9ksnxw8Bg9PcUto1TKyZ1Vbsd6pZPV1DkrIs1CAYXy82cFWyDe0isfGHidbPZo0TF33HG0KHdW6XpUPlltus7ZamdTaxa2iFQq8QHF6xcZGemgUEgxMtJBOj0nNKiEtUCC80SCLZFKhvyGzQXJ5/NkMtdFHuOf6R7snK12NrVmYYtINRIfUKbrF/ELa4EE54nM5Jt9tf0hwb4Pb6RPNQFqJseJSLIlPqBM1y8SVKoFMtNv9nH3h1QboDQLW0SqkfiAMl2/SCVm+s0+7slq1QYodfSLSDUSH1DK6Rcp10y/2ZfqD6lGtQFKs7BFpBq1mRzRQpxbVkdh7WRZtfmzenv7GBnZyRDOw6o2+crLr8+q2GY7+/tSys18PJPjRCTZNFPeVcns9Kh9vT4U/22vnp6eaVsZms1bmq5PNF2b0nR9ommmfJOL+5aViEgrSfwtr7jFectKRKSVqIUiIiKxUEAREZFYKKCIiEgsFFBERCQWCihUln9LWXhFRMIlPqBUkn9LWXhFRKIlPqBUkn9LWXhFRKIlPqBUkn9LWXhFRKIlPqBUkllXWXhFRKIlPqBUkllXWXhFRKIlPqBUkn9LubpERKIp23ATUEbU0nR9ounalKbrE03ZhkVEpGkpoIiISCwUUEREJBYKKCIiEot2e8BWJzgdTK2mFetcT7o+0XRtStP1ieZdG9816pzJ+dptlNefAY80uhIiIi3qQuDRag9ut4AyG1gB7AbGGlwXEZFW0QksBR4HjlV7knYLKCIi0iDqlBcRkVgooIiISCwUUEREJBYKKCIiEgsFFBERiYUCioiIxEIBRUREYtFuqVeahjHGAH+OM9HyAuD3gRTwMWvtP09z7CeAtcBbcCYc7QC2AHdaa8drWe9aM8Z0AxcBlwAX41yXOcA+4JfAbdbafytxfNteG48xZh3OjOXzgMXAAuBV4GlgK7DNWjtlApkxpgPn2qwBzsaZ3Ptr4A5r7T/Vo+6NYIy5Hviiu3q1tfbvI/ZLwntnK/CpErtYa+3ZIcfF8t5RC6V21gL/AKwGDE4wmZYx5nZgG04QegR4AOdD9zbgn90/fCu7GPgpkMZ5kvLDwL3AfmAAeNAY85WwAxNwbTwbgQ8DeeDfgRzwPPAe4DvAvcHf1RjTiXMdbwPOAv4VJ4XGCuC7xpjN9ap8PRljVgDXACVnaCfoveP5BfDtkJ97gzvG+d5RC6V2/g9wC/AE8CTwLZwP00jGmAHg88DLwEXW2ufc8iXAg8BHgHVAK384jON8QG621hblXTPGfBznP/3fGmMetNY+6NuWhGvjuQz4lbX2sL/QGHMu8DPgQzjfQrf4Nn8B+CDwLPAea+0e95izcD5A1xtjfm6tva/21a8PY8xsnA/JPcBjOEE4bL8kvXc8d1lrt5a57xeI6b3TblG5aVhr77LWXmOt3W6t/Y8yD/Oa7Ru9N717rj04LR6Av2nlb1PW2p9baz8aDCbutu/h3NIB+IvA5ra/Nh5r7aPBYOKWPwPc7q6+3yt3v2Fe466u9T4Q3GOew2nxAAzWpsYN8xXgD4ArgN+V2C8x751Kxf3eSdwFbFbGmD7gT4DjwPeD2621DwGjwJuAt9e3dnX1K3fZ5xXo2hR53V36E/i9A6evZcRa+3DIMd8HTgArjDG9Na5fXRhj3gZsAL5rrb2/xH5675QW63tHAaV5/LG7fMZam4/Y5/HAvu3oLHe521emawMYY87E+TYO8L98m7zf+XFCWGuPAM+4q+fXpHJ1ZIyZg3Oraz9w1TS7J/W9825jTNYY801jzFeNMR+IaIHF+t5RH0rzONNd/rbEPi8F9m0rxpg3AZ92V3O+TYm8NsaYNTj9bt04LbY/xfkSeL211t+5Wu71OZ/2uD4ZnIEul1lr/980+ybyvQNcHlL2rDHmMmvtb3xlsb531EJpHvPc5ZR75z6H3OX8Gtel7owxXcA/AicDPwvcxkjqtXknTuf7J3CGWgP8LfDVwH6JuT7GmD/F6UT+gdvnNp3EXBvXU8B64Byc330ZsBJnyPk5wE8Dt65ivT5qoUiz+AbwXmAnUzvkE8la+1ngs8aYHpxvh2uAIWCVMeYSa+2uRtav3tzrsBV4DWfUlgRYa/8hUHQY+JEx5gHgIZx+oi8CV9bi9dVCaR7et4C5Jfbxvk0crHFd6sod5/4ZnGGd77XWvhzYJbHXBsBam7fWPmutvRrnw+CPcOYMeJJyfa7H6WNLW2t3T7ezKynXpiRr7XHgBnf1Et+mWK+PWijN40V3eUaJfU4L7NvyjDGbcJro+3CCyXMhu73oLhN1bSJsBf4euNQY022tPUFyrs9HcOYxfcoYE5wN7s3+XmuMWQk877bwXnTL2/3alGOHu/Tf8nrRXcZyfdRCaR7ecNlz3aZ9mBWBfVuaMeZmnBnzrwDvs9Y+G7Fr4q5NCQdwhg53AQvdsmF3uSLsAGPMScAfuqutfn06cAYqBH+WuNt/z12/wF3Xe2fSInd5yFcW63tHAaVJWGt34vxxZwEfC243xlyMM9LnZZycVy3NGHMjcDXOB+T7rbW/jto3addmGhfhBJNXAW+E0y9xWnh9xpiLQo75GM5IscettaP1qGQtWGuXW2tTYT84w4jByeWVstae7x6j986kVe7SP0Q41veOAkpz8e5x3mSMebNXaIxZDNzhrt7Y6onsjDF/hzMD91WcYFLON8OkXJs/M8asdEe9Bbe9EyeFD8C3rLVjAO7yZrf8TveaeMecBdzormZqV/OmlpT3zvnue6czUN5ljNmAc2sZ4GvetrjfO6lCoWRONamSMaafyTcrOEP25gPP4UzIAsBa+/bAcXfgpIM4ipNE8QTO6KcFwA+Aj3ofJK3IGPNBwMsJ9ASTk6aCdlhrb/QXtPu1ATDGfBonR9erON+sX8Z53/wnnPcQwI9wslbnfcd5Cf4uxRkF9TOcb5bvw8nmfKu11vtAaTu+LLuh2YYT8t75MJOJVoeBvTi3uc7DGT48DvyNtfaWwHGxvXfUKV87C4C3hZSfFVI2wVr7eWPMo8Bf4dwL9tJs3017pNle6Pv3BUze6w56iMlvR0Airg04v/dXcdLXn4UzmTGFE1hywD9aa38QPMhaO+Z+oHweZ3jxB3BSkD+Jk4L8u/WofLNKyHvnaZwEl2/F+fJxIU4W5hGcLym3W2ufDB4U53tHLRQREYmF+lBERCQWCigiIhILBRQREYmFAoqIiMRCAUVERGKhgCIiIrFQQBERkVgooIiISCwUUEREJBYKKCIiEov/D6CAdJDTKPONAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/home/runner/work/BrownFall21/BrownFall21/_build/jupyter_execute/notes/2021-10-29_15_0.png" }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(tips_X_test,tips_y_test, color='black')\n", "plt.scatter(tips_X_test,tips_y_pred, color='blue')\n", "\n", "[plt.plot([x,x],[yp,yt], color='red', linewidth=3)\n", " for x, yp, yt in zip(tips_X_test, tips_y_pred,tips_y_test)];" ] }, { "cell_type": "markdown", "id": "4e6b5750", "metadata": {}, "source": [ "We can plot them as a scatter plot as well." ] }, { "cell_type": "code", "execution_count": 10, "id": "cce6607a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/home/runner/work/BrownFall21/BrownFall21/_build/jupyter_execute/notes/2021-10-29_17_1.png" }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tips_residuals = tips_y_pred - tips_y_test\n", "plt.scatter(tips_X_test,tips_residuals, color='red')" ] }, { "cell_type": "markdown", "id": "7134277d", "metadata": {}, "source": [ "One thing we notice is that the residuals are smaller for some values of the\n", "`total_bill` and larger for others. This suggests that there is more\n", "information left.\n", "A good fit, would have residuals that are evenly distributed, not correlated\n", "with the feature(s) in this case, the total bill.\n", "\n", "\n", "## Polynomial regression\n", "\n", "Polynomial regression is still a linear problem. Linear regression solves for\n", "the $\\beta_i$ for a $d$ dimensional problem.\n", "\n", "$$ y = \\beta_0 + \\beta_1 x_1 + \\ldots + \\beta_d x_d = \\sum_i^d \\beta_i x_i$$\n", "\n", "Quadratic regression solves for\n", "\n", "$$ y = \\beta_0 + \\sum_i^d \\beta_i x_i$ + \\sum_j^d \\sum_i^d \\beta_{d+i} x_i x_j + \\sum_i^d x_i^2$ $$\n", "\n", "This is still a linear problem, we can create a new $X$ matrix that has the\n", "polynomial values of each feature and solve for more $\\beta$ values.\n", "\n", "We use a transformer object, which works similarly to the estimators, but does\n", "not use targets.\n", "First, we instantiate." ] }, { "cell_type": "code", "execution_count": 11, "id": "6b36ef86", "metadata": {}, "outputs": [], "source": [ "poly = PolynomialFeatures(include_bias=False)" ] }, { "cell_type": "markdown", "id": "e9840438", "metadata": {}, "source": [ "Then we apply it" ] }, { "cell_type": "code", "execution_count": 12, "id": "f896a321", "metadata": {}, "outputs": [], "source": [ "tips_X2_train = poly.fit_transform(tips_X_train)\n", "tips_X2_test = poly.fit_transform(tips_X_test)" ] }, { "cell_type": "markdown", "id": "26948813", "metadata": {}, "source": [ "We can see wht it did by looking at the shape." ] }, { "cell_type": "code", "execution_count": 13, "id": "af4018bf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((195, 1), (195, 2))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips_X_train.shape, tips_X2_train.shape" ] }, { "cell_type": "code", "execution_count": 14, "id": "4d9aca51", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 722.5344, 1067.9824, 320.0521, 419.8401, 2320.3489])" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips_X2_train[:5,1]" ] }, { "cell_type": "code", "execution_count": 15, "id": "ea45e023", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[26.88],\n", " [32.68],\n", " [17.89],\n", " [20.49],\n", " [48.17]])" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips_X_train[:5]" ] }, { "cell_type": "code", "execution_count": 16, "id": "ab18e8e0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([26.88, 32.68, 17.89, 20.49, 48.17])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tips_X2_train[:5,0]" ] }, { "cell_type": "markdown", "id": "0db9e634", "metadata": {}, "source": [ "Now, we can fit a linear model on this data, which learns a weight for the data\n", "and it's squared value." ] }, { "cell_type": "code", "execution_count": 17, "id": "288960ff", "metadata": {}, "outputs": [], "source": [ "regr2_tips = linear_model.LinearRegression()\n", "regr2_tips.fit(tips_X2_train,tips_y_train)\n", "tips2_y_pred = regr2_tips.predict(tips_X2_test)" ] }, { "cell_type": "markdown", "id": "311bf862", "metadata": {}, "source": [ "Then we can plot it." ] }, { "cell_type": "code", "execution_count": 18, "id": "60f30433", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/home/runner/work/BrownFall21/BrownFall21/_build/jupyter_execute/notes/2021-10-29_30_1.png" }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(tips_X_test,tips_y_test, color='black')\n", "plt.scatter(tips_X_test,tips_y_pred, color='blue')\n", "plt.scatter(tips_X_test,tips2_y_pred, color='green')" ] }, { "cell_type": "markdown", "id": "f88f0933", "metadata": {}, "source": [ "We can see that this its somewhat better, the residuals are more uniformly\n", "distributed, but it doesn't look very nonlinear. \n", "We will examine this further in the next step, but first we will drop the linear column to see the quadratic more clearly." ] }, { "cell_type": "code", "execution_count": 19, "id": "1dc37507", "metadata": {}, "outputs": [], "source": [ "poly = PolynomialFeatures()\n", "\n", "tips_Xq_train = poly.fit_transform(tips_X_train)[:,::2]\n", "tips_Xq_test = poly.fit_transform(tips_X_test)[:,::2]\n", "\n", "regr_qu_tips = linear_model.LinearRegression(fit_intercept=False)\n", "regr_qu_tips.fit(tips_Xq_train,tips_y_train)\n", "tips2_q_pred = regr_qu_tips.predict(tips_Xq_test)" ] }, { "cell_type": "code", "execution_count": 20, "id": "4ece6988", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/home/runner/work/BrownFall21/BrownFall21/_build/jupyter_execute/notes/2021-10-29_33_1.png" }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(tips_X_test,tips_y_test, color='black')\n", "plt.scatter(tips_X_test,tips2_q_pred, color='green')" ] }, { "cell_type": "markdown", "id": "a36dd44e", "metadata": {}, "source": [ "```{admonition} Try it Yourself\n", "How would you make it cubic? what about 4th dimension?\n", "```\n", "\n", "## Examining Coefficients\n", "\n", "\n", "Now we can compare the coefficients.\n", "We saw above that the quadratic didn't help much, so let's look at those." ] }, { "cell_type": "code", "execution_count": 21, "id": "bcaf944c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 9.70620903e-02, -4.18198822e-06])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regr2_tips.coef_" ] }, { "cell_type": "markdown", "id": "094c9bda", "metadata": {}, "source": [ "The second parameter is very very small, so that explains why it didn't change\n", "the fit much. We can use the features to figure out how important each\n", "feature is to the prediction. Large numbers strongly influence the prediction\n", "smaller ones influence it less." ] }, { "cell_type": "code", "execution_count": 22, "id": "32cf5d2b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.0968534])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "regr_tips.coef_" ] }, { "cell_type": "markdown", "id": "4c6c27e3", "metadata": {}, "source": [ "\n", "\n", "## Sparse Regression\n", "\n", "An extreme is for some coefficients to be zero.\n", "The LASSO model, constrains some of the coefficients to be 0, so it learns\n", "simultanesouly how to combine the features to predict the target and which\n", "subset of the features to use.\n", "\n", "```{admonition} Further Reading\n", "For the mathermatical formulation see the sklearn [User Guide Section on LASSO](https://scikit-learn.org/stable/modules/linear_model.html#lasso)\n", "and the code in [LASSO docs](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html)\n", "```\n", "\n", "```{admonition} Thinking Ahead\n", "LASSO is not required for assignment 8, but is one way you could earn level 3.\n", "Here is a preview, but you can investigate it further on your own.\n", "```" ] }, { "cell_type": "code", "execution_count": 23, "id": "eadf1830", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'tips_all_X_train' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [23]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m tips_lasso \u001b[38;5;241m=\u001b[39m linear_model\u001b[38;5;241m.\u001b[39mLasso(alpha\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m.0025\u001b[39m)\n\u001b[0;32m----> 2\u001b[0m tips_lasso\u001b[38;5;241m.\u001b[39mfit(\u001b[43mtips_all_X_train\u001b[49m,tips_all_y_train)\n\u001b[1;32m 3\u001b[0m tips_lasso_y_pred \u001b[38;5;241m=\u001b[39m tips_lasso\u001b[38;5;241m.\u001b[39mpredict(tips_all_X_test,)\n\u001b[1;32m 4\u001b[0m tips_lasso\u001b[38;5;241m.\u001b[39mscore(tips_all_X_test,tips_all_y_test)\n", "\u001b[0;31mNameError\u001b[0m: name 'tips_all_X_train' is not defined" ] } ], "source": [ "tips_lasso = linear_model.Lasso(alpha=.0025)\n", "tips_lasso.fit(tips_all_X_train,tips_all_y_train)\n", "tips_lasso_y_pred = tips_lasso.predict(tips_all_X_test,)\n", "tips_lasso.score(tips_all_X_test,tips_all_y_test)" ] }, { "cell_type": "code", "execution_count": 24, "id": "1f166d20", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'tips_lasso_y_pred' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [24]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m plt\u001b[38;5;241m.\u001b[39mscatter(tips_X_test,tips_y_test, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mblack\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[1;32m 2\u001b[0m plt\u001b[38;5;241m.\u001b[39mscatter(tips_X_test,tips_y_pred, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mblue\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m----> 3\u001b[0m plt\u001b[38;5;241m.\u001b[39mscatter(tips_X_test,\u001b[43mtips_lasso_y_pred\u001b[49m, color\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mgreen\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", "\u001b[0;31mNameError\u001b[0m: name 'tips_lasso_y_pred' is not defined" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/home/runner/work/BrownFall21/BrownFall21/_build/jupyter_execute/notes/2021-10-29_40_1.png" }, "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(tips_X_test,tips_y_test, color='black')\n", "plt.scatter(tips_X_test,tips_y_pred, color='blue')\n", "plt.scatter(tips_X_test,tips_lasso_y_pred, color='green')" ] }, { "cell_type": "code", "execution_count": 25, "id": "7cab81e3", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'Lasso' object has no attribute 'coef_'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [25]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28msum\u001b[39m(\u001b[43mtips_lasso\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcoef_\u001b[49m \u001b[38;5;241m==\u001b[39m\u001b[38;5;241m0\u001b[39m)\u001b[38;5;241m/\u001b[39m\u001b[38;5;28mlen\u001b[39m(tips_lasso\u001b[38;5;241m.\u001b[39mcoef_)\n", "\u001b[0;31mAttributeError\u001b[0m: 'Lasso' object has no attribute 'coef_'" ] } ], "source": [ "sum(tips_lasso.coef_ ==0)/len(tips_lasso.coef_)" ] }, { "cell_type": "code", "execution_count": 26, "id": "0ec97f0f", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'tips_onehot' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [26]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtips_onehot\u001b[49m\u001b[38;5;241m.\u001b[39mshape, tips_interacion\u001b[38;5;241m.\u001b[39mshape\n", "\u001b[0;31mNameError\u001b[0m: name 'tips_onehot' is not defined" ] } ], "source": [ "tips_onehot.shape, tips_interacion.shape" ] }, { "cell_type": "markdown", "id": "c23e002e", "metadata": {}, "source": [ "The transform changed our data from 10 columns to 55." ] }, { "cell_type": "code", "execution_count": 27, "id": "05fc1ea6", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'tips_interacion' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [27]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mtips_interacion\u001b[49m\u001b[38;5;241m.\u001b[39mhead\n", "\u001b[0;31mNameError\u001b[0m: name 'tips_interacion' is not defined" ] } ], "source": [ "tips_interacion.head" ] }, { "cell_type": "markdown", "id": "0999a2f8", "metadata": {}, "source": [ "\n", "\n", "## Questions After Class\n", "\n", "\n", "### When do we do regression?\n", "```{toggle}\n", "we do regresion, when we want to predict a continuous value\n", "```\n", "\n", "\n", "### What should I look for in datasets to know whether a linear model or non-linear model is best?\n", "```{toggle}\n", "If you know a reason to choose one from domain knowledge, always use that. From\n", "data alone, a reasonable thing to do is to fit a linear model and then examine\n", "the residuals and use a more complex model if that makes sense.\n", "```\n", "\n", "### How can we tell if a dataset is going to be useful through tweaking or is just not worth it?\n", "```{toggle}\n", "This is a **very** good question, but does not have a simple answer. In some\n", "cases, a moderate fit quality is enough, because there's low risk of making\n", "errors. In other cases, a really high quality fit is required because of the\n", "risk.\n", "```" ] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".md", "format_name": "myst", "format_version": 0.13, "jupytext_version": "1.10.3" } }, "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.8.13" }, "source_map": [ 12, 15, 27, 30, 34, 38, 40, 44, 56, 60, 64, 70, 72, 78, 80, 83, 89, 92, 96, 123, 125, 128, 131, 135, 139, 143, 147, 149, 154, 158, 161, 165, 171, 183, 186, 198, 200, 206, 208, 311, 318, 324, 328, 330, 334, 336 ] }, "nbformat": 4, "nbformat_minor": 5 }