1057 lines
200 KiB
Text
1057 lines
200 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {
|
|
"id": "FZEco2HK6D57"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import pandas as pd\n",
|
|
"from matplotlib import pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {
|
|
"id": "a3nCUqopXHwv"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"RANDOM_SEED = 0x0"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "jjTkUw7BWulH"
|
|
},
|
|
"source": [
|
|
"# Lab 03: Linear Regression"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "gNnZUk36Xz7_"
|
|
},
|
|
"source": [
|
|
"For the first few Tasks, we will work with synthetic univariate data.\n",
|
|
"We generate $100$ features $x_i \\in [-1, 1]$ as `x` and two different\n",
|
|
"regression targets `y1` and `y2`."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"id": "Ojta777H2ulb"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"data_rng = np.random.default_rng(RANDOM_SEED)\n",
|
|
"n = 100\n",
|
|
"x = 2 * data_rng.random(n) - 1 # create n points between -1 and 1\n",
|
|
"\n",
|
|
"# setup synthetic linear data\n",
|
|
"true_offset = 0.5\n",
|
|
"true_slope = 1.25\n",
|
|
"noise = data_rng.normal(loc=0., scale=0.25, size=(n,))\n",
|
|
"\n",
|
|
"y1 = true_offset + true_slope * x + noise\n",
|
|
"\n",
|
|
"\n",
|
|
"# setup synthetic non-linear data\n",
|
|
"y2 = true_offset + np.sin(np.pi * x) + noise"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "ntdpTWzqZqAU"
|
|
},
|
|
"source": [
|
|
"# Task 1 (1 Point): Pearson Correlation"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "JbNJ7WhzbAtm"
|
|
},
|
|
"source": [
|
|
"### Task 1a\n",
|
|
"\n",
|
|
"Plot `x` against the target variable `y1`.\n",
|
|
"\n",
|
|
"* use `plt.scatter`\n",
|
|
"\n",
|
|
"\n",
|
|
"Do you think there is a linear relationship between `x` and the target?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"id": "MxYMdhfxyYAd"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.collections.PathCollection at 0x7fbd80918090>"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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tLRU48aNU11dnSSprq5O/fv315lnnhk9prq6WgUFBXr77bczOl4nxrJmzRrV19fr+uuv7/a9m266SQMHDtTYsWP1xBNPWGpp7qSenN9vfvMbDRw4UCNGjFBNTY327NkT874jR45UWVlZ9LlJkyYpHA5r/fr1zp9IEk79ewqFQiopKdFhh8W2Nsv0Ndy/f7/WrFkT8ztUUFCg6urq6O9QV3V1dTHHS4euR+R4K7+XmZTOOXa1Z88eHThwQAMGDIh5ftWqVRo0aJCGDRummTNnaufOnY6O3Yp0z2/37t06/vjjVVFRoUsuuSTmdykXr+Hjjz+uyy+/XIcffnjM8164hulI9XvoxM8slZxrzJgpzc3NkhRzU4t8Hflec3OzBg0aFPP9ww47TAMGDIgekylOjOXxxx/XqaeeqvHjx8c8f/fdd+u8885T37599cc//lFf+9rXtHv3bn3jG99wbPyppHt+V1xxhY4//ngNHjxY7777rm6//XZt2rRJzz33XPR9413jyPcyyYlruGPHDt1zzz264YYbYp7PxjXcsWOH2tvb4/58N27cGPc1ia5H59+5yHOJjsmkdM6xq9tvv12DBw+OuRFMnjxZl156qYYMGaItW7bou9/9rqZMmaK6ujoVFhY6eg7JpHN+w4YN0xNPPKHTTz9doVBI9913n8aPH6/169fr2GOPzblruHr1ajU0NOjxxx+Ped4r1zAdiX4Pw+GwPvvsM33yySc9/nefSk4HL3fccYfmz5+f9Jj3339fp5xySoZG5Dyr59hTn332mRYvXqzvfe973b7X+bnRo0erra1NP/rRjxy58bl9fp1v4iNHjlR5ebnOP/98bdmyRUOHDk37fe3I1DUMh8O66KKLNHz4cN11110x33PzGiJ99957r5YsWaJVq1bFJLVefvnl0f8eOXKkTj/9dA0dOlSrVq3S+eefn42hWlZVVaWqqqro1+PHj9epp56qRx99VPfcc08WR+aOxx9/XCNHjtTYsWNjnvfzNfSCnA5ebrvtNl1zzTVJjznxxBPTeu9gMChJamlpUXl5efT5lpYWVVZWRo/5+OOPY1538OBBtba2Rl/fU1bPsadj+e1vf6s9e/bo6quvTnnsuHHjdM8992jfvn097nuRqfOLGDdunCRp8+bNGjp0qILBYLcM+ZaWFkny1TXctWuXJk+erH79+un5559Xr169kh7v5DVMZODAgSosLIz+PCNaWloSnk8wGEx6vJXfy0xK5xwj7rvvPt1777169dVXdfrppyc99sQTT9TAgQO1efPmjN74enJ+Eb169dLo0aO1efNmSbl1Ddva2rRkyRLdfffdKT8nW9cwHYl+D0tKStSnTx8VFhb2+N9FSo5kzuQQuwm79913X/S5UCgUN2H3nXfeiR7zhz/8IasJu+mOZcKECd12qCTy/e9/3xx55JFpjzUdTv2s33jjDSPJ/PWvfzXGfJ6w2zlD/tFHHzUlJSVm7969zp2ABemeYygUMmeddZaZMGGCaWtrs/RZmbqGY8eONTfffHP06/b2dnPMMcckTdj9l3/5l5jnqqqquiXsJvu9zDS752iMMfPnzzclJSWmrq7O0mds27bNBAIB88ILL/R4vHalc36dHTx40AwbNsx885vfNMbkzjU05tD9pKioyOzYsSPlZ2TzGnYmiwm7I0aMiHlu2rRp3RJ2e/LvIuU4HXmXHPC3v/3NrFu3LroVeN26dWbdunUxW4KHDRtmnnvuuejX9957r+nfv7954YUXzLvvvmsuueSSuFulR48ebd5++23zxhtvmJNPPjmrW6WTjeXvf/+7GTZsmHn77bdjXvfBBx+YQCBgfv/733d7zxdffNE89thj5r333jMffPCB+dnPfmb69u1rZs+e7fr5dGX3/DZv3mzuvvtu884775jGxkbzwgsvmBNPPNGce+650ddEtkp/8YtfNPX19aa2ttYcffTRWd0qbeccQ6GQGTdunBk5cqTZvHlzzLbMgwcPGmOyew2XLFliioqKzMKFC82GDRvMDTfcYPr37x/d3fXVr37V3HHHHdHj33zzTXPYYYeZ++67z7z//vtmzpw5cbdKp/q9zCS753jvvfea3r17m9/+9rcx1yvy/6Jdu3aZb33rW6aurs40NjaaV1991YwZM8acfPLJGQ+o0zm/uXPnmj/84Q9my5YtZs2aNebyyy83xcXFZv369dFj/H4NI8455xxz2WWXdXvea9dw165d0XueJPPjH//YrFu3zvztb38zxhhzxx13mK9+9avR4yNbpb/97W+b999/3zz88MNxt0on+5n1FMHL/5k+fbqR1O3x2muvRY/R/9XCiOjo6DDf+973TFlZmSkqKjLnn3++2bRpU8z77ty500ybNs0cccQRpqSkxFx77bUxAVEmpRpLY2Njt3M2xpiamhpTUVFh2tvbu73n73//e1NZWWmOOOIIc/jhh5tRo0aZBQsWxD3WbXbPb+vWrebcc881AwYMMEVFReakk04y3/72t2PqvBhjzIcffmimTJli+vTpYwYOHGhuu+22mG3GmWT3HF977bW4/64lmcbGRmNM9q/hT3/6U3PccceZ3r17m7Fjx5q33nor+r0JEyaY6dOnxxz/zDPPmH/6p38yvXv3Nqeddpp55ZVXYr5v5fcy0+yc4/HHHx/3es2ZM8cYY8yePXvMF7/4RXP00UebXr16meOPP97MmDHDsZtCOuyc36233ho9tqyszFx44YVm7dq1Me/n92tojDEbN240kswf//jHbu/ltWuY6P8TkXOaPn26mTBhQrfXVFZWmt69e5sTTzwx5t4Ykexn1lMBYzK8pxUAAKAHqPMCAAB8heAFAAD4CsELAADwFYIXAADgKwQvAADAVwheAACArxC8AAAAXyF4AQAAvkLwAgAAfIXgBQAA+ArBCwAA8BWCFwAA4Cv/H/+eMduUqWSEAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(x, y1)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"_Yes, definitely!_"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "6Ak0nQ0PDGpm"
|
|
},
|
|
"source": [
|
|
"Plot `x` against the target variable `y2`.\n",
|
|
"\n",
|
|
"Do you think there is a linear relationship between `x` and the target?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"id": "HpzwoBdQDd-d"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<matplotlib.collections.PathCollection at 0x7f2336ae7550>"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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9kv3HLP18ccf64knntDtt9/e5b7jbzv77LPV1tame+65x5YLn9Pnd/xFfMSIESorK9NFF12kHTt2aOjQoRn/XCty9Rq2trbq0ksvVUVFhX7wgx/E3Ofka4jM3X333Vq5cqXWrl0bU9Q6ffr06L9HjBihkSNHaujQoVq7dq0uuuiifAw1bePGjdO4ceOi348fP15nnXWWHn74Yd155515HJkzHnnkEY0YMUJVVVUxt3v5NXQDXwcv8+bN06xZs5Iec/rpp2f0s0OhkCSpublZZWVl0dubm5s1evTo6DEffPBBzOOOHj2qlpaW6OOzle45ZjuW3/zmNzpw4ICuvvrqlMeOHTtWd955pw4dOpT1vhe5Or+IsWPHSpK2b9+uoUOHKhQKdamQb25uliRPvYb79u3T5MmT1adPHz311FPq1q1b0uPtfA0TGTBggIqLi6PPZ0Rzc3PC8wmFQkmPT+d9mUuZnGPEvffeq7vvvlvPP/+8Ro4cmfTY008/XQMGDND27dtzeuHL5vwiunXrprPPPlvbt2+X5K/XsK2tTStXrtQdd9yR8vfk6zXMRKL3YWlpqXr27Kni4uKs/y5SsqVyxkesFuzee++90dvC4XDcgt1XX301eswf//jHvBbsZjqWiRMndlmhkshdd91l+vXrl/FYM2HXc71u3Tojyfz1r381xnxSsHt8hfzDDz9sSktLzcGDB+07gTRkeo7hcNice+65ZuLEiaatrS2t35Wr17Cqqspcf/310e/b29vNySefnLRg95/+6Z9ibhs3blyXgt1k78tcs3qOxhizePFiU1paaurq6tL6Hbt27TKBQMCsWrUq6/Falcn5He/o0aNm+PDh5qabbjLG+Oc1NObY9aSkpMR8+OGHKX9HPl/D4ynNgt3KysqY22bMmNGlYDebv4uU47Tlp/jAu+++azZv3hxdCrx582azefPmmCXBw4cPN7/73e+i3999992mb9++ZtWqVea1114z06ZNi7tU+uyzzzavvPKKWbdunRk2bFhel0onG8t7771nhg8fbl555ZWYx7399tsmEAiYP/zhD11+5jPPPGOWLVtmXn/9dfP222+b//iP/zC9evUy8+fPd/x8OrN6ftu3bzd33HGHefXVV01DQ4NZtWqVOf300815550XfUxkqfQXvvAFU19fb2pra81JJ52U16XSVs4xHA6bsWPHmhEjRpjt27fHLMs8evSoMSa/r+HKlStNSUmJWb58udm6dau57rrrTN++faOru77yla+YW2+9NXr8yy+/bE444QRz7733mjfffNMsWLAg7lLpVO/LXLJ6jnfffbfp3r27+c1vfhPzekX+L9q3b5/57ne/a+rq6kxDQ4N5/vnnzZgxY8ywYcNyHlBncn4LFy40f/zjH82OHTvMxo0bzfTp002PHj3MG2+8ET3G669hxIQJE8zll1/e5Xa3vYb79u2LXvMkmZ/85Cdm8+bN5t133zXGGHPrrbear3zlK9HjI0ulb775ZvPmm2+aJUuWxF0qnew5yxbBy9/NnDnTSOry9eKLL0aP0d97YUR0dHSY22+/3QwaNMiUlJSYiy66yGzbti3m5+7Zs8fMmDHDfOpTnzKlpaXmmmuuiQmIcinVWBoaGrqcszHG1NTUmPLyctPe3t7lZ/7hD38wo0ePNp/61KdM7969zahRo8zSpUvjHus0q+e3c+dOc95555n+/fubkpISc8YZZ5ibb745ps+LMca888475pJLLjE9e/Y0AwYMMPPmzYtZZpxLVs/xxRdfjPt3Lck0NDQYY/L/Gj7wwAPm1FNPNd27dzdVVVVm/fr10fsmTpxoZs6cGXP8r371K/MP//APpnv37uYzn/mM+f3vfx9zfzrvy1yzco6nnXZa3NdrwYIFxhhjDhw4YL7whS+Yk046yXTr1s2cdtppZvbs2bZdFDJh5fxuvPHG6LGDBg0yU6ZMMZs2bYr5eV5/DY0x5q233jKSzJ/+9KcuP8ttr2Gi/yci5zRz5kwzceLELo8ZPXq06d69uzn99NNjro0RyZ6zbAWMyfGaVgAAgCzQ5wUAAHgKwQsAAPAUghcAAOApBC8AAMBTCF4AAICnELwAAABPIXgBAACeQvACAAA8heAFAAB4CsELAADwFIIXAADgKQQvAADAU/4/mRzKRTGO33QAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.scatter(x, y2)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"_No, there is not_"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "HycYQm3tbvyf"
|
|
},
|
|
"source": [
|
|
"### Task 1b\n",
|
|
"\n",
|
|
"In class you have seen the formula for the Pearson Correlation:\n",
|
|
"$\\rho(a, b) = \\frac{\\sum_{i = 1}^{m} (a_i - \\bar{a})(b_i - \\bar{b})}{\\sqrt{\\sum_{i=1}^{m} (a_i - \\bar{a})^2\\sum_{i = 1}^{m}(b_i - \\bar{b})^2}} $, where $\\bar{a} = \\frac{1}{m}\\sum_{i=1}^{m} a_i$ and $\\bar{b} = \\frac{1}{m}\\sum_{i=1}^{m} b_i$.\n",
|
|
"\n",
|
|
"* Compute the Pearson Correlation $\\rho$ between `x` and the target `y1`.\n",
|
|
"* Compute the Pearson Correlation between `x` and `y2`.\n",
|
|
"* Check that you get the same result as the reference implementation"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {
|
|
"id": "EUoJXIrCy0p6"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"rho(x, y1): 0.9513\n",
|
|
"rho(x, y2): 0.7052\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"\n",
|
|
"def pearson(a, b):\n",
|
|
" return sum([(a[i] - a.mean()) * (b[i] - b.mean()) for i in range(0, len(a))]) / \\\n",
|
|
" np.sqrt(sum([(a[i] - a.mean()) ** 2 for i in range(0, len(a))]) * sum([(b[i] - b.mean()) ** 2 for i in range(0, len(b))]))\n",
|
|
"\n",
|
|
"print(f\"rho(x, y1): {pearson(x, y1):.4f}\")\n",
|
|
"print(f\"rho(x, y2): {pearson(x, y2):.4f}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {
|
|
"id": "L_NesuDQddHS"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"rho(x, y1): 0.9513\n",
|
|
"rho(x, y2): 0.7052\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# Refer to the output of this cell to check whether your implementation of rho\n",
|
|
"# is correct.\n",
|
|
"\n",
|
|
"from scipy.stats import pearsonr\n",
|
|
"\n",
|
|
"print(f\"rho(x, y1): {pearsonr(x, y1)[0]:.4f}\")\n",
|
|
"print(f\"rho(x, y2): {pearsonr(x, y2)[0]:.4f}\")"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "Kr9OWmCilrAv"
|
|
},
|
|
"source": [
|
|
"## 📢 **HAND-IN** 📢: Report in Moodle whether you solved this task."
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "rbjhdwFceHlL"
|
|
},
|
|
"source": [
|
|
"# Task 2 (2 Points): Univariate Linear Regression"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "ucnYGKbmecz_"
|
|
},
|
|
"source": [
|
|
"### Task 2a\n",
|
|
"\n",
|
|
"You will now implement Linear Regression with a single variable. In class you have seen that the underlying model is: $y = \\theta_0 + \\theta_1x$.\n",
|
|
"You also derived the maximum likelihood estimates for $\\theta_0$ and $\\theta_1$:\n",
|
|
"\n",
|
|
"* $\\hat{\\theta}_1 = \\frac{\\sum_{i=1}^{m} (x_i - \\bar{x})(y_i - \\bar{y})}{\\sum_{i=1}^{m}(x_i - \\bar{x})^2}$ with $\\bar{x} = \\frac{1}{m}\\sum_{i=1}^{m} x_i$ and $\\bar{y} = \\frac{1}{m}\\sum_{i=1}^{m} y_i$.\n",
|
|
"* $\\hat{\\theta}_0 = \\bar{y} - \\hat{\\theta}_1\\bar{x}$\n",
|
|
"\n",
|
|
"In the following cell, implement the `.fit` and `.predict` methods:\n",
|
|
"* In the `.predict` method you will have to apply the model to the input `x`\n",
|
|
"* In the `.fit` method you will have to compute $\\hat{\\theta}_0$ and $\\hat{\\theta}_1$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {
|
|
"id": "qS0Oa5Btgk74"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class UnivariateLinearRegression:\n",
|
|
"\n",
|
|
" def __init__(self):\n",
|
|
" self.theta_0: float = 0.\n",
|
|
" self.theta_1: float = 0.\n",
|
|
"\n",
|
|
" def predict(self, x):\n",
|
|
" # y = theta_0 + theta_1 * x\n",
|
|
" return self.theta_0 + self.theta_1 * x\n",
|
|
"\n",
|
|
" def fit(self, x, y):\n",
|
|
"\n",
|
|
" self.theta_1 = sum([(x[i] - x.mean()) * (y[i] - y.mean()) for i in range(0, len(x))]) / sum([(x[i] - x.mean()) ** 2 for i in range(0, len(x))])\n",
|
|
" self.theta_0 = y.mean() - self.theta_1 * x.mean()\n",
|
|
"\n",
|
|
" return self"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "9LzenH1UhLOs"
|
|
},
|
|
"source": [
|
|
"### Task 2b\n",
|
|
"\n",
|
|
"Fit your linear model to `x` and the target `y1`.\n",
|
|
"\n",
|
|
"* Create an instance of the class `UnivariateLinearRegression`\n",
|
|
"* fit the model using its `.fit` method\n",
|
|
"* get the predicted values, using `.predict`\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"metadata": {
|
|
"id": "UHGuDWAntd8R"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([ 0.81972252, -0.08621518, -0.65077025, -0.71108605, 1.25473192,\n",
|
|
" 1.50019396, 0.74489883, 1.04803555, 0.58943114, 1.55525673,\n",
|
|
" 1.26110578, -0.74510824, 1.36362466, -0.66899868, 1.04842757,\n",
|
|
" -0.31846659, 1.37787255, 0.58409243, -0.01238023, 0.29103911,\n",
|
|
" -0.68199134, -0.44521854, 0.9027792 , 0.84495782, 0.76648623,\n",
|
|
" 0.19478983, 1.70856978, 1.66816843, 0.9395856 , 0.85302538,\n",
|
|
" 0.94675253, 0.20772813, -0.41853885, 1.02827672, 0.54435158,\n",
|
|
" 0.0136006 , 0.4468457 , 1.44278502, 1.55271809, 0.1309298 ,\n",
|
|
" 0.65828127, 0.04228939, 0.71446262, 0.08186971, 0.21438391,\n",
|
|
" 1.44472561, -0.1913948 , 0.78573633, -0.54457236, 1.30253353,\n",
|
|
" 1.19015742, -0.16126428, 1.41070099, -0.60735898, 0.07744293,\n",
|
|
" -0.38107765, 0.35926577, 1.21292081, -0.18279715, -0.62351186,\n",
|
|
" 0.24629335, -0.26207004, -0.5279483 , 0.67999998, -0.01488642,\n",
|
|
" 0.90616057, -0.2595968 , 1.57262835, 0.14897817, -0.49157451,\n",
|
|
" 0.80034535, 1.53572082, 0.33468582, 1.60341403, 0.48153732,\n",
|
|
" 0.29730957, 0.77839929, 1.70335527, 1.58948153, 0.383213 ,\n",
|
|
" 1.1176936 , 0.47543535, 0.55411682, 1.1869188 , 0.27122316,\n",
|
|
" 1.0603401 , 1.00275116, 1.54782335, -0.46828955, 1.04684768,\n",
|
|
" 1.53638546, 1.63631745, -0.71557985, 1.3790104 , 1.66905593,\n",
|
|
" 1.60987763, -0.38481676, 1.64792032, 1.44388969, 1.27719337])"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = UnivariateLinearRegression()\n",
|
|
"model.fit(x, y1)\n",
|
|
"model.predict(x)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "elE3OfjHjBRO"
|
|
},
|
|
"source": [
|
|
"* implement the function `plot_model`\n",
|
|
"* use `plot_model` to plot your linear regression model given the true datapoints"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"metadata": {
|
|
"id": "T0eKDuRt1YOF"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGzCAYAAADnmPfhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcJUlEQVR4nO3deXgUVboG8LeyL2QBsnQCAQIyKLKE3QAKYpBNBsYZR1EEVBZRVERHYO4AgoyA4oijXmBQQQXc5iooQpRVBgggS5SwCTEQliQskQQCJJA+9w+mm3TSS1V3VXdV5/09Tx5N9enqUymgvpzzne9IQggBIiIiIoMI8HUHiIiIiJRg8EJERESGwuCFiIiIDIXBCxERERkKgxciIiIyFAYvREREZCgMXoiIiMhQGLwQERGRoTB4ISIiIkNh8EJELjVp0gQjRoywfr9p0yZIkoRNmzap9hmSJOHll19W7Xxa+PHHH9G1a1dERkZCkiRkZ2f7uktEtRKDFyKdW7JkCSRJsn6FhYXhd7/7HcaNG4eioiJfd0+R1atX6z5AceTatWt44IEHUFxcjDfffBMff/wxGjdurPnnfvbZZxg6dCiaN28OSZLQs2dPzT+TSO+CfN0BIpJnxowZSE1NxdWrV7FlyxbMnz8fq1evRk5ODiIiIrzal7vuugtXrlxBSEiIovetXr0a7777rt0A5sqVKwgK0u8/Sbm5uTh+/DgWLVqEkSNHeu1z58+fj927d6NTp044f/681z6XSM/0+y8FEdno168fOnbsCAAYOXIk6tevj3/84x9YuXIlhgwZYvc9ZWVliIyMVL0vAQEBCAsLU/Wcap9PbWfOnAEAxMbGevVzP/74YzRo0AABAQFo1aqVVz+bSK84bURkUL169QIA5OXlAQBGjBiBOnXqIDc3F/3790dUVBQeeeQRAIDZbMa8efNw++23IywsDImJiRgzZgx+++03m3MKITBz5kw0bNgQERERuPvuu7F///4an+0o52XHjh3o378/6tati8jISLRp0wZvvfWWtX/vvvsuANhMg1nYy3nZu3cv+vXrh+joaNSpUwf33HMPtm/fbtPGMq22detWTJgwAfHx8YiMjMQf/vAHnD17VtbPcsOGDbjzzjsRGRmJ2NhYDBo0CAcPHrS+PmLECPTo0QMA8MADDzidvvn1118hSRLefPPNGq9t27YNkiThk08+kdUvAEhJSUFAAP+pJqqKIy9EBpWbmwsAqF+/vvXY9evX0adPH3Tv3h1z5861TieNGTMGS5YswWOPPYZnn30WeXl5eOedd7B3715s3boVwcHBAICpU6di5syZ6N+/P/r37489e/bg3nvvRUVFhcv+rF27Fvfddx+SkpLw3HPPwWQy4eDBg1i1ahWee+45jBkzBqdPn8batWvx8ccfuzzf/v37ceeddyI6OhovvfQSgoODsXDhQvTs2RM//PADunTpYtP+mWeeQd26dTFt2jQcO3YM8+bNw7hx4/DZZ585/Zx169ahX79+aNq0KV5++WVcuXIFb7/9Nrp164Y9e/agSZMmGDNmDBo0aIBXX30Vzz77LDp16oTExES752vatCm6deuGZcuW4fnnn7d5bdmyZYiKisKgQYNcXj8ROSGISNcWL14sAIh169aJs2fPihMnTohPP/1U1K9fX4SHh4uTJ08KIYQYPny4ACAmTZpk8/7//Oc/AoBYtmyZzfHMzEyb42fOnBEhISFiwIABwmw2W9v99a9/FQDE8OHDrcc2btwoAIiNGzcKIYS4fv26SE1NFY0bNxa//fabzedUPdfTTz8tHP2zA0BMmzbN+v3gwYNFSEiIyM3NtR47ffq0iIqKEnfddVeNn09GRobNZz3//PMiMDBQXLhwwe7nWaSlpYmEhARx/vx567GffvpJBAQEiGHDhtW45i+++MLp+YQQYuHChQKAOHjwoPVYRUWFiIuLs/k5KnX77beLHj16uP1+In/BsUgig8jIyEB8fDxSUlLw0EMPoU6dOvjqq6/QoEEDm3Zjx461+f6LL75ATEwMevfujXPnzlm/OnTogDp16mDjxo0AboxAVFRU4JlnnrGZzhk/frzLvu3duxd5eXkYP358jZyQqueSq7KyEt9//z0GDx6Mpk2bWo8nJSXh4YcfxpYtW1BaWmrzntGjR9t81p133onKykocP37c4ecUFBQgOzsbI0aMQL169azH27Rpg969e2P16tWK+w4Af/7znxEWFoZly5ZZj3333Xc4d+4chg4d6tY5iegmThsRGcS7776L3/3udwgKCkJiYiJatGhRIxciKCgIDRs2tDl25MgRlJSUICEhwe55LYmolod88+bNbV6Pj49H3bp1nfbNMoWlVkLp2bNncfnyZbRo0aLGa7fddhvMZjNOnDiB22+/3Xq8UaNGNu0sfa6e11OV5Zodfc53333nVtJzbGwsBg4ciOXLl+OVV14BcGPKqEGDBtZcJSJyH4MXIoPo3LmzdbWRI6GhoTUCGrPZjISEBJtRgKri4+NV66MvBQYG2j0uhPByT24YNmwYvvjiC2zbtg2tW7fG119/jaeeeorJt0QqYPBC5OeaNWuGdevWoVu3bggPD3fYzlJw7ciRIzZTNWfPnnU6emH5DADIyclBRkaGw3Zyp5Di4+MRERGBw4cP13jt0KFDCAgIQEpKiqxzOWO5ZkefExcX5/ZS8759+yI+Ph7Lli1Dly5dcPnyZTz66KMe9ZeIbuCvAER+7s9//jMqKyut0xdVXb9+HRcuXABwI6cmODgYb7/9ts1oxbx581x+Rvv27ZGamop58+ZZz2dR9VyWQKB6m+oCAwNx7733YuXKlTh27Jj1eFFREZYvX47u3bsjOjraZb9cSUpKQlpaGj788EObPuXk5OD7779H//793T53UFAQhgwZgs8//xxLlixB69at0aZNG4/7TEQceSHyez169MCYMWMwa9YsZGdn495770VwcDCOHDmCL774Am+99Rb+9Kc/IT4+Hi+++CJmzZqF++67D/3798fevXuxZs0axMXFOf2MgIAAzJ8/HwMHDkRaWhoee+wxJCUl4dChQ9i/fz++++47AECHDh0AAM8++yz69OmDwMBAPPTQQ3bPOXPmTKxduxbdu3fHU089haCgICxcuBDl5eV47bXXVPv5vP766+jXrx/S09PxxBNPWJdKx8TEeLyVwbBhw/DPf/4TGzduxJw5c9w6x+bNm7F582YAN0bBysrKMHPmTAA3Kh3fddddHvWRyJB8vNqJiFywLAX+8ccfnbYbPny4iIyMdPj6v/71L9GhQwcRHh4uoqKiROvWrcVLL70kTp8+bW1TWVkppk+fLpKSkkR4eLjo2bOnyMnJEY0bN3a6VNpiy5Ytonfv3iIqKkpERkaKNm3aiLffftv6+vXr18Uzzzwj4uPjhSRJNsumUW2ptBBC7NmzR/Tp00fUqVNHREREiLvvvlts27ZN1s/HUR/tWbdunejWrZsIDw8X0dHRYuDAgeLAgQN2zydnqXRVt99+uwgICLAuaVdq2rRpAoDdr+o/L6LaQhLCR9lsRES1QLt27VCvXj2sX7/e110h8hvMeSEi0siuXbuQnZ2NYcOG+borRH6FIy9ERCrLycnB7t278cYbb+DcuXP49ddfbTaerKysdLnvUp06dVCnTh2tu0pkSBx5ISJS2b///W889thjuHbtGj755JMaO2afOHECSUlJTr/mzp3ro94T6R9HXoiIvOzq1avYsmWL0zZNmza1qbdDRDcxeCEiIiJD4bQRERERGYrfFakzm804ffo0oqKi3NrNloiIiLxPCIGLFy8iOTnZ5R5gfhe8nD59WpU9T4iIiMj7Tpw4gYYNGzpt43fBS1RUFIAbF6/G3idERESkvdLSUqSkpFif4874XfBimSqKjo5m8EJERGQwclI+mLBLREREhsLghYiIiAyFwQsREREZit/lvMghhMD169dRWVnp666QSgIDAxEUFMTl8UREtUCtC14qKipQUFCAy5cv+7orpLKIiAgkJSUhJCTE110hIiIN1argxWw2Iy8vD4GBgUhOTkZISAh/U/cDQghUVFTg7NmzyMvLQ/PmzV0WOCIiIuOqVcFLRUUFzGYzUlJSEBER4evukIrCw8MRHByM48ePo6KiosYuvkRE5D9q5a+n/K3cP/G+EhHVDrVq5IWIiIhsVZoFduYV48zFq0iICkPn1HoIDNB3SgWDFyIioloqM6cA0785gIKSq9ZjSTFhmDawJfq2SvJhz5zjODvV0KRJE8ybN8/6vSRJWLFihUfnVOMcRESknsycAoxduscmcAGAwpKrGLt0DzJzCnzUM9cYvJBLBQUF6Nevn6y2L7/8MtLS0jw6BxERaavSLDD9mwMQdl6zHJv+zQFUmu218D0GL36qoqJCtXOZTCaEhob6/BxERKSOnXnFNUZcqhIACkquYmdesfc6pUCtD16EECgrK/PJlxDyI9qePXti3LhxGDduHGJiYhAXF4cpU6ZYz9GkSRO88sorGDZsGKKjozF69GgAwJYtW3DnnXciPDwcKSkpePbZZ1FWVmY975kzZzBw4ECEh4cjNTUVy5Ytq/HZ1ad8Tp48iSFDhqBevXqIjIxEx44dsWPHDixZsgTTp0/HTz/9BEmSIEkSlixZYvcc+/btQ69evRAeHo769etj9OjRuHTpkvX1ESNGYPDgwZg7dy6SkpJQv359PP3007h27ZrsnxkREdl35qLjwMWddt5W6xN2L1++jDp16vjksy9duoTIyEjZ7T/88EM88cQT2LlzJ3bt2oXRo0ej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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"def plot_model(x, y_pred, y_true, title):\n",
|
|
" plt.title(title)\n",
|
|
" plt.plot(x, y_pred, label=\"prediction\", c=\"black\")\n",
|
|
" plt.scatter(x, y_true, label=\"true\")\n",
|
|
" plt.legend()\n",
|
|
" plt.show()\n",
|
|
"\n",
|
|
"plot_model(x, model.predict(x), y1, \"Prediction of y_1\")"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "tt2RnAwAG1n9"
|
|
},
|
|
"source": [
|
|
"* Fit another linear model to `x` and `y2`\n",
|
|
"* get the predicted values\n",
|
|
"* plot the model with `plot_model`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"metadata": {
|
|
"id": "Ccq3GI17Ga2x"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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OXPEl19+KQoKCsTevXvFsGHDRHh4uDh48KCljdY/Q7NevXqJBx98sN5xtX2G5eXllnseAPHqq6+K/fv3i5MnTwohhJgxY4Z4+OGHLe3NS6X//Oc/i8OHD4slS5bYXCrt6D3zFoOX/xk9erQAUO9r27Ztljb4Xy0MM5PJJJ5//nmRmJgowsLCRL9+/cTRo0etznvp0iUxfPhwER0dLWJiYsQjjzxiFRApyVlfCgsL612zEELMnDlTJCcni5qamnrn/OKLL0R6erqIjo4WUVFRonPnzmLp0qU228rN3es7deqUuOuuu0RcXJwICwsTt956q/jzn/9sVedFCCFOnDghBg4cKCIiIkSTJk3EU089ZbXMWEnuXuO2bdts/lwDEIWFhUII33+GixcvFs2bNxehoaEiIyND7Nq1y/JY7969xejRo63af/jhh+I3v/mNCA0NFR07dhSff/651eOu/F4qzZ1rbNGihc3Pa/bs2UIIIa5evSruueceER8fL0JCQkSLFi3E2LFjJbspeMKd65syZYqlbWJiohg0aJDYt2+f1fm0/hkKIcSRI0cEAPHVV1/VO5faPkN7/0+Yr2n06NGid+/e9Z6Tnp4uQkNDRatWrazujWaO3jNv6YRQeE0rERERkRdY54WIiIg0hcELERERaQqDFyIiItIUBi9ERESkKQxeiIiISFMYvBAREZGmMHghIiIiTWHwQkRERJrC4IWIiIg0hcELERERaQqDFyIiItKU/w/pGHQYbFLB5wAAAABJRU5ErkJggg==",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = UnivariateLinearRegression()\n",
|
|
"model.fit(x, y2)\n",
|
|
"plot_model(x, model.predict(x), y2, \"Prediction of y_2\")"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "E0i3gWvIl7nY"
|
|
},
|
|
"source": [
|
|
"## 📢 **HAND-IN** 📢: A PDF document containing the following:\n",
|
|
"\n",
|
|
"* both plots containing the linear regression model and true datapoints\n",
|
|
"* a short (2-3 sentences) interpretation of the curves: why do you think they look the way\n",
|
|
"they do? can you draw any conclusions?\n",
|
|
"\n",
|
|
"**Solutions for Tasks 2, 3 and 4 should be in the same document: you will only upload 1 document with your solutions for all 3 tasks!**"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
" - _The prediction of $y_1$ is very accurate because there seems to be a linear relation between $x$ and $y_1$._\n",
|
|
" - _The prediction of $y_2$ looks very inaccurate - though, there seems to be a non-linear relation between_\n",
|
|
" - _The prediction of $y_2$ probably has an $R^2$ value nearby $0$._"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "0TK0Pi4ClphY"
|
|
},
|
|
"source": [
|
|
"# Task 3 (4 Points): Univariate Linear Regression using Stochastic Gradient Descent"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "YL31gChVqLpC"
|
|
},
|
|
"source": [
|
|
"### Task 3a\n",
|
|
"\n",
|
|
"In class you have seen an alternative version to estimate the parameters $\\theta_i$ of the linear regression models by using Gradient Descent.\n",
|
|
"\n",
|
|
"For the univariate linear regression model, the stochastic gradient descent updates look like this:\n",
|
|
"* $\\theta_{0}^{(t+1)} = \\theta_{0}^{(t)} - \\alpha (\\theta_{0}^{(t)} + \\theta_{1}^{(t)} x_t - y_t)$\n",
|
|
"* $\\theta_{1}^{(t+1)} = \\theta_{1}^{(t)} - \\alpha (\\theta_{0}^{(t)} + \\theta_{1}^{(t)} x_t - y_t) x_t$\n",
|
|
"\n",
|
|
"Here $\\alpha$ is the learning rate, and $(x_t, y_t)$ is the data point sampled\n",
|
|
"at time $t$.\n",
|
|
"\n",
|
|
"\n",
|
|
"In the following cell, implement the `.fit` and `.predict` methods:\n",
|
|
"* In the `.predict` method you will have to apply the model to the input `x`.\n",
|
|
"* In the `.fit` method you will have to implement the update equations for\n",
|
|
"$\\theta_0$ and $\\theta_1$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"metadata": {
|
|
"id": "wJMHvQmXmVKr"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class SGDUnivariateLinearRegression:\n",
|
|
"\n",
|
|
" def __init__(self):\n",
|
|
" self.theta_0: float = 0.\n",
|
|
" self.theta_1: float = 0.\n",
|
|
" self.rng = np.random.default_rng(RANDOM_SEED)\n",
|
|
"\n",
|
|
" def predict(self, x):\n",
|
|
" # y = theta_0 + theta_1 * x\n",
|
|
" return self.theta_0 + self.theta_1 * x\n",
|
|
"\n",
|
|
" def fit(self, x, y, n_iter: int = 100, learning_rate: float = 1.0):\n",
|
|
" for t in range(n_iter):\n",
|
|
" sample_ix = self.rng.integers(0, len(x))\n",
|
|
"\n",
|
|
" xt = x[sample_ix]\n",
|
|
" yt = y[sample_ix]\n",
|
|
"\n",
|
|
" # TODO: update self.theta_0 and self.theta_1 SIMULTANEOUSLY (!!!) according to their update equations\n",
|
|
" theta_0 = self.theta_0 - learning_rate * (self.theta_0 + self.theta_1 * xt - yt)\n",
|
|
" self.theta_1 = self.theta_1 - learning_rate * (self.theta_0 + self.theta_1 * xt - yt) * xt\n",
|
|
" self.theta_0 = theta_0\n",
|
|
"\n",
|
|
" return self"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "MHLBmTm4vK9p"
|
|
},
|
|
"source": [
|
|
"### Task 3b\n",
|
|
"\n",
|
|
"Run SGD for `x` and the target `y1` and compute the mean squared error (MSE).\n",
|
|
"The MSE is defined as: $\\frac{1}{n}\\sum_{i=1}^{n} (\\hat{y}_i - y_i)^2$, where\n",
|
|
"$\\hat{y}$ are the model predictions.\n",
|
|
"\n",
|
|
"* Create an instance of the class `SGDUnivariateLinearRegression`\n",
|
|
"* fit the model using its `.fit` method\n",
|
|
"* get the predicted values, using `.predict`\n",
|
|
"* implement the `mse` function\n",
|
|
"* compute the MSE of your predictions"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"metadata": {
|
|
"id": "CZ1szyQhK9so"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"def mse(y_pred, y_true):\n",
|
|
" return 1 / len(y_pred) * sum([(y_pred[i] - y_true[i]) ** 2 for i in range(0, len(y_pred))])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"metadata": {
|
|
"id": "V35vBU5Yti8Z"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"0.2393998747452736"
|
|
]
|
|
},
|
|
"execution_count": 26,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = SGDUnivariateLinearRegression()\n",
|
|
"model.fit(x, y1)\n",
|
|
"mse(y1, model.predict(x))"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "hSsE1o6GwA3K"
|
|
},
|
|
"source": [
|
|
"### Task 3c\n",
|
|
"\n",
|
|
"You will now plot the learning curves for different learning rates $\\alpha$.\n",
|
|
"A learning curves shows how a model's performance changes with increasing number of update steps.\n",
|
|
"In our case we will plot the model's MSE as a function of the number of update\n",
|
|
"steps `n_iter` for different values of `learning_rate`.\n",
|
|
"\n",
|
|
"In the following cell we setup most of the scaffold to create this plot. Follow\n",
|
|
"the instructions in the comments to finish the plots."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"metadata": {
|
|
"id": "4Rr5ix7LNISB"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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/Lp169BoNPzwww906tQJo9HIVVddVeoX+U8//UTbtm0xmUz079+f5ORk576///6bvn37EhYWRmBgIL1792br1q1uucdi3bt354033uDuu+/GYDBU6Jhly5ZhNptZtGgR7du35+677+axxx5zrmQOMGfOHPr378/kyZNp27YtL7/8Ml27duW9995z160IUatIclOFikdL5cskfkKUKS8vj0mTJrFlyxbWrl2LVqvljjvuwG63l3vc5MmTmT17Nn///Tf16tXj1ltvxWKxOPfn5+cza9YslixZwvr160lKSuLJJ5907s/JyWH06NFs2LCBv/76i5YtWzJw4EBycnLKvOayZcswmUzlPv74448rf1FKiI+P5/rrr0ev1zu39evXj/3795ORkeEsExcX53Jcv379iI+Pr9JYhKitvNQOwJMUj5aSDsVCDYqiUGBRJ7H28dah0WgqVHbIkCEuzxctWkS9evXYs2cPHTp0KPO4adOm0bdvXwA++eQTGjZsyFdffcVdd90FgMViYf78+TRv3hyA8ePHM336dOfxN954o8v5FixYQFBQEL///juDBg0q9Zq33XYbPXv2LPd+GjRoUO7+ykpJSaFp06Yu2yIiIpz7goODSUlJcW4rWSYlJaVKYxGitpLkpgoVj5bKlw7FQgUFFhvtpv6kyrX3TO/n/PxfysGDB5k6dSqbNm0iPT3dWWOTlJRUbnLTq1cv588hISG0bt2avXv3Orf5+vo6ExuAqKgo0tLSnM9TU1N5/vnnWbduHWlpadhsNvLz80lKSirzmv7+/vj7+1fovoQQNYc0S1Wh4rWlLDaFIqs0TQlRmltvvZVz586xcOFCNm3axKZNmwAwm81XdF5vb2+X5xqNBkVRnM9Hjx5NYmIic+bMYePGjSQmJhIaGlruddVoloqMjCQ1NdVlW/Hz4k7JZZWpaKdlITyd1NxUIb/zo6XAMZGfwUtXTmkhqpaPt4490/updu2KOHv2LPv372fhwoVcd911AGzYsKFCx/711180atQIgIyMDA4cOEDbtm0rHOOff/7J+++/z8CBAwE4ceIE6enp5R6jRrNUr169eO6557BYLM6Ebc2aNbRu3Zrg4GBnmbVr1zJx4kTncWvWrHGp3RKiLpPkpgp56bQYvLQUWe3kFlkJ9tNf+iAhqohGo6lw05BagoODCQ0NZcGCBURFRZGU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nzlzpkuZmnyfAPfee+9F99C/f3+XMrX9/QRK/T3VaDS88cYbzjI1/f2syPdHVf1tXbduHV27dsVgMNCiRQsWL15cNTehiFKtWLFC0ev1yqJFi5Tdu3crY8eOVYKCgpTU1FS1Q6uQfv36KR9//LGya9cuJTExURk4cKDSqFEjJTc311mmd+/eytixY5Xk5GTnIysry7nfarUqHTp0UOLi4pRt27Ypq1atUsLCwpQpU6aocUulmjZtmtK+fXuXezhz5oxz/0MPPaRER0cra9euVbZs2aJcddVVytVXX+3cXxvuUVEUJS0tzeUe16xZowDKb7/9pihK7XwvV61apTz33HPKl19+qQDKV1995bJ/5syZSmBgoPL1118r27dvV2677TaladOmSkFBgbNM//79lc6dOyt//fWX8scffygtWrRQhg0b5tyflZWlREREKMOHD1d27dqlfPrpp4qPj4/ywQcfVNdtlnufmZmZSlxcnLJy5Upl3759Snx8vNKjRw8lNjbW5RyNGzdWpk+f7vL+lvxdrun3qSiKMnr0aKV///4u93Du3DmXMrX9/VQUxeX+kpOTlUWLFikajUY5fPiws0xNfz8r8v1RFX9bjxw5ovj6+iqTJk1S9uzZo7z77ruKTqdTVq9efcX3IMlNGXr06KE88sgjzuc2m02pX7++MmPGDBWjunxpaWkKoPz+++/Obb1791YmTJhQ5jGrVq1StFqtkpKS4tw2b948JSAgQCkqKnJnuBU2bdo0pXPnzqXuy8zMVLy9vZXPP//cuW3v3r0KoMTHxyuKUjvusTQTJkxQmjdvrtjtdkVRav97+c8vCbvdrkRGRipvvPGGc1tmZqZiMBiUTz/9VFEURdmzZ48CKH///bezzI8//qhoNBrl1KlTiqIoyvvvv68EBwe73OPTTz+ttG7d2s13VLrSvgz/afPmzQqgHD9+3LmtcePGyltvvVXmMbXhPkePHq3cfvvtZR7jqe/n7bffrtx4440u22rb+/nP74+q+tv61FNPKe3bt3e51tChQ5V+/fpdcczSLFUKs9lMQkICcXFxzm1arZa4uDji4+NVjOzyZWVlARASEuKyfdmyZYSFhdGhQwemTJlCfn6+c198fDwdO3YkIiLCua1fv35kZ2eze/fu6gm8Ag4ePEj9+vVp1qwZw4cPJykpCYCEhAQsFovL+9imTRsa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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"n_iters = [50, 100, 200, 500, 1000, 2000]\n",
|
|
"learning_rates = [1., .1, .01]\n",
|
|
"\n",
|
|
"# we plot the MSE achieved by the closed form model as a reference\n",
|
|
"closed_form = UnivariateLinearRegression()\n",
|
|
"closed_form.fit(x, y1)\n",
|
|
"mse_base = mse(y_pred=closed_form.predict(x), y_true=y1)\n",
|
|
"plt.plot(n_iters, np.ones_like(n_iters) * mse_base, label=\"closed form\", linestyle='--', c='b')\n",
|
|
"\n",
|
|
"for alpha in learning_rates:\n",
|
|
" mses = []\n",
|
|
" for n_iter in n_iters:\n",
|
|
" # fit a SGDUnivariateLinearRegression model using n_iter=n_iter and\n",
|
|
" # learning_rate=alpha\n",
|
|
" # compute its mse and append the mse value to the mses list\n",
|
|
" model = SGDUnivariateLinearRegression()\n",
|
|
" model.fit(x, y1, n_iter=n_iter, learning_rate=alpha)\n",
|
|
"\n",
|
|
" mse_ = mse(model.predict(x), y1)\n",
|
|
" mses.append(mse_)\n",
|
|
" plt.plot(n_iters, mses, label=f\"alpha = {alpha:.2f}\")\n",
|
|
"\n",
|
|
"plt.xlabel(\"n_iter\")\n",
|
|
"plt.ylabel(\"MSE\")\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "SmCkMMJyEEgV"
|
|
},
|
|
"source": [
|
|
"## 📢 **HAND-IN** 📢: A PDF document containing the following:\n",
|
|
"\n",
|
|
"* the final plot containing learning curves\n",
|
|
"* a short (2-3 sentences) interpretation of the curves: why do you think they look the way\n",
|
|
"they do? can you draw any conclusions?\n",
|
|
"\n",
|
|
"In case you were not able to arrive at the final plot:\n",
|
|
"\n",
|
|
"* include screenshots of the code you wrote so we can assign partial credit\n",
|
|
"\n",
|
|
"**Solutions for Tasks 2, 3 and 4 should be in the same document: you will only upload 1 document with your solutions for all 3 tasks!**\n"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"- _The learning rate $1.0$ is too high causing the function to diverge from the actual results_\n",
|
|
"- _The best learning rate seems to be $0.01$._"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "dgrNtwsPyigH"
|
|
},
|
|
"source": [
|
|
"# Task 4 (3 Points): Multivariate Linear Regression"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "_sPWegXCg2y1"
|
|
},
|
|
"source": [
|
|
"In this task we will apply linear regression to non-synthetic data.\n",
|
|
"The variable `X` is a `pandas` `Dataframe` containing features and `y` contains\n",
|
|
"the target. Read through the description to get an idea of the different variables."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {
|
|
"id": "djGUQ3kVx9ob"
|
|
},
|
|
"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": [
|
|
"from sklearn.datasets import load_diabetes\n",
|
|
"\n",
|
|
"data = load_diabetes(as_frame=True)\n",
|
|
"\n",
|
|
"X = data['data']\n",
|
|
"y = data['target']\n",
|
|
"description = data['DESCR']\n",
|
|
"\n",
|
|
"print(description)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "byOVt9t9_2c7"
|
|
},
|
|
"source": [
|
|
"### Task 4a\n",
|
|
"\n",
|
|
"Implement linear regression using `sklearn`.\n",
|
|
"\n",
|
|
"* create an instance of the class `sklearn.linear_model.LinearRegression`. Refer to the documentation at: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html\n",
|
|
"* call its `.fit` method\n",
|
|
"* get the predicted values with `.predict`"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"metadata": {
|
|
"id": "eyiU4nCQBovr"
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"from sklearn.linear_model import LinearRegression"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"metadata": {
|
|
"id": "G4AktC189PAc"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([206.11667725, 68.07103297, 176.88279035, 166.91445843,\n",
|
|
" 128.46225834, 106.35191443, 73.89134662, 118.85423042,\n",
|
|
" 158.80889721, 213.58462442, 97.07481511, 95.10108423,\n",
|
|
" 115.06915952, 164.67656842, 103.07814257, 177.17487964,\n",
|
|
" 211.7570922 , 182.84134823, 148.00326937, 124.01754066,\n",
|
|
" 120.33362197, 85.80068961, 113.1134589 , 252.45225837,\n",
|
|
" 165.48779206, 147.71997564, 97.12871541, 179.09358468,\n",
|
|
" 129.05345958, 184.7811403 , 158.71516713, 69.47575778,\n",
|
|
" 261.50385365, 112.82234716, 78.37318279, 87.66360785,\n",
|
|
" 207.92114668, 157.87641942, 240.84708073, 136.93257456,\n",
|
|
" 153.48044608, 74.15426666, 145.62742227, 77.82978811,\n",
|
|
" 221.07832768, 125.21957584, 142.6029986 , 109.49562511,\n",
|
|
" 73.14181818, 189.87117754, 157.9350104 , 169.55699526,\n",
|
|
" 134.1851441 , 157.72539008, 139.11104979, 72.73116856,\n",
|
|
" 207.82676612, 80.11171342, 104.08335958, 134.57871054,\n",
|
|
" 114.23552012, 180.67628279, 61.12935368, 98.72404613,\n",
|
|
" 113.79577026, 189.95771575, 148.98351571, 124.34152283,\n",
|
|
" 114.8395504 , 121.99957578, 73.91017087, 236.71054289,\n",
|
|
" 142.31126791, 124.51672384, 150.84073896, 127.75230658,\n",
|
|
" 191.16896496, 77.05671154, 166.82164929, 91.00591229,\n",
|
|
" 174.75156797, 122.83451589, 63.27231315, 151.99867317,\n",
|
|
" 53.72959077, 166.0050229 , 42.6491333 , 153.04229493,\n",
|
|
" 80.54701716, 106.90148495, 79.93968011, 187.1672654 ,\n",
|
|
" 192.5989033 , 61.07398313, 107.4076912 , 125.04307496,\n",
|
|
" 207.72402726, 214.21248827, 123.47464895, 139.16439034,\n",
|
|
" 168.21372017, 106.92902558, 150.64748328, 157.92364009,\n",
|
|
" 152.75958287, 116.22381927, 73.03167734, 155.67052006,\n",
|
|
" 230.1417777 , 143.49797317, 38.09587272, 121.8593267 ,\n",
|
|
" 152.79404663, 207.99702587, 291.23106133, 189.17571129,\n",
|
|
" 214.02877593, 235.18106509, 165.38480498, 151.2469168 ,\n",
|
|
" 156.57659557, 200.44066818, 219.35193167, 174.78830391,\n",
|
|
" 169.23118221, 187.87537099, 57.49340026, 108.54836058,\n",
|
|
" 92.68731024, 210.87347343, 245.47097701, 69.84285129,\n",
|
|
" 113.03485904, 68.42650654, 141.69639374, 239.46240737,\n",
|
|
" 58.37858726, 235.47123197, 254.92309543, 253.30708899,\n",
|
|
" 155.51063293, 230.55961445, 170.44330954, 117.9953395 ,\n",
|
|
" 178.55406527, 240.07119308, 190.33892524, 228.66470581,\n",
|
|
" 114.24456339, 178.36552308, 209.091817 , 144.85615197,\n",
|
|
" 200.65926745, 121.34295733, 150.50993019, 199.01879825,\n",
|
|
" 146.27926469, 124.02163345, 85.25913019, 235.16173729,\n",
|
|
" 82.1730808 , 231.29474031, 144.36940116, 197.04628448,\n",
|
|
" 146.99841953, 77.18813284, 59.37368356, 262.68557988,\n",
|
|
" 225.12900796, 220.20301952, 46.59651844, 88.10194612,\n",
|
|
" 221.77450036, 97.25199783, 164.48838425, 119.90096817,\n",
|
|
" 157.80220788, 223.08012207, 99.59081773, 165.84386951,\n",
|
|
" 179.47680741, 89.83353846, 171.82590335, 158.36419935,\n",
|
|
" 201.48185539, 186.39194958, 197.47424761, 66.57371647,\n",
|
|
" 154.59985312, 116.18319159, 195.91755793, 128.04834496,\n",
|
|
" 91.20395862, 140.57223765, 155.22669143, 169.70326581,\n",
|
|
" 98.7573858 , 190.14568824, 142.51704894, 177.27157771,\n",
|
|
" 95.30812216, 69.06191507, 164.16391317, 198.0659024 ,\n",
|
|
" 178.25996632, 228.58539684, 160.67104137, 212.28734795,\n",
|
|
" 222.4833913 , 172.85421282, 125.27946793, 174.72103207,\n",
|
|
" 152.38094643, 98.58135665, 99.73771331, 262.29507095,\n",
|
|
" 223.74033222, 221.33976142, 133.61470602, 145.42828204,\n",
|
|
" 53.04569008, 141.82052358, 153.68617582, 125.22290891,\n",
|
|
" 77.25168449, 230.26180811, 78.9090807 , 105.2051755 ,\n",
|
|
" 117.99622779, 99.06233889, 166.55796947, 159.34137227,\n",
|
|
" 158.27448255, 143.05684078, 231.55890118, 176.64724258,\n",
|
|
" 187.23580712, 65.39099908, 190.66218796, 179.75181691,\n",
|
|
" 234.9080532 , 119.15669025, 85.63551834, 100.8597527 ,\n",
|
|
" 140.41937377, 101.83524022, 120.66560385, 83.0664276 ,\n",
|
|
" 234.58488012, 245.15862773, 263.26954282, 274.87127261,\n",
|
|
" 180.67257769, 203.05642297, 254.21625849, 118.44300922,\n",
|
|
" 268.45369506, 104.83843473, 115.86820464, 140.45857194,\n",
|
|
" 58.46948192, 129.83145265, 263.78607272, 45.00934573,\n",
|
|
" 123.28890007, 131.0856888 , 34.89181681, 138.35467112,\n",
|
|
" 244.30103923, 89.95923929, 192.07096194, 164.33017386,\n",
|
|
" 147.74779723, 191.89092557, 176.44360299, 158.3490221 ,\n",
|
|
" 189.19166962, 116.58117777, 111.449754 , 117.45232726,\n",
|
|
" 165.79598354, 97.80405886, 139.54451791, 84.17319946,\n",
|
|
" 159.93677518, 202.39971737, 80.48131518, 146.64558568,\n",
|
|
" 79.05314048, 191.33777472, 220.67516721, 203.75017281,\n",
|
|
" 92.86459928, 179.15576252, 81.79874055, 152.8290929 ,\n",
|
|
" 76.80052219, 97.79590831, 106.8371012 , 123.83461591,\n",
|
|
" 218.13908293, 126.01937664, 206.7587966 , 230.5767944 ,\n",
|
|
" 122.05921633, 135.67824405, 126.37042532, 148.49374458,\n",
|
|
" 88.07147107, 138.95823614, 203.8691938 , 172.55288732,\n",
|
|
" 122.95701477, 213.92310163, 174.89158814, 110.07294222,\n",
|
|
" 198.36584973, 173.25229067, 162.64748776, 193.31578983,\n",
|
|
" 191.53493643, 284.13932209, 279.31133207, 216.00823829,\n",
|
|
" 210.08668656, 216.21612991, 157.01450004, 224.06431372,\n",
|
|
" 189.06103154, 103.56515315, 178.70270016, 111.81862434,\n",
|
|
" 291.00196609, 182.64651752, 79.33315426, 86.33029851,\n",
|
|
" 249.1510082 , 174.51537682, 122.10291074, 146.2718871 ,\n",
|
|
" 170.65483847, 183.497196 , 163.36806262, 157.03297709,\n",
|
|
" 144.42614949, 125.30053093, 177.50251197, 104.57681546,\n",
|
|
" 132.17560518, 95.06210623, 249.89755705, 86.23824126,\n",
|
|
" 61.99847009, 156.81295053, 192.32218372, 133.85525804,\n",
|
|
" 93.67249793, 202.49572354, 52.54148927, 174.82799914,\n",
|
|
" 196.91468873, 118.06336979, 235.29941812, 165.09438096,\n",
|
|
" 160.41761959, 162.37786753, 254.05587268, 257.23492156,\n",
|
|
" 197.5039462 , 184.06877122, 58.62131994, 194.39216636,\n",
|
|
" 110.775815 , 142.20991224, 128.82520996, 180.13082199,\n",
|
|
" 211.26488624, 169.59494046, 164.33851796, 136.23374077,\n",
|
|
" 174.51001028, 74.67587343, 246.29432383, 114.14494406,\n",
|
|
" 111.54552901, 140.0224376 , 109.99895704, 91.37283987,\n",
|
|
" 163.01540596, 75.16804478, 254.06119047, 53.47338214,\n",
|
|
" 98.48397565, 100.66315554, 258.58683032, 170.67256752,\n",
|
|
" 61.91771186, 182.31148421, 171.26948629, 189.19505093,\n",
|
|
" 187.18494664, 87.12170524, 148.37964317, 251.35815403,\n",
|
|
" 199.69656904, 283.63576862, 50.85911237, 172.14766276,\n",
|
|
" 204.05976093, 174.16540137, 157.93182911, 150.50028158,\n",
|
|
" 232.97445368, 121.5814873 , 164.54245461, 172.67625919,\n",
|
|
" 226.7768891 , 149.46832104, 99.13924946, 80.43418456,\n",
|
|
" 140.16148637, 191.90710484, 199.28001608, 153.63277325,\n",
|
|
" 171.80344337, 112.11054883, 162.60002916, 129.84290324,\n",
|
|
" 258.03100468, 100.70810916, 115.87608197, 122.53559675,\n",
|
|
" 218.1797988 , 60.94350929, 131.09296884, 119.48376601,\n",
|
|
" 52.60911672, 193.01756549, 101.05581371, 121.22668124,\n",
|
|
" 211.85894518, 53.44727472])"
|
|
]
|
|
},
|
|
"execution_count": 32,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = LinearRegression()\n",
|
|
"model.fit(X, y)\n",
|
|
"model.predict(X)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "qQUdYHOXpeLd"
|
|
},
|
|
"source": [
|
|
"### Task 4b\n",
|
|
"\n",
|
|
"The estimated parameters $\\theta$ of the linear model can be found in the `.coef_` member variable. The feature names can be found in the `.feature_names_in_` member variable. They are the same as the names of the columns of `X` and should be in the same order.\n",
|
|
"\n",
|
|
"Visualize the estimated parameters and the feature names in a bar plot.\n",
|
|
"\n",
|
|
"Using these, answer the following questions:\n",
|
|
"\n",
|
|
"* Which are the 3 most influential features?\n",
|
|
"* How do you interpret the sign of the coefficients?\n",
|
|
"* If you had to exclude 1 feature, which one would you select and why?"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"metadata": {
|
|
"id": "odXnubfHqrfc"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<BarContainer object of 10 artists>"
|
|
]
|
|
},
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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/vrrqlq16knL8/LydPXVVyssLMw7LyUlRfn5+Tp8+LB3THJyss96KSkpysvLO+1+i4uL5fF4fCYAAHBh8luZMcaod+/e6t+/v5KSkk45xu12KyYmxmde2WO3213umLLlp5Kdna3IyEjvFBcX958cCgAAqMTOucxkZmYqKCio3Gnbtm2aNm2ajhw5oqysLH/kLldWVpaKioq80969eys8AwAAqBih57rC0KFD1bt373LHNGnSRMuXL1deXp4cDofPsqSkJPXs2VPz5s1TbGysCgoKfJaXPY6NjfX+91RjypafisPhOGm/AADgwnTOZaZOnTqqU6fOGcdNnTpVTzzxhPfx/v37lZKSojfffFMdOnSQJLlcLo0cOVLHjx9XlSpVJEm5ubm65JJLFBUV5R2zbNkyZWRkeLeVm5srl8t1rtEBAMAF6JzLzNlq2LChz+Pq1atLkpo2baoGDRpIku68806NGzdOffr00YgRI7RlyxZNmTJFzz33nHe9QYMGqXPnzpo0aZJSU1O1cOFCrV271ufj2wAA4I8roHcAjoyM1NKlS7Vr1y61b99eQ4cO1ZgxY9SvXz/vmI4dO2rBggWaNWuWWrdurXfeeUfvv/++LrvssgAmBwAAlUWQMcYEOoS/eTweRUZGqqioSE6nM9BxAGvEZy4OdIST7H46NdARAFSQs3395ruZAACA1SgzAADAapQZAABgNcoMAACwGmUGAABYjTIDAACsRpkBAABWo8wAAACrUWYAAIDVKDMAAMBqlBkAAGA1ygwAALAaZQYAAFiNMgMAAKxGmQEAAFajzAAAAKtRZgAAgNUoMwAAwGqUGQAAYDXKDAAAsBplBgAAWI0yAwAArEaZAQAAVqPMAAAAq1FmAACA1SgzAADAapQZAABgNcoMAACwGmUGAABYjTIDAACsRpkBAABWo8wAAACr+bXMLF68WB06dFBERISioqKUlpbms3zPnj1KTU1V1apVFR0drWHDhqmkpMRnzIoVK9SuXTs5HA41a9ZMc+fO9WdkAABgmVB/bfjdd99V37599dRTT+m6665TSUmJtmzZ4l1+4sQJpaamKjY2VqtWrdIPP/yge+65R1WqVNFTTz0lSdq1a5dSU1PVv39/zZ8/X8uWLdP999+vunXrKiUlxV/RAQCARYKMMeZ8b7SkpETx8fEaN26c+vTpc8oxH330kbp1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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.bar(model.feature_names_in_, height=model.coef_)"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"- _`bmi`, `s1`, `s5`_\n",
|
|
"- Negative coefficients such as the one in `s1` indicate a negative correlation\n",
|
|
"- `age`, since it has nearly no influence"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"id": "xa_HDxFeolBj"
|
|
},
|
|
"source": [
|
|
"## 📢 **HAND-IN** 📢: A PDF document containing the following:\n",
|
|
"\n",
|
|
"* the bar plot\n",
|
|
"* your answers to the questions in Task 4b\n",
|
|
"\n",
|
|
"**Solutions for Tasks 2, 3 and 4 should be in the same document: you will only upload 1 document with your solutions for all 3 tasks!**\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"private_outputs": true,
|
|
"provenance": []
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"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.11.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 0
|
|
}
|