{ "cells": [ { "cell_type": "markdown", "id": "improving-pepper", "metadata": { "id": "improving-pepper" }, "source": [ "# Liner Regression Implementation\n", "The objective of this notebook is to get familiarize with the problem of `Linear Regression`." ] }, { "cell_type": "markdown", "id": "final-transaction", "metadata": { "id": "final-transaction" }, "source": [ "## 1.3.0 Background about the dataset\n", "\n", "TLDR: You have 25 independent variables (`x1, x2, x3, ... , x25`) type: `float` for each data point. You can use a linear combination of these 25 independent variables to predict the y (dependent variable) of each data point." ] }, { "cell_type": "code", "execution_count": 1, "id": "lyric-olympus", "metadata": { "id": "lyric-olympus" }, "outputs": [], "source": [ "import csv\n", "import random\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "id": "hundred-receipt", "metadata": { "id": "hundred-receipt" }, "outputs": [], "source": [ "train_data = list()\n", "with open('train_q3.csv', 'r') as infile:\n", " input_rows = csv.DictReader(infile)\n", " for row in input_rows:\n", " data_point = ([float(row['x1']), float(row['x2']), float(row['x3']),\n", " float(row['x4']), float(row['x5']), float(row['x6']),\n", " float(row['x7']), float(row['x8']), float(row['x9']),\n", " float(row['x10']), float(row['x11']), float(row['x12']),\n", " float(row['x13']), float(row['x14']), float(row['x15']),\n", " float(row['x16']), float(row['x17']), float(row['x18']),\n", " float(row['x19']), float(row['x20']), float(row['x21']),\n", " float(row['x22']), float(row['x23']), float(row['x24']),\n", " float(row['x25'])], float(row['y']))\n", " train_data.append(data_point)\n", " \n", "# each point in x_train has 25 values - 1 for each feature\n", "x_train = [x[0] for x in train_data]\n", "# each point in y_train has 1 value - the 'y' of the molecule\n", "y_train = [x[1] for x in train_data]\n", "\n", "\n", "test_data = list()\n", "with open('test_q3.csv', 'r') as infile:\n", " input_rows = csv.DictReader(infile)\n", " for row in input_rows:\n", " data_point = ([float(row['x1']), float(row['x2']), float(row['x3']),\n", " float(row['x4']), float(row['x5']), float(row['x6']),\n", " float(row['x7']), float(row['x8']), float(row['x9']),\n", " float(row['x10']), float(row['x11']), float(row['x12']),\n", " float(row['x13']), float(row['x14']), float(row['x15']),\n", " float(row['x16']), float(row['x17']), float(row['x18']),\n", " float(row['x19']), float(row['x20']), float(row['x21']),\n", " float(row['x22']), float(row['x23']), float(row['x24']),\n", " float(row['x25'])], float(row['y']))\n", " test_data.append(data_point)\n", "\n", "x_test = [x[0] for x in test_data]\n", "y_test = [x[1] for x in test_data]" ] }, { "cell_type": "markdown", "id": "square-direction", "metadata": { "id": "square-direction" }, "source": [ "### 1.3.1 Implement a Linear Regression model that minimizes the MSE **without using any libraries**. You may use NumPy to vectorize your code, but *do not use numpy.polyfit* or anything similar.\n", "\n", "1.3.1.1 Explain how you plan to implement Linear Regression in 5-10 lines.\n", "\n", "1.3.1.2 Implement Linear Regression using `x_train` and `y_train` as the train dataset.\n", "\n", "1.3.2.3 Choose the best learning rate and print the learning rate for which you achieved the best MSE.\n", "\n", "1.2.1.4 Make a [Parity Plot](https://en.wikipedia.org/wiki/Parity_plot) of your model's bandgap predictions on the test set with the actual values." ] }, { "cell_type": "markdown", "id": "frozen-forth", "metadata": { "id": "frozen-forth" }, "source": [ "\n", "`ANSWER 1.3.1.1`\n", "There will be a slope vector with dimension (25,1) initialised with all 0's , and a constant bias value with initialised with 0\n", "a gradient descent function will take these both as input, predict the values, then adjust slope vector and bias accordingly and return adjusted ones. This will go on for the number of times(epochs) mentioned, and at last we get a final slope vector and bias. \n", "\n", "We then predict our final values with these bias and slope vector obtained" ] }, { "cell_type": "code", "execution_count": 3, "id": "angry-depression", "metadata": { "id": "angry-depression" }, "outputs": [], "source": [ "# 1.3.1.2\n", "# implement Linear Regression\n", "#data = nxm\n", "#m = mx1\n", "#b = nx1\n", "#y = nx1\n", "def gradientDescent(m_temp,b_temp,x,y,lr):\n", " \n", " n,m = np.shape(x)\n", " y_pred = np.dot(x,m_temp) + b_temp\n", " y = np.reshape(y,(n,1))\n", " trans = np.transpose((y-y_pred))\n", " mG = np.dot(trans,np.dot(-(2/n),x)) \n", " #bG = sum(trans)/n\n", " sm=0\n", " for i in range(n):\n", " sm+=trans[0][i]\n", " bG = -(2/n)*sm\n", " \n", " mG = np.transpose(mG)\n", " mG = m_temp - lr*mG\n", " bG = b_temp - lr*bG\n", " \n", " return mG,bG\n", "\n", "def mse(y_test,y_pred):\n", " sm=0\n", " for k in range(len(y_test)):\n", " sm+= y_test[k]-y_pred[k]\n", " sm = (sm*sm)/len(y_test)\n", " return sm" ] }, { "cell_type": "code", "execution_count": 169, "id": "b915a4a8", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 11, "id": "1bd65640", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.47096071]\n" ] } ], "source": [ "epochs = 10000\n", "learning_rate=0.01\n", "rows, cols = np.shape(x_train)\n", "m = np.reshape(np.array([0]*cols),(cols,1))\n", "b = 0 \n", "for i in range(epochs):\n", " m, b = gradientDescent(m,b,x_train,y_train,learning_rate)\n", "\n", "y_pred = np.dot(x_test,m)+b\n", "print(mse(y_test,y_pred))" ] }, { "cell_type": "code", "execution_count": 12, "id": "6b7aa26c", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAJwCAYAAAAEDSzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABuYElEQVR4nO3deVyU5f7/8feACC44CoKgKSKWStZxSyNNzSWXos3ql2mlx8ws08wWPS24lEuWtp1sO1+z1BatjlppZdpmlhlZeTRNhSwFNUnABVS4fn9wmOOwzsAMs72ej8c8Hs49133fn2EYfXtf93VdFmOMEQAAAHxekKcLAAAAgGsQ7AAAAPwEwQ4AAMBPEOwAAAD8BMEOAADATxDsAAAA/ATBDgAAwE8Q7AAAAPwEwQ4AAMBPEOyAKrJYLJo6daqny7AZMWKEWrZs6eky7Bw9elS33nqrYmJiZLFYdPfdd3u6JL/Tu3dv9e7d29NloBo+++wzWSwWffbZZ54uBX6AYAe/8uqrr8pisdgeYWFhOuecczRu3DgdOHDAref++uuvNXXqVB05csSlx+3du7fde4qIiNAFF1yg//u//1NhYaFLzjFz5kz9+9//dsmxSh731Vdf1dixY/X666/rpptuqrB9QUGBFi5cqN69eysiIkKhoaFq2bKlRo4cqc2bN7u8Pknav3+/pk6dqi1btrjl+NVhsVg0btw4T5fhNunp6Xa/20FBQYqIiNCgQYO0ceNGT5cH+KRani4AcIfp06crPj5eeXl5+uqrr7RgwQJ9+OGH2rp1q+rWreuSc5w4cUK1av3vK/T1119r2rRpGjFihBo2bOiScxQ766yzNGvWLEnSoUOH9Nprr2nUqFHauXOnZs+eXe3jz5w5U9dee62uuuqqah/rTOvWrdOFF16olJSUStueOHFC11xzjdasWaOePXvqH//4hyIiIpSenq63335bixYt0t69e3XWWWe5tMb9+/dr2rRpatmypTp06ODSY9eEjz/+2NMlVNvQoUM1ePBgFRQUaOfOnXr++ed1ySWX6LvvvtN5553n6fLcrmfPnjpx4oRq167t6VLgBwh28EuDBg1Sly5dJEm33nqrIiMjNW/ePK1YsUJDhw6t8nELCwt18uRJhYWFKSwszFXlVspqtWr48OG252PGjFGbNm303HPPacaMGQoJCamxWpxx8OBBJSYmOtT2vvvu05o1azR//vxSXbYpKSmaP3++Gyr0fd4eBo4dO6Z69epV2KZTp052v98XX3yxBg0apAULFuj55593d4l2HKnX1YKCgmr07xP4N7piERD69OkjSUpLS5MkPfHEE7rooosUGRmpOnXqqHPnzlq+fHmp/Yq7wpYsWaJzzz1XoaGhWrNmje214nvspk6dqvvuu0+SFB8fb+taSk9PV69evfS3v/2tzLratGmjAQMGOP1+6tatqwsvvFDHjh3ToUOHym137NgxTZo0Sc2bN1doaKjatGmjJ554QsYYu/d47NgxLVq0yFb3iBEjKjz/wYMHNWrUKDVp0kRhYWH629/+pkWLFtleL75nKC0tTR988IHdz6Msf/zxh1588UX179+/zPvwgoODde+999qu1pV3P+HUqVNlsVjstn3yySfq0aOHGjZsqPr166tNmzb6xz/+YavzggsukCSNHDnSVuerr75q23/ZsmXq3Lmz6tSpo8aNG2v48OHat2+f3TlGjBih+vXra+/evbr88stVv359NWvWTP/85z8lST///LP69OmjevXqKS4uTkuXLq3w5+uMkvfYFf/s3377bT322GM666yzFBYWpr59+2rXrl2l9v/22281cOBAWa1W1a1bV7169dKGDRvs2vz222+644471KZNG9WpU0eRkZG67rrrSn2exbdCfP7557rjjjsUHR1dpSusF198sSRp9+7ddtuPHDmiu+++2/b73Lp1a82ZM6fULQmHDx/WTTfdpAYNGqhhw4a65ZZb9OOPP5b6bIs/t927d2vw4MEKDw/XsGHDJBX9J+6pp57Sueeeq7CwMDVp0kRjxozRX3/9ZXeuzZs3a8CAAWrcuLHq1Kmj+Ph4/f3vf7dr8+abb6pz584KDw9XgwYNdN555+npp5+2vV7ePXbO/O7t27dPV111lerXr6+oqCjde++9KigocPyHDr/BFTsEhOJ/ICIjIyVJTz/9tK644goNGzZMJ0+e1JtvvqnrrrtO77//vi677DK7fdetW6e3335b48aNU+PGjcsMFNdcc4127typN954Q/Pnz1fjxo0lSVFRUbrppps0evRobd26Ve3bt7ft891332nnzp166KGHqvSe9uzZo+Dg4HK7fY0xuuKKK7R+/XqNGjVKHTp00EcffaT77rtP+/bts10Be/3113Xrrbeqa9euuu222yRJCQkJ5Z73xIkT6t27t3bt2qVx48YpPj5ey5Yt04gRI3TkyBFNmDBB7dq10+uvv66JEyfqrLPO0qRJk2w/j7KsXr1ap0+frvQePGf95z//0eWXX67zzz9f06dPV2hoqHbt2mULLu3atdP06dP1yCOP6LbbbrMFiosuukhSUVAZOXKkLrjgAs2aNUsHDhzQ008/rQ0bNuiHH36w+9kXFBRo0KBB6tmzpx5//HEtWbJE48aNU7169fTggw9q2LBhuuaaa/TCCy/o5ptvVlJSkuLj4136fs80e/ZsBQUF6d5771V2drYef/xxDRs2TN9++62tzbp16zRo0CB17txZKSkpCgoK0sKFC9WnTx99+eWX6tq1q6Si39Wvv/5aN9xwg8466yylp6drwYIF6t27t7Zt21bq9oY77rhDUVFReuSRR3Ts2DGnay8OjI0aNbJtO378uHr16qV9+/ZpzJgxatGihb7++mtNmTJFGRkZeuqppyQVBbLk5GRt2rRJY8eOVdu2bbVixQrdcsstZZ7r9OnTGjBggHr06KEnnnjC9l7GjBlj+/zHjx+vtLQ0Pffcc/rhhx+0YcMGhYSE6ODBg7r00ksVFRWlyZMnq2HDhkpPT9e7775rO/4nn3yioUOHqm/fvpozZ44kafv27dqwYYMmTJhQ7s/A2d+9AQMGqFu3bnriiSe0du1aPfnkk0pISNDYsWOd/vnDxxnAjyxcuNBIMmvXrjWHDh0yv//+u3nzzTdNZGSkqVOnjvnjjz+MMcYcP37cbr+TJ0+a9u3bmz59+thtl2SCgoLMf/7zn1LnkmRSUlJsz+fOnWskmbS0NLt2R44cMWFhYeaBBx6w2z5+/HhTr149c/To0QrfU69evUzbtm3NoUOHzKFDh8z27dvN+PHjjSSTnJxsa3fLLbeYuLg42/N///vfRpJ59NFH7Y537bXXGovFYnbt2mXbVq9ePXPLLbdUWEexp556ykgyixcvtm07efKkSUpKMvXr1zc5OTm27XFxceayyy6r9JgTJ040kswPP/zgUA0l32uxlJQUc+Zfa/PnzzeSzKFDh8o91nfffWckmYULF9ptP3nypImOjjbt27c3J06csG1///33jSTzyCOP2NUjycycOdO27a+//jJ16tQxFovFvPnmm7btv/zyS6nfnfJIMnfeeWeFbXr16mV69eple75+/XojybRr187k5+fbtj/99NNGkvn555+NMcYUFhaas88+2wwYMMAUFhba2h0/ftzEx8eb/v37220raePGjUaSee2112zbir9/PXr0MKdPn670/aWlpRlJZtq0aebQoUMmMzPTfPnll+aCCy4wksyyZctsbWfMmGHq1atndu7caXeMyZMnm+DgYLN3715jjDHvvPOOkWSeeuopW5uCggLTp0+fUp9z8ec2efJku2N++eWXRpJZsmSJ3fY1a9bYbX/vvfeMJPPdd9+V+x4nTJhgGjRoUOHPo/gzW79+vTGmar9706dPtztmx44dTefOncs9J/wXXbHwS/369VNUVJSaN2+uG264QfXr19d7772nZs2aSZLq1Klja/vXX38pOztbF198sVJTU0sdq1evXg7fJ1YWq9WqK6+8Um+88YatC7SgoEBvvfWWrrrqKofu5/nll18UFRWlqKgotWvXTs8++6wuu+wy/d///V+5+3z44YcKDg7W+PHj7bZPmjRJxhitXr26Su/nww8/VExMjN29iiEhIRo/fryOHj2qzz//3Olj5uTkSJLCw8OrVFN5iq9qrFixwukRxJs3b9bBgwd1xx132N3/dNlll6lt27b64IMPSu1z66232p27TZs2qlevnq6//nrb9jZt2qhhw4bas2ePk+/GOSNHjrS7/674amTxebds2aJff/1VN954ow4fPqw///xTf/75p44dO6a+ffvqiy++sP3Mzvy+nDp1SocPH1br1q3VsGHDMr8zo0ePVnBwsMO1pqSkKCoqSjExMbr44ou1fft2Pfnkk7r22mttbZYtW6aLL75YjRo1stX6559/ql+/fiooKNAXX3whSVqzZo1CQkI0evRo275BQUG68847yz1/yatay5Ytk9VqVf/+/e3O1blzZ9WvX1/r16+X9L/fr/fff1+nTp0q89gNGzbUsWPH9Mknnzj886jK797tt99u9/ziiy92++8YvBNdsfBL//znP3XOOeeoVq1aatKkidq0aaOgoP/9P+b999/Xo48+qi1btig/P9+2veT9WZJc0l12880366233tKXX36pnj17au3atTpw4IDDXY8tW7bUyy+/bJvC5eyzz1Z0dHSF+/z2229q2rRpqbDUrl072+tV8dtvv+nss8+2+3lW97gNGjSQJOXm5lappvL8v//3//TKK6/o1ltv1eTJk9W3b19dc801uvbaa0vVX1Lx+2jTpk2p19q2bauvvvrKbltYWFiprmar1aqzzjqr1O+V1Wotda+Wq7Vo0cLueXG3ZvF5f/31V0kqt4tSkrKzs9WoUSOdOHFCs2bN0sKFC7Vv3z67ezSzs7NL7efsd+a2227Tddddp7y8PK1bt07PPPNMqfvDfv31V/3000/lducfPHhQUtHnFhsbW6p7uHXr1mXuV6tWrVL3Af7666/Kzs4u9ztWfK5evXppyJAhmjZtmubPn6/evXvrqquu0o033qjQ0FBJRd3Sb7/9tgYNGqRmzZrp0ksv1fXXX6+BAweW+/Nwxe9eo0aN3P47Bu9EsINf6tq1q21UbElffvmlrrjiCvXs2VPPP/+8YmNjFRISooULF5Z5U/uZVyuqasCAAWrSpIkWL16snj17avHixYqJiVG/fv0c2r9evXoOt/VFbdu2lVQ0yMCRKUfKCuCSSoWBOnXq6IsvvtD69ev1wQcfaM2aNXrrrbfUp08fffzxx05dVapMeccqb/uZ4cgdKjtv8dW4uXPnlvszr1+/viTprrvu0sKFC3X33XcrKSlJVqtVFotFN9xwQ5lXQp39zpx99tm23+/LL79cwcHBmjx5si655BLb97iwsFD9+/fX/fffX+YxzjnnHKfOWSw0NLRUyC8sLFR0dLSWLFlS5j7FIcpisWj58uX65ptvtGrVKn300Uf6+9//rieffFLffPON6tevr+joaG3ZskUfffSRVq9erdWrV2vhwoW6+eab7QYcVYcrf4/h+wh2CDjvvPOOwsLC9NFHH9n+Vy1JCxcurNZxywsbUtFfvDfeeKNeffVVzZkzR//+97+d7q5yVlxcnNauXavc3Fy7q3a//PKL7XVHai/ruD/99JMKCwvt/kEs67iOGjRokIKDg7V48WKHrmI2atSozImgy7paGBQUpL59+6pv376aN2+eZs6cqQcffFDr169Xv379yn3vxe9jx44dtlHVxXbs2FGl9+lNigfINGjQoNL/NCxfvly33HKLnnzySdu2vLw8l0/GXezBBx/Uyy+/rIceesg2Cj0hIUFHjx6ttNa4uDitX79ex48ft7tqV9aI4PIkJCRo7dq16t69u0Mh9cILL9SFF16oxx57TEuXLtWwYcP05ptv2rrma9eureTkZCUnJ6uwsFB33HGHXnzxRT388MNlXkn09989uBf32CHgBAcHy2Kx2F3dSU9Pr/bKC8X3ypX3j91NN92kv/76S2PGjNHRo0ft5u1yh+IJX5977jm77fPnz5fFYtGgQYNs2+rVq+fwP9KDBw9WZmam3nrrLdu206dP69lnn1X9+vXVq1cvp2tt3ry5Ro8erY8//ljPPvtsqdcLCwv15JNP6o8//pBU9A9vdna2fvrpJ1ubjIwMvffee3b7ZWVllTpW8dWp4i748j63Ll26KDo6Wi+88IJdd/3q1au1ffv2UqOnfU3nzp2VkJCgJ554QkePHi31+pnT6AQHB5e6wvjss8+6bTqNhg0basyYMfroo49sK4Jcf/312rhxoz766KNS7Y8cOaLTp09LKro6furUKb388su21wsLC21Tzzji+uuvV0FBgWbMmFHqtdOnT9t+V/76669SP5eSv1+HDx+2ez0oKEjnn3++XZuS/P13D+7FFTsEnMsuu0zz5s3TwIEDdeONN+rgwYP65z//qdatW9sFBWd17txZUtHVhhtuuEEhISFKTk62BYeOHTuqffv2WrZsmdq1a6dOnTq55P2UJzk5WZdccokefPBBpaen629/+5s+/vhjrVixQnfffbfdlCadO3fW2rVrNW/ePDVt2lTx8fHq1q1bmce97bbb9OKLL2rEiBH6/vvv1bJlSy1fvlwbNmzQU089VeUBEE8++aR2796t8ePH691339Xll1+uRo0aae/evVq2bJl++eUX3XDDDZKkG264QQ888ICuvvpqjR8/XsePH9eCBQt0zjnn2N3MP336dH3xxRe67LLLFBcXp4MHD+r555/XWWedpR49ekgqCokNGzbUCy+8oPDwcNWrV0/dunVTfHy85syZo5EjR6pXr14aOnSobcqJli1bauLEiVV6n87avHmzHn300VLbe/fubXsPVREUFKRXXnlFgwYN0rnnnquRI0eqWbNm2rdvn9avX68GDRpo1apVkoq6R19//XVZrVYlJiZq48aNWrt2rW36IHeYMGGCnnrqKc2ePVtvvvmm7rvvPq1cuVKXX365RowYoc6dO+vYsWP6+eeftXz5cqWnp6tx48a66qqr1LVrV02aNEm7du1S27ZttXLlSlvId+TqdK9evTRmzBjNmjVLW7Zs0aWXXqqQkBD9+uuvWrZsmZ5++mlde+21WrRokZ5//nldffXVSkhIUG5url5++WU1aNBAgwcPllQ0oCYrK0t9+vTRWWedpd9++03PPvusOnToYLsvtaSQkBCv+N2Dj/LgiFzA5YqnW6ho+gFjjPnXv/5lzj77bBMaGmratm1rFi5cWGqqDGMqnm5CZUxZMWPGDNOsWTMTFBRU5tQnjz/+eKlpMSrTq1cvc+6551barqwpQHJzc83EiRNN06ZNTUhIiDn77LPN3Llz7aa3MKZoCo6ePXuaOnXqGEmVTn1y4MABM3LkSNO4cWNTu3Ztc95555WaLsQYx6c7KXb69GnzyiuvmIsvvthYrVYTEhJi4uLizMiRI0tNhfLxxx+b9u3bm9q1a5s2bdqYxYsXl/oMP/30U3PllVeapk2bmtq1a5umTZuaoUOHlpoyY8WKFSYxMdHUqlWr1JQYb731lunYsaMJDQ01ERERZtiwYbZpc4rdcsstpl69eqXeT3mfnaM/F0nlPmbMmGE7R1nTnZw5VYgx/5tapOTn9MMPP5hrrrnGREZGmtDQUBMXF2euv/568+mnn9ra/PXXX7bPu379+mbAgAHml19+MXFxcXa/K45+/0rWNHfu3DJfHzFihAkODrZNzZObm2umTJliWrdubWrXrm0aN25sLrroIvPEE0+YkydP2vY7dOiQufHGG014eLixWq1mxIgRZsOGDUaS3dQz5X1uxV566SXTuXNnU6dOHRMeHm7OO+88c//995v9+/cbY4xJTU01Q4cONS1atDChoaEmOjraXH755Wbz5s22YyxfvtxceumlJjo62tSuXdu0aNHCjBkzxmRkZNjalJzupFh1fvfK+vsMgcFijJvv4AVg8/TTT2vixIlKT08vNWoRgPv8+9//1tVXX62vvvpK3bt393Q5gNsQ7IAaYozR3/72N0VGRtrmwQLgeidOnLAb9FBQUKBLL71UmzdvVmZmpktGugPeinvsADc7duyYVq5cqfXr1+vnn3/WihUrPF0S4NfuuusunThxQklJScrPz9e7776rr7/+WjNnziTUwe9xxQ5ws/T0dMXHx6thw4a644479Nhjj3m6JMCvLV26VE8++aR27dqlvLw8tW7dWmPHjtW4ceM8XRrgdgQ7AAAAP8E8dgAAAH6CYAcAAOAnGDxRicLCQu3fv1/h4eFOLbsEAADgCGOMcnNz1bRp01JrFzuLYFeJ/fv3q3nz5p4uAwAA+Lnff/9dZ511VrWOQbCrRPHySL///rsaNGjg4WoAAIA/WLdunebNmydjjC655BLNmDGjyksynolRsZXIycmR1WpVdnY2wQ4AAFTbJ598olmzZskYo+TkZI0aNUoNGzZ0SdZg8AQAAEANKRnqJk6c6NJ7+H0u2OXn56tDhw6yWCzasmVLhW3z8vJ05513KjIyUvXr19eQIUN04MCBmikUAADgDO4OdZIPBrv7779fTZs2dajtxIkTtWrVKi1btkyff/659u/fr2uuucbNFQIAANiriVAn+ViwW716tT7++GM98cQTlbbNzs7Wv/71L82bN099+vRR586dtXDhQn399df65ptvaqBaAACAmgt1kg8FuwMHDmj06NF6/fXXVbdu3Urbf//99zp16pT69etn29a2bVu1aNFCGzduLHe//Px85eTk2D0AAACqoiZDneQjwc4YoxEjRuj2229Xly5dHNonMzNTtWvXVsOGDe22N2nSRJmZmeXuN2vWLFmtVtuDOewAAEBV1HSokzwc7CZPniyLxVLh45dfftGzzz6r3NxcTZkyxe01TZkyRdnZ2bbH77//7vZzAgAA/+KJUCd5eILiSZMmacSIERW2adWqldatW6eNGzcqNDTU7rUuXbpo2LBhWrRoUan9YmJidPLkSR05csTuqt2BAwcUExNT7vlCQ0NLnQcAAMBRngp1ko9MULx37167e93279+vAQMGaPny5erWrVuZy29kZ2crKipKb7zxhoYMGSJJ2rFjh9q2bauNGzfqwgsvdOjcTFAMAAAcVZVQ58qs4RNLirVo0cLuef369SVJCQkJtlC3b98+9e3bV6+99pq6du0qq9WqUaNG6Z577lFERIQaNGigu+66S0lJSQ6HOgAAAEd58kpdMZ8Ido44deqUduzYoePHj9u2zZ8/X0FBQRoyZIjy8/M1YMAAPf/88x6sEgAA+CNvCHWSj3TFehJdsQAAoCLVDXWuzBo+Md0JAACAN/KWK3XFCHYAAABV4G2hTiLYAQAAOM0bQ51EsAMAAHCKt4Y6iWAHAADgMG8OdRLBDgAAwCHeHuokgh0AAEClfCHUSQQ7AACACvlKqJMIdgAAAOXypVAnEewAAADKdGaou+zyZCVdebNW/rhfG3cfVkGhdy7c5TdrxQIAALjKmaGuXf+hWn4yQc+9/K3t9VhrmFKSEzWwfawHqyyNK3YAAABnKBnqVuc0U2Z2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119/vdq1a6dWrVrpyiuv1AcffKDk5GRbW4vFogULFuiKK65QvXr19Nhjj0mSFixYoISEBNWuXVtt2rTR66+/btsnPT1dFotFW7ZssW07cuSILBaLPvvsM0n/uxL26aefqkuXLqpbt64uuugi7dixw67W2bNnq0mTJgoPD9eoUaOUl5dX7vtKT0/XJZdcIklq1KiRLBaLRowYIamo63TcuHG6++671bhxYw0YMKDSOis6niQVFhbq/vvvV0REhGJiYjR16tRya/viiy8UEhKizMxMu+133323Lr744jL3ueiii/TAAw/YbTt06JBCQkL0xRdfSJJef/11denSReHh4YqJidGNN96ogwcPlltHWV3ZTz31lFq2bGm37ZVXXlG7du0UFhamtm3b6vnnn7e9dvLkSY0bN06xsbEKCwtTXFycZs2aVe45ATiPYAfAIYcPH9bHH3+sO++8U/Xq1SuzjcVisXs+depUXX311fr555/197//Xe+9954mTJigSZMmaevWrRozZoxGjhyp9evXO13Pgw8+qCeffFKbN29WrVq19Pe//9322ttvv62pU6dq5syZ2rx5s2JjY+0CRknNmzfXO++8I0nasWOHMjIy9PTTT9teX7RokWrXrq0NGzbohRdeqLQ2R45Xr149ffvtt3r88cc1ffp0ffLJJ2Ueq2fPnmrVqpVdAD516pSWLFli957PNGzYML355psyxti2vfXWW2ratKktDJ46dUozZszQjz/+qH//+99KT0+3C59VsWTJEj3yyCN67LHHtH37ds2cOVMPP/ywFi1aJEl65plntHLlSr399tvasWOHlixZUioYAqgmAwAO+Oabb4wk8+6779ptj4yMNPXq1TP16tUz999/v227JHP33Xfbtb3ooovM6NGj7bZdd911ZvDgwcYYY9LS0owk88MPP9he/+uvv4wks379emOMMevXrzeSzNq1a21tPvjgAyPJnDhxwhhjTFJSkrnjjjvsztOtWzfzt7/9rdz3V3zcv/76y257r169TMeOHe22OVNnWcfr0aOH3bYLLrjAPPDAA+XWNmfOHNOuXTvb83feecfUr1/fHD16tMz2Bw8eNLVq1TJffPGFbVtSUlKF5/juu++MJJObm1tm/SkpKaV+fvPnzzdxcXG25wkJCWbp0qV2bWbMmGGSkpKMMcbcddddpk+fPqawsLDcOgBUD1fsAFTLpk2btGXLFp177rnKz8+3e61Lly52z7dv367u3bvbbevevbu2b9/u9HnPP/98259jY2MlydaVuH37dnXr1s2ufVJSktPnKNa5c+cq71uWM2uXiuqvqBt0xIgR2rVrl7755htJ0quvvqrrr79e9erV05dffqn69evbHkuWLFFUVJQuvfRSLVmyRJKUlpamjRs3atiwYbZjfv/990pOTlaLFi0UHh6uXr16SZL27t1bpfd07Ngx7d69W6NGjbKr59FHH9Xu3btt72PLli1q06aNxo8fr48//rhK5wJQPgZPAHBI69atZbFYSt3L1qpVK0lSnTp1Su1TXpdteYKCiv6vac7oQjx16lSZbc8ciFHcBVxYWOjU+RxV8n04U2dZSg4isVgsFdYeHR2t5ORkLVy4UPHx8Vq9erXtnsMuXbrY3evXpEkTSUXdsePHj9ezzz6rpUuX6rzzztN5550nqSiEDRgwQAMGDLAFwb1792rAgAE6efJkmTUEBQXZvd+S7/no0aOSpJdffrlUqA4ODpYkderUSWlpaVq9erXWrl2r66+/Xv369dPy5cvLfe8AnMMVOwAOiYyMVP/+/fXcc8/p2LFjVTpGu3bttGHDBrttGzZsUGJioiQpKipKkpSRkWF7/czQ4sx5vv32W7ttxVe7ylM80rWgoKDS4ztSpzPHc8Stt96qt956Sy+99JISEhJsVz7r1Kmj1q1b2x7h4eGSpCuvvFJ5eXlas2aNli5dane17pdfftHhw4c1e/ZsXXzxxWrbtm2FVwylovecmZlpF+5KBsqmTZtqz549dvW0bt1a8fHxtnYNGjTQ//t//08vv/yy3nrrLb3zzjvKyspyxY8IgLhiB8AJzz//vLp3764uXbpo6tSpOv/88xUUFKTvvvtOv/zyS6Vdlvfdd5+uv/56dezYUf369dOqVav07rvvau3atZKKQsqFF16o2bNnKz4+XgcPHtRDDz3kdJ0TJkzQiBEj1KVLF3Xv3l1LlizRf/7zH9vVxbLExcXJYrHo/fff1+DBg1WnTh3Vr1+/zLaO1OnM8RwxYMAANWjQQI8++qimT59eaft69erpqquu0sMPP6zt27dr6NChttdatGih2rVr69lnn9Xtt9+urVu3asaMGRUer3fv3jp06JAef/xxXXvttVqzZo1Wr16tBg0a2NpMmzZN48ePl9Vq1cCBA5Wfn6/Nmzfrr7/+0j333KN58+YpNjZWHTt2VFBQkJYtW6aYmBg1bNiwyj8XACV49hY/AL5m//79Zty4cSY+Pt6EhISY+vXrm65du5q5c+eaY8eO2dpJMu+9916p/Z9//nnTqlUrExISYs455xzz2muv2b2+bds2k5SUZOrUqWM6dOhgPv7440oHJfzwww9GkklLS7Nte+yxx0zjxo1N/fr1zS233GLuv//+CgdPGGPM9OnTTUxMjLFYLOaWW24xxhQNdpgwYUKptpXV6czxrrzyStvrFXn44YdNcHCw2b9/f6VtjTHmww8/NJJMz549S722dOlS07JlSxMaGmqSkpLMypUr7QaElPVzXrBggWnevLmpV6+eufnmm81jjz1mN3jCGGOWLFliOnToYGrXrm0aNWpkevbsaRtw89JLL5kOHTqYevXqmQYNGpi+ffua1NRUh94LAMdYjClx0wQAwCuNGjVKhw4d0sqVKz1dCgAvRVcsAHi57Oxs/fzzz1q6dCmhDkCFCHYA4OWuvPJKbdq0Sbfffrv69+/v6XIAeDG6YgEAAPwE050AAAD4CYIdAACAnyDYAQAA+AmCHQAAgJ8g2AEAAPgJgh0AAICfINgBAAD4CYIdAACAn/j/BbbNp3utLe0AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 1.3.1.4\n", "# Get the predictions of x_test into `y_pred`\n", "\n", "fig, ax = plt.subplots(figsize=(7,7))\n", "\n", "ax.scatter(y_test, y_pred)\n", "\n", "lims = [\n", " np.min([ax.get_xlim(), ax.get_ylim()]),\n", " np.max([ax.get_xlim(), ax.get_ylim()]),\n", "]\n", "ax.plot(lims, lims, 'k-', alpha=0.75, zorder=0)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(lims)\n", "ax.set_ylim(lims)\n", "\n", "ax.set_title('Parity Plot of Custom Linear Regression')\n", "ax.set_xlabel('Ground truth y-values')\n", "ax.set_ylabel('Predicted y-values')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "id": "b19c0ac4", "metadata": { "id": "b19c0ac4" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_11082/3294144814.py:30: RuntimeWarning: overflow encountered in multiply\n", " sm = (sm*sm)/len(y_test)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Best learning rate: 0.42\n", "min mse : [0.00035271]\n" ] } ], "source": [ "# 1.3.2.3\n", "# try with different learning rates and choose the best one\n", "\n", "epochs = 100\n", "rows, cols = np.shape(x_train)\n", "m = np.reshape(np.array([0]*cols),(cols,1))\n", "b = 0 \n", "minimse = float('inf')\n", "finalPred=[]\n", "lrli =[]\n", "mseli=[]\n", "finallr=0\n", "for lr in range(100):\n", " l = lr/100\n", " for i in range(epochs):\n", " m, b = gradientDescent(m,b,x_train,y_train,l)\n", " y_pred = np.dot(x_test,m)+b\n", " mseval = mse(y_test,y_pred)\n", " mseli.append(mseval)\n", " lrli.append(l)\n", " \n", " if minimse>mseval:\n", " minimse = mseval\n", " finalPred = y_pred\n", " finallr=l\n", "print(\"Best learning rate: \"+str(finallr))\n", "print(\"min mse : \"+str(minimse))\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "e36c7995", "metadata": {}, "outputs": [], "source": [ "y_pred = finalPred" ] }, { "cell_type": "code", "execution_count": 15, "id": "foster-center", "metadata": { "id": "foster-center" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAJwCAYAAADbQ1b7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABq5UlEQVR4nO3dd3iUVd7G8XsSUiBlIEBIUAgBFIjoIiAYQUCKFI2NlVVAgUUWsICIBdZCUwELWHbFuogUC4giKpG6FkARETFLE0xEIZQ1ktASQua8f/BmliFtJsxk2vdzXbku5sx5nvlNJoGb5zznHIsxxggAAAA+LcTbBQAAAKBihDYAAAA/QGgDAADwA4Q2AAAAP0BoAwAA8AOENgAAAD9AaAMAAPADhDYAAAA/QGgDAADwA4Q2oJIsFosmTpzo7TLsBg8erEaNGnm7DAdHjx7VHXfcoYSEBFksFt17773eLingdOnSRV26dPF2GTgH//73v2WxWPTvf//b26XAxxHaEFDefPNNWSwW+1dkZKQuvPBC3X333Tpw4IBHX3vdunWaOHGiDh8+7NbzdunSxeE9xcXF6bLLLtO//vUv2Ww2t7zGk08+qQ8//NAt5zr7vG+++aZGjhypuXPn6rbbbiu3f1FRkWbPnq0uXbooLi5OERERatSokYYMGaKNGze6vT5J2rdvnyZOnKjNmzd75PznwmKx6O677/Z2GR6TlZXl8LMdEhKiuLg49e7dW+vXr/d2eYDPqebtAgBPmDx5spKTk5Wfn6+vvvpKs2bN0qeffqqMjAzVqFHDLa9x4sQJVav2v1+hdevWadKkSRo8eLBq1qzpltcodv7552vq1KmSpEOHDumtt97S0KFDtXPnTk2bNu2cz//kk0/qz3/+s2644YZzPteZVq9ercsvv1wTJkyosO+JEyd00003KT09XZ06ddLf//53xcXFKSsrS++9957mzJmjPXv26Pzzz3drjfv27dOkSZPUqFEjtWrVyq3nrgrLly/3dgnn7NZbb1WfPn1UVFSknTt36qWXXtJVV12lb7/9VhdffLG3y/O4Tp066cSJEwoPD/d2KfBxhDYEpN69e6tt27aSpDvuuEO1a9fWjBkztGTJEt16662VPq/NZtPJkycVGRmpyMhId5VbIavVqoEDB9ofDx8+XM2aNdM//vEPTZkyRWFhYVVWiysOHjyolJQUp/o+8MADSk9P18yZM0sMo06YMEEzZ870QIX+z9f/oT927JiioqLK7dO6dWuHn+8rr7xSvXv31qxZs/TSSy95ukQHztTrbiEhIVX69wn8F8OjCApdu3aVJGVmZkqSnnnmGV1xxRWqXbu2qlevrjZt2mjRokUljisenpo/f74uuugiRUREKD093f5c8T1tEydO1AMPPCBJSk5Otg/3ZGVlqXPnzvrTn/5Ual3NmjVTz549XX4/NWrU0OWXX65jx47p0KFDZfY7duyYxo4dqwYNGigiIkLNmjXTM888I2OMw3s8duyY5syZY6978ODB5b7+wYMHNXToUNWrV0+RkZH605/+pDlz5tifL75HJzMzU5988onD96M0v/32m1555RX16NGj1PveQkNDdf/999uvspV1/97EiRNlsVgc2lasWKGOHTuqZs2aio6OVrNmzfT3v//dXudll10mSRoyZIi9zjfffNN+/MKFC9WmTRtVr15dderU0cCBA7V3716H1xg8eLCio6O1Z88eXXvttYqOjtZ5552nf/7zn5KkH3/8UV27dlVUVJSSkpK0YMGCcr+/rjj7nrbi7/17772nJ554Queff74iIyPVrVs37dq1q8Tx33zzjXr16iWr1aoaNWqoc+fOWrt2rUOfX375RXfeeaeaNWum6tWrq3bt2rr55ptLfJ7Ftyd8/vnnuvPOOxUfH1+pK6NXXnmlJGn37t0O7YcPH9a9995r/3lu2rSppk+fXuI2gd9//1233XabYmNjVbNmTQ0aNEg//PBDic+2+HPbvXu3+vTpo5iYGA0YMEDS6f+gPffcc7rooosUGRmpevXqafjw4frjjz8cXmvjxo3q2bOn6tSpo+rVqys5OVl//etfHfq88847atOmjWJiYhQbG6uLL75Yzz//vP35su5pc+Vnb+/evbrhhhsUHR2tunXr6v7771dRUZHz33T4Ba60ISgU/+Vfu3ZtSdLzzz+v6667TgMGDNDJkyf1zjvv6Oabb9bHH3+sa665xuHY1atX67333tPdd9+tOnXqlBoWbrrpJu3cuVNvv/22Zs6cqTp16kiS6tatq9tuu03Dhg1TRkaGWrZsaT/m22+/1c6dO/XII49U6j39/PPPCg0NLXMo1hij6667TmvWrNHQoUPVqlUrffbZZ3rggQe0d+9e+5WruXPn6o477lC7du30t7/9TZLUpEmTMl/3xIkT6tKli3bt2qW7775bycnJWrhwoQYPHqzDhw9r9OjRatGihebOnasxY8bo/PPP19ixY+3fj9IsW7ZMp06dqvCeN1f95z//0bXXXqtLLrlEkydPVkREhHbt2mUPJS1atNDkyZP12GOP6W9/+5s9LFxxxRWSToeQIUOG6LLLLtPUqVN14MABPf/881q7dq2+//57h+99UVGRevfurU6dOumpp57S/PnzdffddysqKkoPP/ywBgwYoJtuukkvv/yybr/9dqWmpio5Odmt7/dM06ZNU0hIiO6//37l5ubqqaee0oABA/TNN9/Y+6xevVq9e/dWmzZtNGHCBIWEhGj27Nnq2rWrvvzyS7Vr107S6Z/VdevW6ZZbbtH555+vrKwszZo1S126dNHWrVtL3HJw5513qm7dunrsscd07Ngxl2svDoO1atWytx0/flydO3fW3r17NXz4cDVs2FDr1q3T+PHjlZ2dreeee07S6bCVlpamDRs2aOTIkWrevLmWLFmiQYMGlfpap06dUs+ePdWxY0c988wz9vcyfPhw++c/atQoZWZm6h//+Ie+//57rV27VmFhYTp48KCuvvpq1a1bV+PGjVPNmjWVlZWlxYsX28+/YsUK3XrrrerWrZumT58uSdq2bZvWrl2r0aNHl/k9cPVnr2fPnmrfvr2eeeYZrVy5Us8++6yaNGmikSNHuvz9hw8zQACZPXu2kWRWrlxpDh06ZH799VfzzjvvmNq1a5vq1aub3377zRhjzPHjxx2OO3nypGnZsqXp2rWrQ7skExISYv7zn/+UeC1JZsKECfbHTz/9tJFkMjMzHfodPnzYREZGmoceesihfdSoUSYqKsocPXq03PfUuXNn07x5c3Po0CFz6NAhs23bNjNq1CgjyaSlpdn7DRo0yCQlJdkff/jhh0aSefzxxx3O9+c//9lYLBaza9cue1tUVJQZNGhQuXUUe+6554wkM2/ePHvbyZMnTWpqqomOjjZ5eXn29qSkJHPNNddUeM4xY8YYSeb77793qoaz32uxCRMmmDP/Wps5c6aRZA4dOlTmub799lsjycyePduh/eTJkyY+Pt60bNnSnDhxwt7+8ccfG0nmsccec6hHknnyySftbX/88YepXr26sVgs5p133rG3b9++vcTPTlkkmbvuuqvcPp07dzadO3e2P16z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fKL27durevXqqlWrlm644YZy+xtj9NhjjykxMVHVq1dX9+7d9dNPP1VNsUGqUaNGslgsDl/Tpk0r95guXbqUOGbEiBFVVHFwqsznlJ+fr7vuuku1a9dWdHS0+vbtqwMHDlRRxcGtoKBArVq1ksVi0ebNm8vty++T97jyObnr94nQBp/0/vvv67bbbtOQIUP0ww8/aO3aterfv3+5xzz11FN64YUX9PLLL+ubb75RVFSUevbsqfz8/CqqOjhNnjxZ2dnZ9q977rmnwmOGDRvmcMxTTz1VBZUGN1c/pzFjxmjp0qVauHChPv/8c+3bt0833XRTFVUb3B588EHVr1/f6f78PnmHK5+T236fDOBjCgsLzXnnnWdef/11p4+x2WwmISHBPP300/a2w4cPm4iICPP22297okwYY5KSkszMmTNdOqZz585m9OjRHqkHpXP1czp8+LAJCwszCxcutLdt27bNSDLr16/3QIUo9umnn5rmzZub//znP0aS+f7778vtz++Td7jyObnz94krbfA5mzZt0t69exUSEqJLL71UiYmJ6t27tzIyMso8JjMzU/v371f37t3tbVarVe3bt9f69eurouygNW3aNNWuXVuXXnqpnn76aZ06darCY+bPn686deqoZcuWGj9+vI4fP14FlQY3Vz6n7777ToWFhQ6/T82bN1fDhg35ffKgAwcOaNiwYZo7d65q1Kjh9HH8PlUtVz8nd/4+sWE8fM7PP/8sSZo4caJmzJihRo0a6dlnn1WXLl20c+dOxcXFlThm//79kqR69eo5tNerV8/+HNxv1KhRat26teLi4rRu3TqNHz9e2dnZmjFjRpnH9O/fX0lJSapfv762bNmihx56SDt27NDixYursPLg4urntH//foWHh6tmzZoO7fw+eY4xRoMHD9aIESPUtm1bZWVlOXUcv09VqzKfk1t/nyp3YRBw3UMPPWQklfu1bds2M3/+fCPJvPLKK/Zj8/PzTZ06dczLL79c6rnXrl1rJJl9+/Y5tN98882mX79+Hn1fgcbZz6k0b7zxhqlWrZrJz893+vVWrVplJJldu3a56y0EBU9+TvPnzzfh4eEl2i+77DLz4IMPuvV9BDpnP6fnn3/edOjQwZw6dcoYY0xmZqZTw6Nn4/epcjz5Obnz94krbagyY8eO1eDBg8vt07hxY2VnZ0uSUlJS7O0RERFq3Lix9uzZU+pxCQkJkk5ftk5MTLS3HzhwQK1atTq3woOMs59Tadq3b69Tp04pKytLzZo1c+r12rdvL0natWuXmjRp4lKtwcyTn1NCQoJOnjypw4cPO1wdOHDggP13Dc5x9nNavXq11q9fX2IPy7Zt22rAgAGaM2eOU6/H71PlePJzcufvE6ENVaZu3bqqW7duhf3atGmjiIgI7dixQx07dpQkFRYWKisrS0lJSaUek5ycrISEBK1atcoe0vLy8vTNN99o5MiRbnsPwcDZz6k0mzdvVkhIiOLj4106RpJD2EbFPPk5tWnTRmFhYVq1apX69u0rSdqxY4f27Nmj1NTUStccjJz9nF544QU9/vjj9sf79u1Tz5499e6779qDmDP4faocT35Obv19cum6HFBFRo8ebc477zzz2Wefme3bt5uhQ4ea+Ph4k5OTY+/TrFkzs3jxYvvjadOmmZo1a5olS5aYLVu2mOuvv94kJyebEydOeOMtBLx169aZmTNnms2bN5vdu3ebefPmmbp165rbb7/d3ue3334zzZo1M998840xxphdu3aZyZMnm40bN5rMzEyzZMkS07hxY9OpUydvvY2AV5nPyRhjRowYYRo2bGhWr15tNm7caFJTU01qaqo33kJQKm3Yjd8n3+PM52SM+36fCG3wSSdPnjRjx4418fHxJiYmxnTv3t1kZGQ49JFkZs+ebX9ss9nMo48+aurVq2ciIiJMt27dzI4dO6q48uDx3Xffmfbt2xur1WoiIyNNixYtzJNPPulwn1TxX2hr1qwxxhizZ88e06lTJxMXF2ciIiJM06ZNzQMPPGByc3O99C4CX2U+J2OMOXHihLnzzjtNrVq1TI0aNcyNN95osrOzvfAOglNpYYDfJ9/jzOdkjPt+nyzGGOPatTkAAABUNdZpAwAA8AOENgAAAD9AaAMAAPADhDYAAAA/QGgDAADwA4Q2AAAAP0BoAwAA8AOENgAAAD9AaAMQFCZOnGjfl9abunTponvvvdfbZVTo3//+tywWiw4fPuztUgD8P0IbAJfs379fo0ePVtOmTRUZGal69eqpQ4cOmjVrlo4fP+7t8irN3SGF0APA3ap5uwAA/uPnn39Whw4dVLNmTT355JO6+OKLFRERoR9//FGvvvqqzjvvPF133XWlHltYWKiwsLAqrtj9Tp48qfDwcG+XASAIcaUNgNPuvPNOVatWTRs3blS/fv3UokULNW7cWNdff70++eQTpaWl2ftaLBbNmjVL1113naKiovTEE09IkmbNmqUmTZooPDxczZo109y5c+3HZGVlyWKxaPPmzfa2w4cPy2Kx6N///rek/13BWrVqldq2basaNWroiiuu0I4dOxxqnTZtmurVq6eYmBgNHTpU+fn5Zb6vrKwsXXXVVZKkWrVqyWKxaPDgwZJOD2fefffduvfee1WnTh317NmzwjrLO58k2Ww2Pfjgg4qLi1NCQoImTpxYZm1ffPGFwsLCtH//fof2e++9V1deeWWpx1xxxRV66KGHHNoOHTqksLAwffHFF5KkuXPnqm3btoqJiVFCQoL69++vgwcPlllHacPLzz33nBo1auTQ9vrrr6tFixaKjIxU8+bN9dJLL9mfO3nypO6++24lJiYqMjJSSUlJmjp1apmvCcARoQ2AU37//XctX75cd911l6KiokrtY7FYHB5PnDhRN954o3788Uf99a9/1QcffKDRo0dr7NixysjI0PDhwzVkyBCtWbPG5XoefvhhPfvss9q4caOqVaumv/71r/bn3nvvPU2cOFFPPvmkNm7cqMTERIfwcLYGDRro/ffflyTt2LFD2dnZev755+3Pz5kzR+Hh4Vq7dq1efvnlCmtz5nxRUVH65ptv9NRTT2ny5MlasWJFqefq1KmTGjdu7BBuCwsLNX/+fIf3fKYBAwbonXfekTHG3vbuu++qfv369qBXWFioKVOm6IcfftCHH36orKwsh2BZGfPnz9djjz2mJ554Qtu2bdOTTz6pRx99VHPmzJEkvfDCC/roo4/03nvvaceOHZo/f36J0AegHAYAnPD1118bSWbx4sUO7bVr1zZRUVEmKirKPPjgg/Z2Sebee+916HvFFVeYYcOGObTdfPPNpk+fPsYYYzIzM40k8/3339uf/+OPP4wks2bNGmOMMWvWrDGSzMqVK+19PvnkEyPJnDhxwhhjTGpqqrnzzjsdXqd9+/bmT3/6U5nvr/i8f/zxh0N7586dzaWXXurQ5kqdpZ2vY8eODm2XXXaZeeihh8qsbfr06aZFixb2x++//76Jjo42R48eLbX/wYMHTbVq1cwXX3xhb0tNTS33Nb799lsjyRw5cqTU+idMmFDi+zdz5kyTlJRkf9ykSROzYMEChz5Tpkwxqampxhhj7rnnHtO1a1djs9nKrANA2bjSBuCcbNiwQZs3b9ZFF12kgoICh+fatm3r8Hjbtm3q0KGDQ1uHDh20bds2l1/3kksusf85MTFRkuzDe9u2bVP79u0d+qemprr8GsXatGlT6WNLc2bt0un6yxuaHDx4sHbt2qWvv/5akvTmm2+qX79+ioqK0pdffqno6Gj71/z581W3bl1dffXVmj9/viQpMzNT69ev14ABA+zn/O6775SWlqaGDRsqJiZGnTt3liTt2bOnUu/p2LFj2r17t4YOHepQz+OPP67du3fb38fmzZvVrFkzjRo1SsuXL6/UawHBiokIAJzStGlTWSyWEveONW7cWJJUvXr1EseUNYxalpCQ0/+PNGcM6xUWFpba98xJDcXDsjabzaXXc9bZ78OVOktz9oQMi8VSbu3x8fFKS0vT7NmzlZycrGXLltnv8Wvbtq3DvXX16tWTdHqIdNSoUXrxxRe1YMECXXzxxbr44oslnQ5YPXv2VM+ePe0hb8+ePerZs6dOnjxZag0hISEO7/fs93z06FFJ0muvvVYiMIeGhkqSWrdurczMTC1btkwrV65Uv3791L17dy1atKjM9w7gf7jSBsAptWvXVo8ePfSPf/xDx44dq9Q5WrRoobVr1zq0rV27VikpKZKkunXrSpKys7Ptz58ZSFx5nW+++cahrfgqVVmKZ4QWFRVVeH5n6nTlfM6444479O677+rVV19VkyZN7Fcsq1evrqZNm9q/YmJiJEnXX3+98vPzlZ6ergULFjhcZdu+fbt+//13TZs2TVdeeaWaN29e7pU+6fR73r9/v0NwOzss1q9fXz///LNDPU2bNlVycrK9X2xsrP7yl7/otdde07vvvqv3339fOTk57vgWAQGPK20AnPbSSy+pQ4cOatu2rSZOnKhLLrlEISEh+vbbb7V9+/YKhxEfeOAB9evXT5deeqm6d++upUuXavHixVq5cqWk0wHk8ssv17Rp05ScnKyDBw/qkUcecbnO0aNHa/DgwWrbtq06dOig+fPn6z//+Y/9qmBpkpKSZLFY9PHHH6tPnz6qXr26oqOjS+3rTJ2unM8ZPXv2VGxsrB5//HFNnjy5wv5RUVG64YYb9Oijj2rbtm269dZb7c81bNhQ4eHhevHFFzVixAhlZGRoypQp5Z6vS5cuOnTokJ566in9+c9/Vnp6upYtW6bY2Fh7n0mTJmnUqFGyWq3q1auXCgoKtHHjRv3xxx+67777NGPGDCUmJurSSy9VSEiIFi5cqISEBNWsWbPS3xcgqHj3ljoA/mbfvn3m7rvvNsnJySYsLMxER0ebdu3amaefftocO3bM3k+S+eCDD0oc/9JLL5nGjRubsLAwc+GFF5q33nrL4fmtW7ea1NRUU716ddOqVSuzfPnyCm/w//77740kk5mZaW974oknTJ06dUx0dLQZNGiQefDBB8udiGCMMZMnTzYJCQnGYrGYQYMGGWNOTxwYPXp0ib4V1enK+a6//nr78+V59NFHTWhoqNm3b1+FfY0x5tNPPzWSTKdOnUo8t2DBAtOoUSMTERFhUlNTzUcffeQwuaK07/OsWbNMgwYNTFRUlLn99tvNE0884TARwRhj5s+fb1q1amXCw8NNrVq1TKdOneyTV1599VXTqlUrExUVZWJjY023bt3Mpk2bnHovAIyxGHPWTQoAAJ80dOhQHTp0SB999JG3SwHgBQyPAoCPy83N1Y8//qgFCxYQ2IAgRmgDAB93/fXXa8OGDRoxYoR69Ojh7XIAeAnDowAAAH6AJT8AAAD8AKENAADADxDaAAAA/AChDQAAwA8Q2gAAAPwAoQ0AAMAPENoAAAD8AKENAADAD/wfPcOScQ2PR0AAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 1.3.1.4\n", "# Get the predictions of x_test into `y_pred`\n", "\n", "fig, ax = plt.subplots(figsize=(7,7))\n", "\n", "ax.scatter(y_test, y_pred)\n", "\n", "lims = [\n", " np.min([ax.get_xlim(), ax.get_ylim()]),\n", " np.max([ax.get_xlim(), ax.get_ylim()]),\n", "]\n", "ax.plot(lims, lims, 'k-', alpha=0.75, zorder=0)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(lims)\n", "ax.set_ylim(lims)\n", "\n", "ax.set_title('Parity Plot of Custom Linear Regression')\n", "ax.set_xlabel('Ground truth y-values')\n", "ax.set_ylabel('Predicted y-values')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "dominant-chaos", "metadata": { "id": "dominant-chaos" }, "source": [ "### 1.3.2 Implement Ridge Regression\n", "\n", "1.3.2.1 Explain Ridge regression briefly in 1-2 lines.\n", "\n", "1.3.2.2 Implement Ridge regression and make a table of different RMSE scores you achieved with different values of alpha. What does the parameter `alpha` do?\n", "\n", "1.3.2.3 How does it affect the results here? Explain in 5-10 lines in total. (You can use scikit-learn from this cell onwards)\n", "\n", "1.3.2.4 Make a Parity Plot of Ridge Regression model's y-predictions on the test set with the actual values." ] }, { "cell_type": "markdown", "id": "happy-cyprus", "metadata": { "id": "happy-cyprus" }, "source": [ "\n", "`1.3.2.1 Answer`\n", "=> Ridge regression is a method of estimating the coefficients of multiple-regression models in scenarios where the independent variables are highly correlated. " ] }, { "cell_type": "code", "execution_count": 70, "id": "02a50a51", "metadata": { "id": "02a50a51" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " aplha mse\n", "0 0.01 0.094487\n", "1 0.05 0.035474\n", "2 0.10 0.011957\n", "3 0.50 0.003660\n", "4 1.00 0.005023\n", "5 1.50 0.007433\n", "6 2.00 0.011834\n", "7 2.50 0.019701\n", "8 3.00 0.032035\n", "9 4.00 0.071679\n", "10 5.00 0.131059\n", "Best alpha : 0.5\n" ] } ], "source": [ "# 1.3.2.2\n", "# you should not have imported sklearn before this point\n", "import sklearn\n", "from sklearn.linear_model import Ridge\n", "import pandas as pd\n", "\n", "# implement Ridge regression and make a table where you explore the effect of different values of `alpha`\n", "li=[0.01,0.05,0.1,0.5,1,1.5,2,2.5,3,4,5]\n", "d={}\n", "bestPred=[]\n", "bestalpha=0\n", "minimse=float('inf')\n", "for i in li:\n", " \n", " ridgeReg = Ridge(alpha=i)\n", "\n", " ridgeReg.fit(x_train,y_train)\n", "\n", " y_pred_ridge = ridgeReg.predict(x_test)\n", "\n", " mse = np.mean((y_pred_ridge - y_test)**2)\n", " if minimse>mse:\n", " minimse=mse\n", " bestPred=y_pred_ridge\n", " bestalpha=i\n", " d[i]=mse\n", "alphaTable = pd.DataFrame(d.items(),columns=['aplha','mse'])\n", "print(alphaTable)\n", "print(\"Best alpha : \",bestalpha)" ] }, { "cell_type": "markdown", "id": "e54d36d9", "metadata": { "id": "e54d36d9" }, "source": [ "\n", "`1.3.2.3 Answer`" ] }, { "cell_type": "code", "execution_count": 64, "id": "e9d2c1e8", "metadata": { "id": "e9d2c1e8" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm0AAAJwCAYAAADbQ1b7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABrEUlEQVR4nO3deVxU9f7H8feALMoyCoJguaCWSlZuaaSpuaTZpc2bv0orveZVWzSzTG+LS4vaZttNb3WvWWqZS5mVZC63xUwzM+VqpgZZilqS4AYi8/39wWWuAwPM4AzMDK/n48Hj0Zz5njOfYYDenu9mMcYYAQAAwKcFVXcBAAAAqBihDQAAwA8Q2gAAAPwAoQ0AAMAPENoAAAD8AKENAADADxDaAAAA/AChDQAAwA8Q2gAAAPwAoQ2oJIvFosmTJ1d3GXZDhgxR06ZNq7sMB8eOHdMdd9yhhIQEWSwW3XvvvdVdUsDp0aOHevToUd1l4Cz8+9//lsVi0b///e/qLgU+jtCGgPLGG2/IYrHYv8LDw3X++efr7rvv1sGDB7362l999ZUmT56sI0eOePS6PXr0cHhPMTExuuSSS/Svf/1LNpvNI6/x5JNP6v333/fItUpe94033tCoUaP01ltv6dZbby23fWFhoebMmaMePXooJiZGYWFhatq0qYYOHapNmzZ5vD5J2r9/vyZPnqwtW7Z45fpnw2Kx6O67767uMrwmMzPT4Wc7KChIMTExuuqqq7R+/frqLg/wObWquwDAG6ZOnaqkpCTl5eXpyy+/1KxZs/Txxx8rPT1dderU8chrnDx5UrVq/e9X6KuvvtKUKVM0ZMgQ1a1b1yOvUezcc8/VtGnTJEm//fab3nzzTQ0bNkw//vijpk+fftbXf/LJJ/XnP/9Z11133Vlf60xr1qzRpZdeqkmTJlXY9uTJk7rhhhuUlpambt266W9/+5tiYmKUmZmpd999V3PnztXevXt17rnnerTG/fv3a8qUKWratKnatm3r0WtXhZUrV1Z3CWft5ptvVv/+/VVYWKgff/xRr7zyiq644gp98803uvDCC6u7PK/r1q2bTp48qdDQ0OouBT6O0IaAdNVVV6ljx46SpDvuuEOxsbF67rnntGzZMt18882Vvq7NZtOpU6cUHh6u8PBwT5VbIavVqsGDB9sfjxgxQi1bttTLL7+sxx57TCEhIVVWizsOHTqk5ORkl9o+8MADSktL08yZM0t1o06aNEkzZ870QoX+z9f/R3/8+HFFRESU26Z9+/YOP9+XX365rrrqKs2aNUuvvPKKt0t04Eq9nhYUFFSlf0/gv+geRY3Qs2dPSVJGRoYk6ZlnntFll12m2NhY1a5dWx06dNDixYtLnVfcPTV//nxdcMEFCgsLU1pamv254jFtkydP1gMPPCBJSkpKsnf3ZGZmqnv37rr44oud1tWyZUv17dvX7fdTp04dXXrppTp+/Lh+++23MtsdP35c48aNU6NGjRQWFqaWLVvqmWeekTHG4T0eP35cc+fOtdc9ZMiQcl//0KFDGjZsmBo0aKDw8HBdfPHFmjt3rv354jE6GRkZ+uijjxy+H878+uuv+sc//qE+ffo4HfcWHBys+++/336Xrazxe5MnT5bFYnE49umnn6pr166qW7euIiMj1bJlS/3tb3+z13nJJZdIkoYOHWqv84033rCfv2jRInXo0EG1a9dW/fr1NXjwYO3bt8/hNYYMGaLIyEjt3btXf/rTnxQZGalzzjlHf//73yVJ27ZtU8+ePRUREaEmTZpowYIF5X5/3VFyTFvx9/7dd9/VE088oXPPPVfh4eHq1auXdu/eXer8DRs2qF+/frJarapTp466d++udevWObT5+eefdeedd6ply5aqXbu2YmNjdeONN5b6PIuHJ3z22We68847FR8fX6k7o5dffrkkac+ePQ7Hjxw5onvvvdf+89yiRQvNmDGj1DCBw4cP69Zbb1V0dLTq1q2r22+/Xd9//32pz7b4c9uzZ4/69++vqKgoDRo0SFLRP9Cef/55XXDBBQoPD1eDBg00YsQI/fHHHw6vtWnTJvXt21f169dX7dq1lZSUpL/85S8Obd555x116NBBUVFRio6O1oUXXqgXXnjB/nxZY9rc+dnbt2+frrvuOkVGRiouLk7333+/CgsLXf+mwy9wpw01QvEf/9jYWEnSCy+8oGuuuUaDBg3SqVOn9M477+jGG2/Uhx9+qKuvvtrh3DVr1ujdd9/V3Xffrfr16zsNCzfccIN+/PFHvf3225o5c6bq168vSYqLi9Ott96q4cOHKz09XW3atLGf88033+jHH3/Uww8/XKn39NNPPyk4OLjMrlhjjK655hqtXbtWw4YNU9u2bfXJJ5/ogQce0L59++x3rt566y3dcccd6tSpk/76179Kkpo3b17m6548eVI9evTQ7t27dffddyspKUmLFi3SkCFDdOTIEY0ZM0atW7fWW2+9pbFjx+rcc8/VuHHj7N8PZ1asWKHTp09XOObNXf/5z3/0pz/9SRdddJGmTp2qsLAw7d692x5KWrduralTp+rRRx/VX//6V3tYuOyyyyQVhZChQ4fqkksu0bRp03Tw4EG98MILWrdunb777juH731hYaGuuuoqdevWTU899ZTmz5+vu+++WxEREXrooYc0aNAg3XDDDZo9e7Zuu+02paSkKCkpyaPv90zTp09XUFCQ7r//fuXk5Oipp57SoEGDtGHDBnubNWvW6KqrrlKHDh00adIkBQUFac6cOerZs6e++OILderUSVLRz+pXX32lm266Seeee64yMzM1a9Ys9ejRQ9u3by815ODOO+9UXFycHn30UR0/ftzt2ovDYL169ezHTpw4oe7du2vfvn0aMWKEGjdurK+++koTJ05UVlaWnn/+eUlFYSs1NVUbN27UqFGj1KpVKy1btky3336709c6ffq0+vbtq65du+qZZ56xv5cRI0bYP//Ro0crIyNDL7/8sr777jutW7dOISEhOnTokK688krFxcVpwoQJqlu3rjIzM7V06VL79T/99FPdfPPN6tWrl2bMmCFJ2rFjh9atW6cxY8aU+T1w92evb9++6ty5s5555hmtWrVKzz77rJo3b65Ro0a5/f2HDzNAAJkzZ46RZFatWmV+++0388svv5h33nnHxMbGmtq1a5tff/3VGGPMiRMnHM47deqUadOmjenZs6fDcUkmKCjI/Oc//yn1WpLMpEmT7I+ffvppI8lkZGQ4tDty5IgJDw83Dz74oMPx0aNHm4iICHPs2LFy31P37t1Nq1atzG+//WZ+++03s2PHDjN69GgjyaSmptrb3X777aZJkyb2x++//76RZB5//HGH6/35z382FovF7N69234sIiLC3H777eXWUez55583ksy8efPsx06dOmVSUlJMZGSkyc3NtR9v0qSJufrqqyu85tixY40k891337lUQ8n3WmzSpEnmzD9rM2fONJLMb7/9Vua1vvnmGyPJzJkzx+H4qVOnTHx8vGnTpo05efKk/fiHH35oJJlHH33UoR5J5sknn7Qf++OPP0zt2rWNxWIx77zzjv34Dz/8UOpnpyySzF133VVum+7du5vu3bvbH69du9ZIMq1btzb5+fn24y+88IKRZLZt22aMMcZms5nzzjvP9O3b19hsNnu7EydOmKSkJNOnTx+HYyWtX7/eSDJvvvmm/Vjx71/Xrl3N6dOnK3x/GRkZRpKZMmWK+e2338yBAwfMF198YS655BIjySxatMje9rHHHjMRERHmxx9/dLjGhAkTTHBwsNm7d68xxpglS5YYSeb555+3tyksLDQ9e/Ys9TkXf24TJkxwuOYXX3xhJJn58+c7HE9LS3M4/t577xlJ5ptvvinzPY4ZM8ZER0eX+/0o/szWrl1rjKncz97UqVMdrtmuXTvToUOHMl8T/onuUQSk3r17Ky4uTo0aNdJNN92kyMhIvffeezrnnHMkSbVr17a3/eOPP5STk6PLL79cmzdvLnWt7t27uzwuyxmr1aprr71Wb7/9tr1bsrCwUAsXLtR1113n0viZH374QXFxcYqLi1Pr1q310ksv6eqrr9a//vWvMs/5+OOPFRwcrNGjRzscHzdunIwxWrFiRaXez8cff6yEhASHsYEhISEaPXq0jh07ps8++8zta+bm5kqSoqKiKlVTWYrvRixbtsztmbabNm3SoUOHdOeddzqMN7r66qvVqlUrffTRR6XOueOOOxxeu2XLloqIiNDAgQPtx1u2bKm6devqp59+cvPduGfo0KEO492K7yIWv+6WLVu0a9cu3XLLLTp8+LB+//13/f777zp+/Lh69eqlzz//3P49O/P3paCgQIcPH1aLFi1Ut25dp78zw4cPV3BwsMu1Tpo0SXFxcUpISNDll1+uHTt26Nlnn9Wf//xne5tFixbp8ssvV7169ey1/v777+rdu7cKCwv1+eefS5LS0tIUEhKi4cOH288NCgrSXXfdVebrl7wbtWjRIlmtVvXp08fhtTp06KDIyEitXbtW0v9+vj788EMVFBQ4vXbdunV1/Phxffrppy5/Pyrzszdy5EiHx5dffrnXf8ZQ9egeRUD6+9//rvPPP1+1atVSgwYN1LJlSwUF/e/fKB9++KEef/xxbdmyRfn5+fbjJcdDSfJIF9Ztt92mhQsX6osvvlC3bt20atUqHTx40OXuwKZNm+q1116zL2Ny3nnnKT4+vtxzfv75ZzVs2LBUEGrdurX9+cr4+eefdd555zl8P8/2utHR0ZKko0ePVqqmsvzf//2fXn/9dd1xxx2aMGGCevXqpRtuuEF//vOfS9VfUvH7aNmyZannWrVqpS+//NLhWHh4eKnuX6vVqnPPPbfUz5XVai01NsrTGjdu7PC4uKux+HV37dolSWV2G0pSTk6O6tWrp5MnT2ratGmaM2eO9u3b5zAmMicnp9R57v7O/PWvf9WNN96ovLw8rVmzRi+++GKp8Vi7du3S1q1by+xiP3TokKSizy0xMbFUl22LFi2cnlerVq1S4+527dqlnJycMn/Hil+re/fuGjBggKZMmaKZM2eqR48euu6663TLLbcoLCxMUlFX8bvvvqurrrpK55xzjq688koNHDhQ/fr1K/P74YmfvXr16nn9ZwxVj9CGgNSpUyf77NGSvvjiC11zzTXq1q2bXnnlFSUmJiokJERz5sxxOkD8zLsMldW3b181aNBA8+bNU7du3TRv3jwlJCSod+/eLp0fERHhclt/1KpVK0lFA/ZdWXbDWbiWVOp/9LVr19bnn3+utWvX6qOPPlJaWpoWLlyonj17auXKlW7dDapIWdcq6/iZwccbKnrd4rtoTz/9dJnf88jISEnSPffcozlz5ujee+9VSkqKrFarLBaLbrrpJqd3MN39nTnvvPPsP99/+tOfFBwcrAkTJuiKK66w/x7bbDb16dNH48ePd3qN888/363XLBYWFlYqwNtsNsXHx2v+/PlOzykOSBaLRYsXL9bXX3+t5cuX65NPPtFf/vIXPfvss/r6668VGRmp+Ph4bdmyRZ988olWrFihFStWaM6cObrtttscJu+cDU/+HMO3EdpQ4yxZskTh4eH65JNP7P8alqQ5c+ac1XXLChJS0R/VW265RW+88YZmzJih999/3+0uJHc1adJEq1at0tGjRx3utv3www/2512p3dl1t27dKpvN5vA/O2fXddVVV12l4OBgzZs3z6W7j/Xq1XO6iLGzu3xBQUHq1auXevXqpeeee05PPvmkHnroIa1du1a9e/cu870Xv4+dO3faZx8X27lzZ6Xepy8pnmwSHR1d4T8IFi9erNtvv13PPvus/VheXp7HF5Iu9tBDD+m1117Tww8/bJ+t3bx5cx07dqzCWps0aaK1a9fqxIkTDnfbnM2cLUvz5s21atUqdenSxaUAeumll+rSSy/VE088oQULFmjQoEF655137N3loaGhSk1NVWpqqmw2m+6880794x//0COPPOL0DmCg/+yh8hjThhonODhYFovF4a5MZmbmWe8IUDw2raz/kd166636448/NGLECB07dsxhXSpvKF6s9OWXX3Y4PnPmTFksFl111VX2YxERES7/D7h///46cOCAFi5caD92+vRpvfTSS4qMjFT37t3drrVRo0YaPny4Vq5cqZdeeqnU8zabTc8++6x+/fVXSUX/U83JydHWrVvtbbKysvTee+85nJednV3qWsV3lYq7xcv63Dp27Kj4+HjNnj3boQt9xYoV2rFjR6lZxv6mQ4cOat68uZ555hkdO3as1PNnLiUTHBxc6s7gSy+95LUlJerWrasRI0bok08+se9UMXDgQK1fv16ffPJJqfZHjhzR6dOnJRXd1S4oKNBrr71mf95ms9mXX3HFwIEDVVhYqMcee6zUc6dPn7b/rPzxxx+lvi8lf74OHz7s8HxQUJAuuugihzYlBfrPHiqPO22oca6++mo999xz6tevn2655RYdOnRIf//739WiRQuHEOCuDh06SCq6S3DTTTcpJCREqamp9lDQrl07tWnTRosWLVLr1q3Vvn17j7yfsqSmpuqKK67QQw89pMzMTF188cVauXKlli1bpnvvvddhWY8OHTpo1apVeu6559SwYUMlJSWpc+fOTq/717/+Vf/4xz80ZMgQffvtt2ratKkWL16sdevW6fnnn6/0ZIJnn31We/bs0ejRo7V06VL96U9/Ur169bR3714tWrRIP/zwg2666SZJ0k033aQHH3xQ119/vUaPHq0TJ05o1qxZOv/88x0Gxk+dOlWff/65rr76ajVp0kSHDh3SK6+8onPPPVddu3aVVBQA69atq9mzZysqKkoRERHq3LmzkpKSNGPGDA0dOlTdu3fXzTffbF92oWnTpho7dmyl3qe7Nm3apMcff7zU8R49etjfQ2UEBQXp9ddf11VXXaULLrhAQ4cO1TnnnKN9+/Zp7dq1io6O1vLlyyUVdVm+9dZbslqtSk5O1vr167Vq1Sr7EjreMGbMGD3//POaPn263nnnHT3wwAP64IMP9Kc//UlDhgxRhw4ddPz4cW3btk2LFy9WZmam6tevr+uuu06dOnXSuHHjtHv3brVq1UoffPCBPcC7cle5e/fuGjFihKZNm6YtW7boyiuvVEhIiHbt2qVFixbphRde0J///GfNnTtXr7zyiq6//no1b95cR48e1Wuvvabo6Gj1799fUtHklOzsbPXs2VPnnnuufv75Z7300ktq27atfRxoSSEhIT7xswcfVI0zVwGPK15yoLwp+MYY889//tOcd955JiwszLRq1crMmTOn1HIRxpS/5IKcLNvw2GOPmXPOOccEBQU5Xf7jqaeeKrU0REW6d+9uLrjgggrbOVsG4+jRo2bs2LGmYcOGJiQkxJx33nnm6aefdljiwZiiZSi6detmateubSRVuPzHwYMHzdChQ039+vVNaGioufDCC0stmWGM60t+FDt9+rR5/fXXzeWXX26sVqsJCQkxTZo0MUOHDi21HMjKlStNmzZtTGhoqGnZsqWZN29eqc9w9erV5tprrzUNGzY0oaGhpmHDhubmm28utWzEsmXLTHJysqlVq1apZSEWLlxo2rVrZ8LCwkxMTIwZNGiQfemYYrfffruJiIgo9X7K+uxc/b5IKvPrscces7+GsyU/zlwuw5j/La9R8nP67rvvzA033GBiY2NNWFiYadKkiRk4cKBZvXq1vc0ff/xh/7wjIyNN3759zQ8//GCaNGni8LPi6u9fyZqefvppp88PGTLEBAcH25enOXr0qJk4caJp0aKFCQ0NNfXr1zeXXXaZeeaZZ8ypU6fs5/3222/mlltuMVFRUcZqtZohQ4aYdevWGUkOy6+U9bkVe/XVV02HDh1M7dq1TVRUlLnwwgvN+PHjzf79+40xxmzevNncfPPNpnHjxiYsLMzEx8ebP/3pT2bTpk32ayxevNhceeWVJj4+3oSGhprGjRubESNGmKysLHubkkt+FDubnz1nf8/g/yzGeHk0LAC7F154QWPHjlVmZmap2X0AvOf999/X9ddfry+//FJdunSp7nKASiG0AVXEGKOLL75YsbGx9nWeAHjeyZMnHSYQFBYW6sorr9SmTZt04MABj8wIB6oDY9oALzt+/Lg++OADrV27Vtu2bdOyZcuquyQgoN1zzz06efKkUlJSlJ+fr6VLl+qrr77Sk08+SWCDX+NOG+BlmZmZSkpKUt26dXXnnXfqiSeeqO6SgIC2YMECPfvss9q9e7fy8vLUokULjRo1SnfffXd1lwacFUIbAACAH2CdNgAAAD9AaAMAAPADTESogM1m0/79+xUVFeXWVj8AAACuMMbo6NGjatiwYam9cM9EaKvA/v371ahRo+ouAwAABLhffvlF5557bpnPE9oq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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 1.3.2.4\n", "\n", "fig, ax = plt.subplots(figsize=(7,7))\n", "\n", "ax.scatter(y_test, bestPred)\n", "\n", "lims = [\n", " np.min([ax.get_xlim(), ax.get_ylim()]),\n", " np.max([ax.get_xlim(), ax.get_ylim()]),\n", "]\n", "ax.plot(lims, lims, 'k-', alpha=0.75, zorder=0)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(lims)\n", "ax.set_ylim(lims)\n", "\n", "ax.set_title('Parity Plot of Custom Linear Regression')\n", "ax.set_xlabel('Ground truth y-values')\n", "ax.set_ylabel('Predicted y-values')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "popular-wonder", "metadata": { "id": "popular-wonder" }, "source": [ "### 1.3.3 Implement Lasso Regression\n", "1.3.3.1 Explain Lasso regression briefly in 1-2 lines.\n", "\n", "1.3.3.2 Implement Lasso regression and make a table of different RMSE scores you achieved with different values of alpha.\n", "\n", "1.3.3.3 What does the parameter `alpha` do? How does it affect the results here? Explain in 5-10 lines in total.\n", "\n", "1.3.3.4 Make a Parity Plot of Lasso Regression model's y-predictions on the test set with the actual values." ] }, { "cell_type": "markdown", "id": "mV9BlPIjm-K1", "metadata": { "id": "mV9BlPIjm-K1" }, "source": [ "\n", "`1.3.3.1 Answer`\n", "\n", "Lasso is short for Least Absolute Shrinkage and Selection Operator, which is used both for regularization and model selection. If a model uses the L1 regularization technique, then it is called lasso regression." ] }, { "cell_type": "code", "execution_count": 73, "id": "09148bbc", "metadata": { "id": "09148bbc" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " aplha mse\n", "0 0.01 0.001799\n", "1 0.05 0.041286\n", "2 0.10 0.171702\n", "3 0.30 1.612258\n", "4 0.50 4.523047\n", "5 0.80 11.645916\n", "6 1.00 18.232286\n", "7 1.50 24.967724\n", "8 2.00 24.967724\n", "9 2.50 24.967724\n", "10 3.00 24.967724\n", "11 4.00 24.967724\n", "12 5.00 24.967724\n", "Best alpha : 0.01\n" ] } ], "source": [ "# 1.3.3.2\n", "# implement Lasso regression and make a table where you explore the effect of different values of `alpha`\n", "\n", "import sklearn\n", "from sklearn.linear_model import Lasso\n", "import pandas as pd\n", "\n", "li=[0.01,0.05,0.1,0.3,0.5,0.8,1,1.5,2,2.5,3,4,5]\n", "d={}\n", "bestPred=[]\n", "bestalpha=0\n", "minimse=float('inf')\n", "for i in li:\n", " \n", " lassoReg = Lasso(alpha=i)\n", "\n", " lassoReg.fit(x_train,y_train)\n", "\n", " y_pred_lasso = lassoReg.predict(x_test)\n", "\n", " mse = np.mean((y_pred_lasso - y_test)**2)\n", " if minimse>mse:\n", " minimse=mse\n", " bestPred=y_pred_lasso\n", " bestalpha=i\n", " d[i]=mse\n", "alphaTable = pd.DataFrame(d.items(),columns=['aplha','mse'])\n", "print(alphaTable)\n", "print(\"Best alpha : \",bestalpha)" ] }, { "cell_type": "markdown", "id": "Hq5eyeqem-K2", "metadata": { "id": "Hq5eyeqem-K2" }, "source": [ "\n", "`1.3.3.3 Answer`\n", "\n", "Here, α (alpha) works similar to that of ridge and provides a trade-off between balancing RSS and magnitude of coefficients. Like that of ridge, α can take various values. Lets iterate it here briefly:\n", "\n", "α = 0: Same coefficients as simple linear regression\n", "α = ∞: All coefficients zero\n", "0 < α < ∞: coefficients between 0 and that of simple linear regression" ] }, { "cell_type": "code", "execution_count": 74, "id": "accompanied-worst", "metadata": { "id": "accompanied-worst" }, "outputs": [ { "data": { "image/png": "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YggEGASJiIiIasVSQyDAIEhERERUY5YcAgEGQSIiIqIasfQQCDAIEhERERmsIYRAgEGQiIiIyCANJQQCDIJEREREemtIIRBgECQiIiLSS0MLgQCDIBEREVG1GmIIBBgEiYiIiKrUUEMgwCBIREREpFNDDoEAgyARERFRpRp6CAQYBImIiIi0WEMIBIBG9d0AIiIiInNiSAgsUwqkpucht6AQvq4OCA/yhI1UUsctrjkGQSIiIqL/MSQEJp/JQnzSWWQpCtVl/jIHzIoOQVSof101uVY4NExEREQEw0PguDXHNUIgAGQrCjFuzXEkn8mqiybXGoMgERERWT1Dh4Pjk85CVHae//03PuksypSV1TAvDIJERERk1QydGJKanqfVE6hxPgBZikKkpueZoLXGxSBIREREVqsms4NzC3SHwJrUq08MgkRERGSVarpEjK+rg17n17defWIQJCIiIqtTm3UCw4M84S9zgK5FYiQonz0cHuRptPaaCoMgERERWZXaLhZtI5VgVnQIAGiFQdXzWdEhFrGeIIMgERERWQ1j7RgSFeqP5cPaQy7THP6VyxywfFh7i1lHkAtKExERkVUw9rZxUaH+6BMi584iRERERObMVHsH20gliAj2MkIL6weHhomIiKhBM1UIbAgYBImIiKjBYgisGoMgERERNUgMgdVjECQiIqIGhyFQPwyCRERE1KAwBOqPQZCIiIgaDIZAwzAIEhERUYPAEGg4BkEiIiKyeAyBNcMgSERERBaNIbDmGASJiIjIYjEE1g6DIBEREVkkhsDaYxAkIiIii8MQaBwMgkRERGRRGAKNh0GQiIiILAZDoHExCBIREZFFYAg0PgZBIiIiMnsMgabBIEhERERmjSHQdBgEiYiIyGwxBJoWgyARERGZJYZA07O4IFhUVISwsDBIJBKkpaXprJeXl4fXXnsNrVq1gqOjI5o1a4bY2FgoFAqNehKJROuxfv16E18FERERVYUhsG40qu8GGGrq1Klo3LgxTp48WWW969ev4/r163jvvfcQEhKCP/74A2PHjsX169exadMmjbqJiYmIiopSP3d3dzdF04mIiEgPDIF1x6KC4K5du7Bnzx5s3rwZu3btqrJuaGgoNm/erH4eHByMefPmYdiwYSgtLUWjRv9euru7O+RyucnaTURERPphCKxbFjM0nJOTg9GjR2P16tVw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REREdYVB0IwwBBIREVFdYhA0EwyBREREVNcYBM0AQyARERHVBwbBesYQSERERPWFQbAeMQQSERFRfWIQrCcMgURERFTfGATrAUMgERERmQMGwTrGEEhERETmgkGwDjEEEhERkTlhEKwjDIFERERkbhgE6wBDIBEREZkjBkETYwgkIiIic8UgaEIMgURERGTOGARNhCGQiIiIzB2DoAkwBBIREZElYBA0MoZAIiIishQMgkbEEEhERESWpFF9N6Ah+fTTT7F3716GQCIiIrII7BE0ol27djEEEhERkcVgEDQihkAiIiKyJBwaNgIhBABg7Nix6NSpE/Lz8+u5RURERNSQqLKFKnMYi0QY+4xW6K+//kJAQEB9N4OIiIgauD///BNNmzY12vkYBI1AqVTi+vXrcHV1hUQiqe/m1Fh+fj4CAgLw559/ws3Nrb6bY3K83oaN19uw8XobNl6vNiEECgoK0LhxY0ilxruzj0PDRiCVSo2azuubm5ubVXzxVHi9DRuvt2Hj9TZsvF5NMpnM6O/JySJEREREVopBkIiIiMhKMQiSmr29PWbNmgV7e/v6bkqd4PU2bLzeho3X27DxeusOJ4sQERERWSn2CBIRERFZKQZBIiIiIivFIEhERERkpRgEiYiIiKwUg6AV+uGHH9CpUyc4OjrCw8MDzzzzTJX1hRCYOXMm/P394ejoiN69e+PSpUsadfLy8jB06FC4ubnB3d0do0aNwu3bt014Ffpp3rw5JBKJxmPhwoU662dkZGjVVz02btyorlfZ6+vXr6+LS9LJ0GsFgB49emgdM3bsWI06mZmZGDBgAJycnODr64u33noLpaWlprwUvRh6vXl5eXjttdfQqlUrODo6olmzZoiNjYVCodCoZ46fLVCzz7ewsBATJkyAl5cXXFxcMHDgQOTk5GjUMdfPV6WoqAhhYWGQSCRIS0vTWc+Sv7v30/d6Acv+/qroe72W/v1VMeTzrbPvryCrsmnTJuHh4SGWL18uLly4IH7//XexYcOGKo9ZuHChkMlk4vvvvxcnT54UTz31lAgKChL37t1T14mKihKPPPKI+OWXX8ShQ4dEy5YtxeDBg019OdUKDAwUCQkJIisrS/24ffu2zvqlpaUadbOyskR8fLxwcXERBQUF6noARGJioka9+38e9cHQaxVCiO7du4vRo0drHKNQKNSvl5aW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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# 1.3.3.4\n", "\n", "fig, ax = plt.subplots(figsize=(7,7))\n", "\n", "ax.scatter(y_test, bestPred)\n", "\n", "lims = [\n", " np.min([ax.get_xlim(), ax.get_ylim()]),\n", " np.max([ax.get_xlim(), ax.get_ylim()]),\n", "]\n", "ax.plot(lims, lims, 'k-', alpha=0.75, zorder=0)\n", "ax.set_aspect('equal')\n", "ax.set_xlim(lims)\n", "ax.set_ylim(lims)\n", "\n", "ax.set_title('Parity Plot of Custom Linear Regression')\n", "ax.set_xlabel('Ground truth y-values')\n", "ax.set_ylabel('Predicted y-values')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "2f46dc45", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10" } }, "nbformat": 4, "nbformat_minor": 5 }