From 538c16637b2607dabd7d05ba8e933364a00814d6 Mon Sep 17 00:00:00 2001 From: Valeriya Tolmacheva Date: Mon, 27 Nov 2023 15:47:09 +0000 Subject: [PATCH] Lab Done --- your-code/main.ipynb | 1020 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 914 insertions(+), 106 deletions(-) diff --git a/your-code/main.ipynb b/your-code/main.ipynb index 8a9fa9e..de277ee 100644 --- a/your-code/main.ipynb +++ b/your-code/main.ipynb @@ -12,11 +12,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "# Import your libraries:\n" + "from sklearn.datasets import load_diabetes\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" ] }, { @@ -37,11 +40,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "diabetes=load_diabetes()" ] }, { @@ -53,11 +56,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['data', 'target', 'frame', 'DESCR', 'feature_names', 'data_filename', 'target_filename', 'data_module'])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "diabetes.keys()" ] }, { @@ -73,13 +87,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": { "scrolled": false }, - "outputs": [], - "source": [ - "# Your code here:\n" + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ".. _diabetes_dataset:\n", + "\n", + "Diabetes dataset\n", + "----------------\n", + "\n", + "Ten baseline variables, age, sex, body mass index, average blood\n", + "pressure, and six blood serum measurements were obtained for each of n =\n", + "442 diabetes patients, as well as the response of interest, a\n", + "quantitative measure of disease progression one year after baseline.\n", + "\n", + "**Data Set Characteristics:**\n", + "\n", + " :Number of Instances: 442\n", + "\n", + " :Number of Attributes: First 10 columns are numeric predictive values\n", + "\n", + " :Target: Column 11 is a quantitative measure of disease progression one year after baseline\n", + "\n", + " :Attribute Information:\n", + " - age age in years\n", + " - sex\n", + " - bmi body mass index\n", + " - bp average blood pressure\n", + " - s1 tc, total serum cholesterol\n", + " - s2 ldl, low-density lipoproteins\n", + " - s3 hdl, high-density lipoproteins\n", + " - s4 tch, total cholesterol / HDL\n", + " - s5 ltg, possibly log of serum triglycerides level\n", + " - s6 glu, blood sugar level\n", + "\n", + "Note: Each of these 10 feature variables have been mean centered and scaled by the standard deviation times the square root of `n_samples` (i.e. the sum of squares of each column totals 1).\n", + "\n", + "Source URL:\n", + "https://www4.stat.ncsu.edu/~boos/var.select/diabetes.html\n", + "\n", + "For more information see:\n", + "Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani (2004) \"Least Angle Regression,\" Annals of Statistics (with discussion), 407-499.\n", + "(https://web.stanford.edu/~hastie/Papers/LARS/LeastAngle_2002.pdf)\n", + "\n" + ] + } + ], + "source": [ + "print(diabetes[\"DESCR\"])" ] }, { @@ -97,11 +157,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ - "# Enter your answer here:\n" + "#1. 10 attributes - health factors contributing to diabetes\n", + "#2. data is features, target is outcome (diabetic or no based on features)\n", + "#3. 442 records" ] }, { @@ -115,11 +177,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(442, 10)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "diabetes[\"data\"].shape" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(442,)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diabetes[\"target\"].shape" ] }, { @@ -156,11 +249,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "from sklearn.linear_model import LinearRegression" ] }, { @@ -172,11 +265,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "lin_reg = LinearRegression()" ] }, { @@ -190,11 +283,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "X=pd.DataFrame(diabetes[\"data\"],columns=diabetes[\"feature_names\"])\n", + "y=pd.Series(diabetes[\"target\"])\n", + "\n", + "X_train=X[:X.shape[0]-20]\n", + "X_test=X[X.shape[0]-20:]\n", + "y_train=y[:y.shape[0]-20]\n", + "y_test=y[y.shape[0]-20:]" ] }, { @@ -206,11 +305,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "152.76429169049118\n", + "[ 3.06094248e-01 -2.37635570e+02 5.10538048e+02 3.27729878e+02\n", + " -8.14111926e+02 4.92799595e+02 1.02841240e+02 1.84603496e+02\n", + " 7.43509388e+02 7.60966464e+01]\n" + ] + } + ], "source": [ - "# Your code here:\n" + "lin_reg.fit(X_train,y_train)\n", + "print(lin_reg.intercept_)\n", + "print(lin_reg.coef_)" ] }, { @@ -231,11 +343,64 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "0.585085427447195" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "lin_reg.score(X_test,y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "422 197.618985\n", + "423 155.440320\n", + "424 172.888751\n", + "425 111.532706\n", + "426 164.793973\n", + "427 131.067659\n", + "428 259.124412\n", + "429 100.478737\n", + "430 117.060054\n", + "431 124.302616\n", + "432 218.368681\n", + "433 61.195819\n", + "434 132.248379\n", + "435 120.332935\n", + "436 52.545130\n", + "437 194.037468\n", + "438 102.575643\n", + "439 123.567787\n", + "440 211.034653\n", + "441 52.602217\n", + "dtype: float64" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pred = lin_reg.predict(X_test)\n", + "pred=pd.Series(pred,index=y_test.index)\n", + "pred" ] }, { @@ -247,11 +412,42 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "422 233.0\n", + "423 91.0\n", + "424 111.0\n", + "425 152.0\n", + "426 120.0\n", + "427 67.0\n", + "428 310.0\n", + "429 94.0\n", + "430 183.0\n", + "431 66.0\n", + "432 173.0\n", + "433 72.0\n", + "434 49.0\n", + "435 64.0\n", + "436 48.0\n", + "437 178.0\n", + "438 104.0\n", + "439 132.0\n", + "440 220.0\n", + "441 57.0\n", + "dtype: float64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test" ] }, { @@ -263,11 +459,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACfxElEQVR4nOydd5xcdbn/32fq9t43m94rgQBJaBFCAAUEvCKiAsJVVIoR0CtWLBfu9argBeWnV6QICIqAIDW0QEiCIRBSIQnJJput2d53ZmfO74/vObMzmy0zs1N3n/frta+dnTlz5nt22nOe5/N8Hk3XdR1BEARBEIQEwhLvBQiCIAiCIAxGAhRBEARBEBIOCVAEQRAEQUg4JEARBEEQBCHhkABFEARBEISEQwIUQRAEQRASDglQBEEQBEFIOCRAEQRBEAQh4bDFewHh4PV6qampITMzE03T4r0cQRAEQRCCQNd1Ojo6KCsrw2IZOUeSlAFKTU0NFRUV8V6GIAiCIAhhUFVVxaRJk0bcJikDlMzMTEAdYFZWVpxXIwiCIAhCMLS3t1NRUeH7Hh+JpAxQzLJOVlaWBCiCIAiCkGQEI88QkawgCIIgCAmHBCiCIAiCICQcEqAIgiAIgpBwJKUGRRAEQRCiicfjwe12x3sZSYndbsdqtY55PxKgCIIgCIIfnZ2dHDlyBF3X472UpETTNCZNmkRGRsaY9iMBiiAIgiAYeDwejhw5QlpaGoWFhWIGGiK6rnP06FGOHDnCrFmzxpRJkQBFEARBEAzcbje6rlNYWEhqamq8l5OUFBYWUllZidvtHlOAIiJZQRAEQRiEZE7CJ1L/OwlQBEEQBEFIOCRAEQRBEAQhaKZOncpdd90V9ceRAEUQBEEQhIRDAhRBEARBmGC4XK54L2FUJEARhEhQtxM23g0eMXYSBCH2rFq1iuuvv57rr7+enJwc8vPz+cEPfuDzcpk6dSo///nPueqqq8jOzuYrX/kKABs3buT0008nNTWViooKbrzxRrq6unz7bWho4IILLiA1NZVp06bxyCOPxOyYpM1YECLBS9+Dg+shbwbM/WS8VyMIQoTQdZ0etycuj51qt4bUEfPggw9yzTXX8M477/Duu+/y1a9+lSlTpviCkf/5n//hhz/8IT/4wQ8A2LFjB+eccw4/+9nPuO+++zh69KgvyLn//vsBuOqqq6iqquK1117D4XBw44030tDQEPmDHQIJUAQhEnTUqt/t1fFdhyAIEaXH7WH+j16Ky2Pv/uk5pDmC/5quqKjgzjvvRNM05syZw44dO7jzzjt9AcqZZ57JLbfc4tv+iiuu4PLLL2ft2rUAzJo1i//93//ljDPO4N577+Xw4cO88MILbN68mZNPPhmA++67j3nz5kXuIEdASjyCEAm6m9TvrqPxXYcgCBOW5cuXB2RcVqxYwb59+/B4VAZo2bJlAdtv3bqVBx54gIyMDN/POeecg9fr5eDBg+zZswebzRZwv7lz55KTkxOT45EMiiCMFa8XelrUZQlQBGFckWq3svun58TtsSNJenp6wN9er5drr72WG2+88ZhtJ0+ezEcffQTEz7ROAhRBGCu9raB71WUJUARhXKFpWkhllniyefPmY/4eaR7O8ccfz65du5g5c+aQt8+bN4/+/n7effddTjrpJAA++ugjWltbI7ru4ZASjyCMFTN7AtDVGL91CIIwoamqquKmm27io48+4i9/+Qt333033/zmN4fd/j/+4z/YtGkT1113Hdu2bWPfvn0888wz3HDDDQDMmTOHc889l6985Su88847bN26lX//93+P2YwiCVAEYayY+hOQDIogCHHjiiuuoKenh5NOOonrrruOG264ga9+9avDbr948WLWr1/Pvn37OO2001i6dCk//OEPKS0t9W1z//33U1FRwRlnnMEll1zCV7/6VYqKimJxOFLiEYQx0908cFkyKIIgxAm73c5dd93Fvffee8xtlZWVQ97nxBNP5OWXXx52nyUlJfzzn/8MuO5LX/rSmNYZLJJBEYSx4p9B6W2F/sR3aBQEQUh0QgpQ7r33XhYvXkxWVhZZWVmsWLGCF154wXe7ruvcdtttlJWVkZqayqpVq9i1a1fAPvr6+rjhhhsoKCggPT2dCy+8kCNHjkTmaAQhHvQ0B/7tH7AIgiAIYRFSgDJp0iT+67/+i3fffZd3332XM888k09/+tO+IOQXv/gFv/71r7nnnnvYsmULJSUlnH322XR0dPj2sXbtWp566ikee+wxNmzYQGdnJ+eff76vT1sQko7BAYnoUARBiDFvvPFGTCYMx5KQApQLLriAT37yk8yePZvZs2fzn//5n2RkZLB582Z0Xeeuu+7i+9//PpdccgkLFy7kwQcfpLu7m0cffRSAtrY27rvv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Ombdl1122aiP97vf/Y5p06aRkpLCCSecwFtvvRWNwxqScI61srLymOM0f/72t78N+1iJ9ryaa5o7dy7p6enk5uayevVq3nnnnYD79fX1ccMNN1BQUEB6ejoXXnghR44cGfXx4vm8QnjHO17es+aaRntux8N7FkY/1mR9z8LQx+vPtddei6Zp3HXXXQHXJ+v7NhQkQAG2bNnCH/7wBxYvXuy7rru7m/fee48f/vCHvPfeezz55JPs3buXCy+80LdNTU0NNTU1/PKXv2THjh088MADvPjii1xzzTWjPuaCBQuora31/ezYsSMqxzaYcI/V5Ctf+UrAun//+9+P+HiPP/44a9eu5fvf/z7vv/8+p512Gueddx6HDx+O+LENJtxjraioCDjG2tpafvKTn5Cens5555034mMm0vMKMHv2bO655x527NjBhg0bmDp1KmvWrOHo0aO+bdauXctTTz3FY489xoYNG+js7OT888/H4/EM+3jxfF4h/OMdL+9ZCO65heR/z8Lox5qM71kY/nhNnn76ad555x3KysqOuS0Z37cho09wOjo69FmzZunr1q3TzzjjDP2b3/zmsNv+61//0gH90KFDw27z17/+VXc4HLrb7R52mx//+Mf6kiVLxrDq8BjrsY52n6E46aST9K997WsB182dO1f/7ne/G9J+QiXSz+txxx2nX3311SM+ZjI8r21tbTqgv/LKK7qu63pra6tut9v1xx57zLdNdXW1brFY9BdffHHY/cTredX1sR3vUIyX9+xQxzpe37PBPK+J/J7V9dGP98iRI3p5ebm+c+dOfcqUKfqdd97puy0Z37fhMOEzKNdddx2f+tSnWL169ajbtrW1oWkaOTk5I26TlZWFzTbymKN9+/ZRVlbGtGnTuOyyyzhw4ECoSw+ZSBzrI488QkFBAQsWLOCWW27xTZYeCpfLxdatW1mzZk3A9WvWrGHjxo1hHUOwRPJ53bp1K9u2bQvqLDuRn1eXy8Uf/vAHsrOzWbJkCaCOze12BzxHZWVlLFy4cNjnKJ7PK4zteIdiPLxnRzrW8faeDeZ5TfT3LIx8vF6vly996Ut8+9vfZsGCBcfcnozv23BIymGBkeKxxx7jvffeY8uWLaNu29vby3e/+10uv/zyYQczNTU18bOf/Yxrr712xH2dfPLJPPTQQ8yePZv6+np+/vOfs3LlSnbt2kV+fn5YxzIakTjWL3zhC0ybNo2SkhJ27tzJrbfeygcffMC6deuG3E9jYyMej4fi4uKA64uLi6mrqxvbAY1ApJ/X++67j3nz5rFy5coR95Woz+s///lPLrvsMrq7uyktLWXdunUUFBQAUFdXh8PhIDc3N+A+Iz1H8XpeYezHO5hkf8+Odqzj6T0byvOayO9ZGP14//u//xubzcaNN9445O3J9r4Nm3incOLF4cOH9aKiIn3btm2+64ZLK7pcLv3Tn/60vnTpUr2trW3I/bW1teknn3yyfu655+oulyuktXR2durFxcX6r371q5DuFyyRPlaTd999Vwf0rVu3Dnl7dXW1DugbN24MuP7nP/+5PmfOnNAPJAgifazd3d16dna2/stf/jLktSTK89rZ2anv27dP37Rpk3711VfrU6dO1evr63Vd1/VHHnlEdzgcx+x79erV+rXXXjvk48bjedX1yByvP+PhPRvssZok83s22GNN5Pesro9+vO+++65eXFysV1dX+24fXOJJpvftWJiwAcpTTz2lA7rVavX9ALqmabrVatX7+/t1XVdfYhdddJG+ePFivbGxcch9tbe36ytWrNDPOussvaenJ6z1rF69+pjaYKSI5LH64/V6j6mD+tPX16dbrVb9ySefDLj+xhtv1E8//fSxH9gQRPpYH3roId1ut+sNDQ1hrScRntfBzJw5U7/99tt1Xdf1V199VQf05ubmgG0WL16s/+hHPxry/vF4XnU9MsdrMl7es4MZ6lj9Seb37GCGO9ZEfs/q+ujH+8tf/tJ32f92i8WiT5kyRdf15HrfjoUJq0E566yz2LFjB9u2bfP9LFu2jC984Qts27YNq9WK2+3m0ksvZd++fbzyyitDpvza29tZs2YNDoeDZ555hpSUlJDX0tfXx549eygtLY3EoR1DpI51MLt27cLtdg+7bofDwQknnHBMOnndunWjpl7DJdLHet9993HhhRdSWFgY8loS4XkdCl3X6evrA+CEE07AbrcHPEe1tbXs3Llz2OcoHs8rROZ4Yfy8Z4di8LEOJlnfs0Mx3LEm8nsWRj/eq666iu3btwfcXlZWxre//W1eeuklILnet2MivvFRYuGfZnO73fqFF16oT5o0Sd+2bZteW1vr++nr69N1XZ2FnXzyyfqiRYv0/fv3B2zjH/WfeeaZ+t133+37++abb9bfeOMN/cCBA/rmzZv1888/X8/MzNQrKysT9lj379+v/+QnP9G3bNmiHzx4UH/uuef0uXPn6kuXLh3xWB977DHdbrfr9913n75792597dq1enp6ekIfq8m+fft0TdP0F154Ycj9Jvrz2tnZqd966636pk2b9MrKSn3r1q36NddcozudTn3nzp2++3zta1/TJ02apL/yyiv6e++9p5955pn6kiVLEv551fXQj3e8vGeDOdbx8p4N9nWs68n5ntX10butBpd4dD2537fBMqFFsiNx5MgRnnnmGQCOO+64gNtef/11Vq1axdatW31mQTNnzgzY5uDBg0ydOhWAjz/+mMbGxoB9f/7zn6exsZHCwkKWL1/O5s2bmTJlSvQOaASCOVaHw8Grr77Kb37zGzo7O6moqOBTn/oUP/7xjwPOcAYf6+c+9zmampr46U9/Sm1tLQsXLuT5559P6GM1+dOf/kR5efkxqneTRH9erVYrH374IQ8++CCNjY3k5+dz4okn8tZbbwV0Btx5553YbDYuvfRS/n+7dmwEIAhEUfCsjUbpkhBTIwcjv7hbATdwMy9gjFGtteq9f+peq9bm3WVnV2bdZWdX33HV93f2iV329s4x55xvHwIA4Oq3f1AAgFwCBQCII1AAgDgCBQCII1AAgDgCBQCII1AAgDgCBQCII1AAgDgCBQCII1AAgDgCBQCIcwJhZqKeik2scQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results=pd.concat([pred,y_test],axis=1)\n", + "results.columns=[\"pred\",\"true\"]\n", + "results.plot(kind=\"line\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ - "# Your explanation here:\n" + "#there is a one year lag between baseline attributes collection and the quantitative measurement of disease progression " ] }, { @@ -302,11 +530,54 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "=======================================================================================\n", + "Dep. Variable: y R-squared (uncentered): 0.106\n", + "Model: OLS Adj. R-squared (uncentered): 0.085\n", + "Method: Least Squares F-statistic: 5.100\n", + "Date: Mon, 27 Nov 2023 Prob (F-statistic): 4.72e-07\n", + "Time: 15:46:24 Log-Likelihood: -2873.9\n", + "No. Observations: 442 AIC: 5768.\n", + "Df Residuals: 432 BIC: 5809.\n", + "Df Model: 10 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "age -10.0099 179.967 -0.056 0.956 -363.729 343.709\n", + "sex -239.8156 184.404 -1.300 0.194 -602.255 122.624\n", + "bmi 519.8459 200.401 2.594 0.010 125.964 913.728\n", + "bp 324.3846 197.053 1.646 0.100 -62.917 711.687\n", + "s1 -792.1756 1255.052 -0.631 0.528 -3258.944 1674.593\n", + "s2 476.7390 1021.170 0.467 0.641 -1530.341 2483.819\n", + "s3 101.0433 640.151 0.158 0.875 -1157.155 1359.242\n", + "s4 177.0632 486.370 0.364 0.716 -778.883 1133.009\n", + "s5 751.2737 517.768 1.451 0.148 -266.384 1768.931\n", + "s6 67.6267 198.747 0.340 0.734 -323.004 458.257\n", + "==============================================================================\n", + "Omnibus: 1.506 Durbin-Watson: 0.223\n", + "Prob(Omnibus): 0.471 Jarque-Bera (JB): 1.404\n", + "Skew: 0.017 Prob(JB): 0.496\n", + "Kurtosis: 2.726 Cond. No. 21.7\n", + "==============================================================================\n", + "\n", + "Notes:\n", + "[1] R² is computed without centering (uncentered) since the model does not contain a constant.\n", + "[2] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "import statsmodels.api as sm\n", + "model = sm.OLS(y,X)\n", + "print(model.fit().summary())" ] }, { @@ -326,11 +597,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ - "# Your answers here:" + "#1. null hypothesis may be rejected\n", + "#2. mone if the t-tests produce a confidence interval containing zero\n", + "#3. considering results above, I will not modify my model. only if coefficient was zero" ] }, { @@ -351,11 +624,205 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 19, + "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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mpgcylindersdisplacementhorse_powerweightaccelerationmodel_yearcar_name
018.08307.0130.0350412.070\\t\"chevrolet chevelle malibu\"
115.08350.0165.0369311.570\\t\"buick skylark 320\"
218.08318.0150.0343611.070\\t\"plymouth satellite\"
316.08304.0150.0343312.070\\t\"amc rebel sst\"
417.08302.0140.0344910.570\\t\"ford torino\"
...........................
39327.04140.086.0279015.682\\t\"ford mustang gl\"
39444.0497.052.0213024.682\\t\"vw pickup\"
39532.04135.084.0229511.682\\t\"dodge rampage\"
39628.04120.079.0262518.682\\t\"ford ranger\"
39731.04119.082.0272019.482\\t\"chevy s-10\"
\n", + "

398 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " mpg cylinders displacement horse_power weight acceleration \\\n", + "0 18.0 8 307.0 130.0 3504 12.0 \n", + "1 15.0 8 350.0 165.0 3693 11.5 \n", + "2 18.0 8 318.0 150.0 3436 11.0 \n", + "3 16.0 8 304.0 150.0 3433 12.0 \n", + "4 17.0 8 302.0 140.0 3449 10.5 \n", + ".. ... ... ... ... ... ... \n", + "393 27.0 4 140.0 86.0 2790 15.6 \n", + "394 44.0 4 97.0 52.0 2130 24.6 \n", + "395 32.0 4 135.0 84.0 2295 11.6 \n", + "396 28.0 4 120.0 79.0 2625 18.6 \n", + "397 31.0 4 119.0 82.0 2720 19.4 \n", + "\n", + " model_year car_name \n", + "0 70 \\t\"chevrolet chevelle malibu\" \n", + "1 70 \\t\"buick skylark 320\" \n", + "2 70 \\t\"plymouth satellite\" \n", + "3 70 \\t\"amc rebel sst\" \n", + "4 70 \\t\"ford torino\" \n", + ".. ... ... \n", + "393 82 \\t\"ford mustang gl\" \n", + "394 82 \\t\"vw pickup\" \n", + "395 82 \\t\"dodge rampage\" \n", + "396 82 \\t\"ford ranger\" \n", + "397 82 \\t\"chevy s-10\" \n", + "\n", + "[398 rows x 8 columns]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "auto=pd.read_csv(\"../auto-mpg.csv\")\n", + "auto" ] }, { @@ -367,11 +834,123 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 20, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mpgcylindersdisplacementhorse_powerweightaccelerationmodel_yearcar_name
018.08307.0130.0350412.070\\t\"chevrolet chevelle malibu\"
115.08350.0165.0369311.570\\t\"buick skylark 320\"
218.08318.0150.0343611.070\\t\"plymouth satellite\"
316.08304.0150.0343312.070\\t\"amc rebel sst\"
417.08302.0140.0344910.570\\t\"ford torino\"
\n", + "
" + ], + "text/plain": [ + " mpg cylinders displacement horse_power weight acceleration \\\n", + "0 18.0 8 307.0 130.0 3504 12.0 \n", + "1 15.0 8 350.0 165.0 3693 11.5 \n", + "2 18.0 8 318.0 150.0 3436 11.0 \n", + "3 16.0 8 304.0 150.0 3433 12.0 \n", + "4 17.0 8 302.0 140.0 3449 10.5 \n", + "\n", + " model_year car_name \n", + "0 70 \\t\"chevrolet chevelle malibu\" \n", + "1 70 \\t\"buick skylark 320\" \n", + "2 70 \\t\"plymouth satellite\" \n", + "3 70 \\t\"amc rebel sst\" \n", + "4 70 \\t\"ford torino\" " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "auto.head()\n" ] }, { @@ -383,11 +962,34 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 398 entries, 0 to 397\n", + "Data columns (total 8 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 mpg 398 non-null float64\n", + " 1 cylinders 398 non-null int64 \n", + " 2 displacement 398 non-null float64\n", + " 3 horse_power 392 non-null float64\n", + " 4 weight 398 non-null int64 \n", + " 5 acceleration 398 non-null float64\n", + " 6 model_year 398 non-null int64 \n", + " 7 car_name 398 non-null object \n", + "dtypes: float64(4), int64(3), object(1)\n", + "memory usage: 25.0+ KB\n" + ] + } + ], + "source": [ + "auto.info()\n", + "#everything is classed correctly" ] }, { @@ -399,11 +1001,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "82\n", + "70\n" + ] + } + ], "source": [ - "# Your code here:\n" + "print(auto[\"model_year\"].max())\n", + "print(auto[\"model_year\"].min())" ] }, { @@ -415,11 +1027,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "auto.isnull().sum()\n", + "#deleting 6 rows where horse_power is null\n", + "auto.dropna(inplace=True,axis=0)" ] }, { @@ -431,11 +1045,28 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4 199\n", + "8 103\n", + "6 83\n", + "3 4\n", + "5 3\n", + "Name: cylinders, dtype: int64" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "auto[\"cylinders\"].value_counts()\n", + "#5 possible values of cylinders" ] }, { @@ -451,11 +1082,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "auto.drop(columns=[\"car_name\"],inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "X=auto.drop(columns=[\"mpg\"])\n", + "y=auto[\"mpg\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)" ] }, { @@ -469,11 +1120,27 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "auto_model=LinearRegression()\n", + "auto_model.fit(X_train,y_train)" ] }, { @@ -493,11 +1160,33 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here:\n" + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8074403223878627\n" + ] + }, + { + "data": { + "text/plain": [ + "3.207818731748387" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(auto_model.score(X_train,y_train))\n", + "\n", + "from sklearn.metrics import mean_squared_error\n", + "y_pred=auto_model.predict(X_test)\n", + "np.sqrt(mean_squared_error(y_pred=y_pred, y_true=y_test))" ] }, { @@ -513,11 +1202,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8074403223878627\n", + "0.8105165573039607\n" + ] + } + ], "source": [ - "# Your code here:\n" + "print(auto_model.score(X_train,y_train))\n", + "print(auto_model.score(X_test,y_test))\n" ] }, { @@ -542,11 +1241,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "X_train09,X_test09,y_train09,y_test09 = train_test_split(X,y,test_size=0.1)" ] }, { @@ -558,11 +1257,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "auto_model09=LinearRegression()\n", + "auto_model09.fit(X_train09,y_train09)" ] }, { @@ -574,11 +1288,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8141011068578081\n" + ] + } + ], "source": [ - "# Your code here:\n" + "print(auto_model09.score(X_train09,y_train09))" ] }, { @@ -590,11 +1312,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.7513394164124334\n" + ] + } + ], + "source": [ + "print(auto_model09.score(X_test09,y_test09))" + ] + }, + { + "cell_type": "code", + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "#model score is worse for both train and test data; however, there is less overfitting\n", + "#regularization - look into ridge and lasso models!!!" ] }, { @@ -610,7 +1350,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -624,13 +1364,20 @@ "Follow the documentation and initialize an RFE model using the `auto_model` linear regression model. Set `n_features_to_select=3`" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*The goal of recursive feature elimination (RFE) is to select features by recursively considering smaller and smaller sets of features. First, the estimator is trained on the initial set of features and the importance of each feature is obtained either through any specific attribute or callable. Then, the least important features are pruned from current set of features. That procedure is recursively repeated on the pruned set until the desired number of features to select is eventually reached.*" + ] + }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "rfe=RFE(estimator=auto_model,n_features_to_select=3)" ] }, { @@ -642,11 +1389,56 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
RFE(estimator=LinearRegression(), n_features_to_select=3)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "RFE(estimator=LinearRegression(), n_features_to_select=3)" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your code here:\n" + "rfe.fit(X_train,y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 3 2 4 1 1]\n" + ] + }, + { + "data": { + "text/plain": [ + "Index(['cylinders', 'displacement', 'horse_power', 'weight', 'acceleration',\n", + " 'model_year'],\n", + " dtype='object')" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(rfe.ranking_)\n", + "X_train.columns\n", + "#most important are cylinders, acceleration, model year" ] }, { @@ -660,11 +1452,12 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ - "# Your code here:\n" + "X_reduced=auto[[\"cylinders\",\"acceleration\",\"model_year\"]]\n", + "X_train_reduced,X_test_reduced,y_train_reduced,y_test_reduced = train_test_split(X_reduced,y,test_size=0.2)" ] }, { @@ -676,11 +1469,26 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Your code here: \n" + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6954279241044514\n", + "0.7168334554813736\n" + ] + } + ], + "source": [ + "auto_model_reduced=LinearRegression()\n", + "auto_model_reduced.fit(X_train_reduced,y_train_reduced)\n", + "print(auto_model_reduced.score(X_test_reduced,y_test_reduced))\n", + "print(auto_model_reduced.score(X_train_reduced,y_train_reduced))\n", + "\n", + "#performance is worse in both training and test data + the gap in performance is increasing. \n", + "#backward elimination did not work great in this case - maybe eliminating too many contributing factors (I only took ranking 1)" ] }, { @@ -717,7 +1525,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.9" + "version": "3.11.4" } }, "nbformat": 4,