Commit f335e6d8 authored by Simon Clarke's avatar Simon Clarke
Browse files

Finalised plotting notebook

parent 64f69a62
%% Cell type:markdown id: tags:
## Multiple Linear Regression - Underfitting and Overfitting
* Add formatting
* Show coefficients for initial examples
* Show accuracy vs order of polynomial
* Plot against testing set and show accuracy
* Use PolynonialFeatures to create Vandermonde matrix (don't need to calculate intercept)
* Explain CV in more detail
* Emphasise bias and variance
In this exercise we will investigate how polynomial regression can be implemented using `sklearn`, the dangers of underfitting and overfitting data, and how overfitting can be addressed using the `Ridge` and `Lasso` regularization techniques.
Initially, we import some libraries that we are going to need.
%% Cell type:code id: tags:
``` python
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
import warnings
warnings.filterwarnings('ignore')
```
%% Cell type:markdown id: tags:
We define a function that we will use to fit the polynomials to.
%% Cell type:code id: tags:
``` python
def true_fun(X):
return np.cos(.15*np.pi*X)
```
%% Cell type:markdown id: tags:
Now define a training set `x` and `y`, and a testing set `x_test` and `y_test`. Both of these have a small amount of noise added to the function.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
nsamp = 30
x = 10*rng.rand(nsamp)
y = true_fun(x)+.1*rng.randn(nsamp)
x_test = 10*rng.rand(nsamp)
y_test = true_fun(x_test)+.1*rng.randn(nsamp)
```
%% Cell type:markdown id: tags:
The easiest way to fit a polynomial our data set is using the numpy routine `polyfit`. This minimizes the least squares error, the same as for linear regression. `polyfit` calculates the coefficients of the polynomial of degree n, starting from the highest coefficient and descending to the constant term. The routine `poly1d` takes the coefficients of a polynomial, as given by `polyfit`, and generates a one-dimensional polynomial function. Here we calculate these polynomials for degrees 0, 1, 4 and 15.
%% Cell type:code id: tags:
``` python
p0 = np.poly1d(np.polyfit(x, y, 0))
p1 = np.poly1d(np.polyfit(x, y, 1))
p4 = np.poly1d(np.polyfit(x, y, 4))
p15 = np.poly1d(np.polyfit(x, y, 15))
```
%% Cell type:markdown id: tags:
We now plot these polynomials against the training set and the true function.
The zeroth and first order polynomials (constant and linear functions) can be seen to be underfitted, due to the fact that there is insufficient complexity in the model. Such models are said to have high *bias* and low *variance*. For any randomly selected training set on this interval they will give very similar results.
The fifteenth order polynomial suffers from overfitting. The polynomial passes through most of the points in the training set, but in the intervals between these points there are very large variations. For another randomly selected training set the results would be noticeably different. Consequently the model is said to have high *variance*. This can be addressed by reducing the complexity of the model, or increasing the size of the training set.
The quartic can be seen to perform very well, and balances *bias* and *variance*. It is apparent that this model has optimal complexity for the data set. However, how do we pick the optimal complexity for our model? This is where machine learning comes in. Here we will show how this can be achieved using regularization.
%% Cell type:code id: tags:
``` python
xfit = np.linspace(0,10,1000)
plt.scatter(x,y,label="samples")
plt.plot(xfit,true_fun(xfit),label="Model")
plt.plot(xfit,p0(xfit),label="Zeroth order")
plt.plot(xfit,p1(xfit),label="Line")
plt.plot(xfit,p4(xfit),label="Quartic")
plt.plot(xfit,p15(xfit),label="Fifteenth order")
plt.legend(loc="best")
plt.xlim((0,10))
plt.ylim((-2,2))
```
%%%% Output: execute_result
(-2, 2)
%%%% Output: display_data
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYIAAAD/CAYAAAD8MdEiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3yV5d348c99dvY8J3tPyIIk7I0oUBEtRYu11adWtNrWPj5Paa3iqNZqrdXn19pa90AcqIiCLJW9BBLIICQhYWWfkz1Pcsb9+yOQEBMgExJyvV8vX3Lucd3XuTic77m2JMuyjCAIgjBqKa52BgRBEISrSwQCQRCEUU4EAkEQhFFOBAJBEIRRTgQCQRCEUU4EAkEQhFFuQIHg5Zdf5sYbb+TGG2/k+eef73b++PHjLFmyhPnz5/Poo49itVoH8jhBEARhCPQ7EOzbt489e/bw+eefs27dOo4dO8bXX3/d5ZoVK1bw+OOPs2XLFmRZZs2aNQPOsCAIgjC4+h0I9Ho9Dz/8MBqNBrVaTUREBKWlpR3nS0pKMJvNjBs3DoAlS5awefPmgedYEARBGFSq/t4YFRXV8efTp0+zadMmPvzww45jRqMRvV7f8Vqv11NRUdHfxwmCIAhDZMCdxSdOnODuu+/m97//PaGhoR3H7XY7kiR1vJZluctrQRAEYXjod40AIC0tjQcffJBHHnmEG2+8scs5X19fTCZTx+vKykoMBkOf0q+pacJuF0sheXk5U1XVeLWzMSyIsugkyqKTKIt2CoWEh4dTn+/rdyAoKyvjV7/6FS+99BJTpkzpdj4gIACtVktaWhopKSl88cUXzJw5s0/PsNtlEQjOEeXQSZRFJ1EWnURZ9F+/A8Gbb75Ja2srzz33XMexZcuWsW3bNh588EESEhJ44YUXWLlyJY2NjcTFxXHnnXcOSqYFQRCEwSMN52Woq6oaRZQH9HoXTKaGq52NYUGURSdRFp1EWbRTKCS8vJz7ft8Q5EUQBEEYQUQgEARBGOVEIBAEQRjlRCAQBEEY5UQgEARBGOVEIBAEQRjlRCAQBEEY5UQgEARBGOVEIBAEQRjlRCAQBEEY5UQgEARBGOVEIBAEQRjlRCAQBEEY5UQgEARBGOVEIBAEQRjlRCAQBEEY5UQgEARBGOVEIBAEQRjlBhwIGhsbWbRoEcXFxd3Ovfzyy8yZM4ebb76Zm2++mdWrVw/0cYIgCMIg6/fm9QAZGRmsXLmS06dP93g+OzubF198kfHjxw/kMYIgCMIQGlCNYM2aNTzxxBMYDIYez2dnZ/Pqq69y00038dRTT9Ha2jqQxwmCIAhDYECB4JlnniE1NbXHc01NTYwZM4YVK1bw+eefU19fz7///e+BPE4QBEEYApIsy/JAE5k7dy7vvfcegYGBF70mJyeHRx55hHXr1g30cYIgCMIgGlAfwaWUlpayb98+li5dCoAsy6hUfXtcVVUjdvuA49SIp9e7YDI1XO1sDAuiLDqJsugkyqKdQiHh5eXc9/uGIC8A6HQ6/va3v1FUVIQsy6xevZrrr79+qB4nCIIg9NOgB4Lly5eTlZWFp6cnTz31FPfffz8LFixAlmV+/vOfD/bjBEEQhAEalD6CoSKahtqJam8nURadRFl0EmXRbtg1DQmCIAgjgwgEgiAIo5wIBIIgCKOcCASCIAijnAgEgiAIo5wIBIIgCKOcCASCIAijnAgEgiAIo5wIBIIgCKPcNR0IWprbaDVbr3Y2BEEQhrUhW330ajKW1bNz8wkqKxoBCI7wZOrcCDy8HK9yzgRBEIafayYQ7D9WztqdhZjrW4lFiVanYvKccNparWSnlbL2vXTm/zCOwFCPq51VQRCEYeWaaBraf6ycdzflUlvfSiQK2pA5arFgdlYzaWYYt92dgrOrjk2fZWMqFwtTCYIgXOiaCARrdxbSZrUTgIQaKMROs83O2p2FALi46Vj04wR0Dmo2fppNS3Pb1c2wIAjCMHJNBIKq+la0gAEJIzLNFxw/z8lZyw+WxmNusbB9Yz7DePVtQRBGKVmWOVNYRUOd+Yo+95oIBF6uWnyRkIFS5C7Hu1xncGby7HDOFFSRc7TsCudSEATh0rLTS9n4STafrzqC1Wq/Ys+9JgLB4imheCNRhcz5waIalYIlsyK6XZuYGkBAiDv7t5+kqaG123lBEISrQZZlMg8VA9DU2EbRyeor9uxrIhC420GBRKuTGmivCdy1MJYpcb7drpUkiVkLorHb7Oz9tvBKZ1UQBKFHtdUt1NeamT4vEpVaQcmZ2iv27Gti+Gh+dgVeBifuvzu1V9e7eTiQMjWEg7tPc6awipAIL6BzCGpVfSterlqWzIroMZgIgiAMtuLTNUD7vKf8nAqqK5uu2LMHXCNobGxk0aJFFBcXdzt3/PhxlixZwvz583n00UexWvs2y/fZVWnsP1Z+yWtqqpoxljUQHefTp7THTQrC3cuR3VsLsFhsHUNQz3cwV9W38u6m3Ms+XxAEYTCUF9fh7KrF1V2Hh5cjNZXNl79pkAwoEGRkZHD77bdz+vTpHs+vWLGCxx9/nC1btiDLMmvWrOlT+jWNl/8yPpFjRJIgaqyhT2krVQpmzY+ioc5M2r4zHUNQL9Rm7RyCKgiCMJRM5Y3ofV2QJAkPL0eam67cEjkDahpas2YNTzzxBL///e+7nSspKcFsNjNu3DgAlixZwj/+8Q9+8pOf9Dp9DWC1WNiw/iCWk55orWYc7G3obG2olaBVShScdsHbESyH91Cv06HQOaB0dUXl4YHKzR1Jqbxo+v7B7sTE+5DxXTFN9p4L/MIhqIIgCEOhrdVKXU0LMfHtLRvnl8OpqWrCN8BtyJ8/oEDwzDPPXPSc0WhEr9d3vNbr9VRUVPQp/QWVaXieSkOBDAVdz1mABpUTdaG3EVl5CGNGdvcEFAo0Hu44BATgGBSEY3AQjiHBOIWHodS2Dy1ddGsi/3puB1EWyOqh6Urv4YBe79KnfA+F4ZCH4UKURSdRFp1GclmcPTdCKDxaj17vgt3aPgxeKSmuyPsass5iu92OJEkdr2VZ7vK6N6q0XuR6JGBxcedHN6VgU+toUWppQk3GqRryjpnwtcEm/ThcQ8ZjbzVjaWzG0WbG1dqEh2zGR2HGu6gSp+N5KCznZhQrlWgDg3CIiEQXGcmESb7s3lGEj0JBhb2zeUijUnDL9DBMpqu7LIVe73LV8zBciLLoJMqi00gvi1OFJgBUGgUmUwOtbe0/SstK6tD79z4QKBQSXl7OfX7+kAUCX19fTCZTx+vKykoMhr61459wCSMfP+5aGIv3BaN39h8rZ1dOJSE2CTMytbKC5lYFdy1MYXyUNyWVTZSYmig2NZJpauJMeQPNZguu1iaC5HrGqOoJaDHRunsXbPsGNeAR/kNUkgve1JAju+Hp5iBGDQmCcEXUVDWjUilwPjcJVuegQqGQaG66MsvhDFkgCAgIQKvVkpaWRkpKCl988QUzZ87sUxpOamWP8wHW7izEarXjigLjuZnE5zt2p8T5EuHvRoR/Z7uaXZYpr2qmoKSOwpI69pbUUVbVjORoJ0yqJ1VVQ1jDCY7oUoisr+aWlh04ByTjjBuyTX/JfgZBEISBqq1qwd3TsaPVRJIkHJ01NDWO0ECwfPlyHnzwQRISEnjhhRdYuXIljY2NxMXFceedd/Yprfhgjx5/kVfVt+JO+ySyWuxdjvdEIUn4ezvh7+3EzCR/AGoaWsk5Xc2x09VsPlVNvYOFENmG7BaNqxsEHDhA3a6dKJydcUmZgNv0GWhDw/rcvCUIgnA5NVXN+HyvCcjRWUNz45UZrDIogWDbtm0df3799dc7/hwbG8unn37a73RbWiw9Hvdy1eJS34YVmcbvHe8tDxct0xL8mJbgh12WKapoJO14BcWHS8m0RfFJYAip2hrGtRVj37eHup3b0QQE4jZjJq6Tp6J07ns7nCAIwvdZLTYa6szEJHSdC+XkrKW2+srMJRjWM4tbmnoOBD+cGc7hDXnUI3csMXextYV647ucio4ZxX5OGgKbZSbq3TmjcmdPhR5dUDzzdBXEVp+g7aMPqPx0Dc4TJuJx3Q3oQkP79+YEQRCAupoWgG47KDo6aygrujLLTAzrQNDQ0MIRYxZxXrFolOqO49F6FzKQsOqUYLYMaDmI8zOKz08mK2tqQ1IoCKhqYdHMUHxvimN/djl7jzmzwTmQoIh65imK8UlLo2H/PhyionGfdz3O45JFX4IgCH1WW90eCNw8HLoc1+lUtJqt/Rpx2VfDOhBgl3gnfQ1KB5lE7ziSDYmM8YrhTGEVACuWT8LRSTOgR/Q0o7jUbsdVreLgrtMs8HZi6ewIlswMJ/dsDXuyyliV64YyIJJ5qhLijMdoeeVfqLy98Zz/A1ynT0ehHlieBEEYPerP7T3g6t41EGh1amQZ2lptaHVD+1U9vAMBcHvwjymUcskwZXOo4gg6pY7ovBk4ezuicRj44qkX62DOs1j5gZ87X3+Rw8Kl8QSFeTI2tP2/ZddFsTujlB1HXNloDyHJs4JZTcexrn6Pqg1f4jl/IW6zZqPQ9r7PQhCE0amh1oxGq+r2ZX/+davZMuSBQPnkk08+OaRPGIDvdp0iItifOWMnMjdoBmFuodjboDXLhRL3fDbWr6ei2YRaocJT54FC6ntg2JNZSkurrdtxL1ct9/00mTMF1WSnl+Lt44y7Z3sbnlatJDrInXkpgYT6u1HQqmN9sw/lrn4Eyo1YD+6hbvdOsNvRBocgqQb2l+jkpKVZbK8JiLK4kCiLTiO5LLLSS1AqFcSN9+9yvKHeTMFxEzHxPjg59+5HpSRJODr2vUVi2AcCF1cd/sHuKCQFBkdvnGr0nMyrZOqcSFSOkGHKZn/ZIXaV7MfUUolaocZD697roODiqCH7ZBU2e+fOZhqVgtvnRRPm70Z4rDdFJ2vIOFiMSq3EN8C1y1hfX09Hpsb7Mj5aT5lNx7oGPWec/PGXmpEP76Nuzy4UGg3aoGAkRf9qMCP5Qz7YRFl0EmXRaSSXRdreM7h5OhI5puuE25bmNvKyKoiI1XdrNrqY/gaCYd005Oys6bYm9+mCKnQOKibHJjBVkYjFZiGnOp90YwaHK46yt/QgzmonxhkSSDEkEukefsmgcL6D+WL7EDg4arjljnFs+yqXA9tPcuZEFTMXROHp7dQlnWAfF+LDvTh+poazsp7XtHoC1DEsasnGtnoVNVs343XLElwmTLpoQBD7IQjC6CLLMg11ZkIivbqd0+naB8iYLzKMfjAN60Dgrnei5NxmDQBWq53TJ6qIHKNHoWj/Va5WqknSx5Gkj6PNZiGnKpc0YwYHy9LYU3IAF40z4/WJpPgkEe4W0mNQmBLne8kvXLVGyQ23jCU3s5x9207y8RuHCY/xZkySHwEh7iiVim6jjwDKHA285XQdwdoiFjZlYXn9VWo2b8Q04QY+Pq3o8oUPdLn//H4IAItnj9zFtARBuLjmxjZsNhlXN123c519BEO/FPWwDgSe3o4cSy/F0mZDrVFSdLIaS5uNiFh9j9drlGrGGRIYZ0ig1dZGduVx0o2Z7C87yK6SfbhpXEk2JJLsk0ioa3Cf+hQkSWJMkh+hUV5kHiohO72Ek3mVaLRKDH6uZJfW4maVaaN9ZVQrYJHB2UlNzMRpvH44mAiHAuaaMnFd+yaznILY5pVCVb0r727KRa2SLrofwuLZUf0vREEQhq3zI4Zc3EUguChPffvs3YrSegJDPcjLrkDnoCYgxOOy92qVGlJ8kkjxScJsbSW7Mod0Yya7Sw+wvXgPHlp3xhsSSPFJIsQlqNfjdB0cNUyaFUbKtBCKTlZz9mQ1xrIGXNvsuPewz4+10UpbXhVz9a7UuSTwRXU4fk1FpFalcc/ZLznkPob9nok0WdU9PE3shyAI17KG2nNDR3uoEajUSpQqBa3mUd405Ovvikql4FR+Ja7uDpw+UUnSxKCOZqHe0qm0pPqOJ9V3PC1WM1mVOaRVZLCzeB/binbjqfMg2ZBIiiGJIJeAXgUFlUpBWLQ3YdHeAKz41x7qG9rQAGpAhXTu/2BuMOOrdMBZqcAgKZCdQznkHIrS2kRAw0l+WrqdQ67hZLlEwPee3ZdlMwRBGFk6agQ9BAJorxWM+hqBSq0gOMKTguNGqiubUSoVJKT4X/7GS3BQ6Zjom8xE32SaLS1kVh4jzZjBtqLdfHN2J94OXu3NR4YkAp39el1TWDI7knc35dLU0bzTOQoJq5XC2ibuWhhL2o4CWhracEHCTeWI1T0eySMBg9nI4pos9jkFU6l1Bwa2bIYgCMNfQ60ZRycNKnXPqxKoNUosbd2Htw+2YR0IAJKnBHOmsJrSs7VMuy4CZ9eeI2d/OKodmOyXymS/VJoszWSYskk3ZvLN2Z1sPbMdg6M3yYYkkg2J+Dv5XjIofH/00fedb+8/HzAqrHYqkFFJ4C1DgNqNek8DY9vqsDWc4YRvODfPjRGjhgThGlZf14JrD/0D56nVIhAAoPd1Ydk9qbSareh9h270jJPakan+E5nqP5GGtkYyTNmkGTPZcnobm09/i6+job35yCcJXyefHtM4P/ro7ue29Xi+qr61W8Bwc9WyaGY4FqudHd8cx9+ixOoSTkJdDa3H8lixs5Dq+lY8xXBSQbjmNNSa8Q26+J7EGo2SNhEI2vV2MsVgcdE4Mz1gMtMDJlPf1sBRYzbpxgw2nf6Wjae/wd/Jt72m4JOIj2P3EUxertoeawXn2/svNlx1QqyBz3edpPjAcVQKHcdPQnzzWdI1rlTV0zGcVAQDQRj5bDY7jQ2tPXYUn6fWKK/I5jQjIhBcTa4aF2YGTmFm4BTqWus5Yswi3ZjBhlNb2HBqC4HO/h19CnrH9kkhS2ZFdJtT0Jv2fkedmjtuiKF4XAB/efsAic0VNDv4kmhrob65nCwHn45d2ARBGNmaGlqR5Yt3FIPoIxiW3LSuzA6axuygadSYazliyiK9IoMvT27my5ObCXYJaK8phCdy18LYfs8SDjQ4Y5YVHHTwxs/SQDgKdI4BzG4qIc3myv5j5SIYCMIIV39+6Oil+gg0KhEIhjMPnTtzg2YwN2gGVS01HDFlkl6RybrCjawr3EiIaxALFiWRbEjGQ+fe5/TPNy+VqZ2pkO2kmI00OfoxztLI4Y+3wm3XMyXebwjemSAIV0Ln0NGLN3239xEM8+Gj69ev55VXXsFqtXLXXXdxxx13dDn/8ssv89lnn+Hq6grAbbfd1u2aa4GXgwfzgmcxL3gWlS3VpBszSDdmsrZgA2sLNhDuFkKyIYnxhgTctRfvGLrQhc1LdknBIZ0XfpYmQhVq1A6BFH+4gbaHfojG23uI350gCEOhvrYFSQLnS8wVUmuUWC32Id+cpt+BoKKigpdeeom1a9ei0WhYtmwZkyZNIjIysuOa7OxsXnzxRcaPHz8omR0JvB08uSFkDjeEzMHYbCL9XJ/Cpye+5LMT6wl3CyXZJ5Hx+kTctBcfBXW+6ef19Tkdx8rUjhhlmfGWJipdoln7z2+YPTsAn9nTh3wHI0EQBldDrRlnV90lJ8iqNe3zCyxtNjTaoWvA6fcy1F9//TUKhYIbb7wRtVpNdXU1BQUFTJw4seOa5557jqKiIl599VUKCgqYPHkyqj6szd/S0oYsX/664cpJ7USkexgzAqaQYkjCRePM2YZivitPY1vRbvJrCrHYLXjqPNAquy8dG2Rw7rZfgixJlCo1aOytKNWuFJwxY0/fg29CFArNtb8z2khebniwibLoNBLL4ujBIhydNMQkXLy/r8rUxJnCauJTAnoVCK74MtRGoxG9vnPopMFgIDMzs+N1U1MTY8aMYcWKFYSEhPDwww/z73//m4ceeqjXz/Dycu5v9oYdvd6FhNAI7uSHFNWVsr8ojX1n0/go73M+zl9HvCGGKUEpTAwch6u2833/16I4Xv4kg1ZLZzDQqpUsWToJY1k9+d8e53BrOGV/XcOin0/DZ1Lq1Xh7V5ReL1ZjPU+URaeRVhZN9a1Ej/W5ZL69vNu/C1ycdXjrh+77sN+BwG63d2mO+H4blpOTE6+//nrH67vvvptHHnmkT4GgqqoRu30EVwkuQocLc3xmM9swi9KmctIrMkgzZvDa4dW8kfYhMR6RJBuSGKePIy7YnV/fmsQ7G451GYEUH+IBIR7ERnixbtV3lBDBqvdzSf7mMHF3Lb1mt8nU610wmRqudjaGBVEWnUZaWVjabDQ1tqHWKS+Zb7O5vZZTUV6PLF3+u1ChkPr1A7rfgcDX15fDhw93vDaZTBgMnTvslJaWsm/fPpYuXQq0B4q+NAuNBpIkEeDsR4CzH4vC51PcWEq6MZO0igxW537CR3lrifWMYnbEJJ66NxkHVffRBf56Z3750FzWbzpO2ZE29la5UvzMO8y88zqcLuivEQRh+Gi4yIb139fZRzC0I4f6/c08depU/vnPf1JdXY2DgwNbt27l6aef7jiv0+n429/+xqRJkwgMDGT16tVcf/31g5Lpa5EkSQS5BBDkEsDi8AWcbSgmzZhBekUm/zr4LipJyRivGJINiSR6j0Wn6hx7rJAkbv7BWIrGB/LV+99x2jGW6vePkBqbQ/Rti/q9RaYgCEPjcquOnnd+MTqrxX7J6waq34HAx8eHhx56iDvvvBOLxcLSpUtJTExk+fLlPPjggyQkJPDUU09x//33Y7FYSE5O5uc///lg5v2aJUkSIa5BhLgG8cOIG6lVVLIt/wDpxkyyKnNQKVTEecWSbEgk3msMOlV7M1CQnyv3/u88Pv/8KKY8C9tPKSh8djVz7v0BDvruW+EJgnB1NPRiMhlcEAisQxsIJFkevuNyrtU+gr463/5pl+2cqjtLmjGDI8ZM6tsaUCvUxHvFkuyTRLxXLJpzo4/yT1ex/cMD2CVndJYGJk/SM+aGSVf5nQzcSGsLHkqiLDqNtLLY+20BOUfLuOd/Lj30u762hdX/OcicG2OIvcToovOueB+BcOUpJAUR7qFEuIeyNOomCmtPk27M4IgxiyOmLDQKNQneY0n2SWJsUAw//90CPvvoAM2nJXakm8nO3sSc26fg7df3mc6CIAyehlozLm66y87/UamGedOQcHUpJAVRHuFEeYRza/TNnKg5Sboxg6OmbNKMGWiVGhK940hekIitMoSsj7ZTa/Phk3eOEhPtxqQbxuLkcm2OLBKE4a6+znzJVUfPU6nb+/ds1qFdb0gEgmuAQlIQ4xlJjGckt0XfQn5tIekVmWSYsjlUcQSdUsfYpWNQ7S3B+4yF/PwoThTsZ+z4AMZPCcZZBARBuGJkWaa+1oxf4OWXm1Gq2gOBqBEIfaJUKBnjGc0Yz2iWxfyQ3JoC0isyyKjMpiXajHuQihm7C2iVIjmWDjlHyxgzzo/xk4IuO4JBEISBazVbsbTZLttRDKBUKlAoJCyiRiD0l1KhJM4rhjivGJbZl5BbnU+6MZOtDlkkHstgUk4mJ/XjyTkik3O0jJg4H8ZPCcLd0/GS6e4/Vt7vJbYFYbQ7v/z0pVYdvZBKrRA1AmFwqBUqErzHkuA9FkvMj8gam8ve7ZuZsm8vYaZ0DkenknvMTm5WOeGx3qRMCcHbp/vog/3HyrtsulNV3yp2ThOEPuicTNa7GrhKpcQ2xMNHRSAYhdRKNcm+CSTfnsDh2BNUrX6N2cd2cjz4KFlBCdhPWDmZW4l3sI5pM2LwD+ocZbR2Z2GXndcA2qx2sXOaIPRSfW0LcPnJZOcpVQqsFtE0JAyh1PFRVIX9iZ3/WsXYUwcIqj7KsQUWTlWpsZaG8MXqDNTeVlxDXDiY30p1g6XHdHrao1kQhO7q68xodSq0ut59/arUCixD3DQk1h4Q8HJ35OY/Lufs/DuRW2ykfHaYZS6+TLzNE2lMNc11VqrSWvCz1uDlVYLkWAt0nejndYnNNQRB6NRQa+51sxCAWq3EOsSdxSIQCAAoFQpuuHUOjr/9I2XOvvDlp2g/2sXyGxZw1lHLGadqlFYt4VXBxMsafIJzUQXmITnWoVFJLJkVcbXfgiCMCPV15j6N0FOpFNhEjUC4ksaMDSb16cfIi5iCQ34GmX98FIWxCmOTG5kWNYVSG3KbluCz8cTU+OEemoPbhH0YdUcoaihlGK9YIghXnd0u01DXtxqBUq0Y8rWGRB+B0I2bs44bH76XHWujcN+6hruaNrJVP4ks10iqZSXVNvDCTnCzO5E507EH1rG9dR9bz2zH4OhNsiGJFEMSfk4+YgtNQbhAY30rdpuMm8elh2hfSKVS0mgZ2j44EQiEHikkibk/mktubAQlr/2HG437CGqpYKt+ElaFigaVxPh5USiqzWQdlkiqXoDPRDihPcaW09vYfPpbfB0NJPskkWJIxNfJ52q/JUG46upqmgFw9+zdHAIAtZhHIFxtsXEh+P75Cb5+4XUSS9Lwba1ie8Q85i1I7RguGh3nw7avcjmzo4n4+JncMfNWcuqPk27MZNOpb9h46mv8nXxJNiSR7JOIj6P+Mk8VhGtTXXX70FE3j94HApW69/MIqjd8idddP+lzvkQgEC7L3UXHj574Nd+s+QbDtk9ZkrcOlyRnOBcIvH2c+dFdyaTtPUP6/rOUF9dxwy0JzEyeSm1rHUeN7QvhbTi1hQ2nthDo7E+yIZFkQxJ6R7FPgjB61Na0oFIrcHTu/QbzSpWiV6OGandup27PLuhHIFA++eSTT/b5riukpaUN0fcITk5ampvbrmoeJEkiIj6CyuA4KrNycDiyl9LT5eiTE5GUShQKiYAQDwJDPSg4biI7rQQHJzWBAd6EuQUz1X8CU/0m4KF1w9hs4rvyNHYU7yW7MocWqxl3rSuO6sv/ShoOZTFciLLoNFLKIutwCUqlgrhk/17fU3q2lrLiOlKnhVz0mubc45S9/h9cxo3HMG1yn/MlAsEIMJw+5AZfD1wmT+Vobjk+Jw5RtPcgbgnxqF1cAHB21REdb6CyopHMwyU0NbYSFO6JQiHhoNIR5hbCVP+JTPZNxV3nRnmTke/K09hevIdjVbmYra14aN1wUPU8qmI4lcXVJsqi00gpi8N7zuCpdyIitvfNo2VFdZScqSV1WkiPgy/aKsopfukF1B6eBJrsc84AACAASURBVPzqNzi5OvU5XyIQjADD7UPu6KAhYsYE0hq0uJ44St3OHbS5e+EaEgS0T4CJijNgl2WyDpdQXlJPaJQ3KlXnaGVHtQPhbqFMC5jEJN9k3LSulDaV8115GtuKdpNbnU+rrQ0PnVuX/ZmHW1lcTaIsOo2EsrDZ7OzfVkhotDeBIR69vq+itJ6SM7WMnxKMQtE1ENgaGyn++1+RLRYC//cPqD08cHTsfbPTeQMKBOvXr+ehhx7i3XffRaFQkJiY2OX88ePHue+++3jrrbfIzc1l1qxZKPqwkboIBO2G44dcoZCITIqi3C+a2uxjaA/vpqykCv34RCSFAkmSCAzxwMVNR3ZaKSfzKwmJ8ESrU3dLy1HtSIR7GNMDJjPBZxyuGleKG0vbawpFe8itLqDNbsFD646nq8uwK4urZTh+Lq6WkVAW9bUtZKWVEpvo2+OCjhdjLGug6FQN4yYGdfkxJVutlPzjJdpKSwj87f+gC26vMfQnEPR7QllFRQUvvfQSH3zwAevWrePjjz+moKCgyzUrVqzg8ccfZ8uWLciyzJo1a/r7OGGYGpcaw5gnniDPLxFN2m6OPvo4ZpOp43yNAop1Ciqrmnj31YNs23f6kukZHPUsCJ3LIxMf4rFJv+MHYfNotjazJn8dj+79M3/a/hK7S/bT0NY4xO9MEAbX+RFDfRk6CqBUtdcCbLbOkUOyLFPx3tu05Ofh81934xAVPaC89TsQ7Nu3j8mTJ+Pu7o6joyPz589n8+bNHedLSkowm82MGzcOgCVLlnQ5L1w79N4uLHjivymY8kNU1SZOPLaSsgOHOpasLmlu4zh27LLMsV2n+WbPqV6l6+tk4Adh17Ny0v/y6MT/YUHoddS01PFR3uf8cc/T/PPI6+wt+Y5GS9MQv0NBGLjamvNDR3s/mQzaN6cBugwhrf5qPfX79uK1+BZcJ0/tOG7vZxNKv4ePGo1G9PrODg+DwUBmZuZFz+v1eioqKvr7OGGYU6sU/OAXN5M2NhLz+2+ifeNfnNYnYnFNBEmBGTiOnRgU5O05S2ygO4GhvW8n9Xf2xd/Zl/+auISM0ydIr8ggzZjBB3mf8VH+58R4RJJiSCJJH4ejum//0AThSqirbkGjVaFz6NvX7vntKs/XCBoOfkfVurW4TJqC5003d1xXXW/m4+0FPH7PlD7nrd+BwG63d+nBlmW5y+vLne8NL6/et6Nd6/R6l6udhV5ZsHgyRSnRbHvq/0gpz0TfUMGXvjNoVDnSRmcw2PhpNj/+eSqRsYY+P2NcWDTjwqL5ubyU07XF7Dt7mP1Fabyf+wkf5q8l0WcMU4NSmBCQhKOmb9XwkWakfC6uhOFeFo31reh9nTEYXPt0X6VnezOoq4sD2soSTrz9Bq5jxxC34rco1O19bum5Rl5YnYaHS9/7B2AAgcDX15fDhw93vDaZTBgMhi7nTRe0FVdWVnY53xvFa57H1ljb3yxeM9RqFRaL9Wpno09mToRTGa4EFVXwQPFaWkNdsbmcW6paoeVE6yQ+euMA1wUfx9+5rtfpfr8sFMB0YBoyxQoXMpRtZJTkcKQsG6UMMTY1SVY1Y20adFxb6x6NxM/FUBnuZSHLUH56AsGuVZx5a2Of7q1u8ADGcGrVi9gPHUOpUeIU3EbRqieQZaiqN1NVZ+ZenZKQgEDguj7nr999BFOnTmX//v1UV1fT0tLC1q1bmTlzZsf5gIAAtFotaWlpAHzxxRddzgvXNoUE+igvWmK8kFUSuoJa1GWNKJDx91ByfUgObpoWtp2Npaypb7+QeiIhEWRXscjiyCMtrvy6xYWpVi0lCisf6pr5k2Mt72obOapsoxUxFE24ssw2Na02Ne7alj7fq5Dam4RqsquQFBLeU4NQalVYbTLFpkYq68y4OmkI8XVBre7fjx1JHsC6wevXr+fVV1/FYrGwdOlSli9fzvLly3nwwQdJSEggNzeXlStX0tjYSFxcHM8++ywaTe+rLlVVjdjt4h+tXu+CydRwtbPRL/uPlbP26xymnNlDfMNJqrxDSPnj/6Bxc6O5qY0vP8ygoc7Mjbcm4B/sftn0+loWdtnOybozpBszOWLMpL6tAbVCTbxXLMk+ScR7xaJR9q86fbWN5M/FYBvuZVF8uob1H2Vy07LEPvWNAXzzzXFOHDYSV/YNe4MmMHvhRLxcdfzni2yazFZ+en00M5LaZyorFFK/mtQHFAiGmggE7Yb7h7w3WlotfPP6p4RnfINVoyPglw/gnRBHc2MbX3xwlMaGVhbfnoSP/6VrBwMpC7tsp7D21LmgkEWDpRGNUkOC1xiSfZKI84xBrew+z2G4uhY+F4NluJdF5qFi9n5byF2/mYKjU+9/eOzPKKLm3fc4Y5hOjbmKAp07SoWEXZbRuzvwwC3xBPt09o30NxCImcUjwEiYLHM5apWS6Anx5DsGYM/Jwr5vB9XNNnzGxREeo6cw18TxjHKCI7wu+Q9lIGUhSRJeDp7Ee49hbvAMotzDUUgSx6pyOVB2mB3FeylrqkCpUOKp80ApDe99m66Fz8VgGe5lcTyznMZ6MxOmh/Z60Ixss3H8hZfQm2socYulRKXFTHt/g0al4C/3TsHbvetgiP5OKBOBYAQY7h/y3pIkieBwf6zxKRRmFeKR8x1FGcfxn5pK+Fg/8rIryD9WQXi0d48zkGHwykKSJLwdPEnwHsvcoBlEuIcBkFWZw/6yw+ws3kt5kxGl1B4UFMMwKFwrn4vBMNzLIv3AWZycNMQm+vXqetlup2LVuzicyGSXVwqS1ota4HwPg80us3R29+1h+xsIRlzTkM1mpabGhNU6fP/SB5tCocBuH9qNKYaaSqXBw0OPUtk+UK2pxcK3//mQqGM7aNM5EfSr3yB7B/DF6qNodSp++NPxPS7VO9RNADa7jdyaE6RXZJJRmU2L1YyjyoEkfTzJhkRiPCJRKpRD9vy+GO7NIVfScC4LWZZ586W9RMf7MPOGqF5db/roA2q//Zo03/HsdE4gCSWnsFN5bqCDl6uWvz0wrdu9o6aPoLKyDJ3OEScn11GzDaJKNfR7lg4lWZZpaqrHbG7G29uvy/Fdmw7g+OX7ONtaUC/8Ic4TZ7L+40zc3B24+Y5xaHWq9g7nnYVU1bei93DglulhHZviDCWL3UpudT5pFZlkVR7DbGvFSe3IOH08yYYkotzDr2pQGM5fflfacC6L2upmPnztELMXRjMm6fI1gsq1n1K9cQNOc+bxRls0JRWNjEfJGewYkdGoFNy1MLbHfwP9DQQjbmMaq7UNJyffURMErgWSJOHk5Erj9+aESJLErB9MoSAmlFP/foWQjZ9Rnnuc63/4U7asL2DjJ1noE314/+t82s4FQlNNC+9uygUY8mCgVqhI8B5LgvdYLDYLOdX5pBszOFRxlL2lB3FWOzHOkECKIYlI97Bh2XwkXH3GsvYApfe9/IS3qq/WU71xA1LqVP5fXRg1jU2kxuix51Uj0V4TWDIrYtA/+yMuEAAiCIxAl/o7i4zww+fplWx/eRXR+XuofeV5pi65h73fVXGyvAGLrWttqM1qZ+3OwitSKzhPrVSTpI8jSR9Hm83Csapc0o0ZHCxLY0/JAVw1Low3JJBsSCLcLUQEBaGDqbwBpUqBh/ellz6p+WYrVZ9/RmNkIv+pi8DNReLhnyYTanDhtbzdLJ0ZTsrUi29OMxDi0zpAZWWlTJ+eyvPPP9Pl+IkTeUyfnsrGjet7lU56+mF+/et7L3nNM8882ev0RhoXRw2LVtxN2aK7sbW1oVz9EmP9WnG0yYT3MCO4qr71KuSynUapZrwhgV/E/5TnZjzB3XF3EO4Wwr7Sg7yU/gor9/6FT/O/5GTdGezyyG3SEwaHqawRbx/njsXjelK3ayemjz6gwieSf8mJJETqefLuCUT4u6FQnlt9dAibh0dkjWC4cXNz47vv9mOz2VAq29uMv/32a9zd+zZxZLRTSBJzbplBfmwYRa++QtCuDyjxmQEukdiwc/qCGcFertqrmNNOWqWGFJ8kUnySMFvNZFceJ82Yye6S/Wwv3oOH1p3xhgRSfJIIcQkStdlRxm6XMVU0MOYSo4Xq9uyiYtU7FLkG8onLZJZdF8O81MCOz4okSShVCmy2oevOFYFgEDg4OBIVFU1GxhGSk1MBOHjwAKmpEwHYu3c3r7/+CrJsx98/gBUrHsHT04uDBw/wj3+8iEajISQktCO94uIiXnjhWerr69Bqdfzud38gImJg642PJNGxgfg89Rjb//U+4wr2kGdrBfc4bNgpOtdZtmRW96FzV5tOpSPVdzypvuNpsbaQacoh3ZjJzuJ9bCvajZfOg2RDEsmGRIJcAkRQGAVqq5qxWuzo/XruH6jduQPjqnc45ejPjogb+MOScYT5dZ9UqVRKokZwMXuzytiTWTYkaU9P9GNaQu/G/ALMmXM927d/S3JyKsePHyMyMgpZlqmpqea11/7NK6+8iZ+fPx988B4vvvg8jz/+NM888wT/7//9h9DQMJ577umOtJ555gkeeuj3REfHcurUSR59dAUffPDZULzNYcvNRcfiP/yCHV+NxeerD1EggftYdDoFs6+PuqL9A/3hoHJgkl8Kk/xSaLY0k1GZQ7oxg2+LdvH12R14O3iRbEgk2ZBEoLOfCArXqIrSegAMPQSC8q1fU79mNYWOAZyasZTHborH8SLzZ9prBCIQDHvTp8/k9ddfwW638+23XzN37vV8++1WdDodY8bE4efXvhbI4sVLWLXqHU6eLMDLS09oaPtEpoULF/H666/Q3NzM8eM5/OUvT3Wk3dLSTF3d6FuFVSFJzF00lcK4SKr+8wZ+9SeAKLTGWhjmgeBCjmpHpvilMsUvlUZLE5mmY6RVZPDN2Z1sPbMdg6M3yYYkUgxJ+Dn5iKBwDSk9W4eDo7rbrmQ5n3yJastaCp0C0dxxD/dP6Hlj+vOUShEILmpaQt9+tQ8lR0dHIiOjyMw8Snr6IX75y1/z7bdbu82DkGUZm80GSHBBm/f5vgW73Y5Go+Wddz7oOFddbcLV1e1KvI1hKSLMgP9Tv2fzm5/jVXqW776Dtiojk5eOvNVsndVOTPWfyFT/iTS0NXLUlE26MZMtp7ex+fS3+DoaSPZJIsWQiK+Tz9XOrjAAsixTWlSLX5Bbx5e81WZn12sfE5i2hSKPUOIf+i1B/pfvS1QqFdiHsI9AjBoaRHPnzuM//3mZmJixqFTtMba11UxOThZlZaUAfPnlWpKTU4iMjKK6upoTJ/IB+OabLQA4OzsTGBjEli3ta5YfOnSAX/7ynqvwboYXB62KHz5wKzFLJuNkNnHkhI0dL67C3nr1Rg8NlIvGmRkBk/nt+Ht5ZtpKfhx9C84aJzad+oanv/s7z3z3IptOfUtFs+nyiQnDTkOdmcb61o5Vdcuqmvj8mVcJTNtCtX8005/6Y6+CAIBCKYkawUgxbdpMnnvuae6555cdxzw9vVix4lEeeeR3WCxWfH19efjhx1GpVDz55DP8+c+Po1QqiY6O7bjniSf+zN/+9hc++OA9VCo1f/7zc6K54Jx585Px8tWz+Z195LYGYFv5EocMMeTb3IZsss2V4KZ1YWbgVGYGTqW2tY6jxmzSjBlsOLWFDae2EOjs39GnoHf0utrZFXqh+Ex7c65/kBu7M0ooXv0BKdXHsI5NZtKDDyCpev/1q1QM7aihEbfERHn5GXx9h2ZSxXA10peYOG8w/u7OLyXQ1NTG+//eg2yFuLId5Ok82e8RjywpmDPen5/Nj718YiNAjbmWI8ZM0o2ZnKo/C0CwSwDJhiTmjZmK1Dwy91IYbMNxiYlNn2VjKm+g2c8R791fkthQiMOMOQT+7GdIir41xnz2bjpanYpFP0685HWjZokJQQBwctJw0lGDob6NbL85JJZvJ7J4M+t9prP9CEQGuo/ImsH3eejcmRs8k7nBM6lqqeGIKZP0ikzWFW5kXeFGQl2Dz9UUEvHQXX5jH+HKsFrtnD1ZTa1CJm7XJqIbz+Kx6Ga8b76lX7X79qYhMY9AELoxNbRRLUE0Ehm+c4k17ubuovVs90ph7Q7NNREILuTl4MG84FnMC55FZUsVeU157D55kLUFG1hbsIFwtxCSDUmMNyTgrh29gwuutjaLjQ+/OIbdJhNXlU5041n0y36Cx7wb+p2mGDUkCBfhpFPSZLaRh50YSUGuYQbVGnduqDzIyaYiLNVjUXt6Xu1sDglvBy/GBM9nmvdUjM0m0s81H3164ks+O7GecLdQUnySGKdPwE17+cXOhMFxqqyeNzbk4GpqwAOIrM7B9xfLcZ3SfcnovlAqFVjabIOTyR70OxCUlpayYsUKqqqqCAsL44UXXsDJyanLNSUlJSxatIjg4GAAvL29efPNNweWY0E453wV2w7kYSdKUiB5JLJVZ2B26dfkPfpH9D/5GT4zpl/djA4xg6OeBaHXsSD0OsqbjKQbM0gzZrImfx2f5H9BpHtYR1Bw0fS9/Vigy1LoPQ1KsNrsfLX/DOv3niZcqsddcsGv6SRB//3fOI2NG/Dzh3rUUL87i++77z4WL17MjTfeyL/+9S+am5tZsWJFl2u2bNnC3r17eeqppy6SyqWJzuJ2orO404Wdgnc/t63LOQkIR4EnEmpXiYicLwkwV2KJTiTmvl+gcru2mksu10Fa2lh+rqaQQUWzCQmJGI9Ikg2JJBnicVY7XfTekWYoO4v3Hyvn3U25HUuhA132BCirauKNDTmcKmvgRu8mPPLzyfNM5aaFAQQmRQ5KHrauy6Ha1MSy5RMueV1/O4v7NY/AYrFw6NAh5s+fD8CSJUvYvHlzt+uysrLIz8/n5ptv5s477yQvL68/jxOEHn1/4TkZKMROjRIs9TJNs+/iSMhkpBPZ5D38Byp27GIYD5IbdP7OviwKv4HHJv2ORyY+xA0hc6g0V/NB3mf8cc/TvHz0DfaXHqLZ0ny1szqsrd1Z2CUIQPtS6J/tKGDTd2d48u1DGGta+G1YI3EH13HGIx4fX8dBCwIwTOcR1NTU4Ozs3DFpSq/XU1FR0e06rVbL4sWLWbZsGbt37+ZXv/oVGzduRKMRQ96EgVsyK6LHX2qzF0SjqW3l0J4z+IZN4kxSMrqtn6B+/y1Me/cR/cvlaLxGz1h8SZIIcPYjwNmPm8LnU9RYQnpFe03h/dxP+DBvLWM8o0g2JJGoH4uDyuHyiY4iF1vyvLqhjU+2F5Ic4cHNTRm0fL0D45jrMFt0zJ0ePqh5GOp5BJcNBJs2beLZZ5/tciwkpPu6GD0NifrNb37T8edZs2bx97//nZMnTxIb27sx3j1VcYxGBSrV8JgQffRoOn//+/NdjhUWFvDYY39i4cIbB5T2sWPZbN/+Lb/+9W/ZsOFL0tPTePzxPw0ozZ7cf/9y7rnnPlJSUgc97e9TKBTo9QPvuDyfxuLZLri66Hhv03Eqa1rw9nDgzoVjmJ0SBEBQqCdffpSBU5OWmY88xoFVnzKmYC8Fj/6RwDt/RvjihSN+ol5/ytNgcCUlfAyyfBuF1WfYV5TG/qI03jv+Mao8FeN8xzIlKIXUgEQc1LohyPXQGIzPVo/pejhgqmnpdlyS4KZkPR5ffUBLYxlH/FKoI5TQSA9SJl967aC+cnLWgCwP2Xu8bCBYuHAhCxcu7HLMYrEwadKkjvX3TSYTBoOh272rVq1i0aJFeHi0T6OWZbmjFtEbPfUR2O32YdNeHh8/jrff7lwT6OOPV7Np01fMnDl3wHksLCykqqqqIx1ZlofkfbevfXRlytRutw+4Hff7bcFxwe789b4pXa45f94n0JWb7xjH5rXZbPowgzmLF3GmJBn5y49QvfUmZ77eScz996Lp4bM7EgxGu7gbXiwMuIH5/vM4U19EmjGDI8YsDpdmolKoiPOKJcWQSLz3WLTK4VuTH6w+gipjI4W5JozlDTQ3tCEpJJJ0Go5jphaZpnPXScD1gRD42X9wsJn50mcmklM4WosNhyBXKisbB5yXC7W12bBYLv/v54pOKFOr1aSmprJx40Zuuukm1q1bx8yZ3RcAO3ToEGazmeXLl3Pw4EHsdjvh4YNbZRouMjKO8N57b/Haa++i1Wppbm7mxRf/ysmThdjtdu64406uv34BGzeuZ9OmDdTV1TJt2kxuvXUZzz33NBUV5SiVSu6991fExSXwxhv/oaWlhXfffRMfHx+Ki4v49a/vpaKigtTUCfzhDyu75eG9995i69ZNKBQKJkyYzAMPPIjRWMH//u9vcHNzR6vV8vzz/8df//o0ubnH8fX177Kq6apV77B9+9fYbHYmTZrM/fc/SHl5WZf7/+///n0li3XADH4u/OiuZLasPcbXXxwnLtmfiEceYc97nzP2xB4KVj6C8/xFBN28qE9T/q81CklBmFsIYW4hLIlcxMm6M6QbMzlizCTDlI1aoSbeewzJhkTivWLRDOOg0B9Vpib2by+k6GQNkgReemdc3HTY7TLl5Q34IeGPAgsy9cg4t1YSuu8gLWoXNgcswFntgho4gZ0zaUXMnhQ8qPlTKCXs9mHWRwDwxBNP8PDDD/PKK6/g5+fHiy++CMCHH36I0Wjkt7/9LY8++igPP/wwX3zxBVqtlr///e8o+ji1+lIs+Xux5O0atPQupI6ZiTq6d2N/a2qqefLJR/n971cSEBAIwLvvvklMzBhWrvwTTU2N/PKXdzN2bDwAJpOR99//BJVKxWOPPUxycirLlv2UkpJiHnjgHt5+ezX33PNLjhxJ4667fsHmzRuoqCjnnXc+QKdz4Mc/voWTJwsJD+/cnGX//r3s2bOLN95YhUqlYuXK37Nu3WdMnTqds2fP8Mkn/zy3H8IqAFav/pSiorPcddftABw4sI+8vOO8/vp7SJLE008/ztatm0hMHNfl/pHIyVnLzXeM47udp8g4WEx5cR3X/2IpWdkpNK1bQ+SmdWTt30vYPb/ApZfNltcyhaQg0j2MSPcwlkbdRGHtqXNBIYsjxkw0Sg0JXmNI9kkizjMGtbLnNfRHAlmWyTxUzIGdp9BolEyeHUZsoh8OjmpkWSY9v5LPT5mQADck3GUZb7sNWWvgSNAiALyAZmQKsbfXGIZgG9WhXn2034EgICCAVatWdTt+++23d/zZx8eHt99+u7+PGBHsdjt/+tNK5s2bz6xZczqOHz58kNZWM1999SUAZrOZU6dOAhAdHdvRRJaefqjj131AQCBjx8aTk5Pd7TnjxiV3LEUdEBDYbX+CtLRDzJs3H52uvU33xhsXs2nTV0ydOh0PD8+OL/GjR9NYvHgJAEFBwSQkJHbkNycnm1/84mdA+6qpPj6+JCaO63L/SKVUKpg6N4KAYHe2fZXLZ++kM+26CBKfeoRvP9xCSPpWyl54jpKkiUT9189QuohJWNAeFKI8IojyiGBp1GIKak+RZszgqCmLNGMGOqWWBO+xpPgkEesZjVoxcmpVNpudXVtOkJtZTli0N7MWROHg2F7TMdW2sPrrfDILqzqvt9Qzo3wXvq1VHPAcT6ZHHJKkxIzMheOuhmIb1fYagYwsy0PSrzVy/tZ6oI6e1utf7UPl7bdfx2KxcN99v+py3G638dhjTxMT0/4Ls7q6CldXN7Zu3YRWq73guu9H+fP7FXR1fr+Cjqvk7+9zYP/ea7DZrABdnnfxfRBs3Hbb7Sxb9lMAGhoaUCqV1NXVfu/+kS0k0otb705l24Zcdm4+QWCoB/N/PJ+zsyaSueoj4jMOcfwPWXj/6FZ85s4Z8Z3Jg0mpUBLjGUmMZyQ/jr6F/JpC0o0ZHDVlc6jiCA4qHYnecSQbEon1jEI1jIOC3S7z9RfHOZVfScq0ECZMb+/ctdrsbDl4lvV7TyNJErfNieST7QVENZ7hB8Z9gMRa39mccA5GAtQqiTZr57+nodpG9fzG93abjFI1+J/J4TH8ZoQ6dOgA69ev409/erZbJ3hy8gTWrfsUgMrKSu6663YqKsq7pZGSksqGDesAKCkpJisrg7i4RJRKZY8B4WKSkyfwzTdbaG01Y7Va2bjxy479ky+UmjqRrVs3Y7fbKS8vIysrs+P+LVs20tzcjNVq5Y9//F927Pi2188fSZxdtNy0LJGZ86OoKK3n4zcPQ7PM4id+w+mb78OkcKb+w/fIevRxmgoLr3Z2hyWlQskYr2juGHMrz05/jAeS7ibJO57MymO8kvk2f9zzNO8f/4Scqjxs9qFbGqE/7HaZbRtyOZVfyfR5kUycEYokSWSfrOKJtw7y2c6TJIR78czySdwwzod5pu9YUr6TarUbbwct4oRze/u/DNy1MLajBuDlqu2YZDbYFIr2L/+hmkswfEP2CLBq1TvYbDZ+97sHuxy/5ZYl3H33cv7+97/ys5/dht1u54EHHiQgIJCMjCNdrv3v/17B888/w8aN65EkiT/8YSXe3t6MGRPHW2+9xiuv/JOwsLDL5mXatBmcOJHHL35xJzablYkTJ/OjH/0Yk8nY5bolS27l1KlC7rhjKb6+fh39DNOnz6SgIJ977/0v7HYbkyZNZeHCRZSXD82e0FebJEnEjfcnKMyTHZvy2psIssqZeUMctinx7Fn1BRG5uyl59mksCROIvusO1O5idc+enB9dFOcVyzL7EnKr80mraO9o3l92CCe1I+P08SQbkohyD0epUF4+0SF0YMdJTuQYmTw7jITUAMqqmvh4WwGZhVUY3B347dJEkiK9MZ8+zdk3XiWlroxDbmPY7p2MXerMu5erlilxvldkccPzNYKhmksg9iMYAcQSE52GYikBWZY5cczIvu2FtDRZiEv2Z9LMUPJPGTnxwRrGlGVhV6pwvH4hITcvQqEeHp2jw3EN/gtZbBZyqvNIN2aSWZlDm60NF7Uz4wwJJBsSiXQPQyENTqNEb8viZJ6JLZ/nEJ/sz/9v787jqirzB45/7n657NtlEQFBZFFAQdzNahqNXDMbs8WsnLIpI9icmwAAIABJREFUc/w1ltWMU02lWTPaMtVMWpaVTZpJLrRplgpuoKAgqIgL62Xf5W7n9weJG7gBXpDn/Xr5ennPPffc7znA+Z7nPOf5PjE3BfLt9uNsSc1DrZIzflgvfhfrh1ImUZ64kbL1CSidnCi/ZTLLMi2tlpi4HjL2FfDr90eY/sQQ7B1bv1Ur5iMQhGskk8no08+LgN7u7Nl2nIOp+eRklTD4pkDGLXiKHb+kY9y4ll7fJXBw+694Tb0H/ZBBov/gMlQKFdGe/Yj27IfRYiSjLJsUQxo7C/eyLT8ZJ7UjA/SRxOijCXIOaLek0JrK8nq2bMxG7+NIo6uW+R8kU99oZlS0L5NGBuFkr8ZYXMSpj5ZxOucojoOGoL/vAYLs7TEFXLroXEcTLQLRIhAtgnNcj6vg0uJatv94lMK8Klw9dAy9JQg3H0e2rv4Jj53f426qos7Tj8D778O1b3iHxnIpnb1F0JpGi5GDpYdINaSRUZaFyWrGWe3UNMGOVzSBTj2vOilc7liYjBbWfppKVVUjJ+zkFFafJszfhWm39aGn3gHJbKbih+8o+3YdMrUa/X3TcRo8pK272m4OZxSzeX0W0x6Nw8VN1+p6okUgCO3Ew8uBifdFk3u4jJ1bj7Fp9UF6BLgwdMxIzHeMZM8X3+KXuZ2SJa9zPCCMkAfvw8G/p63D7jI0CjWxXtHEekVz2nyaA6WHSDWksy0/mZ/ztuOqcWGAPpJYr2gCHHu2ueVltVpZt+YAZaX1HMaCs6sDc0ZHERXsjkwmo+HYMYo//Rhj3ikcBsahn3YfSufO1R/U0S0CkQgEoQUymYygUA8CeruRua+QvTuOs2ZFKn36eXHrQ3dRWjmG9C/WEnhsD3kvL6AhPIawB6Zhp/ewdehdilapJc57AHHeA2gwN5BekkmqIZ1f8pLYcmob7lpXYvTRxOij6OnY46qTQvbJCtZvysa+spEqrYJ7RocyKNwLuUyGpaGBsoS1VG7+CaWLC75PPIXDgJgO2tO2kSt+m3tDPDUkCNefQiEncmAP+vTzIjX5JAf25pGTVUJUXA9un/swOcfiOfLlGoIP7eP4C/toiBhI2L13o/PytHXoXY6d0o7BPrEM9oml3lRPWmkmqcVpbD71Kz+e3IqHnTsx+ihi9dH0cPBpNSlIkkRGbjnrk46Tn1dFOArsPXTMnBGDSqlAslqp2rGd0rWrsdTU4DzqFjzuuhuFXeetuir6CEQfgegjOIet74vXVJ1m16+5HMkwoLVTMXBEAOHR3mQdOEbe2nUEFB4CGdSFxRJ+393Ye3dcQTtbH4vrpdZUR1rJQVKL0zlcmYNVsqLXeRCrjyZGH42vgzeeno4UG6pJO1LK+qTjHC+qwd1BTR+zDI1KwR8ejkVrp6LhWA4lqz7ndO4xtMG90U+7D23g5R/PtrW84xWs/zKdifdG4+vf+m2ra+0jEImgjVJT9/LRR//l3Xf/27wsKyuTdeu+Zv78v7XLd4hEcFZnOfkZCmtI/jmHgpNVOLvaMeTmIAJD3DiScZzja77BPz8DZFDVuz8hUyfjHujX7jF0lmNxPdUYa9lfcpDU4jSOVB5DQsJbp6eHug9HD9pRVKDA00XLHUMCqMkuI/9kJXfe3x9XZSOlCWup2ZmMwtkFzyl/wHHI0C7z5FfhqSrWfb6fcVMj6dmr9Xm4RWdxJxIWFsH8+RG2DkPoQHofRyZMi+ZkTjnJPx/j+28y8PZzYugtwYx56WmOZB7nxJpv8D2yn5JX9nHItw89Joyj18BIW4fepTmqHRjZYwgjewwhr7yUb9KTyCrJpFC3HZkf+AR4MLznADhZxancCoaP7IG0JYHcX7cik8txjR+L+9hxyLWd9zZQS5r7CC4qSdM+RCLoAOe2Ep588lEiIvqSlrafysoK/vzneQwdOpzy8jLeeOM1iouLkcvlPPbYE8TFDbZ16MJVkMlkBPR2p2eQG1nphezedpxvVu4jOMyTwaN6EbJgLkXHC8j+ej2u2SmYPvgnSc6+aG/+PZG3j0SlEn9+V0uSJHILa9iSmseuzGKsVgeie9/BmMHeFDQebupoTttHQLYKnbIA1WcrqbJYcR45CvfxE1C6uNp6F67JmRITHVWBtEv/Ju4qTCG5cE+HbHuoTxyDfWLbZVsmk5n//Odjtm//lQ8/fJ+hQ4fz1ltvMnbsBEaMGEVpaSl/+tMjrFjxBTrdjTOheHchl8uI6O9LSIQX+3edYv/uU+QeLqVvjC8Dhwegvn0iX6hC8C84RFxlJg4Jn5CauI66foMImzAaXz/RsXw5tQ0mkjOK2JZWQF5JHRqVgpsH9OC2WD+83HS/3SbTE20NYe3mDNTGSgbmbOGIv4KdUU44+1YRU5VGjCYKd7vWb610Vs2JQLQIuq7Bg5tm0AoKCqamphpoKvt84sQJli37DwBms5n8/DxCQkJtFqfQNiq1griRgUQM8GHPthMcTMknY38heVYLJVYwuIST4hxKRP1JhtVm45f6IxX7tnDAKxTHm24m+qYB2Gs7R/mKzsBssZJ1ooIdB4tIyS7BbLHSy8eR6beHMjjcCzvN2dNXQ34BeV+s4ecTLkhKe4bqy/F/5EW83OzRlaSTUpzGupxNrMvZRKCTf9PgNX0UrtrONV6gNfIz1UdFIrjYmUfNOju1uqnGuUwmay4fbbFYefvt95vnGCgtLW2e0lPo2uwdNNwc34eogT346JMUfK0y3JGTj0SZTE6GfSBFPqE8+zsvctcn4nc4DdVXmaQkuFMWFI3vzSOIjvRHq+58f57JGR1basFqlTh8qpLdh4rZm11CbYMJnUbJqP6+jIzywd/r7DwRktVK3cEDHF+/CWVuNhleN1Hr4EpwpDMh40YDoAFu8x/Fbf6jKG0oI7U4nVRDGmuPbmDt0Q0EOQcQo49mgD4SF41zu+1HexMtghtUbOxA1q5dzYwZM8nNPcYTT/yRNWu+FbeGbiBunvZkms04Aj2RE4QcLyTysFJW3YhHaG88Qmdjrq/nxI8/47ztF7wPbcFyaCubHfyo69MfnyEDierjhbOD7eeESM4o4pPErObia2XVjXySmAXQpmRgNFk4dKKC9JwyUg+XUFVnRK2SMyDEk0Hhevr1ckelPFtywlJTQ1XSdqq2bsFUUoJJoSXZdwxmnS95WEnLqsKxV9FFMXnYuTM68BZGB95CcX0J+wzppBrSWXPkW74+sp4g50BivaLp7xmJs6ZzTUx0to9ADCjrtNLT9/P7349sfu3pqcfNzf2Sn5k79xkWL36VBx+8B0mS+NvfXhZJ4Abk7qShrLqRTKy4IcMPGaEoqFfI2JJ8nMR9+b9dXbswecZc+jgaOfXjzwTs34M69Vsa9n/Hdw4BVPuHoR8QTd/engR6O6JUXP+pRNb+knNeBU4Ao9nK2l9yrioRSJJEcUUDh46Xk5ZTRtaJCoxmKxqVgr693BgUric62AON+mzJZ6vJRF36fqqTk6g7kA4WC3YhffjOPpLjih4EypSUYqUQCczSZWPy0nlye+DvuD3wdxTVFZNqSCfFkM5Xh9ex+nACIS5BxHhF0d8zEkf11T+O2d46ukXQ5nEES5cuRaFQMHv27IveMxqNvPDCCxw8eBCtVsubb75JcPCVz97TFcYRXA9iHMFZXe3Z+QuvomWAj1xOD5kcyWKlFIl8JEycX9pYslioy8ygeOuvmDLSkJtNnJarOKrzI9c5EEVoBNF9/fBztyPAyxG1quNr/D+8aEur7300/9ZW37NaJQrL6zlyqpLsU5VknaygqtYIgIezlujeHkT3die0p+t5V/6S2Ux9Via1qSnU7N2Ltb4OhbMLTkOG4DR0OBq/nvzfoi30Rk4VcBQr554tLhVTawpqi0g1pJFiSMNQX4pcJqePSzAxXlFEe/bDQWWbi7WGeiMr3k5mxO97Exnbo9X1rvs4gpqaGhYuXMjGjRuZOXNmi+usXLkSOzs7EhMT2bNnD8899xxfffXVtX6lIHQ5Z65Kz9xXd3PSMHZUMOu2HkVTY8ELGe7IKEai8Jyra5lCgUNkFA6RUVhNRuozM6nYvZuItP30y8/FUvALp5L1bNH5clLni6KHHwE+TgR6O+Hv5YC3mw7H3+bfbS9nWjctLT+j0WShuLye/JI6couqOVFUw8niWhpNTbOUOTuoCfN3JbSnC6H+Lni76c4b1GWpraX+UCa1+1KoO5COtaEBmUaLQ/8BOA0bji48Apm8KVkcyTTQGwV1v00cL7US09XwdfDG18Gbsb1Gk19b+FtLIY0vsr7my+xvCHMNIUYfRbRnX3Sq1quAtrdO20ewefNmAgMDeeihh1pdZ+vWrcyZMweAuLg4ysvLKSgowNe3a0+ELghXo6VZrD5cnwmAAYkeyPBBjh4JQ7WR+jojOvuzJ3G5So1DdH8covsjWSw0HDlMXXoaukMZBJ5KhbJUGovsOKnzJkvlwWatJwaNG3Z2arzddXi76vBwscPFQY2zgwZXBw3ODmp0GiUqpfyKR9dOGhnEp99lYTrnWXaFXIaXm443v9xHUXk95eckCrVSTk8vB0ZE+hDg7UiInzN6V7vzvs/a2Eh9zlHqMzOoP5RJ48kTIEkoHB1xiI3DISYGXXgEctX5Se1gaj7bfjiKg5sdB6vqOXc2zPaYN1gmk+Hn6Iufoy/jg8Zwqja/uaP5s6zVrMpeS7hbCDH6aKI8I7BTduwANbm8kz41NGnSJADeeeedVtcxGAx4ep59RtrT05OioiKRCIRu78zVtRHIRaIICz7I8EbO5+/vIqK/D5EDe+Dkcv4JRqZQoAsLRxcWjqenI4VHTlF/KIO6zAzssw4RUpoLgFWhotbVi+JqPSdzHUmWHClTO2ORnX8LSS6ToVUr0KgVaFQKZDJoaDRTU2/CYpWQy0ClVGCxSphb6Ki0WJsGeHm72dGnZ9MVvrebDl93e3w8dCjkZ2/1WE0mjPl5nD6ey+ljxzidm0Njfj5YraBQYBcUjPv4iejC+6INDm6+8j+X2WRhx+YcMvcXEhDsxu8nRRByuIR123MpqWjokCeZZDIZ/o5++Dv6MTE4npM1eaQUp5FqSOdgWRbKLAXh7qHE6KOI8ohAq9S223efYfPO4sTERBYuXHjesqCgIFasWHHZjUuSdF72lySpObNdiZbudRkMcpTK699RZms3wj7L5XI8Pdv+NEZ7bMPWZozry7ur05pvmTQA+So5Y8aEYiqqIz01n/SUfHqH6YkbHkDvUD0y+cVX7j4hPSGkJ0y4HYDG0jJqsrOpycqmOisb52PphJjNTSvL5Sg8vbC462m0d6ZB50KDzplajT01Ci31kgpDZQPF5Q1IkoQdoJNkaM1WfJ3s0CnlWE1WZJKE1dKUJNRqJWq1Aq1GhbNajSMyHOvqyDuaw3dp2SiryvGVaghQ1COrKG066QMKex2OISF4Dh2MU1goThHhl63+eSq3nG//l0ZZSR3Dbw3mlvgw5HIZE3xdmHBzSLv9bC5Hr49gYHAEVmkqR8uOk3QqhZ2nUjmQmYlKrmSATz+G+ccS4xuJVtk+T3tJv7UE7OzUHfL7f9lEEB8fT3x8/DVt3MvLC4PBgL+/P9D0rLxef+XVGFvqLLZarTdEx+nVuFE6i61Wa5s7ertaZ3Fr+vq7MP320IueyY/r6w39IGqQH5n7C8hMK+ToIQP2DmqCwjzpHeaJVw8nZDJZK8dCDX0icegTicMEkCwWjMXFGPNO0ZifR2N+HqbiYmRHMtGYTLgAZrmKGrUbNVoPnLSeeKldOa1ygjOzhEkgr6hBo7GikZlRYkEhWUCyYq6XMJut1FrllKLltFKHdKbVoQhE5ehGmamaMksjvtGx9O3fE6egQFRe3s1X/GagvNYMtRf/XCVJoqSohtTkptHaDk6a5sJrZWW1zevZ6vfCFU/G+t1OfI/RHKs6QaohnX2GdHbn70clV9HPI5wYfRT93MNQK9reZ1Nbc/qS+9kpi86NGjWKhIQEBg4cyN69e9FoNOK2kCD8pqW+gzMcnDQMuqkXscMDyD1cytFMA5n7CjiwNx+tnQpff2dC+3qjtVfi5mGPWtPyn7JMoUDj64vG1xedJY7qytNUVTRQbailJK+C0uJaaurO3mCXWYxoTNW41uRiZ6zE3liBnakGtWRCIQOzJEOmkGNvr0Wn06Cws0PubI9Cp0Ous0fhCF/tq6LCosOq1FGpcsJO7YwGGZU1kLnNhPPBPDy9K/H0dsTDywF7BzV29moUCjlWq5W6WiPVFQ0U5VdzIqec8pK6plHbIwKIivNrdV9tSS6T09ulF71dejElZDw5lbmk/JYU9hnSUSvURLqHE+sVTYRbKCrF1Y8glytkna+PoDWrVq3CYDAwZ84cHnjgARYsWMDYsWNRq9UsXry4vb9OEG5oCoWc3uF6eofrMTaaOX60jLzcCvJOVHIsu7R5vTMnUzt7FSqVonkUu7HRQuNpEw31JupqGjn3YXEnFy2efq6Eezk0nZT1Dvz90z2UVStAe+lR7uc+6nqhPQe2nHNmkQAJJWAP3D8ymJKiGoryqzl6qOSS3yGXy9D7OnLTmBB6h+vRaDtfAmiJXCYnxDWYENdg7g6ZwJHKY6Qa0tlfcoAUQxpahYZIjwhivaIJc+uDSn5l+yWXyzqs6JyYj6AdNDQ0sGzZ+yQlbUet1uDg4MAjjzxGTMzANm/722+/wcHBnltvHc2yZR8QFhbOiBGj2iHq6687jiPoKJIkoVYqOZJVTHlpPVXlDTTUG6mvM2E2WzjzLKVao0Bjp0KrVeHoosXZ1Q5nVy2u7jo0LdQ1unDcw6W4O2l440/DL1o+770drT5meu76DfVGygx11NcZaag3IVmb+hTt7FU4uWhx93RApb6y8RFd4ffCYrVwuCKHVEMa+0sOUm9uwE6pJcqjLzH6KMLcQlBeIiksX7KD0H5ejPh971bX6ZS3hroDSZJ47rmnCQgIZOXKr1AqlRw+nMUzz8zlpZdeIzp6QJu2f+BAGrGxTQll5sxZ7RGycAOQyWS4uOkIDPEgsB37SS8c99Da2AGg1eWTRwVflExaeqTTTqfGL7B9xzp0Zgq5gnD3PoS792Fq6J1kVxwlpTiN9NIMdhWloFPaEe3Zj1h9NH1cg1HIL3jCS96Fbg11N+npaZw8eYI333wbpbLpcPbpE8b06Q/z8ccfYjabefjhR4mJGUhhYQGzZz/GmjXrOXbsKEuWvEFDQwMVFeU88MAMJk2awvLl/yEj4yAGQxGTJt3F9u2/kpq6F1dXd3766XsGDIjljjvG87//fc66dV+jUCgYNmwkf/rTUzY+EsKN4sK+i0td4bf2eaBDi9N1dUq5kr7uYfR1D8NkNZNVfpiU4qb+hOTCPdirdPT3jCRGH0WISxAKueK3PgJRa+gi1Uk7qNr+a4ds23nETTgNu7jZe6FDhw7Sp09ocxI4o3//GD744F369Gm5rPT69Qk8+OAjDBw4iPz8PGbMuJdJk6YAYDQ28tlnqwHIzs4iNnYggwcP5aefvv/tOzP45ps1LFu2Eq1Wy9NPP0VW1iHCwsLbssuC0KIrvcI/16U6woXzqeRKIj0iiPSIwGQxkVmeTUpxGnuK97GjYBeOKgf66yOx4olFFJ3rnCSJFkdmGo2NSFLrP7Qnn/wzu3Yls3Llx+TkHKWhob75vYiIfpf8zn37Uhk+fCQODk33At96671rjF4QLk9c4V8/KoWKaM9+RHv2w2gxklGWTYohjZ2Fe+llGs6+4gLKDmcTo48myDkAuax9xhd16UTgNGz4FV21d6SIiL6sXr0Ks9mMUqmkoqICFxcXMjIOEBoafl6SMJ8Z2AMsWDAfR0cnhg8fye9+N7r5ah9Ao7n0IJSm1sfZ7ZaWlqDRaHF07PoDrYTOSVzhX39qhZoB+kgG6CNptBj54tAuGpWQVLCdX/KScFY7NU2w4xVNoFPPNiWFrj9c1caiovoTEBDIu+8uwWw2k5i4gccff4QVK5YzY8ZMnJ1dyM3NAWDbtq3Nn9uzZzczZ85i5Mib2bkzCQCLxXLR9hUKxUXLo6MHsHPnDurr6zGbzbz44gtkZWV23E4KgmBTGoUandqOQMcAFo1YwIyIaQQ49WRbfjL/TPk3C5IWsfbIBvJqC65p+126RdAZyGQyFi78Jx988C733383SqUKR0dH/Pz82LUrmWnTHmDhwpfYuPFbRo68uflzDz/8Rx5/fCYajZrg4BB8fHwpLLz4hzhw4CD++9/3zpurIDQ0jMmT/8CsWQ9htUqMGnWLmPheEG5wTeMIrGiVWuK8BxDnPYAGcwPpJZmkGtLYmreD9LKD/Dvg1avethhH0EGsVivJyTsYNmzEFVd3bM2NUmJCjCNoX+JYnNUdjsXXn6SisVMy7g9RLb5fb6rncGUOv48YdtXbFi2CDiKXyxk+fOTlVxQEQbgClxtZrFPpiPFqOUlcdtvXGpQgCIJw/XTkgDKRCARBELoAuULWXI663bfdIVsVBEEQ2pVMtAgEQRC6N7lc3mHVR0UiEARB6ALkchmWDqo1JBJBGxQWFnDzzUOYMePe8/4VFxexbNkHbN/+CwDLl/+HyZPH8uWXn/Haay9RVFTYrnFkZh7kvffeBmDTpvW8+uqL7br9M5588lFSU/d2yLYFQbg0RQf2EYjHR9vIw8OTFSu+uGj5uSWjv/tuE0uXvoe/fwBTpoznoYf+2K4xHD+eS0VFebtuUxCEzqUj+whEIuggr776IgMGxJKRcYCSkmKef/4vjBkzltLSEubNm8O///0hBQX5vP32v2hsPI2zswvz5j2Pr28P8vJO8eabC6murkKj0fKXvzxLcHAfXn31ReztHcjOPkRpaQkzZszkpptuYdmyD2hoaOCTT5bj6aknL+8UTz75KMXFxQwcGMezz/71ovg+/fQjfvghEblcTlzcEP70p6cwGIp5+unZODu7oNFoWLx4Ka+//g+ysg7h7e1LVVVl8+dXrlzBzz//iMViZfDgITz++FMUFRWe9/mlS0UxPEFoL2I+glZkHygiK72oQ7YdFuVNaOTli2w1nZDvbX49evTt3Hvv9ObX8+Y9z65dybzxxlv4+PiSkPA1b7zxFjqdPYsWvcLrry/B29ubXbuSef31V3nrrfd49dW/M3fuM/TpE0Zu7jFeeGEeX3zxNQAGQzHvvbeMY8dymD37McaOncDMmbPYty+FBx98hE2b1lNcXMSKFV+g1doxdeokjh3LISjobMng5OQdbN/+K8uWrUSpVPLXvz7DunVfM2zYCE6ePMHq1e/g4+PLF1+sBODzz9dw6tRJHnxwGgA7dyaRnX2IDz/8FJlMxj/+sYAffkgkKqr/eZ8XBKH9dGRncZsTwdKlS1EoFMyePfui9/Lz8xk3bhz+/v4AeHh4sHz58rZ+ZafS2q2hyzl16gQFBXnMn/9/zcvq6uqor6/n0KFMXnvt5eblDQ31zVfjgwYNRiaTERQUTHV1VYvb7t8/BicnZwB69PA770oeICVlD7fdNgatVgvA2LETSEzcyLBhI3B1dWs+ie/fn8KECZMB6NnTn8jIplGLe/fuJjPzII888gAAjY2n8fLyJiqq/3mfFwSh/XTKFkFNTQ0LFy5k48aNzJw5s8V1Dh48yPjx43n55ZdbfL+tQiOv7Kq9M7JYrPj69mhOIhaLhYqKcqxWK2q15rzkUl5e0nxiV6ubSlRfqn6RQnH+FHcXlpO6cJ4ESQKLpalE9vklsGU0T357znatVgt/+MM07rnnfqDpd0GhUFBVVXnZEtqCIFybpkTQyZ4a2rx5M4GBgTz00EOtrnPgwAEOHz7MxIkTmT59OtnZ2df6dTeMM2WlAwICqa6uJi1tHwAbN37Liy++gIODA35+Pfn++00A7Nmzk1mzWk60F27zSsXExPHTT9/T2Hgas9nMpk3fEhMz8KL1Bg4cxA8/fIfVaqWoqJADB9KbP//995uay2A/99zTbN26+Yq/XxCEq9c0VWUnaxFMmjQJgHfeeafVdTQaDRMmTOCee+5h27ZtPPHEE2zatAm1uvtMWH2hYcNG8pe/zOFf/3qHf/xjEW+99SZGoxGdzp6//vUlAP7+91d4443X+OKLT1EqVbzyyqJLtgDCw/vy0Uf/5f333yEgIPCyMQwfPpIjR7J55JHpWCxmBg0awl13TaWkxHDeepMn301ubg733TcFb2+f5n6GESNu4ujRwzz66AysVguDBw8jPn5cuz8WKwjCWZcrOtcWly1DnZiYyMKFC89bFhQUxIoVK4CziaClPoILTZgwgcWLFxMWFnaN4UJGRia+vp2/DLVwsYKCE/TtG2HrMAShS/o5MZttm4+w4M1x7b7ty7YI4uPjiY+Pv6aNr1y5knHjxuHq6go03au+cJL3S2lpPgKr1XpD1Oa/GjfKfARWq7XNNeO7Q935KyWOxVnd4VicPm0ECYqLq5HLW75DIJfLcHd3uOptd+jI4j179rBmzRoAdu/ejdVqJSgoqCO/UhAE4YYkVzSdrjuin6DdxxGsWrUKg8HAnDlzeOGFF5g/fz4JCQloNBr++c9/IpeLqhaCIAhX60wroCPKTLQ5EVzYNzBt2rTm/3t5efHxxx+39SsEQRC6PdlviaDpEVLFpVe+SuLyXBAEoQtQ/JYILB3w5JBIBIIgCF2AXHGmRSASgSAIQrd0pn+1I/oIRCLoAjZs+LbD5hgQBKFrONtHIBKBIAhCt3TmqSGrpf3HFHXpMtRXKjmjiLW/5FBW3Yi7k4bJo4IZ2rftxeoMhmJefvlvNDQ0IJfLmDNnHgZDMV9++RmNjY2YTEaee24BkZHRPPnko4SGhpGevh+j0cisWbNZvfpLjh8/xtSp9zJ16n0sX/4fiouLOH48l6qqSiZOnHxeSWuAQ4cyWpzD4MsvPyMxcSNyuYzw8L4888wLbd4/QRA6D3kHtghu+ESQnFHEJ4lZGH8bmVtW3cgniVkAbU65D+yoAAAJXklEQVQGGzYkMGzYCO69dzo7dyaRlpbK7t07Wbx4KS4uLmzYkMDKlStYvHgJ0DSy+sMPP+Wjj/7L0qVv8MknX1JZWcGMGU2JACA7+xDvv/8RVquVRx65n9jYQc3fZzKZWpzD4F//eofPPlvBunXfIZfLWbToH5SUGPD01Ldp/wRB6DxEImiDtb/kNCeBM4xmK2t/yWlzIhg4cBAvvPAMhw9nM2zYCKZMuYdJk+5ix45tnDx5gn37Us4bQDdkyHAAvL196Ns3Eq1Wi7e3D7W1Z4fG33bbGHQ6HdBU3C0lZQ9ubk0lOlqbw0ChUNCvXxQzZ05n5MhR3HPPfSIJCMINpiOfGrrhE0FZdeNVLb8aUVH9+eyzr0hK2s7mzT+wfv06yspKGT06nujoAQQH9+brr79qXv/cOksXzhnQ0nKrVUKpPPu6tTkMABYu/CcZGQfYuTOJp59+igUL/sGAAbFt3kdBEDqHs30EorP4qrk7tTxRSmvLr8Z7773F998nEh8/jrlzn2XfvhRkMhnTpz9MTMxAfvnl56ueSOLXX7diNBqprq5mx45fiYsb0vxea3MYVFRUcP/9dxMU1JuZM2cRFzeYnJwjbd4/QRA6jzN3FzpicpobvkUweVTweX0EAGqlnMmjgi/xqStz111Teemlv7Jp03rkcjmLFy/l++83ce+9U5DLZQwaNJT09P1XtU2NRsMTT8ykrq6OBx54iF69gsjOzmyKW61ucQ4DV1dXJky4kz/+cToajRZ//wDGjp3Y5v0TBKHz6Mg+gsvOR2BLLZWhLio6gbf31c1H0FFPDbW35cv/A8Ajjzx23vIbpQz1tfzsLtQdyg1fKXEszuoOx6K4oJq1n+7jjrv7ERDs3uI611qG+oZvEUDT00Gd8cQvCIJwpTp19VGh/VzYEhAEQTjjzHS1HTF//Q3fWSwIgnAjaG4RdMDd/C6ZCDpxt4bQCvEzE4S2EbWGzqFUqqmrqxYnli5EkiTq6qpRKtW2DkUQuiwxsvgcrq6eVFSUUFtbaetQrhu5XN4hzw5fT0qlGldXT1uHIQhd1pk+AtFZDCgUSjw8fGwdxnXVHR6NEwTh0ppbBJ2pjyAlJYUpU6YwceJEHnzwQfLz8y9ax2g0Mm/ePOLj47nzzjvJyclpU7CCIAjdVUc+PnrNiWDevHm88sorJCQkMH78eF555ZWL1lm5ciV2dnYkJiby/PPP89xzz7UpWEEQhO6qIzuLr+nWkNFoZM6cOYSFhQEQGhrKZ599dtF6W7duZc6cOQDExcVRXl5OQUEBvr6+V/Q9ZzKgII7FucSxOEsci7Nu9GOhUilwdrVDrVG2uq/XegyuKRGo1WomTmyqZWO1Wnn33Xe57bbbLlrPYDDg6Xm2g9DT05OioqIrTgSurvbXEt4N6VqGjd+oxLE4SxyLs7rDsZjz1991yHYvmwgSExNZuHDhecuCgoJYsWIFRqOR+fPnYzabeeyxi0fFSpLU3NN95vW59fkFQRAE27tsIoiPjyc+Pv6i5XV1dTz++OO4uLjw/vvvo1KpLlrHy8sLg8GAv78/AKWlpej1YsIUQRCEzqRNncUBAQEsXboUtbrlgUKjRo0iISEBgL1796LRaK74tpAgCIJwfVxTGerMzEzuvPNOevfu3Tzrll6v58MPP2TVqlUYDAbmzJlDY2MjCxYs4ODBg6jVal555RX69u3b7jshCIIgXLtOPR+BIAiC0PFEz60gCEI3JxKBIAhCNycSgSAIQjcnEoEgCEI31ykTwfr167njjjsYPXo0n3/+ua3Dsal3332XsWPHMnbsWBYvXmzrcGzu9ddfZ/78+bYOw+a2bNnC5MmTiY+Pb7HOV3eSkJDQ/Dfy+uuv2zqc6662tpZx48aRl5cHQFJSEuPHj2f06NEsWbLkyjYidTJFRUXSLbfcIlVUVEh1dXXS+PHjpSNHjtg6LJvYsWOHNHXqVKmxsVEyGo3S9OnTpR9++MHWYdlMUlKSNHjwYOnZZ5+1dSg2dfLkSWnEiBFSYWGhZDQapWnTpklbt261dVg2UV9fL8XFxUllZWWSyWSSpkyZIu3YscPWYV03+/fvl8aNGyf17dtXOnXqlNTQ0CCNGjVKOnnypGQymaSHH374in43Ol2LICkpiSFDhuDi4oJOp2PMmDF89913tg7LJjw9PZk/fz5qtRqVSkVwcDAFBQW2DssmKisrWbJkCbNmzbJ1KDb3448/cscdd+Dt7Y1KpWLJkiVER0fbOiybsFgsWK1WGhoaMJvNmM1mNBqNrcO6br766iv+/ve/N1dsSE9PJyAggJ49e6JUKhk/fvwVnT873cQ0Fxaq0+v1pKen2zAi2wkJCWn+//Hjx0lMTGTVqlU2jMh2FixYwNy5cyksLLR1KDZ34sQJVCoVs2bNorCwkJtvvpk///nPtg7LJhwcHJgzZw7x8fHY2dkRFxdHTEyMrcO6bl599dXzXrd0/iwuLr7sdjpdi8BqtV5UqO7c193RkSNHePjhh3nmmWcIDAy0dTjX3erVq/Hx8WHo0KG2DqVTsFgsJCcn89prr/G///2P9PR0vvnmG1uHZRNZWVl8/fXX/Pzzz2zbtg25XM7y5cttHZbNXOv5s9MlAm9vb0pKSppfl5SUdOtCdSkpKcyYMYOnn36aO++809bh2MSmTZvYsWMHEydO5O2332bLli289tprtg7LZjw8PBg6dChubm5otVpuu+22bttq3r59O0OHDsXd3R21Ws3kyZPZvXu3rcOymWs9f3a6RDBs2DCSk5MpLy+noaGBH374gZtuusnWYdlEYWEhTzzxBG+++SZjx461dTg28/HHH7NhwwYSEhJ46qmnuPXWW3n++edtHZbN3HLLLWzfvp3q6mosFgvbtm3rtjW8wsLCSEpKor6+HkmS2LJlC5GRkbYOy2aio6PJzc3lxIkTWCwWNmzYcEXnz07XR+Dl5cXcuXOZPn06JpOJKVOmEBUVZeuwbGL58uU0NjayaNGi5mX33HMP06ZNs2FUgq1FR0czc+ZM7r33XkwmE8OHD+euu+6ydVg2MWLECDIzM5k8eTIqlYrIyEgeffRRW4dlMxqNhkWLFjF79mwaGxsZNWoUt99++2U/J4rOCYIgdHOd7taQIAiCcH2JRCAIgtDNiUQgCILQzYlEIAiC0M2JRCAIgtDNiUQgCILQzYlEIAiC0M2JRCAIgtDN/T/ruvoaA4vrOwAAAABJRU5ErkJggg==)
%% Cell type:markdown id: tags:
Now we perform polynomial regression using `sklearn`. In ADS1001 we saw how to do this with the COVID-19 dataset. Here we will again show how to undertake multiple linear regression, but in this case, applied to fitting polynomials to our data.
We introduce three linear models from `sklearn`. `RidgeCV` and `LassoCV` are just cross-validation forms forms of `Ridge` and `Lasso`. We also introduce a function to calculate $R^2$. Recall that this lies between 0 and 1, and for the best models, this will be close to 1.
%% Cell type:code id: tags:
``` python
from sklearn.linear_model import LinearRegression, Ridge, Lasso, RidgeCV, LassoCV
from sklearn.metrics import r2_score
```
%% Cell type:markdown id: tags:
To implement linear regression, we instatiate the model and fit our training data set `x` and `y`. This will give a slope and intercept for the line of best fit, and we can then find the predicted values for this model, `y_pred`, for our values `x_test`. The success of the model can be found be comparing the predicted values with the actual values for the test set, `y_test`. `np.newaxis` allows us to convert a vector to a matrix with one column.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
model = LinearRegression(fit_intercept=True)
model.fit(x[:,np.newaxis],y)
yfit = model.predict(xfit[:,np.newaxis])
y_pred = model.predict(x_test[:,np.newaxis])
rsquared_linear = r2_score(y_pred,y_test)
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.plot(xfit,true_fun(xfit))
plt.title("Linear Regression Rsq=%f" % (rsquared_linear));
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:code id: tags:
``` python
print("Model slope: ",model.coef_[0])
print("Model intercept:",model.intercept_)
```
%%%% Output: stream
Model slope: -0.2079715661158376
Model intercept: 0.8608441005248983
%% Cell type:markdown id: tags:
To undertake polynomial regression is a bit more complex.
First we need to define a Vandermonde matrix. Assume we have a vector of x values given by `[x1,x2,...,xn]`, then the entry in row `i` and column `j` of the Vandermonde matrix will be `(xi)**(m-(j-1))`, where the two asterisks denote exponentiation. Therefore the first row will be `[(x1)**m,(x1)**(m-1), ...,x1,1]`. Hence the Vandermonde matrix has `n` data points and `m+1` features for each data point. Since the last column only has ones, it actually only has `m` independent features. Note that the argument we pass to `vander` is the number of columns of the matrix, which is one more than the order of the polynomial. A simple example of a Vandermonde matrix of order 3 is shown below.
%% Cell type:code id: tags:
``` python
z = [0,1,2,3]
Z = np.vander(z, 4)
print(Z)
```
%%%% Output: stream
[[ 0 0 0 1]
[ 1 1 1 1]
[ 8 4 2 1]
[27 9 3 1]]
%% Cell type:markdown id: tags:
Here our order of the polynomial is `reg_ord=4`, i.e., a quartic.
The Vandermonde matrix can now be passed to our linear regression model to perform multiple linear regression. Last semester we did this to perform linear regression in multiple dimensions. Here we are doing a similar thing, but performing in multiple independent functions, where the functions are `x**m`, `x**(m-1)`, ..., `x`.
Once we have the coefficients of the model, we can use the model in the same way to give predicted values for our testing set, and compare them against the actual target values for the training set.
Note that we could also perform polynomial regression using the sklearn routines `PolynomialFeatures` and `make_pipeline`. This is a bit more compact, but the process used here provides a better understanding of polynomial regression.
Here we see that $R^2$ is very close to 1, which shows that a quartic is a very good model for this data.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
reg_ord = 4;
model = LinearRegression(fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
yfit = model.predict(np.vander(xfit,reg_ord+1))
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared_quartic = r2_score(y_test,y_pred)
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.plot(xfit,true_fun(xfit))
plt.title("Quartic Regression Rsq=%f" % (rsquared_quartic));
```
%%%% Output: display_data
![](data:image/png;base64,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GzduMGfOHKZMmeLsUsrExo0bGTRoECEhIej1eubMmUPLli2dXVapstls2O12cnJysFqtWK1WjEajs8sqcYsXL+aNN94gODgYgMOHDxMaGkqtWrXQ6XRERESUWI6V69kyCys5OZmgoCDH6+DgYA4fPuzEikpfw4YNHf++cOEC0dHRLFq0yIkVlY3XX3+d5557jsTERGeXUiYuXryIXq9nypQpJCYm0rNnT5599llnl1WqvLy8mD59OgMHDsTd3Z127drRpk0bZ5dV4t599908r/PLsaSkpBI5VqVq4dvtdhTlt+lBVVXN87oyO336NE888QQvvPACderUcXY5pWrJkiVUq1aNTp06ObuUMmOz2di5cyd///vf+eGHHzh8+DArVqxwdlmlKi4ujmXLlvHzzz+zbds2NBoNX3/9tbPLKnWlmWOVKvBDQkJISUlxvE5JSXF8TarMe14RaAAAAatJREFU9u3bx5/+9Cf+8pe/MGzYMGeXU+rWrl1LTEwMQ4YM4eOPP2bz5s38/e9/d3ZZpapKlSp06tSJgIAA3Nzc6Nu3b6X/9rp9+3Y6depEYGAgBoOByMhI9uzZ4+yySl1p5lilCvzOnTuzc+dO0tLSyMnJYcOGDXTv3t3ZZZWqxMREnnnmGWbPns3gwYOdXU6Z+O9//8vq1auJiopi2rRp9O7dm5dfftnZZZWqXr16sX37dtLT07HZbGzbto2wsDBnl1WqGjduzI4dO8jOzkZVVTZv3kzz5s2dXVapa9myJefPn+fixYvYbDZWr15dYjlWqfrwq1atynPPPce4ceOwWCyMGDGCFi1aOLusUvX1119jMpl4//33HctGjRrF6NGjnViVKGktW7Zk4sSJjBkzBovFQpcuXRg+fLizyypVXbt25fjx40RGRqLX62nevDmTJ092dlmlzmg08v777zN16lRMJhM9evRgwIABJbJveeKVEEK4iErVpSOEEKJgEvhCCOEiJPCFEMJFSOALIYSLkMAXQggXIYEvhBAuQgJfCCFchAS+EEK4iP8H2AqI0ryzcHQAAAAASUVORK5CYII=)
%% Cell type:markdown id: tags:
We can view the coefficients and intercept of the model. We don't show the last coefficient as this is 0.
%% Cell type:code id: tags:
``` python
print("Model coefficients: ",model.coef_[0:reg_ord])
print("Model intercept: ",model.intercept_)
quadcoefs = np.log10(abs(model.coef_[0:reg_ord]))
```
%%%% Output: stream
Model coefficients: [-0.00072192 0.02470839 -0.1935915 0.10302281]
Model intercept: 0.9851448822164288
%% Cell type:markdown id: tags:
We can repeat the process for a fifteenth order polynomial by only changing `reg_ord`. In this case the correlation coefficient decreases significantly, due the overfitting by the model.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
reg_ord = 15;
model = LinearRegression(fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
yfit = model.predict(np.vander(xfit,reg_ord+1))
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared = r2_score(y_test,y_pred)
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.plot(xfit,true_fun(xfit))
plt.title("Fifteenth Order Regression Rsq=%f" % (rsquared));
```
%%%% Output: display_data
![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAEJCAYAAACXCJy4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd3RU1frw8e+Znh5S6b0HKVJDC83Qq+ViARHwWlHxXuzoT9RLEQuieK9deRFFQVA6iIBCEJDem7RACunJ9Dn7/SNmICaBkDZJZn/Wci3nnDNnnj0zPNmzzz7PVoQQAkmSJKna03g6AEmSJKliyIQvSZLkJWTClyRJ8hIy4UuSJHkJmfAlSZK8hEz4kiRJXkLn6QC8UYsWLWjevDkazdW/t23atOGNN95g5MiRLFy4ED8/Px5//HHOnDnDuHHjSE9Pp2XLlgwYMKDM47lw4QJz5sxh/vz5XLx4keHDh7N3795iPXfNmjV89tlnZGZmYjAYqF+/Pk888QQtWrQo1vOHDRvG9OnT6dq1a4njHzduHPHx8QQEBACgqip2u51HHnmEUaNGlfi85SUxMZEnn3ySb775pkzO99xzz7Ft2zZCQkKA3PabzWbGjh3Lgw8+WCav8Xf/+9//+OGHH3C5XIwYMYLHH38cRVHyHWO323n99dfZsWMHvr6+9O3blylTpuT73mdkZDBmzBimTZvGoEGD2L59O7Nnz3bvt1qtnD17lqVLl9KmTRvGjBmD1WpFr9cDMHz4cCZPnszFixd55ZVXuHTpEr6+vkyaNIkhQ4YAsH//fmbMmIHZbCYiIoI333yTiIiIcnlfKj0hVbjmzZuLlJSU6x4THx8v2rRpI5xOpxBCiPvuu0+sWbOmXOLZsWOHGDp0qBBCiAsXLoj27dsX63kLFy4Uo0aNEidPnnRv27x5s+jevbs4cuRIsc4xdOhQsWPHjpsP+hqFvTcHDhwQUVFRIisrq1TnrgqeffZZ8cknn+TbFh8fL9q1aydOnTpV5q+3efNmMXLkSJGTkyOsVqu49957xapVqwocN2/ePDFx4kRhtVqFqqrixRdfFAsXLnTvV1VVPPTQQ6JLly5FfrenTJki5s6dK4QQIicnR3Ts2FHY7fYCx917773ivffeE0IIkZWVJUaPHi2OHj0qbDab6N27t9i9e7cQQohFixaJyZMnl/o9qKpkD7+SadGiBZs3b2by5Mk4nU7GjBnDXXfdxaFDh5gzZw5arZaYmBjmzp3Lrl27cLlctG7dmpdeegl/f38SExOZMWMGly9fxuFwMHToUB5++GEuXrzIhAkTiImJYf/+/WRmZjJt2jT69evHSy+9RGJiIpMmTeLVV1/F5XLx8ssvc/DgQbKyspg2bRoDBw7MF6fdbuedd95hyZIlNGnSxL09JiaGBx98kHfeeYePPvqIcePGERQUxJkzZ7j77ruJjo7mhRdewGKx0LhxY8xms/u5e/bsYe7cuVgsFjQaDY8//jh9+/Zl2bJlfP/991gsFvz9/Vm4cOEN38cLFy7g6+uLwWAAYNOmTXz44Yc4HA5MJhPPPvssHTp0wGKx8Morr7B//34CAgJo2rQpALNmzaJfv360bduW48eP8/TTT9O2bdtC31un08lrr73Gnj170Ov11K1bl5kzZ2I0GgvdnpaW5v4V5XA4mDVrFnFxcWi1Wtq2bcvzzz+Pv78//fr1Y/To0cTFxXH58mVGjhzJU089VazvUUJCAkII/P39i4zPz8+PRYsW8eWXXxIQEEDPnj356aef2LRpEx999BGrVq0qcN4vvviCDRs2MGzYMHx9fQEYM2YMP/74o7tHnefw4cMMHToUo9EIwIABA/j000+57777AFiwYAEtWrQgJyen0DasWLGCixcv8vbbbwNw4MABfH19mTx5MqmpqURHR/P0009jMpk4fPgws2bNAsDf35+uXbuyYcMGunfvjr+/Px07dgTgjjvu4D//+Q9paWnUqFGjWO9lteLpvzjeqHnz5mLYsGFixIgR7v+uXLni3peSklKgp31tL3b+/Pli1qxZQlVVIYQQb731lnjllVeEEEKMGzdO/Pzzz0IIIaxWqxg3bpxYtWqVuHDhgmjevLnYtGmTEEKItWvXij59+gghCvbwmzdvLtauXSuEEGL9+vWif//+Bdpw8OBB0bVr10Lbd+zYMXHrrbe6437++efd+0aOHCmWLFkihBBi9+7dokWLFmLHjh0iPT1dxMbGigsXLgghhEhISBC9e/cW8fHxYunSpaJz585F9tbvu+8+0bdvXzFixAjRp08fER0dLaZOnSoOHz4shBDizz//FMOGDROpqalCCCFOnDghevToIXJycsTcuXPF008/LVwul8jKyhLDhw8Xzz77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)
%% Cell type:code id: tags:
``` python
print("Model coefficients: ",model.coef_[0:reg_ord])
print("Model intercept: ",model.intercept_)
```
%%%% Output: stream
Model coefficients: [-4.14069383e-09 2.67243929e-07 -7.59025023e-06 1.24484879e-04
-1.29856424e-03 8.92203106e-03 -4.01965591e-02 1.12765767e-01
-1.66680480e-01 3.98261521e-02 1.73205727e-01 -7.16871971e-03
-2.30528064e-01 -2.13933576e-01 2.26906291e-01]
Model intercept: 0.9905320987616388
%% Cell type:code id: tags:
``` python
lincoefs = np.log10(abs(model.coef_[0:reg_ord]));
```
%% Cell type:markdown id: tags:
One manifestation of overfitting for polynomial regression is that the coefficients of the polynomial do not decrease in magnitude sufficiently rapidly. For the fifteenth order polynomial above recall that the largest value of `x` is 10, so the magnitude of the largest term in the polynomial is $10^{-9}\times 10^{15} = 10^6$. Regularization aims to reduce the magnitude of these coefficents by modifying the function that is minimized.
Ridge regularization adds the term $\alpha(\theta_1^2+\theta_2^2+...+\theta_m^2)$, where $\theta_1, \theta_2, \dots, \theta_m$ are the coefficients of the polynomial, to the sum of the square of the errors. This penalty can be solved for in a similar time as for linear regression.
As can be seen this improves the fit of the polynomial.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
reg_ord = 15;
model = Ridge(alpha=2.,fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
yfit = model.predict(np.vander(xfit,reg_ord+1))
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared = r2_score(y_test,y_pred)
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.plot(xfit,true_fun(xfit))
plt.title("Fifteenth Order Ridge Regression Rsq=%f" % (rsquared));
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
Lasso regularization adds the term $\alpha(\left|\theta_1\right|+\left|\theta_2\right|+...+\left|\theta_m\right|)$, to the sum of the square of the errors. This penalty has a more marked effect on the coefficients than Ridge regularization, but takes longer to solve for.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
reg_ord = 15;
model = Lasso(alpha=.005,fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
yfit = model.predict(np.vander(xfit,reg_ord+1))
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared = r2_score(y_test,y_pred)
plt.scatter(x,y)
plt.plot(xfit,yfit)
plt.plot(xfit,true_fun(xfit))
plt.title("Fifteenth Order Lasso Regression Rsq=%f" % (rsquared));
```
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:markdown id: tags:
To find the optimal value of alpha we can use Cross Validation, where a range of test alpha values are passed to the regularization routine.
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
model = RidgeCV(alphas=np.linspace(.5,2.5,9),fit_intercept=True)
reg_ord = 15;
model.fit(np.vander(x,reg_ord+1),y)
print('Optimal alpha for Ridge regression is:',model.alpha_)
model = Ridge(alpha=model.alpha_,fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared_quartic = round(r2_score(y_test,y_pred),3)
print('Rsq is:',rsquared_quartic)
```
%%%% Output: stream
Optimal alpha for Ridge regression is: 1.75
Rsq is: 0.949
%% Cell type:markdown id: tags:
As expected, the magnitude of the higher order coefficients is reduced for Ridge regularization.
%% Cell type:code id: tags:
``` python
print("Model coefficients: ",model.coef_[0:reg_ord])
print("Model intercept: ",model.intercept_)
```
%%%% Output: stream
Model coefficients: [-4.71079149e-11 1.55095947e-09 -7.49672969e-09 -2.77564369e-07
3.56367578e-06 8.16007427e-06 -4.35554548e-04 3.45642495e-03
-1.18739354e-02 1.43194832e-02 1.13435881e-02 -1.79591125e-02
-4.13556658e-02 -4.48295802e-02 -2.85268236e-02]
Model intercept: 1.0118880446769136
%% Cell type:code id: tags:
``` python
ridgecoefs = np.log10(abs(model.coef_[0:reg_ord]));
```
%% Cell type:code id: tags:
``` python
rng = np.random.RandomState(1)
model = LassoCV(alphas=np.linspace(.005,.025,9),fit_intercept=True)
reg_ord = 15;
model.fit(np.vander(x,reg_ord+1),y)
print('Optimal alpha for Lasso regression is:',model.alpha_)
model = Lasso(alpha=model.alpha_,fit_intercept=True)
model.fit(np.vander(x,reg_ord+1),y)
y_pred = model.predict(np.vander(x_test,reg_ord+1))
rsquared_quartic = round(r2_score(y_test,y_pred),3)
print('Rsq is:',rsquared_quartic)
```
%%%% Output: stream
Optimal alpha for Lasso regression is: 0.0175
Rsq is: 0.971
%% Cell type:markdown id: tags:
And for Lasso regularization, but notice the higher order coefficients are now significantly smaller.
%% Cell type:code id: tags:
``` python
print("Model coefficients: ",model.coef_[0:reg_ord])
print("Model intercept: ",model.intercept_)
```
%%%% Output: stream
Model coefficients: [ 7.99121170e-15 -4.01741495e-14 -3.52693457e-13 -2.88757259e-12
-2.09003790e-11 -1.13669877e-10 -5.03997684e-11 1.11104975e-08
2.23063594e-07 3.09190722e-06 3.31485403e-05 2.25859167e-04
-6.98648239e-04 -5.83604448e-02 -8.49169967e-02]
Model intercept: 0.9964539826394814
%% Cell type:code id: tags:
``` python
lassocoefs = np.log10(abs(model.coef_[0:reg_ord]));
plt.scatter(np.arange(1,5),quadcoefs[::-1])
plt.scatter(np.arange(1,16),lassocoefs[::-1])
plt.scatter(np.arange(1,16),ridgecoefs[::-1])
plt.scatter(np.arange(1,16),lincoefs[::-1])
```
%%%% Output: execute_result
<matplotlib.collections.PathCollection at 0x1a1e06d690>
%%%% Output: display_data
![](data:image/png;base64,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)
%% Cell type:code id: tags:
``` python
```
......
This diff is collapsed.
Date,Total doses,Doses per 100 people
21/02/2021,20,0
22/02/2021,1836,0
23/02/2021,2787,0.01
24/02/2021,6926,0.03
25/02/2021,16622,0.06
26/02/2021,23489,0.09
27/02/2021,27627,0.11
28/02/2021,29571,0.12
01/03/2021,33702,0.13
02/03/2021,41922,0.16
03/03/2021,48565,0.19
04/03/2021,61008,0.24
05/03/2021,71000,0.28
06/03/2021,76073,0.3
07/03/2021,81000,0.32
08/03/2021,86369,0.34
09/03/2021,94908,0.37
10/03/2021,106200,0.41
11/03/2021,125000,0.49
12/03/2021,135109,0.53
13/03/2021,159638,0.62
14/03/2021,162551,0.63
15/03/2021,164781,0.64
16/03/2021,178546,0.7
17/03/2021,203557,0.79
18/03/2021,226057,0.88
19/03/2021,240754,0.94
20/03/2021,253831,0.99
21/03/2021,256782,1
22/03/2021,281950,1.1
23/03/2021,312225,1.22
24/03/2021,358500,1.4
25/03/2021,408410,1.59
26/03/2021,460155,1.79
27/03/2021,474128,1.85
28/03/2021,507000,1.97
29/03/2021,541761,2.11
30/03/2021,597525,2.33
31/03/2021,670351,2.61
01/04/2021,744330,2.9
02/04/2021,823613,3.21
03/04/2021,828059,3.22
04/04/2021,843182,3.28
05/04/2021,844379,3.29
06/04/2021,855294,3.33
07/04/2021,920645,3.58
08/04/2021,996456,3.88
09/04/2021,1078004,4.2
10/04/2021,1138866,4.43
11/04/2021,1166583,4.54
12/04/2021,1178302,4.59
13/04/2021,1234681,4.81
14/04/2021,1295672,5.04
15/04/2021,1359305,5.29
16/04/2021,1420577,5.53
17/04/2021,1474537,5.74
18/04/2021,1496608,5.83
19/04/2021,1586252,6.18
20/04/2021,1653286,6.44
21/04/2021,1718107,6.69
22/04/2021,1785698,6.95
23/04/2021,1855601,7.22
24/04/2021,1914047,7.45
25/04/2021,1934087,7.53
26/04/2021,1937485,7.54
27/04/2021,1969337,7.67
28/04/2021,2029544,7.9
29/04/2021,2112285,8.22
30/04/2021,2179544,8.49
01/05/2021,2234844,8.7
02/05/2021,2254074,8.78
03/05/2021,2260615,8.8
04/05/2021,2316969,9.02
05/05/2021,2396314,9.33
06/05/2021,2473529,9.63
07/05/2021,2554531,9.94
08/05/2021,2627725,10.23
09/05/2021,2654338,10.33
10/05/2021,2663221,10.37
11/05/2021,2732249,10.64
\ No newline at end of file
This diff is collapsed.