0% found this document useful (0 votes)
8 views55 pages

Raw.githubusercontent.com Dynamicslab Deep-learning-fluids Main Notebooks ML Tutorial.ipynb

Uploaded by

Kingshuk Kundu
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
0% found this document useful (0 votes)
8 views55 pages

Raw.githubusercontent.com Dynamicslab Deep-learning-fluids Main Notebooks ML Tutorial.ipynb

Uploaded by

Kingshuk Kundu
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 55

{

"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's first import the libraries we need for running the show"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"id": "Fiwv3J_GO5zQ"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import mean_squared_error"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HL9HpnFpLTl9"
},
"source": [
"Any machine learning problem starts with data! If you have a machine learning
idea in mind, first look for the data. If it's hard to get, you might want to
change your mind. The more data the better, especially if you planning to use
neural networks.\n",
"\n",
"In this problem we will generate the data instead of collecting it. This is
not uncommon in some applications like physics constrained learning. Sometimes, you
already have a predictor but you want to make it faster, so you create a surrogate
model using machine learning to make fast predictions.\n",
"\n",
"We'll generate 100 data points for a parabolic function $y = x^2$. We'll add
some \"measurement noise\" to mimic real-world data and explore the concepts of
over- and under-fitting."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Generate data\n",
"noise_strength = 10 \n",
"x = np.linspace(0, 10, 100)\n",
"y = x**2 + noise_strength * (np.random.random((len(x)))-0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can split the data into training, validation and test sets. The
training set is used to optimize the model and find the optimal weights $\\hat{\\
mathbf w}$, the validation set is used to test the generalization error while
trying different hyperparameters and models, and the test set is finally used to
evaluate your final generalization error.\n",
"\n",
"The validation set is sometimes called a \"dev\" set."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"id": "KmcokpTiO_3D"
},
"outputs": [],
"source": [
"test_size = 0.2 # Partion of data in test set\n",
"shuffle = False # Whether to sample anywhere in domain of x or separate
training and testing domains\n",
"\n",
"# Split data into train/dev/test\n",
"x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test_size,
shuffle=shuffle)\n",
"x_train, x_dev, y_train, y_dev = train_test_split(x_train, y_train,
test_size=test_size, shuffle=shuffle)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that I'm not shuffling the data to highlight the idea of extrapolation.
This is common with time series data where the purpose of a machine learning model
is to predict the future. This is illustrated in the visualization below. You'll
see how over-fitting doesn't do well on extrapolation."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AAejklEQVR4nO3df5BU9Znv8fdDwwgIidKoi+I4bJVxDRpRJl4nlNYgMWLWQr0V1DWu7saCqnhNdO9NVma9
3Pww1lB1UylMJcbCJASiN2rcWOomlZCMTswtRiMTyV0jWog/cJQotmKIPxhm5rl/
9A8PTXfTM92nz+k+n1eV1T2nT3c/
rdZ5zvf7fH+YuyMiIgIwKeoAREQkPpQURESkQElBREQKlBRERKRASUFERAomRx1ALWbPnu0dHR1RhyEi0lQ
GBwffcPejSr3W1Emho6ODLVu2RB2GiEhTMbOXyr2m7iMRESlQUhARkQIlBRERKWjqmkIp+/
fvZ2hoiPfffz/
qUEI3depU5s6dy5QpU6IORURaRGhJwcx+CFwIvO7up+SOzQLuATqAF4FL3f2t3Gs9wDXAKPBFd//
VRL53aGiImTNn0tHRgZnV/Dviyt3JZDIMDQ0xb968qMMRkRYRZvfRj4ClRcdWAX3ufiLQl/sbM/
socDkwP/ee28wsNZEvff/
990mn0y2dEADMjHQ6nYgWkYg0TmhJwd0fBd4sOnwRsCH3fANwceD43e6+z91fAJ4Dzpzod7d6QshLyu8UkS
IDA9Dbm32ss0bXFI5x910A7r7LzI7OHT8OeCxw3lDu2EHMbCWwEqC9vT3EUEVEYmhgAJYsgeFhaGuDvj7o6
qrbx8dl9FGpW96SGz24+zp373T3zqOOKjkhL3J79uzhtttuG/f7Pv3pT7Nnz576ByQiraO/P5sQRkezj/
39df34RieF18xsDkDu8fXc8SHg+MB5c4FXGxxb3ZRLCqOjoxXf94tf/
IIjjjgipKhEpCV0d2dbCKlU9rG7u64f3+ik8CBwde751cADgeOXm9lhZjYPOBH4faOCGhgYoLe3l4E69c+t
WrWKHTt2sGDBAj7+8Y+zePFirrjiCk499VQALr74YhYuXMj8+fNZt25d4X0dHR288cYbvPjii5x88smsWLG
C+fPn86lPfYr33nuvLrGJSBMpVTvo6sp2Gd18c927joDs0MYw/
gF+AuwC9pNtCVwDpMmOOtqee5wVOP8mYAfwLHBBNd+xcOFCL/
b0008fdKySzZs3+7Rp0zyVSvm0adN88+bN43p/KS+88ILPnz/f3d0feeQRnz59uj///POF1zOZjLu7v/
vuuz5//nx/44033N39hBNO8N27d/sLL7zgqVTKn3zySXd3X758uf/4xz8u+V3j/
b0i0iQ2b3afNs09lco+1uHalAds8TLX1dAKze7+D2VeWlLm/FuAW8KKp5z+/n6Gh4cZHR1leHiY/
v5+uuqcec8888wD5hJ8+9vf5v777wfg5ZdfZvv27aTT6QPeM2/
ePBYsWADAwoULefHFF+sak4jEXHHtYOPG7LHu7vq3DgJabkbzeHV3d9PW1sbw8DBtbW1017l/
DuDwww8vPO/v7+c3v/kNAwMDTJ8+ne7u7pJzDQ477LDC81Qqpe4jkaTJ1w6Gh7P1g/
XrYWQklBFHQYlPCl1dXfT19dHf3093d3ddWgkzZ85k7969JV97+
+23OfLII5k+fTrPPPMMjz32WMnzRCTh8rWD/
n7YuRPuuOPAEUdKCuHp6uqqa5dROp1m0aJFnHLKKUybNo1jjjmm8NrSpUu5/
fbb+djHPsZJJ53EWWedVbfvFZEW09WV/WdgADZs+GBuQgg9GnmWrTk0p87OTi/
eZGfbtm2cfPLJEUXUeEn7vSKJNTBQt5qCmQ26e2ep19RSEBFpBvlWQ8jiMqNZRERiQElBREQKlBRERKRASU
FEJE5CXBa7Gio0i4jERcjLYldDLYUG+OpXv8o3v/
nNqMMQkbgLeVnsaigpiIjERcjLYldDSYFwuvBuueUWTjrpJD75yU/
y7LPPArBjxw6WLl3KwoULOfvss3nmmWd4++236ejoYGxsDIB3332X448/nv3799cvGBGJt/
xFCMJdFrsKia8phNGFNzg4yN13382TTz7JyMgIZ5xxBgsXLmTlypXcfvvtnHjiiTz+
+ONce+21PPzww5x22mn89re/ZfHixTz00EOcf/75TJkypT4/
UETirdRFqKcnsnASnxRKdeHVmhR+97vfcckllzB9+nQAli1bxvvvv8/mzZtZvnx54bx9+/
YBcNlll3HPPfewePFi7r77bq699traAhCR5hHGRagGiU8KwdVp69mFZ3bgttNjY2McccQRbN269aBzly1bR
k9PD2+++SaDg4Oce+659QlCROIvrIvQBCW+phDGznbnnHMO999/P++99x579+7loYceYvr06cybN4+f/
vSnQHbHuz/
+8Y8AzJgxgzPPPJPrr7+eCy+8kFQqVXsQIhJvMaojBCW+pQD1X2fqjDPO4LLLLmPBggWccMIJnH322QDcdd
ddfP7zn+cb3/gG+/fv5/LLL+e0004Dsl1Iy5cvpz+CIWgi0mAxqyMEKSmE5KabbuKmm2466Pgvf/nLkud/
5jOfoZmXMRdJtPEuax2zOkKQkoKISC0mMoQxZnWEICUFEZFaTOSuP7jVZh02zaknJQURkVpM9K6/
QZvmjJeSgohILWJ81z8RSgoiIrWK6V3/
RCR+noKISENEvE9CtZQUQrBnzx5uu+22Cb137dq1vPvuu3WOSEQilR+htHp19jHGiUFJIQRKCiJygBjsk1A
t1RRg/BNPDmHVqlXs2LGDBQsWcN5553H00Udz7733sm/
fPi655BK+9rWv8c4773DppZcyNDTE6Ogoq1ev5rXXXuPVV19l8eLFzJ49m0ceeaTmWESkwYLXE8g+T6djOy
+hmJJCCGtnr1mzhqeeeoqtW7eyadMm7rvvPn7/+9/j7ixbtoxHH32U3bt3c+yxx/Lzn/8cgLfffpsPf/
jDfOtb3+KRRx5h9uzZ9fh1IlKr8dw0Bq8nqRSYwchI9tqydi1kMrEfoaSkEPJ0802bNrFp0yZOP/
10AP7617+yfft2zj77bL70pS9x4403cuGFFxbWRxKRGBnvTWPwepLbOAv37LFMJjbrG1USSU3BzP7FzP5kZ
k+Z2U/
MbKqZzTKzX5vZ9tzjkQ0JJuTt79ydnp4etm7dytatW3nuuee45ppr+MhHPsLg4CCnnnoqPT09fP3rX6/
r94pIHYy3FhC8nkyZEvnWmhPR8JaCmR0HfBH4qLu/
Z2b3ApcDHwX63H2Nma0CVgE3hh5QCBNPZs6cyd69ewE4//zzWb16NZ/
97GeZMWMGr7zyClOmTGFkZIRZs2Zx5ZVXMmPGDH70ox8d8F51H4nEwHhnKxdfT6DpJrVF1X00GZhmZvuB6c
CrQA/QnXt9A9BPI5IC1H3iSTqdZtGiRZxyyilccMEFXHHFFXTlPn/
GjBnceeedPPfcc3z5y19m0qRJTJkyhe9973sArFy5kgsuuIA5c+ao0CwStVIX+d7eyhf54utJkySDPItiuW
Yzux64BXgP2OTunzWzPe5+ROCct9z9oC4kM1sJrARob29f+NJLLx3w+rZt2zj55JPDDD9WkvZ7RSITxobuE
TGzQXfvLPVaw2sKuVrBRcA84FjgcDO7str3u/
s6d+90986jjjoqrDBFRA7URHMNahFFofmTwAvuvtvd9wM/
Az4BvGZmcwByj69HEJuISGkhD0qJiyhqCjuBs8xsOtnuoyXAFuAd4GpgTe7xgYl+gbtjZnUINd60U5tIA7X
YaqjlNDwpuPvjZnYf8AdgBHgSWAfMAO41s2vIJo7lE/
n8qVOnkslkSKfTLZ0Y3J1MJsPUqVOjDkUkOVpoNdRyIhl95O5fAb5SdHgf2VZDTebOncvQ0BC7d+
+u9aNib+rUqcydOzfqMESSqc7L48RFy81onjJlCvPmzYs6DBFpZS00EqmYVkkVERmvFh6JpKQgIlLsUBvit
PBIpJbrPhIRqUk1XUMtPBJJSUFEJKjalZNbdCSSuo9ERIJauGuoGmopiIgEtXDXUDWUFEREirVo11A11H0k
IiIFSgoiIlKgpCAiyXWo+QgJpJqCiCRTCy9VUQu1FEQkmYrnI2zcqFYDaimISFLl5yMMD2fnJKxfDyMjiW8
1qKUgIsmUn49w883wuc9lE0ILLnA3XmopiEhy5ecjDAzAhg0f1BcSNos5SElBRCThs5iDlBRERCDRs5iDVF
MQEZECtRREpPUF91MGdRNVoKQgIq0tOEktlQIzDT2tQElBRJpWsAFw0LU9/+LOnR9MUhsby77mXnkDnQRTU
hCRplRxlYri1sHk3KWuuKWQ4KGn5SgpiEhTqrhrZvBFgBUroL1dNYUqKCmISFPJ9wql0x+sUnHQTX9wCYu2
NrjqqgMTgJJBWUoKItI0iruM1q6FTKbETb8mo02YkoKINI3iLqNMBnp6ypysyWgToslrItI08r1CqVSJLiN
tmFMXaimISNMo2yukDXPqRklBRGKj4ryDnJK9QhWHIsl4RJIUzOwI4PvAKYADnwOeBe4BOoAXgUvd/
a0o4hORxqvpZr94tJHmH0xYVDWFW4FfuvvfAacB24BVQJ+7nwj05f4WkYQodbNfteCGOeo6qknDWwpm9iHg
HOCfANx9GBg2s4uA7txpG4B+4MZGxyci0aj5Zl+jjeoiiu6jvwV2A+vN7DRgELgeOMbddwG4+y4zO7rUm81
sJbASoL29vTERi0joKk0tqKbWIPVh7t7YLzTrBB4DFrn742Z2K/AX4AvufkTgvLfc/
chKn9XZ2elbtmwJNV4RiZYGFtWfmQ26e2ep16KoKQwBQ+7+eO7v+4AzgNfMbA5A7vH1CGITkZipqdYg49bw
pODufwZeNrOTcoeWAE8DDwJX545dDTzQ6NhEJH4qTliTuotqnsIXgLvMrA14HvhnsgnqXjO7BtgJLI8oNhG
JES1j1FiRJAV33wqU6s9a0uBQRKQJaGBR42jtIxGJJS1lFA0tcyEisaMRR9FRS0FEYkcjjqKjpCAisaMRR9
FR95GIhGaiM5E14ig6SgoiEopa6wIacRQNdR+JSChUF2hOSgoiEgrVBZqTuo9EJBTV1gW0Amq8KCmISGgOV
RfQfIT4UfeRiNTVeGYiq+4QP2opiEjdjPfOX1srx49aCiJSN5Xu/
Eu1ILS1cvyopSAidVPuzr+4BbF2LWQyHxSXlQziQ0lBRKp2qJFC5UYcBVsQ+/
bBddfB2JiKy3F0yKRgZtcBd7n7Ww2IR0Riqtp6Qak7/2ALwiybHMbGPuhiUlKIj2pqCn8DPGFm95rZUjOzs
IMSkfipZaRQsHbw3e/
CYYdpUltcHbKl4O7/08xWA58iu23md8zsXuAH7r4j7ABFJB5qHSkUbEGceqomrMVVVTUFd3cz+zPwZ2AEOB
K4z8x+7e7/
GmaAIhIP9Vy5VMXl+KqmpvBF4GrgDeD7wJfdfb+ZTQK2A0oKIgmhi3nrq6alMBv4r+7+UvCgu4+Z2YXhhCU
iIlGopqbwvyq8tq2+4YiISJQ0o1lERAqUFEREpEBJQURqNp6VUSXetMyFiNS00Y32RGgtSgoiCTfRi3o+ke
zcefBMZyWF5qWkIJJwpZavyF/
Uy7UggokklYLJuSuJlq1ofkoKIgkyMDBAf38/3d3ddOWu8sXLV6TT2fpAOg033FC6BRFMJAArVkB7u5ataA
VKCiIJMTAwwJIlSxgeHqatrY2+vj66uroOWL4imAjMsiuZllrNtDiRXHWVkkGriGz0kZmlzOxJM/
uP3N+zzOzXZrY993hkVLGJtKL+/n6Gh4cZHR1leHiY/
sAyp11d0NOT3fgm3wIYG8t2DZVazVQ7prWuKIekXg8EZ0SvAvrc/USgL/
e3iNRJd3c3bW1tpFIp2traSKfT9Pb2MhAYR5pvAaRS2eWtv/Od8hf+fCJRQmgtkXQfmdlc4O+BW4D/
njt8EdCde74B6AdubHRsIq2qq6uLvr4+
+vv7SafT3HDDDRW7klQfSKaoWgprya6uOhY4doy77wLIPR5d6o1mttLMtpjZlt27d4ceqEgr6erqoqenh0w
mc8iuJCWEZGp4UsitrPq6uw9O5P3uvs7dO92986ijjqpzdCLJUNyV1K1xpJITRffRImCZmX0amAp8yMzuBF
4zsznuvsvM5gCvRxCbSCIEu5KCw1NFzN2j+3KzbuBL7n6hmf1vIOPua8xsFTDrULu6dXZ2+pYtWxoQqYhI6
zCzQXfvLPVanBbEWwOcZ2bbgfNyf4uISANFOnnN3fvJjjLC3TPAkijjERFJuji1FEREJGJKCiIiUqCkIBJT
AwMDB804DusckTwtiCcSQ+UWrwvjHJEgtRREYqh48bqNGzcedLdfaYG7fOtg48aNZc8RKUUtBZEYys84Hh4
eJpVKsX79ekZGRg642w+eE1zgLriuUSqVYnJuBxzNXJZqRDp5rVaavCatLL8hzs6dO7njjjsYHR0llUqxYs
UK2tvbCxf44gXuzIyxsTHGxsYOOl9dRwKVJ68pKYjEXLAukEqlMLODWg29vb2sXr2a0dFRJk2aRCqVYmxsT
HUEKalSUlD3kUjMBdcpCrYa8jWCUl1Ja9euJZPJqHUg46aWgkgTqTSaqNT+yyKlqPtIJGL1vGDr4i+1UveR
SITqPVcgu0OakoGEQ/
MUREJWaT6BSNwoKYiETLucSTNR95FISIJ9/9rlTJqFkoJICErVEXp6eqIOS+SQ1H0kEgLVEaRZKSmIhKDaO
oKWtZa4UfeRSAiCs5DL1RFKdTEBqj1IpJQUREJyqPkEpZbH3rBhg/
Y+kEip+0gkIsVdTIDqEBI5tRREIlLcxQQc0FLQfAaJgpKCSISKu5g0n0GipqQg0mCVFrTTukYSNSUFERq38
mi9F8cTqTclBUm8Rl6oS01qU1KQONHoI0m8UkNDJzqh7FCT0bQ4nsSdWgqSeMGtLFOpFOvXrz9oD+RqVNPi
qGZSm0iUlBQk8arZA7ka1XYNqZgscaakIMIHF+qBgYEJzxUItjjUNSTNquFJwcyOBzYCfwOMAevc/
VYzmwXcA3QALwKXuvtbjY5Pkq2W7h11DUkrMHdv7BeazQHmuPsfzGwmMAhcDPwT8Ka7rzGzVcCR7n5jpc/
q7Oz0LVu2hB2yNJmwhpc2atiqSNjMbNDdO0u91vCWgrvvAnblnu81s23AccBFQHfutA1AP1AxKYgUC2t4aa
XPVbKQVhJpTcHMOoDTgceBY3IJA3ffZWZHl3nPSmAlQHt7e4MilWZRbnObWi/a5YrImowmrSaypGBmM4B/
B25w97+YWVXvc/
d1wDrIdh+FF6E0o+JibzqdrstFu1wRWZPRpNVEMnnNzKaQTQh3ufvPcodfy9Ub8nWH16OITZpbvth788030
9fXRyaTKbscdTW7nuXPAQ74XIDe3l7S6bQmo0lLiWL0kQE/
ALa5+7cCLz0IXA2syT0+0OjYpDUUzwModYdfTbdPqXN6enoOOr527VoymYxqCtISoug+WgT8I/
CfZrY1d+zfyCaDe83sGmAnsDyC2KTFlBsmWk23T7lzio9nMhl6enqi+HkidRfF6KP/
C5QrICxpZCySDKVmEFcz0azcOZqkJq2s4fMU6knzFKQW1QwlLXeOhqFKM6s0T0FJQVqCLtIi1YvV5DWRehv
PXAElD5HKlBSk6VU7V0ATzUQOTZvsSNOrduOacrOdReQDailI06t2dVKNGhI5NBWaJVKN7uNXTUFEhWaJqS
j6+LXrmUhlSgoSmfEUiPN39/n3FT/
XhV6kPpQUpCFKddtU08cfbE2kUinMjJGRkQOeaySRSP0oKUho8okgnU5zww03HNRNVE2BONiaGBsbA8DdD3
iuJatF6kdJQcat2uUh8nf4ZsbY2BhjY2MHXcAP1ccfbE1UailoJJFIfSgpyLhG5FRbHA7e4U+aNKlwER/
vBby4NZH/
bNUURMKhpJBw4x0BVO12l8X1gmr2HChXUC5uTZR7LiK1U1JIuEojgKopDpfb7rLaCWV55QrKKiKLNJaSQsK
VGwFUrgVRfLGvlFTGMyegXEFZRWSRxlJSSLiJ7ExWzXaX41WuoKwiskhjaZkLKWmiy1HDoYu/
1WxcU83niMjEaJMdmZDxrhNUTSLR8tUi0auUFLR0dosbGBigt7eXgYGBcb+3q6uLnp6eCdUFyi1NreWrReJ
NNYUmdqg7+UbflVezbIWWrxaJNyWFKsVtyeVqLvjVLjhX7fcd6vdXMwx1vENVRaSxlBSKlCp2llu7J0rVXP
DrdVc+nhZHNcNQtXy1SHwpKQSUm0BVae2eqJSaRNbb23vA3XepJSKKz6lGPVscIhJvSgoB5SZQ1bJ2T1iCF
/zilkzxkhJdXV0H3e1Xs+xEnuoAIsmhpBBQaQLVeC6i0JgaRP6C39vbW0hm+/
bt47rrrmNsbOyArp5gwit3TqXvUR1AJBmUFAIqrcg5ngthlKN+zKzQ0gl29VRzTiWqA4gkQ2KTQrk7+Uorc
lb7mTt37mxoH3ylrqR8cqvmHBGRRM5oDuNOPsxVPicys3iiS02ISOurNKM5kS2FWkfTlBq2GmwdAKxYsYL2
9vaaL+QTSWAaFioiExW7pGBmS4FbgRTwfXdfU+/
vqGU0TaWN5CdPzv7rbGtr46qrrqq4L0G5zyy+8Dd6OKhaECLJFqukYGYp4LvAecAQ8ISZPejuT9fze2oZTV
Nu2CqUbh3UOvO4kcNBtVidiMQqKQBnAs+5+/MAZnY3cBFQ16QAE+8+qTRsNdg6yKt0wc/flafT6YMu/
ME79kYNB9UkNRGJW1I4Dng58PcQ8F+CJ5jZSmAlQHt7e+MiyxnvsNVyM48rTTgDDrpj7+npAcLt3tEkNRGJ
W1KwEscOGB7l7uuAdZAdfdSIoIqNZ9hquaGgxUtnZDKZwoU/
OBkteMcedveOJqmJSNySwhBwfODvucCrYX9p2MXVUjOPKy2dUe6OvRHdOxqVJJJscUsKTwAnmtk84BXgcuC
KML+wkcXV4ot9uaUzyt2xq3tHRMIWq6Tg7iNmdh3wK7JDUn/o7n8K8zsbWVwdT/
dMqTt2de+ISNgSOaM5SMMwRSRpNKO5At19i4h8IPFJAVRcFRHJmxR1ACIiEh9KCiIiUqCkICIiBUoKIiJSo
KQgIiIFSgoiIlLQ1JPXzGw38FINHzEbeKNO4TSDpP1e0G9OCv3m8TnB3Y8q9UJTJ4VamdmWcrP6WlHSfi/
oNyeFfnP9qPtIREQKlBRERKQg6UlhXdQBNFjSfi/
oNyeFfnOdJLqmICIiB0p6S0FERAKUFEREpCCRScHMlprZs2b2nJmtijqesJnZ8Wb2iJltM7M/
mdn1UcfUKGaWMrMnzew/oo6lEczsCDO7z8yeyf33buk14c3sX3L/Tz9lZj8xs6lRxxQGM/
uhmb1uZk8Fjs0ys1+b2fbc45H1+K7EJQUzSwHfBS4APgr8g5l9NNqoQjcC/A93Pxk4C/
hvCfjNedcD26IOooFuBX7p7n8HnEYL/
3YzOw74ItDp7qeQ3cL38mijCs2PgKVFx1YBfe5+ItCX+7tmiUsKwJnAc+7+vLsPA3cDF0UcU6jcfZe7/
yH3fC/ZC8Vx0UYVPjObC/w98P2oY2kEM/
sQcA7wAwB3H3b3PZEGFb7JwDQzmwxMB16NOJ5QuPujwJtFhy8CNuSebwAursd3JTEpHAe8HPh7iARcIPPMr
AM4HXg84lAaYS3wr8BYxHE0yt8Cu4H1uS6z75vZ4VEHFRZ3fwX4JrAT2AW87e6boo2qoY5x912QvfEDjq7H
hyYxKViJY4kYl2tmM4B/B25w979EHU+YzOxC4HV3H4w6lgaaDJwBfM/dTwfeoU5dCnGU60O/
CJgHHAscbmZXRhtV80tiUhgCjg/8PZcWbXIGmdkUsgnhLnf/WdTxNMAiYJmZvUi
2i/BcM7sz2pBCNwQMuXu+FXgf2STRqj4JvODuu919P/
Az4BMRx9RIr5nZHIDc4+v1+NAkJoUngBPNbJ6ZtZEtTD0YcUyhMjMj28+8zd2/
FXU8jeDuPe4+1907yP43ftjdW/ou0t3/
DLxsZiflDi0Bno4wpLDtBM4ys+m5/8eX0MKF9RIeBK7OPb8aeKAeHzq5Hh/
STNx9xMyuA35FdrTCD939TxGHFbZFwD8C/2lmW3PH/
s3dfxFdSBKSLwB35W54ngf+OeJ4QuPuj5vZfcAfyI6we5IWXe7CzH4CdAOzzWwI+AqwBrjXzK4hmyCX1+W7
tMyFiIjkJbH7SEREylBSEBGRAiUFEREpUFIQEZECJQURESlQUhARkQIlBRERKVBSEKkjM/u4mf0/
M5tqZofn1vo/
Jeq4RKqlyWsidWZm3wCmAtPIrkXUG3FIIlVTUhCps9wSE08A7wOfcPfRiEMSqZq6j0TqbxYwA5hJtsUg0jT
UUhCpMzN7kOxy3fOAOe5+XcQhiVQtcaukioTJzK4CRtz9/+T2A99sZue6+8NRxyZSDbUURESkQDUFEREpUF
IQEZECJQURESlQUhARkQIlBRERKVBSEBGRAiUFEREp+P+9DpbMUp5XoQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Visualize the data\n",
"fig = plt.figure()\n",
"plt.plot(x_train, y_train, 'k.')\n",
"plt.plot(x_dev, y_dev, 'b.')\n",
"plt.plot(x_test, y_test, 'r.')\n",
"plt.legend(['train', 'dev', 'test'])\n",
"plt.ylabel('y')\n",
"plt.xlabel('x')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once you visualize the data try to get an intuition on the trends, you're
ready to design your feature vector. We'll define a function that takes the data
$x$ as an input and transforms it into a matrix containing polynomial features. The
first column is contain the bias because $x^0 = 1$, and the $i+1$-st column will
have the data for $x^i$. \n",
"\n",
"Let's define that function"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def make_features(x, degree=1):\n",
" X = np.zeros((len(x), degree+1))\n",
" for i in range(degree+1):\n",
" X[:, i] = x**i\n",
" return X"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we're ready to create our input output data. In practice, you'll have to
split your data after building the feature matrix, not before (as I did above). We
will start with a first order polynomial (i.e. a simple line).\n",
"\n",
"To be consistent I will reshape $y$ to be a $ n \\times 1$ dimension vector
instead of a $n$ dimensional vector. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"d = 1\n",
"\n",
"X = make_features(x, degree=d)\n",
"Y = y.reshape(-1, 1)\n",
"\n",
"# Split data into train/dev/test\n",
"X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=test_size,
shuffle=shuffle)\n",
"X_train, X_dev, Y_train, Y_dev = train_test_split(X_train, Y_train,
test_size=test_size, shuffle=shuffle)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we're ready to fit the model to the training set! Fortunately, in most
cases, if you're interested in applying machine learning to a problem, you don't
have to worry about the optimizer. You might need to choose some hyperparameters
like the step size or the optimization algorithm but you don't have to write the
stochastic gradient descent algorithm from scratch. That would be a waste of time;
unless you really enjoy it...\n",
"\n",
"Here we will use [schikit-learn](sklearn.org) to do that:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(fit_intercept=False)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reg = LinearRegression(fit_intercept=False)\n",
"reg.fit(X_train, Y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Done! Sklearn ML algorithms include the bias separately by default but we
included it in the feature vector. To avoid duplicating the bias feature, we use
the argument `fit_intercept=False`.\n",
"We can now look at the optimal coefficients $\\mathbf w$"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-5.47924673, 6.07689638]])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reg.coef_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Or to make these coefficients a bit more interpretable, let's write a function
that takes the optimal coefficients and returns the polynomial predictor. I'm using
the `IPython` module to display the equation in a $\\LaTeX$ format."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = -5.479+6.077x^1$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from IPython.display import display, Math\n",
"\n",
"def latexify_predictor(coefs):\n",
" s = ['$f_\\mathbf{w}(x) = ']\n",
" for i, c in enumerate(coefs):\n",
" if abs(c) > 0:\n",
" if c > 0 and i > 0:\n",
" s.append('+')\n",
" s.append('{:.3f}'.format(c))\n",
" if i > 0:\n",
" s.append('x^{}'.format(i))\n",
" s.append('$')\n",
" return ''.join(s)\n",
"\n",
"display(Math(latexify_predictor(reg.coef_[0])))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"How good is this predictor? Now that we have the optimal model, it's time to
test it. Let's define a `get_error` function that takes the input `x`, the output
`y`, the predictor object `reg` and the polynomial degree as inputs, and returns
the mean squared error. You can see that `reg.predict(X)` returns the prediction of
the features `X`. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"def get_error(x, y, reg, degree):\n",
" X = make_features(x, degree=d)\n",
" y_pred = reg.predict(X)\n",
" mse_val = mean_squared_error(y, y_pred)\n",
" return mse_val"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fS8xpC-B4NxQ"
},
"source": [
"We will also use the score (included in the predictor module), defined as\n",
"\n",
"$$ R^2 = \\left( 1 - \\frac{\\sum_i (\\hat y_i - y_i)^2}{\\sum_i (y_i - \\
langle y \\rangle)^2} \\right)$$\n",
"\n",
"where $\\hat y$ is the prediction, $y$ is the true value, $\\langle y \\
rangle$ is the average of the true values across the data. For $R^2=1$ you have a
perfect predictor, for $R^2=0$, you're just predicting the average of the
distribution, and the more negative $R^2$ is, the worse your predictor. Let's see
what our predictor and the errors on the validation and training sets look like"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"degree = 1\n",
"\n",
"\n",
"validation score = -2.4356\n",
"train score = 0.8798\n",
"\n",
"\n",
"validation MSE = 197.4243\n",
"train MSE = 17.5591\n"
]
}
],
"source": [
"mse_dev = get_error(x_dev, y_dev, reg, d)\n",
"mse_train = get_error(x_train, y_train, reg, d)\n",
"\n",
"score_dev = reg.score(X_dev, Y_dev)\n",
"score_train = reg.score(X_train, Y_train)\n",
"\n",
"# Print the errors\n",
"print('degree = %d'%(d))\n",
"print('\\n')\n",
"print('validation score = %.4f'%( score_dev ))\n",
"print('train score = %.4f'%( score_train ))\n",
"print('\\n')\n",
"print('validation MSE = %.4f'%(mse_dev))\n",
"print('train MSE = %.4f'%(mse_train))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here's what the prediction looks like"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA0nUlEQVR4nO3deXxU5fX48c+TyUbCTiAiiwFkEUggEOKC7OBWxJXFrUH8FnGpW4tgq7U/
rdZWXLCuVAW0KAhVpFZRFhEUBAIBVPZAhABC2MISQpY5vz8yScNkkswkc2fJnPfrldckd2buPSZ45rnnPvc
8RkRQSikVOsL8HYBSSinf0sSvlFIhRhO/
UkqFGE38SikVYjTxK6VUiAn3dwDuiIuLk4SEBH+HoZRSPnPg9AGO5R9DEAyGJtFNaBnb0qN9rFu37rCINHf
eHhSJPyEhgfT0dH+HoZRSPpGTl8PVH19N0+KmZduibFEsvGkhcfXi3N6PMeZnV9u11KOUUgHmzU1vYhf7Od
vsYufNjW96Zf9BMeJXSqlQkJOXw8TlE8k9m0uhvfCc5wrthWw4tMErx9HEr5RSAeLNTW+y/
uB6RnUexSfXfWLZcYI28RcWFpKdnU1+fr6/Q1HViI6OpnXr1kRERPg7FKUCVk5eDp/u/
BRBmL9zPhN6TPConu+JoE382dnZNGjQgISEBIwx/
g5HVUJEOHLkCNnZ2bRr187f4SgVsMrX9Uvr+Y9f8rglxwrai7v5+fk0a9ZMk36AM8bQrFkzPTNTqgqlo/
3Sun6hvZD5O+dz+MxhS44XtIkf0KQfJPTvpFTVrJ7F4yyoE79SStUFGw9ttHQWj7OgrfEHo4EDBzJlyhRSU
lJ8fuzLLruMlStXVvma+vXrc+rUqQrbX3nlFd544w169erF6NGj2bx5M5MnT2b+/
Pl06tSJrl27WhW2UiFh3oh5Pj2eJv4QUV3Sr8rrr7/
OF198UXZxdsSIEQDMnz+f4cOHa+JXKshoqaeGsrKy6NKlC2lpaSQlJXHzzTeTl5cHwJIlS0hOTiYxMZFx48
Zx9uzZc977zjvv8PDDD5f9/M9//pNHHnmErKwsLrroIn7zm9/
QrVs3rrjiCs6cOQPAhg0buOSSS0hKSuKGG27g2LFjQMlZxMMPP0z//v256KKLWLt2LTfeeCMdO3bk8cf/
NyOgfv36AJw6dYohQ4bQq1cvEhMT+fTTT6v875wwYQK7du1ixIgRvPTSS8yYMYP777+flStXsmDBAiZOnEj
Pnj3JzMys/S9VqTomJy+HsQvHWnaRtsZEJOC/
evfuLc42b958zs+j3lxZ4eu9lbtFRCTvbJHL5z9au0dERI6cOlvhuers3r1bAPn2229FROTOO++U559/
Xs6cOSOtW7eWbdu2iYjIHXfcIS+99JKIiAwYMEDWrl0rp06dkvbt20tBQYGIiFx66aWyadMm2b17t9hsNsn
IyBARkZEjR8r7778vIiKJiYmybNkyERF54okn5MEHHyzb56OPPioiIi+//LK0bNlS9u/fL/
n5+dKqVSs5fPiwiIjExsaKiEhhYaHk5uaKiEhOTo506NBB7Hb7Oa9xdsEFF0hOTo6IiEyfPl3uu+8+ERFJS
0uTuXPnVvu7Eqn491IqFDy16ilJnJEoT6962i/HB9LFRU7VEX8ttGnThr59+wJw+
+238+2337Jt2zbatWtHp06dAEhLS2P58uXnvC82NpbBgwfz2WefsXXrVgoLC0lMTASgXbt29OzZE4DevXuT
lZVFbm4ux48fZ8CAAS73WVp6SUxMpFu3brRs2ZKoqCjat2/P3r17zzm2iPCHP/
yBpKQkhg4dyr59+zh48KD3fzlKhTjnG7ICadRvaY3fGNMYeBvoDggwDtgGzAESgCxglIgcq+2x5tx9aaXP1
Yu0Vfl809jIKp+vjPM0RWMM4ubi9f/3f//
Hs88+S5cuXbjzzjvLtkdFRZV9b7PZyko9VSl9T1hY2DnvDwsLo6io6JzXzpo1i5ycHNatW0dERAQJCQk6x1
4pC/jyhixPWT3inwosFJEuQA9gCzAZWCIiHYEljp+D0p49e1i1ahUAH374IZdffjldunQhKyuLnTt3AvD++
++XjdTLu/jii9m7dy8ffPABt9xyS5XHadSoEU2aNGHFihVV7tMdubm5tGjRgoiICL7++mt+/
tll11a3NGjQgJMnT9b4/UrVVb6+IctTliV+Y0xDoD/
wDoCIFIjIceA6YKbjZTOB662KwWoXXXQRM2fOJCkpiaNHj3LPPfcQHR3N9OnTGTlyJImJiYSFhTFhwgSX7x
81ahR9+/alSZMm1R5r5syZTJw4kaSkJDZs2MCf/vSnGsV82223kZ6eTkpKCrNmzaJLly412g/
AmDFjeP7550lOTtaLu0qV4+sbsjxl3C1NeLxjY3oC04DNlIz21wEPAvtEpHG51x0TkQqZzxgzHhgP0LZt29
7OI9MtW7Zw0UUXWRK7O7Kyshg+fDg//vhjjfcxfPhwHn74YYYMGeLFyAKTv/
9eSvnSzQtuZtuxbRW2d27S+Zw5+6VtmKcMmGJJQzZjzDoRqXDjkJU1/nCgF/
BbEVltjJmKB2UdEZlGyQcHKSkp1nw6+cnx48dJTU2lR48eIZH0lQo17t6QVdqG2df1fytr/
NlAtoisdvw8j5IPgoPGmJYAjsdDFsZgmYSEhBqP9hs3bsz27duZO3eul6NSSgULf876sSzxi8gvwF5jTGfH
piGUlH0WAGmObWlA1XcQKaVUHeRq1o+vWD2r57fALGPMJqAn8CzwHDDMGLMDGOb4WSmlQoa/Z/
1YOo9fRDYArjqSaWFbKRWyqpr144tav965q5RSPubrNszOtDtnDR0/fpwPPviAe+
+91+P3XnPNNXzwwQc0bty4RseurH2yN2JTSlnP122YnemIv4aOHz/O66+/7vK54uLiKt/
7+eef1zjpu6Oq2JRSKrQS/941sOKFksdamjx5MpmZmfTs2ZOJEyeybNkyBg0axK233lrWcO3666+nd+/
edOvWjWnTppW9NyEhgcOHD1fZhrm83bt3c+mll9KnTx+eeOKJsu2VtVh2js3TVsxKqTrOVcvOQPtypy1ztf
asFnk6XuTPTUoe96z27P1Odu/
eLd26dSv7+euvv5aYmBjZtWtX2bYjR46IiEheXp5069atrEVyaZvjqtowl3fttdfKzJkzRUTk1VdfrbbFsn
NsVbVi9hVty6yUyKHThyTtizTJycvxyfEI+bbMWSuguACkuOQxa4XXD5Gamlq2ShWULFnYo0cPLrnkEvbu3
cuOHTsqvMdVG2Zn3333XVkjtzvuuKNsu7jZYtnd1ymlrFX+Tl1/
Cp3En9APbJFgbCWPCf28fojY2Niy75ctW8bixYtZtWoVGzduJDk52WX7Y+c2zM5tlEs5t4CGc1ssb9iwgfj
4eJfHcPd1SinrBFJ//tBJ/G1SIW0BDP5jyWOb1FrtrrqWxLm5uTRp0oSYmBi2bt3K999/
X+Nj9e3bl9mzZwMlSbz8MVy1WHaOzZutmJVSNePPO3WdhU7ih5Jk3+93tU76AM2aNaNv3750796diRMnVnj
+qquuoqioiKSkJJ544gkuueSSGh9r6tSpvPbaa/
Tp04fc3Nyy7ZW1WHaOzZutmJVSnvP3nbrOLGvL7E0pKSmSnp5+zjZt8xtc9O+lQtnT3z/
NJzs+OeemrYiwCG7seKOld+pW1pY5tEb8SinloZy8HMYuHFur0bm/79R1pnfuKqVUFbzRM9/fd+o60xG/
UkpVIpBm4niTJn6llKpEIM3E8SZN/Eop5UKgzcTxJk38SinlQlU984OdJn4v+fOf/8yUKVO8vt/
69etX+bx24lTKGjWZieONGUC+EFKzenLycpi4fCJTBkwhrl6cv8PxitLEr733lfKumszE8cYMIF8IqRG/
txskPfPMM3Tu3JmhQ4eybdu2su2ZmZlcddVV9O7dm379+rF161Zyc3NJSEjAbi85dczLy6NNmzYUFp47otA
WzEoFp6CaAeSqZWegfXmjLfOh04ek9/u9pfuM7tL7/d61bouanp4u3bt3l9OnT0tubq506NBBnn/
+eRERGTx4sGzfvl1ERL7//
nsZNGiQiIiMGDFCli5dKiIis2fPlrvuuqvCfutCC2ZXtC2zquueWvWUJL+XLN1ndJfk95Ll6VVP+zskbcvs
7WlZK1as4IYbbiAmJoaGDRsyYsQIoGRkvnLlSkaOHEnPnj25+
+67OXDgAACjR49mzpw5AMyePZvRo0dX2K+2YFbKv2pSpw+2GUAhkfit+qO4apVst9tp3LgxGzZsKPvasmUL
ACNGjOCLL77g6NGjrFu3jsGDB7u9X23BrJRv1KQkHGwzgEIi8VvxR+nfvz+ffPIJZ86c4eTJk/znP/
8BoGHDhrRr1465c+cCJSPwjRs3AiUzdFJTU3nwwQcZPnw4Nputwn61BbNS/
lPTOn2g9eKpjqWzeowxWcBJoBgoEpEUY0xTYA6QAGQBo0TkmJVxWPFH6dWrF6NHj6Znz55ccMEF9Ov3v4Vd
Zs2axT333MNf/
vIXCgsLGTNmDD169ABKyj0jR45k2bJlLvc7depUbr31VqZOncpNN91Utv22227j2muvJSUlhZ49e7pswXz1
1VczadIkl69TSlXPVUnYndk5gdaLpzqWtmV2JP4UETlcbtvfgaMi8pwxZjLQREQmVbUfbcsc/
PTvpQJdTl4OV398NWeLz5Zti7JFsfCmhedM/w6maeGB1Jb5OmCm4/uZwPV+iEEppc7hbkm4/
DWAYLlhy5nViV+Ar4wx64wx4x3b4kXkAIDjsYWrNxpjxhtj0o0x6Tk5ORaHqZQKde6UhJ2vAby8/
uWAWDzdU1bfudtXRPYbY1oAi4wxW919o4hMA6ZBSanHqgCVUgrcq9OXPysothfz313/
LfsQmNBjQsCXfkpZOuIXkf2Ox0PAJ0AqcNAY0xLA8XjIyhiUUqHNW+UY52nhRVJEsRQDgT110xXLEr8xJtY
Y06D0e+AK4EdgAZDmeFkaoD0FlFKW8VarFlfXAEoF+g1bzqwc8ccD3xpjNgJrgP+KyELgOWCYMWYHMMzxs1
JKeZ03++e4ugZQXjCN+i1L/
CKyS0R6OL66icgzju1HRGSIiHR0PB61KgZfsqotc20NHDiQ0qmw11xzDcePH6/0tfPnz2fz5s1lP//
pT39i8eLFVoeolGW82apl3oh5/JD2Az+k/UDnJp0rPB/IN2w5C6m2zHVFUVER4eGe/+k+//
zzKp+fP38+w4cPp2vXrgA89dRTNYpPqUBQWasWb1yEDbYbtpyFRMuGUnkZGRx+axp5GRle2Z8VbZnHjh3Lh
AkT6NevH506deKzzz4DYMaMGYwcOZJrr72WK664gtOnTzNu3Dj69OlDcnJyWfvlM2fOMGbMGJKSkhg9ejRn
zpwp23dCQgKHD5ec6r733nskJSXRo0cP7rjjDlauXMmCBQuYOHEiPXv2JDMzk7FjxzJvXsk/
8CVLlpCcnExiYiLjxo3j7NmzZft88skny9pAb93q9sQtpSwVbP1zfClkRvx5GRnsuXMcUlCAiYyk7fR3iUl
OrvH+1q1bx+zZs8nIyKCoqIhevXrRu3dvAMaPH8+bb75Jx44dWb16Nffeey9Lly6lR48efPPNNwwaNIj//
Oc/XHnllURERFTYd1ZWFt988w2ZmZkMGjSInTt3ArBq1So2bdpE06ZN+cMf/
sDgwYN59913OX78OKmpqQwdOpS33nqLmJgYNm3axKZNm+jVq1eF/f/
0008888wzfPfdd8TFxXH06FGaNm3KiBEjGD58ODfffPM5r8/Pz2fs2LEsWbKETp068etf/
5o33niDhx56CIC4uDjWr1/P66+/zpQpU3j77bdr/
HtVyluCrX+OL4VO4l+zFikoALsdKSwkb83aWiX+8m2ZAZdtmUuVjo5L2zIPGjSI2bNnV7pq1qhRowgLC6Nj
x460b9++bBQ9bNgwmjZtCsBXX33FggULyq4r5Ofns2fPHpYvX84DDzwAQFJSEklJSRX2v3TpUm6+
+Wbi4kpOd0v3WZlt27bRrl07OnXqBEBaWhqvvfZaWeK/8cYbAejduzcff/xxlftSyleCvRxjpZBJ/
DGpfTCRkUhhISYigpjUPrXeZ3VtmZ2NGDGCxx57zOO2zKU/x8bGlm0TEf7973/
TuXPFi0yu4ipPRKp9jfPrqxIVFQWAzWajqKjI7f0qpfwjZGr8McnJtJ3+Ls0feKDWZR6wri0zwNy5c7Hb7W
RmZrJr1y6Xyf3KK6/kH//4R1lSznBct+jfv39ZO+cff/
yRTZs2VXjvkCFD+Oijjzhy5AgAR4+WTKxybvFcqkuXLmRlZZWVnN5//30GDBjg5m9KKRVoQibxQ0nyj7t7f
K2TPpzblvmmm26q0Jb5nXfeoUePHnTr1u2cdW9Hjx7Nv/
71L5erb5Xq3LkzAwYM4Oqrr+bNN98kOjq6wmueeOIJCgsLSUpKonv37mXr895zzz2cOnWKpKQk/
v73v5Oamlrhvd26deOPf/
wjAwYMoEePHjzyyCMAjBkzhueff57k5GQyMzPLXh8dHc306dMZOXIkiYmJhIWFMWHCBM9/
aUqpgGBpW2ZvCaW2zGPHjnV5gTXY1dW/l1KBLJDaMiullPKjkLm4GyxmzJjh7xCUUnVcUI/
4g6FMpfTvpFSgCdrEHx0dzZEjRzSpBDgR4ciRIy4vUCul/CNoSz2tW7cmOzsbXZ0r8EVHR9O6dWt/
h6GUS8G0hq63BG3ij4iIoF27dv4OQykV5Mr363/8ksf9HY5PBG2pRykVury9qpY3+vUHE038SqmgU5tVtcp
/aHizX78VvN1RuJQmfqVUUKlulF7d2UDph8ZL615y2a8/
UEb9p9dnkJV2JzlTp7LnznFeTf6a+JVSQaW6UXpVZwPlPzQ+y/ysbLH0Uv4e9R9bu44lj/
+dU+szOLN2LRQVntNR2Fs08SulAs/eNbDihZLHcipbVWvb0W2MXTiWbUe3VXk2cM6HBnaK7Od2k/VXv/
6zRcXMm/k5P4+9k/
h5M9gz9k5sjRsRFhkJNpvXOgqXCtpZPUqpOmrvGpg5AooLwBYJaQugTUmzwcpW1Zq0fBK7cncxafmkCmcDp
TN1nD80AKJsUSy8aaHfpnGeXLeeNfMXM+NUE1r+vIUu9iJsCBQXUXw8l7bT3y1ZOyS1j1eaS5bSEb9SKrBk
rShJ+lJc8pi1ouypylbV2pW7C0HIzM2stGYfaEsx5mVksO+uu4ifN4PfL/
oHIwd1Jzwq6pwRvjc7CpenI36lVGBJ6Fcy0i8d8Sf8r+W5q1W1nv7+aT7Z8UmFDwQ4d9QfCEsxnl6fwfoFS
/jEHs/vzzuNFBRgE8EmdlpFFhFj0QjfmSZ+pVRgaZNaUt7JWlGS9NtUXFOilKvyTXnlE7s/
l2IUEZZ9spSmTzxMk+Ii0mzhnHz49xVWBYxJTrY04ZeyPPEbY2xAOrBPRIYbY5oCc4AEIAsYJSLHrI5DKRV
E2qRWmfBLuSrfRIRFcGPHGwPiLty8jAyOrfyeZ/
fHELtlI7921PBt2GlWnO+zEb4zX4z4HwS2AA0dP08GlojIc8aYyY6fJ/
kgDqVUsNq7xuUZQCCUb1wREXZ98z2FD92LFBQwISycg2n3Er7ra7+M8J1ZmviNMa2BXwHPAI84Nl8HDHR8P
xNYhiZ+pVRlqpjl48/yjSt5GRls//Ib/pXfjIgfNvDrggKw2wk3xfRsaPw2wndm9Yj/
ZeBRoEG5bfEicgBARA4YY1pYHINSKpi5muXjRhnI1zZ+uQLzu/
sJLyrkdls42bdOwGT6p4ZfHcsSvzFmOHBIRNYZYwbW4P3jgfEAbdu29W5wSqngUcUsH3/
Ly8ggb81a8rv14MNp87m9qLCshn9JXHjAjPCdWTni7wuMMMZcA0QDDY0x/
wIOGmNaOkb7LYFDrt4sItOAaVCy2LqFcSqlApkHs3x8afuS7yh46F5sxUWYyEiuHXsf4TuXIkWBN8J3Zlni
F5HHgMcAHCP+34vI7caY54E04DnH46dWxaCUqiPcnOXjC5nLVrFi7pcczvyZqwoLAUEKC+lcz07MjMAc4Tv
zxzz+54CPjDF3AXuAkX6IQSmlPJJz8iwz/rmAYe88TUpxEWKzYYuMgOLigB/hO/
NJ4heRZZTM3kFEjgBDfHFcpZSqrdOOTpn2pGTy1qwhwl5MGAIIjW+4gYjzzw/
4Eb4zvXNXKaVcyDl5ljkzPqffW08SaS/
GREZyz6OTOLp1cdlMnUbXXxdUCb+UJn6llCrn4Kq1fDvvK94704yLDu4gvLgYpKQnftjJE5Z1zPQlTfxKKe
Ww6csV2B+5j87FRTwdHkG9R35PcebSgJyLXxua+JVSIe3omnQOfLOSdkP70WLXTxxx1PBtUkyTwjMBOxe/
NjTxK6VC0pmCYj6dtZAuUx4jvLiIPbOmE//YZGxRgXm3rTdp4ldKhZTc9HWs/ngR0/
Oa0WbPFhLtRYQ55uJbuepVINHEr5QKGXkZGewbdxfnFxTwWHg4Rfc+jC1AOmb6kiZ+pVSddnLdetZ9uoScD
t0YlJ+NKe2nI3bOtxXWyRp+dTTxK6XcU0lPfK+83tN9u8FuFxb/ezHxf/4dccVFNA0Px/b4H/
226lUg0cSvlKpeFT3xa/16T/ddjbyMDHZ89Q2vH21Eox0//G/VK7FTnBsaNfzqaOJXSlXP0574nrzeS/
32RYTj6es4+JvfEFFQwL3GxrFx9wfMqleBRBO/Uqp6nvbE9+T1tey3LyKs/
uwbvv94Ea0Lc+lWUICx24m0GbrXJyRr+NUxIoHf6j4lJUXS09P9HYZSoc25Dl9dXb6q5z3dVyXW7D7KnBn/
5fa5zxNhL8KEh2MLM4ijY2bb6e+GdLI3xqwTkRTn7TriV0q5p3xPfHfq8pX10K/svR4k/
LyMDL6d9xUv5tTn0hM/EyXFGATETqMbbg7Kjpm+pIlfKeU5T+vy5Uf0tajp/7Q/F/
PTj4RNvJ82BQVMsYXT/LHHOLZ1UdB3zPQlTfxKKc+5qstXVq5xHuFf9ZzHNf0dB0/
y0uLtfP7DLzx2bDX9CwrAbsdmirHVkY6ZvqSJXynlOed1cKHy0o/zCP/MEbfX0N19+DRTF2/
n0437iY0M54EhHbmxQTxHVv9HZ+rUgiZ+pVTNlK/Lr3ih8vKNq7MDN2v6X/
70C1/+dJC7+3fg7v7taRIbCUCsjvBrRRO/Uqr2qpqS6Xx2UEXC/yU3n1e/
3kFqu2aM6HE+aZcmcFOv1jRvEHXO63SEXzua+JVStVddcq9mhH/
oZD5vLMtk1uo9iAjnNYwGoF6kjXqRNisjD0nVJn5jzP3ALBE55oN4lFLBysMpmaWmf7ebvy/
cRkGxnZt6teK3gzvSpmmMBQGqUu6M+M8D1hpj1gPvAl9KMNz1pZQKWLlnComwGWIiw2neIIorusXz0NBOtI
uL9XdoISGsuheIyONAR+AdYCywwxjzrDGmg8WxKaXqmFNni3h16Q76/W0p07/
LAmB40vlMHZOsSd+H3Krxi4gYY34BfgGKgCbAPGPMIhF51MoAlVJeZEH7Y3ecKSjm/
e+zeGNZJsfyChnSpQUDOzf32fHVudyp8T8ApAGHgbeBiSJSaIwJA3YALhO/
MSYaWA5EOY4zT0SeNMY0BeYACUAWMEqvHyjlA15uf+yJ38/
byH83HaBfxzh+d0VnerZp7JPjKtfcGfHHATeKyM/
lN4qI3RgzvIr3nQUGi8gpY0wE8K0x5gvgRmCJiDxnjJkMTAYm1TB+pZS7vNT+2B2FxXbmpmczsHNzzm9cj3
sHdiDt0gRS2zW15HjKM9UmfhH5UxXPbaniOQFOOX6McHwJcB0w0LF9JrAMTfxKWa+W7Y/
dUVRs55OMfbyydAd7j57h0as6c+/
AC+l2fiOvH0vVnKXz+I0xNmAdcCHwmoisNsbEi8gBABE5YIxpUcl7xwPjAdq2bWt
lmEqFBg9upKqJzzbt58WvtrPr8Gm6t2rIU2O7ax0/
QFma+EWkGOhpjGkMfGKM6e7Be6cB06CkH781ESoVYmo4174yIoIxBoBl23KIsIXx5u29ubJbfNl2FXh8cue
uiBw3xiwDrgIOGmNaOkb7LYFDvohBqZBk0SweEWHZthxeXLSdZ27oTlLrxvx5RDdiImyEhWnCD3SWJX5jTH
Og0JH06wFDgb8BCyiZJfSc4/FTq2JQKqRZMItHRPhu5xFeWLSNjD3HadO0HifOFAFQP0o7wAQLK/
9SLYGZjjp/GPCRiHxmjFkFfGSMuQvYA4y0MAalQpeXZ/
GICL95L53FWw5xfqNonr0hkZEprYmwVXsfqAowliV+EdkEVGifJyJHgCFWHVcp5eClWTw/
7c+la8uGGGO4rEMc/To2Z0xqG6LCtXlasNJzM6XqKk9n8ThdD/
hxXy4vLdrOkq2HeOuO3lzZ7TzGXd7ON7ErS2niV6ouc3cWT7nrAXZbBFPin+f1zGY0jA5n4pWd6XthnPWxK
p/RxK+UOud6gL1IiMxeyV/
7DOWGJruJvrAJRF3o7wiVF+lVGaVC3N6jebyb3RqxRYKxEWaL5DdXpHDLlvuJXvHXkjOBvWv8HabyIh3xKx
WiDuSe4dWlO5mzdi9hYQ25+Nr36VawibCEfsT6sK+P8j1N/
EqFmPzCYv62cGvZMoe3pLblvkEXcl6jaGDY/
15ocV8f5T+a+JUKEQVFdiLDw4gKD+OH7Fyu73l+5cscWtzXR/
mXJn6l6rjcM4W8vWIXc9bu5YsH+9GsfhSzx19CeHU3Xnm5r48KHJr4laqjTp0tYvq3u/nnil2cyC/
imsTzOFtkB6g+6as6TRO/UnVQbl4hg19YxpHTBQy9KJ6Hh3XUnviqjCZ+peqI/MJiVu8+yoBOzWkUE8Fd/
dpxWYc4XeZQVaCJX6kgV7rM4T+W7uCXE/l88/tBtG0Ww70D3bjpyk+Lryv/
0sSvlK95Kdk6L3PYq21jpozsQdtmLmbpVBaHnxZfV/6liV8pX/Jisj16uoDH5/9Ip/
gGPHVndwZ2au7Zqld6k1bI0sSvlC/VItmKCF/+9AvfbM/h2RsSadEwmv/
89nI6tqhfs2UOfbD4ugpMmviV8qUaJFsR4etth3hx0XZ+3HeC9nGxHD1dQLP6UXSKb1DzWPQmrZCliV8pX3
KVbKuo+e85kscDszPYsPc4bZvG8MLIHlzX8/zK5+F7ev1Ab9IKSZr4lfK18sm2kpr/
8bwCGsdEEtcgEhHhrzcmcnPvapY51Iu1yk2a+JXyJ6ea//4NXzHpK2Hv0TwWPzKAmMhw5t/
X170avl6sVW7S+7aV8idHzV+MjbOEc//KWH7af4LbLr6AYhEA9y/cll4/MDa9WKuqpCN+pfypTSqbh/
2LzxZ8xA8RiQy54mrGXpZAbFQN/
tfUi7XKTZr4lfKDXTmnyMw5zbCu8XTpM4TVRR14rXdrGkZH1G7HerFWuUETv1I+tPdoHq8s2cHHGfto0SCK
QZ2bE24L486+7fwdmgohliV+Y0wb4D3gPMAOTBORqcaYpsAcIAHIAkaJyDGr4lAqEPySm88/lu7go/
S9GGNIuzSBewZ20PbIyi+sHPEXAb8TkfXGmAbAOmPMImAssEREnjPGTAYmA5MsjEMpv8s+lsdH6XsZ06f8M
odu0CZqygKWJX4ROQAccHx/
0hizBWgFXAcMdLxsJrAMTfwqmLiRjI+eLuCt5ZkUFQtPDO9KSkJTVk4eQvMGUZ4dR+flKwv4pMZvjEkAkoH
VQLzjQwEROWCMaVHJe8YD4wHatm3rizCVql41ybh0mcN3v91NXmExN/dqjYhgjPEs6YN78/
L1jEDVgOWJ3xhTH/g38JCInHB3TrKITAOmAaSkpIh1ESrlgSqS8eLNB3n4ow2czC/
iV4kteWhoRzrWppdOdX199IxA1ZClid8YE0FJ0p8lIh87Nh80xrR0jPZbAoesjEEpr3JKxmdbXcapLStodn
gNiU37cFmHZjwwxEvLHFY3L1/
v1FU1ZOWsHgO8A2wRkRfLPbUASAOeczx+alUMSnmdIxkXZi5n4akL+XjWet60/
z+giHhbJG+lLQBvrm1b1bx8bausasjKEX9f4A7gB2PMBse2P1CS8D8yxtwF7AFGWhiDUl5VUGRn7v54Xl2V
zIHcfP7afDuRJwsBu/
dG3VXV7Z2f0zt1VQ1YOavnW6Cygv4Qq46rlJWmf7ebv36xtWyZw8si4zDvzal61O3JBdiq6vaVPacJX3lI7
9xVqgrFduGzTftpFhvF5R3jGJPalk7xDRjYuXSZw7iqR92eXoCtqm6vNX3lJZr4lXLBbi9Z5vClxdvZfvAU
1/Y4n8s7xtGoXgSDujjNQK5q1O1psq6qbq81feUlmviVcrJy52Ge+XwLP+0/
QfvmsbxySzLDE1vWbGeeJuuq6vZa01deoolfKUrWtRWBsDDDnqN5nMwvqn6ZQ3fUJFlXdQahNX3lBUYk8O+
NSklJkfT0dH+Hoeqo1buO8MKi7Vzd/
Tzu7NuOomI7AlUvc6hUEDDGrBORFOftOuJXIStjzzFeXLSdFTsO07xBVFkvfO2Yqeo6TfwqJP1t4VbeWJZJ
09hIHv/
VRdx+yQVER9gqf4P2xFF1iCZ+FTK2HzxJXP0omsZG0q9jHPWjwt1b5lB74qg6Rs9pVZ23K+cUD3yYwZUvL+
et5ZkAXNYhjvsGXeje2raupmRWZe8aWPFCyaNSAUhH/
KrO2ns0j6lLdvDx+myiwm1MGNCB8f3ae74jT6Zk6tmBCgKa+FWd9beFW/
lq80Hu7NuOCQM6eN4Pv5QnUzL17loVBDTxqzrj0Il8Xl+WyW0Xt6VjfAMeu+YinhjelfiGbi5zWBV358/
r3bUqCGjiV0Hv6OkC3vomk5mrsigsFjrFN6BjfANaNa7n+2D07loVBDTxq6D26tIdvLEsk7zCYq7v2YoHh3
QkIS7Wv0Hp3bUqwGniV0Enr6CIehE2jDGcyC9iYJcWPNb9BK1zl8CZAkCTrlJV0cSvgkZeQRHvrfqZt77J5
JVbkunXsTmPXd0Fk70WZo7RmTRKuUkTvwp4+YXFfLhmD699ncnhU2fp36k5cfVLZugYY3QmjVIe0sSvApqI
MOqtVWzKzuXS9s148/ZepCQ0PfdFNZlJoy0YVAjTxK8CTlGxnf/
+cIBrElsSYQvjngEdaFQvgssujHP9Bk9n0uhNVirEaeJXAaN0mcOXF+9g9+HTRNjCuCaxJVe7swiKJzNpKm
vBUP6DQ88IVB2miV/
5nUjJMocvLipZ5rDLeQ2YdkdvhnWNt+aAzqWhes3OPQO46jlYOFnPCFSdpYlf+Z0IvLx4B8V24dVbk7mme0
vCwkzFF3prFO5cGnI+A9jyqV4sVnWaJn7lcyLCih2H+eeKXbx2Wy8aRkfw7tg+xDeMxlY+4ZdP9ODdurxza
aj8GcBF18HPq7TtgqqzLEv8xph3geHAIRHp7tjWFJgDJABZwCgROWZVDCrA7F3D3vVf8ubP5zNr/
3mc3yianw/
nkdi6Eec7t1dwvgDb8xbrRuGuLg7Hd9Uav6qzrBzxzwBeBd4rt20ysEREnjPGTHb8PMnCGFSAOLt7Fbx3HS
3thTxhwuk74G2GDBtIVHglq145l18Qa5ufOZ8BaNsFVYdZlvhFZLkxJsFp83XAQMf3M4FlaOKv037Jzee8R
tFEZa+kWAqxGTs2U8w19XdCZUkfKl6A7XFryZeOwpWqNV/
X+ONF5ACAiBwwxrSo7IXGmPHAeIC2bdv6KDxVLTcvsG775SQvLdrOkq0HWfq7gbRJ6IctPAqKCzDujNgrm5
tf04Sv0zOVKhOwF3dFZBowDSAlJUX8HI4Ct258ysw5xcuLd/
DZpv3ERoZz78ALaRQTAU1dJPLqknFtyi1WXhhWKsj5OvEfNMa0dIz2WwKHfHx8VRvV9MQ5nlfAH6a+w8Vhm
3m611CG/+o6GsdE/u/
95RO5lXfP+vLCsFJByNeLrS8A0hzfpwGf+vj4qjZK6+7GVnaB9UDuGWZ8txuAxkc28EHUszxsm8vt235L4y
MbKt+XpwuYe6KyC8Pl4lYqlFk5nfNDSi7kxhljsoEngeeAj4wxdwF7gJFWHV9ZoFzd/
WiLVF7JiOWDNctAYGjXeFpnrcBmL3RvZG3lEoV6YVipKlk5q+eWSp4aYtUxlfVONE/
mtR8aMPOrLAqLTzKyd2vuH3whrZvEeJbMrVyi0NsXhpWqYwL24q4KLCKCMQYRmLsum2u6t+QB52UOPU3mVs
6V13n4SlVKE7+q0sn8QqZ/l8W3Ow4ze/wlNKoXwTcTB9IgOsL1G7w1E8edfegUTaVqRBO/
cqn8MofH8goZ1jWek/
lFNIqJqDzp14ans3y0p75SNaaJX1Ww4+BJbvnnag6fOsuATs15ZFgnerRpbO1BPV0+UZdbVKrGNPErAAqK7
Ow+fJrO5zUgIS6W/p3iuDW1bcVlDq3i6SwfK2cFKVXHGZHAvyk2JSVF0tPT/R1GnVT08/
dsXvU5r+06j3X2Tnw7aRDREVX00LGS1viV8ipjzDoRSXHeriP+usiNhFhsF75b9jmpy8fSVYp4xYSzedi/
iAr39T195Xh6YVhn7ihVI5r46xo3L3quzTrK90s+pW9EUVnHzGT7j2Cu9EPQSilf8uPwLgjsXQMrXih5DBa
VtEIQERZvPljWXuHidk254lc3ERYeBcbmXsdMTwXj70+pEKAj/
vLqQkdHp4uecsHlLN+ew4uLtrNx73E6xzfgjksTsIUZel52JbSx6O5ZnW6pVMAK7cRfVaIP1o6O5e6ezarf
i4mfF7M2aw2tGtfjuRsTual363PXtbWqTq7TLZUKWKGb+Ktr3Wv1Un8WKmiZQmSbVAoPniT72Bqeuq4bo/
u0qXyZw/K8NVNGp1sqFbBCN/FXt6ZrEHZ0/HFfLi8u2k69CBuv3daLjvENWPHoIML3p8Oqf1f/
3+HN8oyVTdiUUrUSuonf3da9QZCwSpc5XPjTLzSqF8HdA9qXNVUL359eMZmD64RcWY/
8miZvnW6pVEAK3cRvdeteH91c9ElGNo98tJHYyHAeGtqRcZe3o2H5XjrOyXzjB7BhtutRvfOHYb1meoFWqT
oodBM/WDcitXhGy96jeZzML6Lr+Q3p17E59w7swP9d3p4msZEVX+yczDGVX3R1/
jDUC7RK1UmhnfitYlHC3H/
8DP9YupO56XvpfUET5tx9KXH1o5h4ZZfK3+SczAE2fFj5RVfnD0O9QKtUnaOJ31vKl3a8PKPl0Il8Xl+WyQ
er9yAIt17clvsGXej+DpyTubsXXfUCrVJ1Ut1O/L5q4uWqtOPFhPnfHw7w/vc/
n7vMYW14UuLSC7RK1Tl1N/
H78s5RV6Wdfr+r8fFy8wr554pdXNiiPtcnt+KW1LYM6tzi3GUOlVKqhupur57KpiZaobS0Y2y1Ku2czC/
klSU7uPzvS3n16538sC8XgOgI27lJX3vgKKVqoe6O+L1952hVZSMv1MI/Xp/
NU59t5nheIXe3P8y4VvuIT2ruOg6dYqmUqoW6m/i9eWHSVbKFc/
ddg1p4fmExdhFiIsOJjQqnR+vGPJ50ko4LJ8GBAsh4pWJiD7QplroYilJBxy+J3xhzFTAVsAFvi8hzlhzIW
xcmPbkJqjLlEmRByxTmpO/ltaU7GdWnDY8M68SV3c7jym7nlZRwqkrsgdQDR88+lApKPk/
8xhgb8BowDMgG1hpjFojIZl/
H4jZPboJyxZEgpbiAYhPBb8Of5MsTF5ByQRP6dmhW9bFczbMPlCmWgXb2oZRyiz9G/
KnAThHZBWCMmQ1cBwRu4vf0JihnjgRppBjsQt/
ordw6biT9O8ZhjKNFcvmSiXNidy6nBMoUy0A6+1BKuc0fib8VsLfcz9nAxc4vMsaMB8YDtG3b1jeRVaUGN0
HZ7cLCn36hd9M+xNsikeICjC2CO8bchmlb7sKtq5JJv99V/lwgJH0IrLMPpZTb/
JH4jYttUmGDyDRgGkBKSkqF5/2uilG3iLB4yyFeXLSdLQdOMGFAByanLcBkrcDmahRfVckk0MspgXL2oZRy
mz8SfzbQptzPrYH9fojDEit25DDlq5JlDi9oFsOLo3pwXc9WEGb+lyCdR/
FXPVd5ycSdcorOrFFKecAfiX8t0NEY0w7YB4wBbvVDHJb44sdfOHzyLH+7KZEbe7UmwubiHjnnUfyZI5WXT
KorpwRyKUgpFZB8nvhFpMgYcz/
wJSXTOd8VkZ98HYe3rPv5GC8u2sYjwzrR+4KmTLqqC09e27XqZQ5djeKrKplU9Vygl4KUUgHHL/
P4ReRz4HOfH9iLJZEfsnN5cdE2vt6WQ7PYSHJOngWgUb2Iat6Jdy+K6swapZSH6u6du868WBKZNG8Tc9L30
qheBI9e1Zm0SxOIjfLwV+mti6I6s0Yp5SEjEngTZpwZY3KAn2v49jjgcKsG5rzz6ptWAAJy8JTs33dSfvFa
kDWMy4/
Hr0ygxgWBG5vG5RmNyzO1iesCEanQ9CsoEn9tGGPSRSTF33E407g8F6ixaVye0bg8Y0Vcdbcts1JKKZc08S
ulVIgJhcQ/
zd8BVELj8lygxqZxeUbj8ozX46rzNX6llFLnCoURv1JKqXI08SulVIip04nfGHOVMWabMWanMWayv+MBMMa
8a4w5ZIz50d+xlGeMaWOM+doYs8UY85Mx5kF/xwRgjIk2xqwxxmx0xPX//
B1TecYYmzEmwxjzmb9jKc8Yk2WM+cEYs8EYk+7veEoZYxobY+YZY7Y6/q1dGgAxdXb8nkq/
ThhjHvJ3XADGmIcd/+5/
NMZ8aIyJ9sp+62qN37HS13bKrfQF3OLvlb6MMf2BU8B7ItLdn7GUZ4xpCbQUkfXGmAbAOuD6APh9GSBWRE4
ZYyKAb4EHReR7f8ZVyhjzCJACNBSR4f6Op5QxJgtIEZGAuiHJGDMTWCEibxtjIoEYETnu57DKOPLGPuBiEa
npTaPeiqUVJf/
eu4rIGWPMR8DnIjKjtvuuyyP+spW+RKQAKF3py69EZDlw1N9xOBORAyKy3vH9SWALJYvm+JWUOOX4McLxFR
CjFWNMa+BXwNv+jiUYGGMaAv2BdwBEpCCQkr7DECDT30m/
nHCgnjEmHIjBSy3s63Lid7XSl98TWTAwxiQAycBqP4cClJVTNgCHgEUiEhBxAS8DjwJ2P8fhigBfGWPWOVa
zCwTtgRxguqM89rYxJtbfQTkZA3zo7yAARGQfMAXYAxwAckXkK2/suy4nfrdW+lLnMsbUB/4NPCQiJ/
wdD4CIFItIT0oW7Uk1xvi9RGaMGQ4cEpF1/
o6lEn1FpBdwNXCfo8Tob+FAL+ANEUkGTgMBce0NwFF6GgHM9XcsAMaYJpRUKdoB5wOxxpjbvbHvupz46/
RKX1Zw1ND/DcwSkY/9HY8zR1lgGXCVfyMBoC8wwlFLnw0MNsb8y78h/Y+I7Hc8HgI+oaT06W/
ZQHa5M7Z5lHwQBIqrgfUictDfgTgMBXaLSI6IFAIfA5d5Y8d1OfGXrfTl+CQfAyzwc0wBy3ER9R1gi4i86O
94ShljmhtjGju+r0fJ/wxb/RoUICKPiUhrEUmg5N/WUhHxymistowxsY4L9DhKKVcAfp9FJiK/
AHuNMZ0dm4YAfp084OQWAqTM47AHuMQYE+P4/3MIJdfeaq3O9uMP1JW+jDEfAgOBOGNMNvCkiLzj36iAkhH
sHcAPjno6wB8ci+b4U0tgpmO2RRjwkYgE1NTJABQPfFKSKwgHPhCRhf4NqcxvgVmOwdgu4E4/
xwOAMSaGkhmAd/
s7llIistoYMw9YDxQBGXipfUOdnc6plFLKtbpc6lFKKeWCJn6llAoxmviVUirEaOJXSqkQo4lfKaVCjCZ+p
ZQKMZr4lVIqxGjiV6oGjDF9jDGbHOsFxDp6pvu9h5BS7tAbuJSqIWPMX4BooB4lPWj+6ueQlHKLJn6lasjR
dmAtkA9cJiLFfg5JKbdoqUepmmsK1AcaUDLyVyoo6IhfqRoyxiygpCVzO0qWrbzfzyEp5ZY6251TKSsZY34
NFInIB47OoSuNMYNFZKm/
Y1OqOjriV0qpEKM1fqWUCjGa+JVSKsRo4ldKqRCjiV8ppUKMJn6llAoxmviVUirEaOJXSqkQ8/8BYIJPwpW
3XCYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Define the input to span training and validation sets (excluding test set) -
no cheating!\n",
"x_c = np.linspace(x[0], np.max(x_dev), 100)\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"ax.plot(x_c, reg.predict(make_features(x_c, degree=d)), '--')\n",
"ax.plot(x_train, y_train, '.')\n",
"ax.plot(x_dev, y_dev, '^', ms=6)\n",
"ax.plot(x_dev, reg.predict(make_features(x_dev, degree=d)), '.')\n",
"\n",
"ax.set_xlabel('x')\n",
"ax.set_ylabel('y')\n",
"ax.set_ylim(np.min(y_train), np.max(y_dev))\n",
"ax.legend(['polynomial fit', 'train data', 'dev data', 'dev prediction'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see that the error on the training set is much lower than on the
validation set. This is normal, but can we do better on the validation set? Are we
overfitting or underfitting? \n",
"\n",
"Here we're clearly underfitting: the model is too simple. We need to make it a
bit more complex. To do that, set $d=2$, and try again. In this case, we know the
right answer, but in real-world problems we don't. We'd have to test different
inputs $d$ and see which one fits best. That's why automating feature selection and
hyperparameter tuning can save you a lot of time. \n",
"\n",
"To illustrate this point, I'll define functions for splitting the data into
train/dev/test sets and printing their error so we can train the model in a loop
over different values of the degree $d$."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Split the data\n",
"def split_data(x, y, test_size=0.2, shuffle=False):\n",
" X = make_features(x, degree=d)\n",
" Y = y.reshape(-1, 1)\n",
"\n",
" X_train, X_test, Y_train, Y_test = train_test_split(X, Y,
test_size=test_size, shuffle=shuffle)\n",
" X_train, X_dev, Y_train, Y_dev = train_test_split(X_train, Y_train,
test_size=test_size, shuffle=shuffle)\n",
" \n",
" return X_train, Y_train, X_dev, Y_dev, X_test, Y_test\n",
"\n",
"# Plot results\n",
"def plot_results(x_train, y_train, x_dev, y_dev, reg, d):\n",
" x_c = np.linspace(x[0], np.max(x_dev), 100)\n",
"\n",
" fig = plt.figure()\n",
" ax = fig.add_subplot(111)\n",
" ax.plot(x_c, reg.predict(make_features(x_c, degree=d)), '--')\n",
" ax.plot(x_train, y_train, '.')\n",
" ax.plot(x_dev, y_dev, '^', ms=6)\n",
" ax.plot(x_dev, reg.predict(make_features(x_dev, degree=d)), '.')\n",
"\n",
" ax.set_xlabel('x')\n",
" ax.set_ylabel('y')\n",
" ax.set_ylim(np.min(y_train), np.max(y_dev))\n",
" ax.legend(['polynomial fit', 'train data', 'dev data', 'dev prediction'])\
n",
" plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can loop over different values of $d$, pick the best predictor and
finally test it on the test set. This is a good illustration of the whole machine
learning process.\n",
"\n",
"In practice, you might have to store your trained models (usually on a local
drive) because most real-world machine algorithms take a lot of time to train. You
don't want to be training the same model multiple times. In this case, the models
and data are small so we can afford to simply save them in a list. "
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 1\n",
"validation score = -2.4356\n",
"train score = 0.8798\n",
"validation MSE = 197.4243\n",
"train MSE = 17.5591\n"
]
},
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = -5.479+6.077x^1$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA0nUlEQVR4nO3deXxU5fX48c+TyUbCTiAiiwFkEUggEOKC7OBWxJXFrUH8FnGpW4tgq7U/
rdZWXLCuVAW0KAhVpFZRFhEUBAIBVPZAhABC2MISQpY5vz8yScNkkswkc2fJnPfrldckd2buPSZ45rnnPvc
8RkRQSikVOsL8HYBSSinf0sSvlFIhRhO/
UkqFGE38SikVYjTxK6VUiAn3dwDuiIuLk4SEBH+HoZRSPnPg9AGO5R9DEAyGJtFNaBnb0qN9rFu37rCINHf
eHhSJPyEhgfT0dH+HoZRSPpGTl8PVH19N0+KmZduibFEsvGkhcfXi3N6PMeZnV9u11KOUUgHmzU1vYhf7Od
vsYufNjW96Zf9BMeJXSqlQkJOXw8TlE8k9m0uhvfCc5wrthWw4tMErx9HEr5RSAeLNTW+y/
uB6RnUexSfXfWLZcYI28RcWFpKdnU1+fr6/Q1HViI6OpnXr1kRERPg7FKUCVk5eDp/u/
BRBmL9zPhN6TPConu+JoE382dnZNGjQgISEBIwx/
g5HVUJEOHLkCNnZ2bRr187f4SgVsMrX9Uvr+Y9f8rglxwrai7v5+fk0a9ZMk36AM8bQrFkzPTNTqgqlo/
3Sun6hvZD5O+dz+MxhS44XtIkf0KQfJPTvpFTVrJ7F4yyoE79SStUFGw9ttHQWj7OgrfEHo4EDBzJlyhRSU
lJ8fuzLLruMlStXVvma+vXrc+rUqQrbX3nlFd544w169erF6NGj2bx5M5MnT2b+/
Pl06tSJrl27WhW2UiFh3oh5Pj2eJv4QUV3Sr8rrr7/
OF198UXZxdsSIEQDMnz+f4cOHa+JXKshoqaeGsrKy6NKlC2lpaSQlJXHzzTeTl5cHwJIlS0hOTiYxMZFx48
Zx9uzZc977zjvv8PDDD5f9/M9//pNHHnmErKwsLrroIn7zm9/
QrVs3rrjiCs6cOQPAhg0buOSSS0hKSuKGG27g2LFjQMlZxMMPP0z//v256KKLWLt2LTfeeCMdO3bk8cf/
NyOgfv36AJw6dYohQ4bQq1cvEhMT+fTTT6v875wwYQK7du1ixIgRvPTSS8yYMYP777+flStXsmDBAiZOnEj
Pnj3JzMys/S9VqTomJy+HsQvHWnaRtsZEJOC/
evfuLc42b958zs+j3lxZ4eu9lbtFRCTvbJHL5z9au0dERI6cOlvhuers3r1bAPn2229FROTOO++U559/
Xs6cOSOtW7eWbdu2iYjIHXfcIS+99JKIiAwYMEDWrl0rp06dkvbt20tBQYGIiFx66aWyadMm2b17t9hsNsn
IyBARkZEjR8r7778vIiKJiYmybNkyERF54okn5MEHHyzb56OPPioiIi+//LK0bNlS9u/fL/
n5+dKqVSs5fPiwiIjExsaKiEhhYaHk5uaKiEhOTo506NBB7Hb7Oa9xdsEFF0hOTo6IiEyfPl3uu+8+ERFJS
0uTuXPnVvu7Eqn491IqFDy16ilJnJEoT6962i/HB9LFRU7VEX8ttGnThr59+wJw+
+238+2337Jt2zbatWtHp06dAEhLS2P58uXnvC82NpbBgwfz2WefsXXrVgoLC0lMTASgXbt29OzZE4DevXuT
lZVFbm4ux48fZ8CAAS73WVp6SUxMpFu3brRs2ZKoqCjat2/P3r17zzm2iPCHP/
yBpKQkhg4dyr59+zh48KD3fzlKhTjnG7ICadRvaY3fGNMYeBvoDggwDtgGzAESgCxglIgcq+2x5tx9aaXP1
Yu0Vfl809jIKp+vjPM0RWMM4ubi9f/3f//
Hs88+S5cuXbjzzjvLtkdFRZV9b7PZyko9VSl9T1hY2DnvDwsLo6io6JzXzpo1i5ycHNatW0dERAQJCQk6x1
4pC/jyhixPWT3inwosFJEuQA9gCzAZWCIiHYEljp+D0p49e1i1ahUAH374IZdffjldunQhKyuLnTt3AvD++
++XjdTLu/jii9m7dy8ffPABt9xyS5XHadSoEU2aNGHFihVV7tMdubm5tGjRgoiICL7++mt+/
tll11a3NGjQgJMnT9b4/UrVVb6+IctTliV+Y0xDoD/
wDoCIFIjIceA6YKbjZTOB662KwWoXXXQRM2fOJCkpiaNHj3LPPfcQHR3N9OnTGTlyJImJiYSFhTFhwgSX7x
81ahR9+/alSZMm1R5r5syZTJw4kaSkJDZs2MCf/vSnGsV82223kZ6eTkpKCrNmzaJLly412g/
AmDFjeP7550lOTtaLu0qV4+sbsjxl3C1NeLxjY3oC04DNlIz21wEPAvtEpHG51x0TkQqZzxgzHhgP0LZt29
7OI9MtW7Zw0UUXWRK7O7Kyshg+fDg//vhjjfcxfPhwHn74YYYMGeLFyAKTv/
9eSvnSzQtuZtuxbRW2d27S+Zw5+6VtmKcMmGJJQzZjzDoRqXDjkJU1/nCgF/
BbEVltjJmKB2UdEZlGyQcHKSkp1nw6+cnx48dJTU2lR48eIZH0lQo17t6QVdqG2df1fytr/
NlAtoisdvw8j5IPgoPGmJYAjsdDFsZgmYSEhBqP9hs3bsz27duZO3eul6NSSgULf876sSzxi8gvwF5jTGfH
piGUlH0WAGmObWlA1XcQKaVUHeRq1o+vWD2r57fALGPMJqAn8CzwHDDMGLMDGOb4WSmlQoa/Z/
1YOo9fRDYArjqSaWFbKRWyqpr144tav965q5RSPubrNszOtDtnDR0/fpwPPviAe+
+91+P3XnPNNXzwwQc0bty4RseurH2yN2JTSlnP122YnemIv4aOHz/O66+/7vK54uLiKt/
7+eef1zjpu6Oq2JRSKrQS/941sOKFksdamjx5MpmZmfTs2ZOJEyeybNkyBg0axK233lrWcO3666+nd+/
edOvWjWnTppW9NyEhgcOHD1fZhrm83bt3c+mll9KnTx+eeOKJsu2VtVh2js3TVsxKqTrOVcvOQPtypy1ztf
asFnk6XuTPTUoe96z27P1Odu/
eLd26dSv7+euvv5aYmBjZtWtX2bYjR46IiEheXp5069atrEVyaZvjqtowl3fttdfKzJkzRUTk1VdfrbbFsn
NsVbVi9hVty6yUyKHThyTtizTJycvxyfEI+bbMWSuguACkuOQxa4XXD5Gamlq2ShWULFnYo0cPLrnkEvbu3
cuOHTsqvMdVG2Zn3333XVkjtzvuuKNsu7jZYtnd1ymlrFX+Tl1/
Cp3En9APbJFgbCWPCf28fojY2Niy75ctW8bixYtZtWoVGzduJDk52WX7Y+c2zM5tlEs5t4CGc1ssb9iwgfj
4eJfHcPd1SinrBFJ//tBJ/G1SIW0BDP5jyWOb1FrtrrqWxLm5uTRp0oSYmBi2bt3K999/
X+Nj9e3bl9mzZwMlSbz8MVy1WHaOzZutmJVSNePPO3WdhU7ih5Jk3+93tU76AM2aNaNv3750796diRMnVnj
+qquuoqioiKSkJJ544gkuueSSGh9r6tSpvPbaa/
Tp04fc3Nyy7ZW1WHaOzZutmJVSnvP3nbrOLGvL7E0pKSmSnp5+zjZt8xtc9O+lQtnT3z/
NJzs+OeemrYiwCG7seKOld+pW1pY5tEb8SinloZy8HMYuHFur0bm/79R1pnfuKqVUFbzRM9/fd+o60xG/
UkpVIpBm4niTJn6llKpEIM3E8SZN/Eop5UKgzcTxJk38SinlQlU984OdJn4v+fOf/8yUKVO8vt/
69etX+bx24lTKGjWZieONGUC+EFKzenLycpi4fCJTBkwhrl6cv8PxitLEr733lfKumszE8cYMIF8IqRG/
txskPfPMM3Tu3JmhQ4eybdu2su2ZmZlcddVV9O7dm379+rF161Zyc3NJSEjAbi85dczLy6NNmzYUFp47otA
WzEoFp6CaAeSqZWegfXmjLfOh04ek9/u9pfuM7tL7/d61bouanp4u3bt3l9OnT0tubq506NBBnn/
+eRERGTx4sGzfvl1ERL7//
nsZNGiQiIiMGDFCli5dKiIis2fPlrvuuqvCfutCC2ZXtC2zquueWvWUJL+XLN1ndJfk95Ll6VVP+zskbcvs
7WlZK1as4IYbbiAmJoaGDRsyYsQIoGRkvnLlSkaOHEnPnj25+
+67OXDgAACjR49mzpw5AMyePZvRo0dX2K+2YFbKv2pSpw+2GUAhkfit+qO4apVst9tp3LgxGzZsKPvasmUL
ACNGjOCLL77g6NGjrFu3jsGDB7u9X23BrJRv1KQkHGwzgEIi8VvxR+nfvz+ffPIJZ86c4eTJk/znP/
8BoGHDhrRr1465c+cCJSPwjRs3AiUzdFJTU3nwwQcZPnw4Nputwn61BbNS/
lPTOn2g9eKpjqWzeowxWcBJoBgoEpEUY0xTYA6QAGQBo0TkmJVxWPFH6dWrF6NHj6Znz55ccMEF9Ov3v4Vd
Zs2axT333MNf/
vIXCgsLGTNmDD169ABKyj0jR45k2bJlLvc7depUbr31VqZOncpNN91Utv22227j2muvJSUlhZ49e7pswXz1
1VczadIkl69TSlXPVUnYndk5gdaLpzqWtmV2JP4UETlcbtvfgaMi8pwxZjLQREQmVbUfbcsc/
PTvpQJdTl4OV398NWeLz5Zti7JFsfCmhedM/w6maeGB1Jb5OmCm4/uZwPV+iEEppc7hbkm4/
DWAYLlhy5nViV+Ar4wx64wx4x3b4kXkAIDjsYWrNxpjxhtj0o0x6Tk5ORaHqZQKde6UhJ2vAby8/
uWAWDzdU1bfudtXRPYbY1oAi4wxW919o4hMA6ZBSanHqgCVUgrcq9OXPysothfz313/
LfsQmNBjQsCXfkpZOuIXkf2Ox0PAJ0AqcNAY0xLA8XjIyhiUUqHNW+UY52nhRVJEsRQDgT110xXLEr8xJtY
Y06D0e+AK4EdgAZDmeFkaoD0FlFKW8VarFlfXAEoF+g1bzqwc8ccD3xpjNgJrgP+KyELgOWCYMWYHMMzxs1
JKeZ03++e4ugZQXjCN+i1L/
CKyS0R6OL66icgzju1HRGSIiHR0PB61KgZfsqotc20NHDiQ0qmw11xzDcePH6/0tfPnz2fz5s1lP//
pT39i8eLFVoeolGW82apl3oh5/JD2Az+k/UDnJp0rPB/IN2w5C6m2zHVFUVER4eGe/+k+//
zzKp+fP38+w4cPp2vXrgA89dRTNYpPqUBQWasWb1yEDbYbtpyFRMuGUnkZGRx+axp5GRle2Z8VbZnHjh3Lh
AkT6NevH506deKzzz4DYMaMGYwcOZJrr72WK664gtOnTzNu3Dj69OlDcnJyWfvlM2fOMGbMGJKSkhg9ejRn
zpwp23dCQgKHD5ec6r733nskJSXRo0cP7rjjDlauXMmCBQuYOHEiPXv2JDMzk7FjxzJvXsk/
8CVLlpCcnExiYiLjxo3j7NmzZft88skny9pAb93q9sQtpSwVbP1zfClkRvx5GRnsuXMcUlCAiYyk7fR3iUl
OrvH+1q1bx+zZs8nIyKCoqIhevXrRu3dvAMaPH8+bb75Jx44dWb16Nffeey9Lly6lR48efPPNNwwaNIj//
Oc/XHnllURERFTYd1ZWFt988w2ZmZkMGjSInTt3ArBq1So2bdpE06ZN+cMf/
sDgwYN59913OX78OKmpqQwdOpS33nqLmJgYNm3axKZNm+jVq1eF/f/
0008888wzfPfdd8TFxXH06FGaNm3KiBEjGD58ODfffPM5r8/Pz2fs2LEsWbKETp068etf/
5o33niDhx56CIC4uDjWr1/P66+/zpQpU3j77bdr/
HtVyluCrX+OL4VO4l+zFikoALsdKSwkb83aWiX+8m2ZAZdtmUuVjo5L2zIPGjSI2bNnV7pq1qhRowgLC6Nj
x460b9++bBQ9bNgwmjZtCsBXX33FggULyq4r5Ofns2fPHpYvX84DDzwAQFJSEklJSRX2v3TpUm6+
+Wbi4kpOd0v3WZlt27bRrl07OnXqBEBaWhqvvfZaWeK/8cYbAejduzcff/xxlftSyleCvRxjpZBJ/
DGpfTCRkUhhISYigpjUPrXeZ3VtmZ2NGDGCxx57zOO2zKU/x8bGlm0TEf7973/
TuXPFi0yu4ipPRKp9jfPrqxIVFQWAzWajqKjI7f0qpfwjZGr8McnJtJ3+Ls0feKDWZR6wri0zwNy5c7Hb7W
RmZrJr1y6Xyf3KK6/kH//4R1lSznBct+jfv39ZO+cff/
yRTZs2VXjvkCFD+Oijjzhy5AgAR4+WTKxybvFcqkuXLmRlZZWVnN5//30GDBjg5m9KKRVoQibxQ0nyj7t7f
K2TPpzblvmmm26q0Jb5nXfeoUePHnTr1u2cdW9Hjx7Nv/
71L5erb5Xq3LkzAwYM4Oqrr+bNN98kOjq6wmueeOIJCgsLSUpKonv37mXr895zzz2cOnWKpKQk/
v73v5Oamlrhvd26deOPf/
wjAwYMoEePHjzyyCMAjBkzhueff57k5GQyMzPLXh8dHc306dMZOXIkiYmJhIWFMWHCBM9/
aUqpgGBpW2ZvCaW2zGPHjnV5gTXY1dW/l1KBLJDaMiullPKjkLm4GyxmzJjh7xCUUnVcUI/
4g6FMpfTvpFSgCdrEHx0dzZEjRzSpBDgR4ciRIy4vUCul/CNoSz2tW7cmOzsbXZ0r8EVHR9O6dWt/
h6GUS8G0hq63BG3ij4iIoF27dv4OQykV5Mr363/8ksf9HY5PBG2pRykVury9qpY3+vUHE038SqmgU5tVtcp
/aHizX78VvN1RuJQmfqVUUKlulF7d2UDph8ZL615y2a8/
UEb9p9dnkJV2JzlTp7LnznFeTf6a+JVSQaW6UXpVZwPlPzQ+y/ysbLH0Uv4e9R9bu44lj/
+dU+szOLN2LRQVntNR2Fs08SulAs/eNbDihZLHcipbVWvb0W2MXTiWbUe3VXk2cM6HBnaK7Od2k/VXv/
6zRcXMm/k5P4+9k/
h5M9gz9k5sjRsRFhkJNpvXOgqXCtpZPUqpOmrvGpg5AooLwBYJaQugTUmzwcpW1Zq0fBK7cncxafmkCmcDp
TN1nD80AKJsUSy8aaHfpnGeXLeeNfMXM+NUE1r+vIUu9iJsCBQXUXw8l7bT3y1ZOyS1j1eaS5bSEb9SKrBk
rShJ+lJc8pi1ouypylbV2pW7C0HIzM2stGYfaEsx5mVksO+uu4ifN4PfL/
oHIwd1Jzwq6pwRvjc7CpenI36lVGBJ6Fcy0i8d8Sf8r+W5q1W1nv7+aT7Z8UmFDwQ4d9QfCEsxnl6fwfoFS
/jEHs/vzzuNFBRgE8EmdlpFFhFj0QjfmSZ+pVRgaZNaUt7JWlGS9NtUXFOilKvyTXnlE7s/
l2IUEZZ9spSmTzxMk+Ii0mzhnHz49xVWBYxJTrY04ZeyPPEbY2xAOrBPRIYbY5oCc4AEIAsYJSLHrI5DKRV
E2qRWmfBLuSrfRIRFcGPHGwPiLty8jAyOrfyeZ/
fHELtlI7921PBt2GlWnO+zEb4zX4z4HwS2AA0dP08GlojIc8aYyY6fJ/
kgDqVUsNq7xuUZQCCUb1wREXZ98z2FD92LFBQwISycg2n3Er7ra7+M8J1ZmviNMa2BXwHPAI84Nl8HDHR8P
xNYhiZ+pVRlqpjl48/yjSt5GRls//Ib/pXfjIgfNvDrggKw2wk3xfRsaPw2wndm9Yj/
ZeBRoEG5bfEicgBARA4YY1pYHINSKpi5muXjRhnI1zZ+uQLzu/
sJLyrkdls42bdOwGT6p4ZfHcsSvzFmOHBIRNYZYwbW4P3jgfEAbdu29W5wSqngUcUsH3/
Ly8ggb81a8rv14MNp87m9qLCshn9JXHjAjPCdWTni7wuMMMZcA0QDDY0x/
wIOGmNaOkb7LYFDrt4sItOAaVCy2LqFcSqlApkHs3x8afuS7yh46F5sxUWYyEiuHXsf4TuXIkWBN8J3Zlni
F5HHgMcAHCP+34vI7caY54E04DnH46dWxaCUqiPcnOXjC5nLVrFi7pcczvyZqwoLAUEKC+lcz07MjMAc4Tv
zxzz+54CPjDF3AXuAkX6IQSmlPJJz8iwz/rmAYe88TUpxEWKzYYuMgOLigB/hO/
NJ4heRZZTM3kFEjgBDfHFcpZSqrdOOTpn2pGTy1qwhwl5MGAIIjW+4gYjzzw/
4Eb4zvXNXKaVcyDl5ljkzPqffW08SaS/
GREZyz6OTOLp1cdlMnUbXXxdUCb+UJn6llCrn4Kq1fDvvK94704yLDu4gvLgYpKQnftjJE5Z1zPQlTfxKKe
Ww6csV2B+5j87FRTwdHkG9R35PcebSgJyLXxua+JVSIe3omnQOfLOSdkP70WLXTxxx1PBtUkyTwjMBOxe/
NjTxK6VC0pmCYj6dtZAuUx4jvLiIPbOmE//YZGxRgXm3rTdp4ldKhZTc9HWs/ngR0/
Oa0WbPFhLtRYQ55uJbuepVINHEr5QKGXkZGewbdxfnFxTwWHg4Rfc+jC1AOmb6kiZ+pVSddnLdetZ9uoScD
t0YlJ+NKe2nI3bOtxXWyRp+dTTxK6XcU0lPfK+83tN9u8FuFxb/ezHxf/4dccVFNA0Px/b4H/
226lUg0cSvlKpeFT3xa/16T/ddjbyMDHZ89Q2vH21Eox0//G/VK7FTnBsaNfzqaOJXSlXP0574nrzeS/
32RYTj6es4+JvfEFFQwL3GxrFx9wfMqleBRBO/Uqp6nvbE9+T1tey3LyKs/
uwbvv94Ea0Lc+lWUICx24m0GbrXJyRr+NUxIoHf6j4lJUXS09P9HYZSoc25Dl9dXb6q5z3dVyXW7D7KnBn/
5fa5zxNhL8KEh2MLM4ijY2bb6e+GdLI3xqwTkRTn7TriV0q5p3xPfHfq8pX10K/svR4k/
LyMDL6d9xUv5tTn0hM/EyXFGATETqMbbg7Kjpm+pIlfKeU5T+vy5Uf0tajp/7Q/F/
PTj4RNvJ82BQVMsYXT/LHHOLZ1UdB3zPQlTfxKKc+5qstXVq5xHuFf9ZzHNf0dB0/
y0uLtfP7DLzx2bDX9CwrAbsdmirHVkY6ZvqSJXynlOed1cKHy0o/zCP/MEbfX0N19+DRTF2/
n0437iY0M54EhHbmxQTxHVv9HZ+rUgiZ+pVTNlK/Lr3ih8vKNq7MDN2v6X/
70C1/+dJC7+3fg7v7taRIbCUCsjvBrRRO/Uqr2qpqS6Xx2UEXC/yU3n1e/
3kFqu2aM6HE+aZcmcFOv1jRvEHXO63SEXzua+JVStVddcq9mhH/
oZD5vLMtk1uo9iAjnNYwGoF6kjXqRNisjD0nVJn5jzP3ALBE55oN4lFLBysMpmaWmf7ebvy/
cRkGxnZt6teK3gzvSpmmMBQGqUu6M+M8D1hpj1gPvAl9KMNz1pZQKWLlnComwGWIiw2neIIorusXz0NBOtI
uL9XdoISGsuheIyONAR+AdYCywwxjzrDGmg8WxKaXqmFNni3h16Q76/W0p07/
LAmB40vlMHZOsSd+H3Krxi4gYY34BfgGKgCbAPGPMIhF51MoAlVJeZEH7Y3ecKSjm/
e+zeGNZJsfyChnSpQUDOzf32fHVudyp8T8ApAGHgbeBiSJSaIwJA3YALhO/
MSYaWA5EOY4zT0SeNMY0BeYACUAWMEqvHyjlA15uf+yJ38/
byH83HaBfxzh+d0VnerZp7JPjKtfcGfHHATeKyM/
lN4qI3RgzvIr3nQUGi8gpY0wE8K0x5gvgRmCJiDxnjJkMTAYm1TB+pZS7vNT+2B2FxXbmpmczsHNzzm9cj3
sHdiDt0gRS2zW15HjKM9UmfhH5UxXPbaniOQFOOX6McHwJcB0w0LF9JrAMTfxKWa+W7Y/
dUVRs55OMfbyydAd7j57h0as6c+/
AC+l2fiOvH0vVnKXz+I0xNmAdcCHwmoisNsbEi8gBABE5YIxpUcl7xwPjAdq2bWt
lmEqFBg9upKqJzzbt58WvtrPr8Gm6t2rIU2O7ax0/
QFma+EWkGOhpjGkMfGKM6e7Be6cB06CkH781ESoVYmo4174yIoIxBoBl23KIsIXx5u29ubJbfNl2FXh8cue
uiBw3xiwDrgIOGmNaOkb7LYFDvohBqZBk0SweEWHZthxeXLSdZ27oTlLrxvx5RDdiImyEhWnCD3SWJX5jTH
Og0JH06wFDgb8BCyiZJfSc4/FTq2JQKqRZMItHRPhu5xFeWLSNjD3HadO0HifOFAFQP0o7wAQLK/
9SLYGZjjp/GPCRiHxmjFkFfGSMuQvYA4y0MAalQpeXZ/
GICL95L53FWw5xfqNonr0hkZEprYmwVXsfqAowliV+EdkEVGifJyJHgCFWHVcp5eClWTw/
7c+la8uGGGO4rEMc/To2Z0xqG6LCtXlasNJzM6XqKk9n8ThdD/
hxXy4vLdrOkq2HeOuO3lzZ7TzGXd7ON7ErS2niV6ouc3cWT7nrAXZbBFPin+f1zGY0jA5n4pWd6XthnPWxK
p/RxK+UOud6gL1IiMxeyV/
7DOWGJruJvrAJRF3o7wiVF+lVGaVC3N6jebyb3RqxRYKxEWaL5DdXpHDLlvuJXvHXkjOBvWv8HabyIh3xKx
WiDuSe4dWlO5mzdi9hYQ25+Nr36VawibCEfsT6sK+P8j1N/
EqFmPzCYv62cGvZMoe3pLblvkEXcl6jaGDY/
15ocV8f5T+a+JUKEQVFdiLDw4gKD+OH7Fyu73l+5cscWtzXR/
mXJn6l6rjcM4W8vWIXc9bu5YsH+9GsfhSzx19CeHU3Xnm5r48KHJr4laqjTp0tYvq3u/nnil2cyC/
imsTzOFtkB6g+6as6TRO/UnVQbl4hg19YxpHTBQy9KJ6Hh3XUnviqjCZ+peqI/MJiVu8+yoBOzWkUE8Fd/
dpxWYc4XeZQVaCJX6kgV7rM4T+W7uCXE/l88/tBtG0Ww70D3bjpyk+Lryv/
0sSvlK95Kdk6L3PYq21jpozsQdtmLmbpVBaHnxZfV/6liV8pX/Jisj16uoDH5/9Ip/
gGPHVndwZ2au7Zqld6k1bI0sSvlC/VItmKCF/+9AvfbM/h2RsSadEwmv/
89nI6tqhfs2UOfbD4ugpMmviV8qUaJFsR4etth3hx0XZ+3HeC9nGxHD1dQLP6UXSKb1DzWPQmrZCliV8pX3
KVbKuo+e85kscDszPYsPc4bZvG8MLIHlzX8/zK5+F7ev1Ab9IKSZr4lfK18sm2kpr/
8bwCGsdEEtcgEhHhrzcmcnPvapY51Iu1yk2a+JXyJ6ea//4NXzHpK2Hv0TwWPzKAmMhw5t/
X170avl6sVW7S+7aV8idHzV+MjbOEc//KWH7af4LbLr6AYhEA9y/cll4/MDa9WKuqpCN+pfypTSqbh/
2LzxZ8xA8RiQy54mrGXpZAbFQN/
tfUi7XKTZr4lfKDXTmnyMw5zbCu8XTpM4TVRR14rXdrGkZH1G7HerFWuUETv1I+tPdoHq8s2cHHGfto0SCK
QZ2bE24L486+7fwdmgohliV+Y0wb4D3gPMAOTBORqcaYpsAcIAHIAkaJyDGr4lAqEPySm88/lu7go/
S9GGNIuzSBewZ20PbIyi+sHPEXAb8TkfXGmAbAOmPMImAssEREnjPGTAYmA5MsjEMpv8s+lsdH6XsZ06f8M
odu0CZqygKWJX4ROQAccHx/
0hizBWgFXAcMdLxsJrAMTfwqmLiRjI+eLuCt5ZkUFQtPDO9KSkJTVk4eQvMGUZ4dR+flKwv4pMZvjEkAkoH
VQLzjQwEROWCMaVHJe8YD4wHatm3rizCVql41ybh0mcN3v91NXmExN/dqjYhgjPEs6YN78/
L1jEDVgOWJ3xhTH/g38JCInHB3TrKITAOmAaSkpIh1ESrlgSqS8eLNB3n4ow2czC/
iV4kteWhoRzrWppdOdX199IxA1ZClid8YE0FJ0p8lIh87Nh80xrR0jPZbAoesjEEpr3JKxmdbXcapLStodn
gNiU37cFmHZjwwxEvLHFY3L1/
v1FU1ZOWsHgO8A2wRkRfLPbUASAOeczx+alUMSnmdIxkXZi5n4akL+XjWet60/
z+giHhbJG+lLQBvrm1b1bx8bausasjKEX9f4A7gB2PMBse2P1CS8D8yxtwF7AFGWhiDUl5VUGRn7v54Xl2V
zIHcfP7afDuRJwsBu/
dG3VXV7Z2f0zt1VQ1YOavnW6Cygv4Qq46rlJWmf7ebv36xtWyZw8si4zDvzal61O3JBdiq6vaVPacJX3lI7
9xVqgrFduGzTftpFhvF5R3jGJPalk7xDRjYuXSZw7iqR92eXoCtqm6vNX3lJZr4lXLBbi9Z5vClxdvZfvAU
1/Y4n8s7xtGoXgSDujjNQK5q1O1psq6qbq81feUlmviVcrJy52Ge+XwLP+0/
QfvmsbxySzLDE1vWbGeeJuuq6vZa01deoolfKUrWtRWBsDDDnqN5nMwvqn6ZQ3fUJFlXdQahNX3lBUYk8O+
NSklJkfT0dH+Hoeqo1buO8MKi7Vzd/
Tzu7NuOomI7AlUvc6hUEDDGrBORFOftOuJXIStjzzFeXLSdFTsO07xBVFkvfO2Yqeo6TfwqJP1t4VbeWJZJ
09hIHv/
VRdx+yQVER9gqf4P2xFF1iCZ+FTK2HzxJXP0omsZG0q9jHPWjwt1b5lB74qg6Rs9pVZ23K+cUD3yYwZUvL+
et5ZkAXNYhjvsGXeje2raupmRWZe8aWPFCyaNSAUhH/
KrO2ns0j6lLdvDx+myiwm1MGNCB8f3ae74jT6Zk6tmBCgKa+FWd9beFW/
lq80Hu7NuOCQM6eN4Pv5QnUzL17loVBDTxqzrj0Il8Xl+WyW0Xt6VjfAMeu+YinhjelfiGbi5zWBV358/
r3bUqCGjiV0Hv6OkC3vomk5mrsigsFjrFN6BjfANaNa7n+2D07loVBDTxq6D26tIdvLEsk7zCYq7v2YoHh3
QkIS7Wv0Hp3bUqwGniV0Enr6CIehE2jDGcyC9iYJcWPNb9BK1zl8CZAkCTrlJV0cSvgkZeQRHvrfqZt77J5
JVbkunXsTmPXd0Fk70WZo7RmTRKuUkTvwp4+YXFfLhmD699ncnhU2fp36k5cfVLZugYY3QmjVIe0sSvApqI
MOqtVWzKzuXS9s148/ZepCQ0PfdFNZlJoy0YVAjTxK8CTlGxnf/
+cIBrElsSYQvjngEdaFQvgssujHP9Bk9n0uhNVirEaeJXAaN0mcOXF+9g9+HTRNjCuCaxJVe7swiKJzNpKm
vBUP6DQ88IVB2miV/
5nUjJMocvLipZ5rDLeQ2YdkdvhnWNt+aAzqWhes3OPQO46jlYOFnPCFSdpYlf+Z0IvLx4B8V24dVbk7mme0
vCwkzFF3prFO5cGnI+A9jyqV4sVnWaJn7lcyLCih2H+eeKXbx2Wy8aRkfw7tg+xDeMxlY+4ZdP9ODdurxza
aj8GcBF18HPq7TtgqqzLEv8xph3geHAIRHp7tjWFJgDJABZwCgROWZVDCrA7F3D3vVf8ubP5zNr/
3mc3yianw/
nkdi6Eec7t1dwvgDb8xbrRuGuLg7Hd9Uav6qzrBzxzwBeBd4rt20ysEREnjPGTHb8PMnCGFSAOLt7Fbx3HS
3thTxhwuk74G2GDBtIVHglq145l18Qa5ufOZ8BaNsFVYdZlvhFZLkxJsFp83XAQMf3M4FlaOKv037Jzee8R
tFEZa+kWAqxGTs2U8w19XdCZUkfKl6A7XFryZeOwpWqNV/
X+ONF5ACAiBwwxrSo7IXGmPHAeIC2bdv6KDxVLTcvsG775SQvLdrOkq0HWfq7gbRJ6IctPAqKCzDujNgrm5
tf04Sv0zOVKhOwF3dFZBowDSAlJUX8HI4Ct258ysw5xcuLd/
DZpv3ERoZz78ALaRQTAU1dJPLqknFtyi1WXhhWKsj5OvEfNMa0dIz2WwKHfHx8VRvV9MQ5nlfAH6a+w8Vhm
3m611CG/+o6GsdE/u/
95RO5lXfP+vLCsFJByNeLrS8A0hzfpwGf+vj4qjZK6+7GVnaB9UDuGWZ8txuAxkc28EHUszxsm8vt235L4y
MbKt+XpwuYe6KyC8Pl4lYqlFk5nfNDSi7kxhljsoEngeeAj4wxdwF7gJFWHV9ZoFzd/
WiLVF7JiOWDNctAYGjXeFpnrcBmL3RvZG3lEoV6YVipKlk5q+eWSp4aYtUxlfVONE/
mtR8aMPOrLAqLTzKyd2vuH3whrZvEeJbMrVyi0NsXhpWqYwL24q4KLCKCMQYRmLsum2u6t+QB52UOPU3mVs
6V13n4SlVKE7+q0sn8QqZ/l8W3Ow4ze/wlNKoXwTcTB9IgOsL1G7w1E8edfegUTaVqRBO/
cqn8MofH8goZ1jWek/
lFNIqJqDzp14ans3y0p75SNaaJX1Ww4+BJbvnnag6fOsuATs15ZFgnerRpbO1BPV0+UZdbVKrGNPErAAqK7
Ow+fJrO5zUgIS6W/p3iuDW1bcVlDq3i6SwfK2cFKVXHGZHAvyk2JSVF0tPT/R1GnVT08/
dsXvU5r+06j3X2Tnw7aRDREVX00LGS1viV8ipjzDoRSXHeriP+usiNhFhsF75b9jmpy8fSVYp4xYSzedi/
iAr39T195Xh6YVhn7ihVI5r46xo3L3quzTrK90s+pW9EUVnHzGT7j2Cu9EPQSilf8uPwLgjsXQMrXih5DBa
VtEIQERZvPljWXuHidk254lc3ERYeBcbmXsdMTwXj70+pEKAj/
vLqQkdHp4uecsHlLN+ew4uLtrNx73E6xzfgjksTsIUZel52JbSx6O5ZnW6pVMAK7cRfVaIP1o6O5e6ezarf
i4mfF7M2aw2tGtfjuRsTual363PXtbWqTq7TLZUKWKGb+Ktr3Wv1Un8WKmiZQmSbVAoPniT72Bqeuq4bo/
u0qXyZw/K8NVNGp1sqFbBCN/FXt6ZrEHZ0/HFfLi8u2k69CBuv3daLjvENWPHoIML3p8Oqf1f/
3+HN8oyVTdiUUrUSuonf3da9QZCwSpc5XPjTLzSqF8HdA9qXNVUL359eMZmD64RcWY/
8miZvnW6pVEAK3cRvdeteH91c9ElGNo98tJHYyHAeGtqRcZe3o2H5XjrOyXzjB7BhtutRvfOHYb1meoFWqT
oodBM/WDcitXhGy96jeZzML6Lr+Q3p17E59w7swP9d3p4msZEVX+yczDGVX3R1/
jDUC7RK1UmhnfitYlHC3H/
8DP9YupO56XvpfUET5tx9KXH1o5h4ZZfK3+SczAE2fFj5RVfnD0O9QKtUnaOJ31vKl3a8PKPl0Il8Xl+WyQ
er9yAIt17clvsGXej+DpyTubsXXfUCrVJ1Ut1O/L5q4uWqtOPFhPnfHw7w/vc/
n7vMYW14UuLSC7RK1Tl1N/
H78s5RV6Wdfr+r8fFy8wr554pdXNiiPtcnt+KW1LYM6tzi3GUOlVKqhupur57KpiZaobS0Y2y1Ku2czC/
klSU7uPzvS3n16538sC8XgOgI27lJX3vgKKVqoe6O+L1952hVZSMv1MI/Xp/
NU59t5nheIXe3P8y4VvuIT2ruOg6dYqmUqoW6m/i9eWHSVbKFc/
ddg1p4fmExdhFiIsOJjQqnR+vGPJ50ko4LJ8GBAsh4pWJiD7QplroYilJBxy+J3xhzFTAVsAFvi8hzlhzIW
xcmPbkJqjLlEmRByxTmpO/ltaU7GdWnDY8M68SV3c7jym7nlZRwqkrsgdQDR88+lApKPk/
8xhgb8BowDMgG1hpjFojIZl/
H4jZPboJyxZEgpbiAYhPBb8Of5MsTF5ByQRP6dmhW9bFczbMPlCmWgXb2oZRyiz9G/
KnAThHZBWCMmQ1cBwRu4vf0JihnjgRppBjsQt/
ordw6biT9O8ZhjKNFcvmSiXNidy6nBMoUy0A6+1BKuc0fib8VsLfcz9nAxc4vMsaMB8YDtG3b1jeRVaUGN0
HZ7cLCn36hd9M+xNsikeICjC2CO8bchmlb7sKtq5JJv99V/lwgJH0IrLMPpZTb/
JH4jYttUmGDyDRgGkBKSkqF5/2uilG3iLB4yyFeXLSdLQdOMGFAByanLcBkrcDmahRfVckk0MspgXL2oZRy
mz8SfzbQptzPrYH9fojDEit25DDlq5JlDi9oFsOLo3pwXc9WEGb+lyCdR/
FXPVd5ycSdcorOrFFKecAfiX8t0NEY0w7YB4wBbvVDHJb44sdfOHzyLH+7KZEbe7UmwubiHjnnUfyZI5WXT
KorpwRyKUgpFZB8nvhFpMgYcz/
wJSXTOd8VkZ98HYe3rPv5GC8u2sYjwzrR+4KmTLqqC09e27XqZQ5djeKrKplU9Vygl4KUUgHHL/
P4ReRz4HOfH9iLJZEfsnN5cdE2vt6WQ7PYSHJOngWgUb2Iat6Jdy+K6swapZSH6u6du868WBKZNG8Tc9L30
qheBI9e1Zm0SxOIjfLwV+mti6I6s0Yp5SEjEngTZpwZY3KAn2v49jjgcKsG5rzz6ptWAAJy8JTs33dSfvFa
kDWMy4/
Hr0ygxgWBG5vG5RmNyzO1iesCEanQ9CsoEn9tGGPSRSTF33E407g8F6ixaVye0bg8Y0Vcdbcts1JKKZc08S
ulVIgJhcQ/
zd8BVELj8lygxqZxeUbj8ozX46rzNX6llFLnCoURv1JKqXI08SulVIip04nfGHOVMWabMWanMWayv+MBMMa
8a4w5ZIz50d+xlGeMaWOM+doYs8UY85Mx5kF/xwRgjIk2xqwxxmx0xPX//
B1TecYYmzEmwxjzmb9jKc8Yk2WM+cEYs8EYk+7veEoZYxobY+YZY7Y6/q1dGgAxdXb8nkq/
ThhjHvJ3XADGmIcd/+5/
NMZ8aIyJ9sp+62qN37HS13bKrfQF3OLvlb6MMf2BU8B7ItLdn7GUZ4xpCbQUkfXGmAbAOuD6APh9GSBWRE4
ZYyKAb4EHReR7f8ZVyhjzCJACNBSR4f6Op5QxJgtIEZGAuiHJGDMTWCEibxtjIoEYETnu57DKOPLGPuBiEa
npTaPeiqUVJf/
eu4rIGWPMR8DnIjKjtvuuyyP+spW+RKQAKF3py69EZDlw1N9xOBORAyKy3vH9SWALJYvm+JWUOOX4McLxFR
CjFWNMa+BXwNv+jiUYGGMaAv2BdwBEpCCQkr7DECDT30m/
nHCgnjEmHIjBSy3s63Lid7XSl98TWTAwxiQAycBqP4cClJVTNgCHgEUiEhBxAS8DjwJ2P8fhigBfGWPWOVa
zCwTtgRxguqM89rYxJtbfQTkZA3zo7yAARGQfMAXYAxwAckXkK2/suy4nfrdW+lLnMsbUB/4NPCQiJ/
wdD4CIFItIT0oW7Uk1xvi9RGaMGQ4cEpF1/
o6lEn1FpBdwNXCfo8Tob+FAL+ANEUkGTgMBce0NwFF6GgHM9XcsAMaYJpRUKdoB5wOxxpjbvbHvupz46/
RKX1Zw1ND/DcwSkY/9HY8zR1lgGXCVfyMBoC8wwlFLnw0MNsb8y78h/Y+I7Hc8HgI+oaT06W/
ZQHa5M7Z5lHwQBIqrgfUictDfgTgMBXaLSI6IFAIfA5d5Y8d1OfGXrfTl+CQfAyzwc0wBy3ER9R1gi4i86O
94ShljmhtjGju+r0fJ/wxb/RoUICKPiUhrEUmg5N/WUhHxymistowxsY4L9DhKKVcAfp9FJiK/
AHuNMZ0dm4YAfp084OQWAqTM47AHuMQYE+P4/3MIJdfeaq3O9uMP1JW+jDEfAgOBOGNMNvCkiLzj36iAkhH
sHcAPjno6wB8ci+b4U0tgpmO2RRjwkYgE1NTJABQPfFKSKwgHPhCRhf4NqcxvgVmOwdgu4E4/
xwOAMSaGkhmAd/
s7llIistoYMw9YDxQBGXipfUOdnc6plFLKtbpc6lFKKeWCJn6llAoxmviVUirEaOJXSqkQo4lfKaVCjCZ+p
ZQKMZr4lVIqxGjiV6oGjDF9jDGbHOsFxDp6pvu9h5BS7tAbuJSqIWPMX4BooB4lPWj+6ueQlHKLJn6lasjR
dmAtkA9cJiLFfg5JKbdoqUepmmsK1AcaUDLyVyoo6IhfqRoyxiygpCVzO0qWrbzfzyEp5ZY6251TKSsZY34
NFInIB47OoSuNMYNFZKm/
Y1OqOjriV0qpEKM1fqWUCjGa+JVSKsRo4ldKqRCjiV8ppUKMJn6llAoxmviVUirEaOJXSqkQ8/8BYIJPwpW
3XCYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 2\n",
"validation score = 0.8464\n",
"train score = 0.9549\n",
"validation MSE = 8.8268\n",
"train MSE = 6.5966\n"
]
},
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = 1.585-0.691x^1+1.064x^2$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA3pklEQVR4nO3deXhU5fXA8e+bySQhYQ0BRLYAskNISAgoRTYXtAgugCgqixVxqVt/
KLXVtlpbWrVWWxWpCmhBENwQl6ooCIKsQUQ2ASMgS8KSsGSb5fz+mElMJpNkskxmkjmf58kzyZ177xwTPPP
Oue89rxERlFJKhY6wQAeglFKqdmniV0qpEKOJXymlQowmfqWUCjGa+JVSKsSEBzoAX8TFxUl8fHygw1BKqV
pz5NwRTuWdQhAMhmZRzWgd07pS59i8efNxEWnhub1OJP74+Hg2bdoU6DCUUqpWZOZkcsXbVxDriC3aFmmJ5
OPrPiauQZzP5zHG/Ohtu5Z6lFIqyMzeNhunOEtsc4qT2d/
MrpHz14kRv1JKhYLMnExmfDmD7PxsbE5biedsThtbM7bWyOto4ldKqSAxe9tsthzbwvhu43lnzDvkpKWRs2
Ej0an9iU5KqrHXqbOJ32azcejQIfLy8gIdiqpAVFQUbdu2xWq1BjoUpYJWZk4m7+19D0F4d+
+73MovyJ5+P1JQgImIoP3cV2ss+dfZxH/
o0CEaNWpEfHw8xphAh6PKICKcOHGCQ4cO0bFjx0CHo1TQKl7Xd4qTea8+zZiCAozTidhsrpF/
DSX+OntxNy8vj+bNm2vSD3LGGJo3b66fzJQqR+Fov7Cub3Pa2Nj+ABIeDhYLxmolOrV/
jb1enR3xA5r06wj9OylVPm+zePa1C2PVgxcz/lwvrfErpVR9803GN9icNrocEnodEL5rb/i+rZ3PG//
EnTc9W+OvV2dLPXXR0KFDA3Yj2kUXXVThPg0bNvS6/
bnnnqNHjx5MnDiRZcuWMWvWLADeffddduzYUaNxKhWKlo5eyvqE1/
jTIgvXrxKeeDOc9QmvsXT0Ur+8no74Q8TatWurfOwLL7zARx99VHRxdvTo0YAr8Y8aNYqePXvWSIxKhbKcD
RsJd9gBAbu9Ri/
metIRfxWlp6fTvXt3Jk2aREJCAmPHjiUnJweAFStWkJSURJ8+fZg6dSr5+fkljn3llVe4//77i37+z3/+ww
MPPEB6ejo9evTgtttuo1evXlx22WXk5uYCsHXrVgYOHEhCQgLXXHMNp06dAlyfIu6//34uvvhievTowcaNG
7n22mvp0qULv//974teo3A0f/bsWUaMGEG/fv3o06cP7733Xrn/ndOnT2f//
v2MHj2aZ555hnnz5nH33Xezdu1ali1bxowZM0hMTGTfvn3V/
6UqVc9k5mQy+ePJHM89Xu5+m388SU7PBExEhF8u5pYiIkH/lZycLJ527NhR4ufxs9eW+npt7Q8iIpKTb/
f6/JsbD4iIyImz+aWeq8gPP/
wggKxZs0ZERKZMmSJPPvmk5ObmStu2bWX37t0iInLzzTfLM888IyIiQ4YMkY0bN8rZs2elU6dOUlBQICIiF
154oWzbtk1++OEHsVgskpaWJiIi48aNk9dff11ERPr06SMrV64UEZFHHnlE7r333qJzPvjggyIi8s9//
lNat24thw8flry8PGnTpo0cP35cRERiYmJERMRms0l2draIiGRmZkrnzp3F6XSW2MdThw4dJDMzU0RE5s6d
K3fddZeIiEyaNEmWLFlS4e9KpPTfS6lQ8Ni6x6TPvD7y+LrHy9znWHau9HvsExk3e62c27JFMme/
JOe2bKmR1wc2iZecqiP+amjXrh2DBg0C4KabbmLNmjXs3r2bjh070rVrVwAmTZrEl19+WeK4mJgYhg8fzvL
ly9m1axc2m40+ffoA0LFjRxITEwFITk4mPT2d7OxssrKyGDJkiNdzFpZe+vTpQ69evWjdujWRkZF06tSJgw
cPlnhtEeHhhx8mISGBSy65hJ9++oljx47V/C9HqRDneUOWt1H/
2S1pvPnAn2l7ZC9PXN2b6KQk4m6f5rcSTyG/
1viNMU2Bl4HegABTgd3AYiAeSAfGi8ip6r7W4tsvLPO5BhGWcp+PjYko9/myeE5TNMYgPi5e/6tf/Yq//
OUvdO/
enSlTphRtj4yMLPreYrEUlXrKU3hMWFhYiePDwsKw2+0l9l2wYAGZmZls3rwZq9VKfHy8zrFXyg88b8ia/
c1sfj/w5/JrTloa6ZMmM9RmY1hEBG0OD4RW/k34hfw94n8W+FhEugN9gZ3ATGCFiHQBVrh/
rpMOHDjAunXrAHjjjTf4xS9+Qffu3UlPT2fv3r0AvP7660Uj9eIGDBjAwYMHWbhwITfccEO5r9OkSROaNWv
G6tWryz2nL7Kzs2nZsiVWq5UvvviCH3/02rXVJ40aNeLMmTNVPl6p+srbDVmeo/
7dH68Cmw0LQpjDdTG3tvgt8RtjGgMXA68AiEiBiGQBY4D57t3mA1f7KwZ/69GjB/
PnzychIYGTJ09yxx13EBUVxdy5cxk3bhx9+vQhLCyM6dOnez1+/
PjxDBo0iGbNmlX4WvPnz2fGjBkkJCSwdetWHn300SrFPHHiRDZt2kRKSgoLFiyge/
fuVToPwIQJE3jyySdJSkrSi7tKFeNLW+X2I36BWK21czHXg/
G1NFHpExuTCMwBduAa7W8G7gV+EpGmxfY7JSKlMp8xZhowDaB9+/bJniPTnTt30qNHD7/
E7ov09HRGjRrF9u3bq3yOUaNGcf/
99zNixIgajCw4BfrvpVRtGrtsLLtP7S61vVuzbiwetQSbw0mU1cLhdV+wbOlfGDPud7QeOLTG4zDGbBaRFM
/t/qzxhwP9gF+LyHpjzLNUoqwjInNwvXGQkpLin3enAMnKyiI1NZW+ffuGRNJXKtSUdeNVTloayx/
6Kx9aWvPkH2/iFbOGJQnHOM4afs/QWovPn4n/EHBIRNa7f16KK/EfM8a0FpEjxpjWQIYfY/Cb+Pj4Ko/
2mzZtyp49e2o4IqVUMHNdzJ1C54IC7g63cmZMB97b9/
Osn+l9p1dqWcXq8FuNX0SOAgeNMd3cm0bgKvssAya5t00Cyr+DSCml6oHM1WtxFhRgQQgXB199MKfUrJ/
a4u9ZPb8GFhhjtgGJwF+AWcClxpjvgUvdPyulVL1ldzh59kRj7JZwCLNAeDhvN9xd7qwff/
LrPH4R2QqUurCAa/SvlFIh4VSOjV2x8Rx55Cn6Z6ezOGY7e2QNFJv4422uv79okzallPKzFo0iee/
uQVgtriLLF8vGYjvlv8XUK6KJv4qysrJYuHAhd955Z6WPvfLKK1m4cCFNmzat0ms3bNiQs2fP+iU2pVTNSV
/1NauX/o8rbvolcQN+Ln74q92yr7RXTxVlZWXxwgsveH3O4XCUe+yHH35Y5aTvi/
JiU0rVjuxNm8m+axpJny4mc9qvyElLC3RIRUIr8R/
cAKufdj1W08yZM9m3bx+JiYnMmDGDlStXMmzYMG688caihmtXX301ycnJ9OrVizlz5hQdGx8fz/
Hjx8ttw1zcDz/8wIUXXkj//v155JFHiraX1WLZM7bKtmJWSlXfB69/
gMVux1Ksv37Q8NayM9i+fGnLXKED60UebyXyx2auxwPrK3e8hx9++EF69epV9PMXX3wh0dHRsn///
qJtJ06cEBGRnJwc6dWrV1GL5MI2x+W1YS7uqquukvnz54uIyL///
e8KWyx7xlZeK+baom2ZVShZuumgXH7bv2Vb7wTZ0bOX7OybKOe2bJGMcxky6aNJkpmTWStxEPJtmdNXg6MA
xOF6TF9d4y+RmppatEoVuJYs7Nu3LwMHDuTgwYN8//33pY7x1obZ01dffVXUyO3mm28u2i4+tlj2dT+lVPX
kpKVx9MXZvLvgY5qm9CN+3lxa3HMP7ee+SnRSErO3zWbLsS21Omffm9C5uBs/
GCwRrqRviXD9XMNiYmKKvl+5ciWfffYZ69atIzo6mqFDh3ptf+xrG2bPFtDge4tlbcWslP/
lpKVxYMpUpKCAh61Wmlw3h0bJ/WiU3A8o3Z+/Nu/U9RQ6I/52qTBpGQz/
neuxXWq1TldRS+Ls7GyaNWtGdHQ0u3bt4uuvv67yaw0aNIhFixYBriRe/
DW8tVj2jK0mWzErpbw7t34DzoICcDrBbidi+9YSz3vrzx8ooZP4wZXsB/
+m2kkfoHnz5gwaNIjevXszY8aMUs+PHDkSu91OQkICjzzyCAMHDqzyaz377LM8//zz9O/
fn+zs7KLtZbVY9oytJlsxK6W8+9jahnwsSFhYqTbLvvTnr01+a8tck1JSUmTTpk0ltmmb37pF/16qPlvz/
XFueXU9tzY7y+1NsohOTS2xfOLjXz/OO9+/
U5T4AaxhVq7tcq1f79QNRFtmpZSq8zJzMpnx5QyeGvJUqZp8TloaR1Z9xXP7rHTu2J377rqcmMjSafWbjG9
KJH2o3Tt1PWniV0qpchSfieO5Zu6BKVOx5+fzcFg4Df8922vSh8DfqesptGr8SilVCZ4zcYrX5HM2bEQKCr
CIECEOmu6p+mp8tU0Tv1JKlaG8mTjneiRgIiLAYiEsIqJW18ytLk38SinlRXkzcTaln+TS/51i/8y/
lbhBq67QGr9SSnlRfLRfyClOXl/0J07/rwEXte3GoNG30CTaGqAIq05H/
DXkj3/8I0899VSNn7dhw4blPq+dOJXyD28zceIPFDDs6RVct3U5D336L6y7S9b1M3Mymfzx5IDNz/
dVSCX+uvJHqQxN/Er5x9LRS/l20rclvsZmjCfcTpkdN4OlF09FQirx1/
Qf5YknnqBbt25ccskl7N69u2j7vn37GDlyJMnJyQwePJhdu3aRnZ1NfHw8Tqfro2NOTg7t2rXDZis5otAWz
EoFr0YDUsFqBYulzLtzvc0ACjreWnYG21dNtGXOOJchya8nS+95vSX59eRqt0XdtGmT9O7dW86dOyfZ2dnS
uXNnefLJJ0VEZPjw4bJnzx4REfn6669l2LBhIiIyevRo+fzzz0VEZNGiRXLrrbeWOm99aMHsjbZlVnVZvs1
R9P25LVskc/ZLcm7LlhL7PLbuMUl6LUl6z+stSa8lyePrHq/
tMEsh1Nsy13SDpNWrV3PNNdcQHR1N48aNGT16NOAama9du5Zx48aRmJjI7bffzpEjRwC4/
vrrWbx4MQCLFi3i+uuvL3VebcGsVGB5loQPrvmaJyf9li/f+RyA6KQk4m6fVmIWT7D14qlISCR+f/
1RvLVKdjqdNG3alK1btxZ97dy5E4DRo0fz0UcfcfLkSTZv3szw4cN9Pm/x1spbt26lVatWFbZgLm8/
pZR3xUvCWRs3c3L6NMZsfp8Wf3ygzOUTy5oBFKy1/pBI/
P74o1x88cW888475ObmcubMGd5//30AGjduTMeOHVmyZAngGoF/
8803gGuGTmpqKvfeey+jRo3CYrGUOq+2YFYqcDzr9G/
NfdOn5RODrRdPRfw6j98Ykw6cARyAXURSjDGxwGIgHkgHxovIKX/G4Y8/Sr9+/bj+
+utJTEykQ4cODB7888IuCxYs4I477uDPf/
4zNpuNCRMm0LdvX8BV7hk3bhwrV670et5nn32WG2+8kWeffZbrrruuaPvEiRO56qqrSElJITEx0WsL5iuuu
IKHHnrI635KqYoVHyTaHA7ea5TOAKsVnI5SF3OLC7ZePBXxa1tmd+JPEZHjxbb9HTgpIrOMMTOBZiLyUHnn
0bbMdZ/+vVSwy8zJ5Iq3ryDfkV+0LQwrH3V9moht3xOd2p/opKRyu3UGm7LaMgei1DMGmO/
+fj5wdQBiUEqpEgpH+10OCVevdT1awuBV81WJi7nFrwHU1XuD/
N2yQYBPjDECvCQic4BWInIEQESOGGNaejvQGDMNmAbQvn17P4eplAp132R8Q/
yBAh59w0G4A+wWeOyGArY22Vq0j+c1gFx7rteWzcHO3yP+QSLSD7gCuMsYc7GvB4rIHBFJEZGUFi1a+C9Cp
ZQC3vjlm4xIv5pwu8EiECkW5sTdU6J+X/
wagMPp4IP9H9SNG7Y8+DXxi8hh92MG8A6QChwzxrQGcD9m+DMGpVRo87Uc8/
jyHbxvWhe1Wq5o3Vy72HGIAwjuqZve+C3xG2NijDGNCr8HLgO2A8uASe7dJgHaU0Ap5TcVtWrJSUvj09/9j
Q0frGLwmGF0nD/Xa6tlb9PCCwX7DVue/FnjbwW8474ZKRxYKCIfG2M2Am8aY24FDgDj/BiDUiqEedbkp/
edXmImTuHyiefnF/B3Szidpl9EdFKS19763qaFF1c46q8LtX6/jfhFZL+I9HV/
9RKRJ9zbT4jICBHp4n486a8YapO/
2jJX19ChQymcCnvllVeSlZVV5r7vvvsuO3bsKPr50Ucf5bPPPvN3iEr5TUWtWgqXTwwTJ1ZxkLfR+w1aULJ
bZ7dm3Uo9H8w3bHnShVjqILvdTnh45f90H374YbnPv/vuu4waNYqePXsC8Nhjj1UpPqWCQVmtWgpH/
Vk5BfznTFOutlrBbi/
3Bi1Pde2GLU8h0bKhUE5aGsdfmlNmv43K8kdb5smTJzN9+nQGDx5M165dWb58OQDz5s1j3LhxXHXVVVx22W
WcO3eOqVOn0r9/f5KSkoraL+fm5jJhwgQSEhK4/
vrryc3NLTp3fHw8x4+7apCvvfYaCQkJ9O3bl5tvvpm1a9eybNkyZsyYQWJiIvv27WPy5MksXer6B75ixQqS
kpLo06cPU6dOJT8/v+icf/jDH4raQO/atatGfrdKVVd5rVoK7E6m/3czc081Im/
Wc3Vy+cTqCJkRf2EtTwoKMBER1f4jb968mUWLFpGWlobdbqdfv34kJycDMG3aNGbPnk2XLl1Yv349d955J5
9//jl9+/Zl1apVDBs2jPfff5/
LL78cq7X0sm3p6emsWrWKffv2MWzYMPbu3QvAunXr2LZtG7GxsTz88MMMHz6cV199laysLFJTU7nkkkt46a
WXiI6OZtu2bWzbto1+/fqVOv93333HE088wVdffUVcXBwnT54kNjaW0aNHM2rUKMaOHVti/
7y8PCZPnsyKFSvo2rUrt9xyCy++
+CL33XcfAHFxcWzZsoUXXniBp556ipdffrnKv1elakpZrVpObFzL4gWPk5Ufx9/
vuJqkpDaAzzPN64XQSfzuWh5OJ2KzkbNhY7USf/
G2zIDXtsyFCkfHhW2Zhw0bxqJFi7jzzju9nnv8+PGEhYXRpUsXOnXqVDSKvvTSS4mNjQXgk08+YdmyZUXXF
fLy8jhw4ABffvkl99xzDwAJCQkkJCSUOv/nn3/O2LFjiYtzXeQqPGdZdu/
eTceOHenatSsAkyZN4vnnny9K/
Ndeey0AycnJvP322+WeS6na4q0ck5OWxv5bJoNtMUlWK53uuAhoU+uxBVrIJP7o1P6YiAjEZqtULa88FbVl
9jR69Gh+
+9vfVrotc+HPMTExRdtEhLfeeotu3UpfZPIWV3EiUuE+nvuXJzIyEgCLxYLdbvf5vErVttNfrwe7zdVt0+m
o9gCwrgqZGn90UhLt575aY7U8f7VlBliyZAlOp5N9+/axf/
9+r8n98ssv51//+ldRUk5zX7e4+OKLi9o5b9+
+nW3btpU6dsSIEbz55pucOHECgJMnXROrPFs8F+revTvp6elFJafXX3+dIUOG+PibUip4NB44AEsZN2iFkp
AZ8QNlzs+tCn+1ZQbo1q0bQ4YM4dixY8yePZuoqKhS+zzyyCPcd999JCQkICLEx8ezfPly7rjjDqZMmUJCQ
gKJiYmkpqaWOrZXr1787ne/
Y8iQIVgsFpKSkpg3bx4TJkzgtttu47nnniu6qAsQFRXF3LlzGTduHHa7nf79+zN9+vRq/
PaUqj05aWkcWfUVH4e34bbpY+gwb65rpO/uthmK/
NqWuaaEUlvmyZMne73AWtfV17+XCm45aWkcmDwVe0E+9rBwGr/
wEp2GXBjosGpNMLVlVkqpWnHm6w04CvKxiBAhDhrv+jbQIQWFkCr11AXz5s0LdAhK1QsiwvycWC414UQaB2
ERESFb0/dUpxN/
ZWenqMCoC+VEVf8cOJnDa6cb0+K+P3OVHA3pmr6nOpv4o6KiOHHiBM2bN9fkH8REhBMnTni9QK2UP+SkpZG
zYSMtUvvz8X2DadO0geYID3U28bdt25ZDhw6RmZkZ6FBUBaKiomjbtm2gw1AhICctjfRJU8BmIyzSdYe+qW
CUX5fW0K0pdTbxW61WOnbsGOgwlFJB5McVq3EWFGBBfL5Dv3i//
rrQUrkm6KwepVSd421VrSPZufz5pwbYLeE+36Dl2a+/riykUl2a+JVSdY7nqlqZX2/
iv79+jNwCB5HPvljuHfrF3zQq6tdfX2niV0rVKZ6j9CNfryRj2q+4YsN7/Hn1bJrEFPB/
HdaS072d1+ML3zSe2fyM1379oTDq18SvlKpTPEfpa5bPJszdeM047Kz54KUy19gt/qaxfN/
yosXSC4XKqF8Tv1Iq+BzcAKufdj0W421VrSUxu8AajiMMCLfwdsPdZdbsS7xp4MTuLNlNti4tn1gddXZWj1
Kqnjq4AeaPBkcBWCJg0jJo52o26G1Vrd3nG16c2oqmOw6R1fM89sRmgrP04ueebxoAkZZIPr7u45CZxllIR
/xKqeCSvtqV9MXhekxfXfRU4apaXQ4JV6910uWQ4MTOyqZHeOeiML5oerjMmn15SzGGGk38SqngEj/
YNdI3Ftdj/
M8tz5eOXsqLTZ7l0YVhTPhS+MsSK9MtwwgP8168KJ7Yy1qKMRRKO5601KOUCi7tUl3lnfTVrqTfruSaEge/
+Io+TjthIoitgONfrcQ20Hs/qOKJ3dtSjKHK74nfGGMBNgE/
icgoY0wssBiIB9KB8SJyyt9xKKXqkHappRJ+YVPGMZNGcWDl24jdht0C37U3wM+J3xpm5dou14bMXbhVURu
lnnuBncV+ngmsEJEuwAr3z0opVaaMHV/yxtP3cWT7KqL7JdF+nmsZ1Vdva8/
O80vW7UO1fFMZfl2ByxjTFpgPPAE84B7x7waGisgRY0xrYKWIlF5UthhvK3AppUJD1p41RC28hnDshFkiCJ
v8fqlPA8q7QK3A9U/gQaD4W3IrETkC4H5s6ecYlFJ11Ok8G++
+s5hwsROOkzCnrcQsH1U1fkv8xphRQIaIbK7i8dOMMZuMMZu09bJSoSfP5uBX8zfxwenOmHDvs3xU1fjz4u
4gYLQx5kogCmhsjPkvcMwY07pYqSfD28EiMgeYA65Sjx/jVEoFoXybE4dTmDR+PJbYi8qc5aMqz681/
qIXMWYo8H/
uGv+TwAkRmWWMmQnEisiD5R2vNX6lQofDKdidTiLDLTicgiVMV8+qqkDV+L2ZBVxqjPkeuNT9s1JKISI88t
52ps7bSIHdqUnfT2rlBi4RWQmsdH9/AhhRG6+rlKo7RIS/fbybhesPcMfQzkSEa2MBf9HfrFIqKDz/
xV5mr9rHxAHtefDycmd4q2rSxK+UCrjX16Xz1Cd7uDapDY+P6Y0xWuLxJ038SqmAS+3YnIkD2vP3sQmEaV3
f7zTxK6UCZsfh04gI3c5rxBPX9CHcoimpNuhvWSkVEB9sO8Kof61m0caDgQ4l5GjiV0rVuk93HOPeRWn0a9
+MMYnnBzqckKOJXylVq1buzuCuBVvodX5j5k7pT3SELgtS2zTxK6VqzYmz+dy5YAtdWjXktakDaBRlDXRII
UnfapVSvjm4oXL9crzs37xhJM/f2I/Edk1pEm0td1/lP5r4lVIVO7gB5o92LX5uiXAtjVhegvbY/
7tLX+enhn24rNd5DOvestx9Kzy3qjYt9SilKpa+2pWYxeF6rKgnfrH9xVHAJx8s5R+f7sHucJa7r0/
nVtWmiV8pVbH4wa7RuK898d37i7GQ57Swr2ESr01N9T5Pv7LnVtWmpR6lVMXapbpKMMXr8OXV5du
lsuOy//K/5UvYF5PEo9Mn07Jx1M/
Pex7reW7lV5r4lVK+aZf6c1L2oS6/7ERbPml8A29MG1g66Xs7VhN+rdFSj1Kq8sqpyxfW8R8a2Y137hpEq8
ZRrmS/+umfR/pa0w8oHfErpSqvsC5fOGqPHwwHN/Dj5v/x990t+L9bb6ZjXAxNGlhLj/
BHzip9rKpVmviVUpXnWZcHHPOuoo29gKdNOLknekPcL1z7eo7wc09oTT/
ANPErpaqmWF1+39uP0cFeQLhxYjEOojLWQzd34vf26UBr+gGliV8pVS1f7z/B01sa89/
wcCzGgfEs3+isnaCjiV8pVS192jShe8ol2HqlEnl0XZnTOzXhB48KE78x5m5ggYicqoV4lFJ1xGc7jnFh5+
bERIbz+NW9XRu7XBTYoJRPfJnOeR6w0RjzpjFmpNHFMJUKef/9+kd+9dom/
v3F3kCHoqqgwsQvIr8HugCvAJOB740xfzHGdPZzbEqpIPTSqn38/
t3tjOjekntHdAl0OKoKfLqBS0QEOOr+sgPNgKXGmL/
7MTalVE0rfiNVJYkIT3+ym79+tItRCa2ZfXMyUVaLH4JU/
uZLjf8eYBJwHHgZmCEiNmNMGPA98GAZx0UBXwKR7tdZKiJ/MMbEAouBeCAdGK/
XD5SqBdVsf3wqx8bijQe5PqUdf7m2D5YwrfrWVb7M6okDrhWRH4tvFBGnMWZUOcflA8NF5KwxxgqsMcZ8BF
wLrBCRWcaYmcBM4KEqxq+U8pW3Vgk+JH67w0mYMcTGRLDs7l/
QqnEkeqmvbvOlxv+oZ9Iv9tzOco4TETnr/tHq/hJgDDDfvX0+cHVlAlZKVVEV2h/n2RzcuWALT3zo+l/
9vCZRmvTrAb82aTPGWIwxW4EM4FMRWQ+0EpEjAO7HlmUcO80Ys8kYsykzM9OfYSoVGgpvpBr+O5/
KPGfybEydt5FPdhyjXbMGtRSkqg1+vYFLRBxAojGmKfCOMaZ3JY6dA8wBSElJEf9EqFSI8fFGqhNn85k8dy
M7jpzmH+P7cm2/trUQnKottdKWWUSygJXASOCYMaY1gPsxozZiUCokVWEWj8MpTHx5PXuOneE/
tyRr0q+H/DbiN8a0AGwikmWMaQBcAvwNWIZrltAs9+N7/
opBqZBWxVk8ljDDfZd0pXnDCPrHx9ZCoKq2+bPU0xqYb4yx4Ppk8aaILDfGrAPeNMbcChwAxvkxBqVCVyVn
8WxMP8nhrFzGJLZhZO/zajFQVdv8lvhFZBuQ5GX7CWCEv15XKeXmrR1yGT757ii/
fiON+OYxXNmnNVZvi6KrekO7cypVX/nYDvm/X//Io+9tZ2yrI/yxz0msh6O0k2Y9p4lfqfqsnFk8rhYMe/
j3F3u5Lf44Dx//PWZNAaz7R6Xv6lV1iyZ+pUKUMQZjYEL/
dsyM24lZ6WUBdF08pV7SxK9UiDmTZ+PQqVx6tG7MA5d2BcAcyoPVT/18PaBB82r19VHBTRO/
UiHkSHYuU+Zu5FROAatmDPu5u6bn9YAq9vVRdYMmfqVCxI7Dp5k6byNn8+28eFO/
0i2VPa8H+DgjSNU9mviVCgFf7Mrg7oVbaBRl5c3bL6Tn+Y3LP0AXSK/XNPErFQLe3HSQ+LgYXpnUn/
OaRPl2kC6QXm9p4leqnnI4hexcG7ExETw9vi8iEBOp/
8urWmrSppSqXWfz7dz22iYmvryefLuD6IhwTfqqiCZ+peqZQ6dyGPviWlbtyWTigPZEhuu6uKokHQIoVY9s
Sj/J7a9vpsDhZO7k/lzctUX5BxzcoBdwQ5AmfqVqm5+SrYjw2PIdNIoK5+VJ/
bmgZcOK49CbtEKSJn6lapMfkq3DKdgcTqKsFmbflEx0hIWm0REVH6g3aYUsrfErVZu8JdtqyM51rYt7/+Kt
iAjnN23gW9KHKi2+ruoHHfErVZsq0SO/InszzjLttU0cPJXDY2N6Y4yp3An0Jq2QpYlfqdrkLdlWoeb/
6Y5j3L94K1HWMBb8aiCpHd1LJFb2XHqTVkjSxK9UbSuebKtQ8z+bb2fmW9vo1CKG2Tclc37TBlU+lwpNmvi
VCqRKXGA9m28n2mqhYWQ4C24bQHzzmJKN1vRirfKRXtxVKpB8vMC6++gZrvrXGp7/
Yi8A3c9rXLq7pl6sVT7SEb9SgeTDBdb3vznMQ29tIzoinAGdmlfrXEqBJn6lAq+MC6wFdid//
Wgnc79KJ7lDM16Y2I9WjSvorKkXa5UPNPErFaR2Hz3D6+t+ZOqgjvz2yu5YLVqZVTXDb4nfGNMOeA04D3AC
c0TkWWNMLLAYiAfSgfEicspfcShV16QfP0d8XAx92jbhsweGEB8XE+iQVD3jzyGEHfiNiPQABgJ3GWN6AjO
BFSLSBVjh/lmpkOdwCs98uofhT69k1Z5MAOJzv4PVT7umaipVQ/w24heRI8AR9/
dnjDE7gTbAGGCoe7f5wErgIX/FoVSN80OTtYwzedy3aCtr953g2n5t6B/fTOflK7+plRq/
MSYeSALWA63cbwqIyBFjTMsyjpkGTANo3759bYSpVMX8kIy/
2nucexdt5Wy+jb9fl8C4lLau9gu+zMvXtsqqCvye+I0xDYG3gPtE5LSv/
UREZA4wByAlJUX8F6FSleCHm6QOnMyhWbSVhbcNoGurRj8/UVFfH/
1EoKrIr4nfGGPFlfQXiMjb7s3HjDGt3aP91kCGP2NQqkZ5S8ZVGHUfOpXD9xlnGdatJRP6t+OapDalb8iqa
F6+3qmrqsifs3oM8AqwU0T+UeypZcAkYJb78T1/xaBUjfNMxlDpUfdH3x7hobe2EWW18OWDw4iyWkon/
eKvV9b5arDTpwot/hzxDwJuBr41xmx1b3sYV8J/
0xhzK3AAGOfHGJSqecWT8eqnfR515xTY+dOyHSzedJC+bZvw3A1J3hN+eZ8gPJ/TO3VVFfhzVs8aoKyC/
gh/
va5StcqXUffBDeTvXcWDGxrxQVY77hzamfsv7er9hqzy6vZlPacJX1WS3rmrVHVUNOp2J+tIRwHPmHBuH7O
APgO7l32+8ur2WtNXNUQTv1LVVcao++DJHL5aspDrHQUYcWAF+ti2AZeWfa7yPkFoTV/
VEE38StUwEWHJpkM8tnwHiXRmXLgVixPfknV5nyC0pq9qiCZ+pWpQ5pl8fvv2Nj7bmcHATrHMGncrlrMDam
45RK3pqxqgiV+pGrRk80G+/
P44j4zqyZSL4gkLM9BMk7UKLpr4laqmk+cKOHgyh77tmnLb4E6M7HUenVo0DHRYSpVJG3wr5YuDG7x2yfzw
2yNc9swq7lywBZvDidUSpklfBT0d8StVES/
z5zOb9uXR97bz0faj9GnThCfHJehCKarO0MSvVEU85s9n7ficS9dnkZPv4MGR3Zg2uBPhxZO+dsxUQU4Tv1
IVcc+fF0cBxhJBkx7DmOBswtjkNlzQslHJfbVjpqoDNPErVQH7+Sl8mPgiB7Z8yvhrJ9Cy/
QBmlrVEhN5dq+oALUoqVY5vD2Vz9Qtfcc+aCNLaT8HRpn/
5BxTeXWssenetClo64lfKCxHhseU7mL82nbiGkbwwsR9X9D6PChcS0rtrVR2giV8pL4wxFNidTBzQgf+7vB
tNGlh9P1jvrlVBThO/qh9qYCbN3oyz/On97/jNZd1IbNeUP1/du+IRvlJ1kCZ+VfdVcybNuXw7//
p8L6+s2U+U1cKRrFwS2zXVpK/
qLU38qu6rxkyaD7Yd4bHl33HsdD5jk9sy84ruxDWM9HPASgWWJn5V91WlT727NJR7oiMtG7XkhYnJJHdo5v
9YlQoCmvhV3VeJmTQZp/N48523uOPAA1icNq6zRHDtze8RpklfhRBN/
Kp+qGAmTW6Bg1fW7OfFlfuYIqswlgLAiXEUYA6sgTBT8o1D2y6oekwTv6r3/
vfdUf647DuOZOdxWc9WTEyaSNh7y34uDTVoXvLi8MhZ8PFMbbug6i1N/
KruqOQo3OEULGGGfLuTFo0i+ef1iQzo1Nz1ZNNipSHPi8M739O2C6pe08SvglfxRA8+T9nc/
lM2sz7axUUXNOfOoRdwVUJrRvVp7VoNq5Bnaaj4xeEeY+DHdbqouaq3/
Jb4jTGvAqOADBHp7d4WCywG4oF0YLyInPJXDCrIVGbE7jk3P/
GGCkfh+zLP8o9P9vDBt0doFm3lyj6tAddduOVOyfd2cbhVT63xq3rLnyP+ecC/
gdeKbZsJrBCRWcaYme6fH/JjDCpYVPYmK8/yC1LulM1X1vzAXz7cSWR4GPeM6MJtgzvSKKoabRa07YKqx/
yW+EXkS2NMvMfmMcBQ9/fzgZVo4g8Nlb3JynNuft8bXV/FRuFHs/
OwhBlaNIoksV0TbrmwA3cNu0BvwFKqArVd428lIkcAROSIMaZlWTsaY6YB0wDaty+r+bmqdVWd5ljZm6zKm
pvvTvizl33Hwg0HGJfclieu6UNyh1iSO8TWfNxK1UNBe3FXROYAcwBSUlIkwOEoqF5PHG+JvKJk7FFu+Skr
lzmr9vHGxoM4ncK4lLZMH9K57FircGFYqVBQ24n/mDGmtXu03xrIqOXXV9XhS7mmvGRePJFX4U3kuc+
+5+20Q1zXry13DbuAdrHR3neswoVhpUJJbSf+ZcAkYJb78b1afn1VHRWVayqTzH14E/
nucDazV+3n1l90JLFdU+6/tCv3XNKFNk0blB9nJS8MKxVq/Dmd8w1cF3LjjDGHgD/gSvhvGmNuBQ4A4/
z1+soPKuqJU5kLuGW8iYgI6/ad4KUv97NqTyYNI8MZ3r0Fie2acl6TKN/i9OHCsFKhzIgEf/
k8JSVFNm3aFOgwVEUqW77xKAuJCLe8uoHV3x8nrmEEUwZ15KaBHSq3+lUZ51YqFBljNotISqntmvhVjapkw
s3OsbHsm5+YOKADYWGG19alY7WEcU1SG6KslloIWKn6q6zEH7SzelQd5eONT3uOnWHe2nTe2fITuTYHPc9v
THLYXm6xr4a2g8HqwxReHdUrVSWa+FWtyjidx32Lt7J23wkiw8MYk3g+ky/qSE/
HrsqXiXSKplJVoolf+d3hrFzST5zjos5xxMZEUGB38uDIbkzo357YmAjXTqsreWdvNZZbVCrUaeJXfmF3OF
m5O5M3Nhzgi90ZtGgUydqZIwi3hLH0jotKH1DZO3urstyiUgrQxK/8UCdf9s1hHl+
+g8wz+bRoFMkdQzszoX97LGHltMisxPKJVdpfKVVEE3995Gsyr6E6eXaOjfe3HebCzs3p3KIhzWMi6Nu2Ce
NS2jG8e0usljDfTlTZjpjaQVOpKtHEX9/
U8N2zZcmzOVi5O4N30w7z+a4MChxOHhrZnTuGNmTQBXEMuiCuBv+jlFI1SRN/
eeridMEauHu2Ig6nMPTJlRw9nUdcwwhuHNCe6/q1pXebxiV3rIu/
P6VCgCb+4upDR8fKJHMf6uQFdidr9x3n4+1HOXgqhwW/
GoglzHDX8AvoEBvNRZ2bE+6tlKPTLZUKWqGd+MtL9HW1o2NVLpJ62Wfzj6dY8PWPfLbzGKfz7MREWBjRoxV
5NgdRVgs3D+xQ/nl1uqVSQSt0E39FrXvrckfHKlz0PJyVy+e7MhjZ5ABxxzeQndeNz3dHcEnPVlzZuzW/
6BJXuRYKOt1SqaAVuom/
ota99amjo5dau83hZGP6SVbtyWTV7kx2HT1DP7OHCQ1mgdgYZolg06R3Ce+QWLXX1OmWSgWt0E38vrbures
Jy/3JRhwFSJiVH658g84tG1KwZyVPrbDyrelG//hYfntFd8bmbMOywQbiwDgKCD/
wFYSFVT1563RLpYJS6Cb+ctZ0rRFBMKNl99EznPvyffra87HgxGEX0j9/
hc75K4hxFLCkgZWCG9+lQeeB7phHwOZnf34zbNBcL9AqVQ+FbuIH/
41IAzCj5Vy+nW8OZXHoZC7j+7cD4JF3t2P/MZaFkeGAHSwRDOgUC9tdJS6LExocXgudL3SdxPPNUC/
QKlUvhXbi95daSphf7T3O+98cZuvBLPYcO4NTIMISxujE84myWvjD6J40jupL5NmLMD+ugfjBNATYuaTsi6
6eb4Z6gVapekcTf00pXtqpoRktIkLmmXz2HDvLrqOn2XnkDDuOnGbelP60ahzFd4ez+fi7o/
Rt25TLerYiqX0zkto3LZp90+v8Jq4TxQ6A9gN+PrGvF131Aq1S9VL9XoGrturs3ko74PNr59kcHDqVww/
Hc9ifeZbLep1Hx7gY3v/mML9+I61ov5aNIuneujF/
uKonnVs0pMDuxGoxGFNO8zOlVMgKvRW4arPO7q20M/
g30C4Vp1PIOlfAsdN5HM3O4+jpPBLaNqHX+U3Yc+wMk17dwNHTeRR//
23ZOJKOcTH069CMP17Vky6tGtH9vEY0bxhZ4mUjwn1sfqaUUsXU38RfLBk77QWkb/
yYE44LaGC10DTaSttm0QBk5RRgjMESZggzYDCEhUFkuKtccvJcATaHE5vDSZ7NSZ7NQZMGVtrFRuNwCm9vO
URUdmdGmnDCRHAQzrqCbgwBMs/
kc+FfV2B3lvxU9cClXel1fhOax0RwYafmtG8eTYfm0XRoHkPnuIY0iXYtLt6maQMmD+pY+r8tCGYMKaXqrv
qb+N11drs9H5tY+L+NjdiyYR0AQ7q2YP5UV8K84tnVHMnOK3HoLxNa8/yN/QC4+O9fcDbfTj+zh4FhO/
na2YMuySP429gEwgw89NY2nGKln/ktF0fsZndkX/
qG92AI0Czaym0Xd6Jlo0haNorivCaur5aNXCP35g0j+cf1iaVjLy+xaw8cpVQ11d/
E774wmbPrC061GMDvmvUlp8BOns1JU/
eIGuD+S7pyOs+GCDhFcAp0bhFT9PzvftmD2JNbGbFhFmHOAsQSwcHOiXBwAyZ9Netu6k9UxwtpGHVlqYVGw
i1hPDSye+XiriixB9sUS/
30oVSdE5DEb4wZCTwLWICXRWSWX16oXSqN26XSGCirpVjhnPey3JDaHlYvAbEBTnDaiP/
pPfhgETgKaOXrqNvXBFlRYg+mHjj66UOpOqnWE78xxgI8D1wKHAI2GmOWiciO2o7FZ57JFlO5UXdlEmRFiT
2YplgG26cPpZRPAjHiTwX2ish+AGPMImAMELyJ3zPZAmx9w/dRty8JsvgnAs/
E7vlpIVh64ATTpw+llM8CkfjbAAeL/XwIGOC5kzFmGjANoH379rUTWXk8k21lRt0VJUhvnwgG/
6bs54Ih6UNwffpQSvksEInf291Gpe4iE5E5wBxw3cDl76AqrTKjbm8JsvgovrxPBMFeTgmWTx9KKZ8FIvEf
AopfUW0LHA5AHLWreIL0HMWPnFX2JwJfyik6s0YpVQmBSPwbgS7GmI7AT8AE4MYAxBE4nqP43BNll0wqKqc
EcylIKRWUaj3xi4jdGHM38D9c0zlfFZHvajuOgPI2ii+vZFLec8FeClJKBZ2AzOMXkQ+BD2v9hYOlJFKTF0
V1Zo1SqpLq7527noKtJFJTF0V1Zo1SqpLqRFtmY0wm8GMVD48DjrdpZM47r6FpAyAgx87K4Z/
OyNEaC7KKcQXw9csSrHFB8MamcVWOxlU51Ymrg4i08NxYJxJ/
dRhjNnnrRx1oGlflBWtsGlflaFyV44+4tKG7UkqFGE38SikVYkIh8c8JdABl0LgqL1hj07gqR+OqnBqPq97
X+JVSSpUUCiN+pZRSxWjiV0qpEFOvE78xZqQxZrcxZq8xZmag4wEwxrxqjMkwxmwPdCzFGWPaGWO+MMbsNM
Z8Z4y5N9AxARhjoowxG4wx37jj+lOgYyrOGGMxxqQZY5YHOpbijDHpxphvjTFbjTGbAh1PIWNMU2PMUmPML
ve/tQuDIKZu7t9T4ddpY8x9gY4LwBhzv/vf/XZjzBvGmKgaOW99rfG7V/
raQ7GVvoAbAr3SlzHmYuAs8JqI9A5kLMUZY1oDrUVkizGmEbAZuDoIfl8GiBGRs8YYK7AGuFdEvg5kXIWMM
Q8AKUBjERkV6HgKGWPSgRQRCaobkowx84HVIvKyMSYCiBaRrACHVcSdN34CBohIVW8aralY2uD6995TRHKN
MW8CH4rIvOqeuz6P+ItW+hKRAqBwpa+AEpEvgZOBjsOTiBwRkS3u788AO3EtmhNQ4nLW/aPV/
RUUoxVjTFvgl8DLgY6lLjDGNAYuBl4BEJGCYEr6biOAfYFO+sWEAw2MMeFANDXUwr4+J35vK30FPJHVBcaY
eCAJWB/
gUICicspWIAP4VESCIi7gn8CDgDPAcXgjwCfGmM3u1eyCQScgE5jrLo+9bIyJCXRQHiYAbwQ6CAAR+Ql4Cj
gAHAGyReSTmjh3fU78Pq30pUoyxjQE3gLuE5HTgY4HQEQcIpKIa9GeVGNMwEtkxphRQIaIbA50LGUYJCL9g
CuAu9wlxkALB/oBL4pIEnAOCIprbwDu0tNoYEmgYwEwxjTDVaXoCJwPxBhjbqqJc9fnxB+aK31Vg7uG/
hawQETeDnQ8ntxlgZXAyMBGAsAgYLS7lr4IGG6M+W9gQ/
qZiBx2P2YA7+AqfQbaIeBQsU9sS3G9EQSLK4AtInIs0IG4XQL8ICKZImID3gYuqokT1+fEX7TSl/
udfAKwLMAxBS33RdRXgJ0i8o9Ax1PIGNPCGNPU/X0DXP8z7ApoUICI/FZE2opIPK5/
W5+LSI2MxqrLGBPjvkCPu5RyGRDwWWQichQ4aIzp5t40Agjo5AEPNxAkZR63A8BAY0y0+//
PEbiuvVVbve3HH6wrfRlj3gCGAnHGmEPAH0TklcBGBbhGsDcD37rr6QAPuxfNCaTWwHz3bIsw4E0RCaqpk0
GoFfCOK1cQDiwUkY8DG1KRXwML3IOx/
cCUAMcDgDEmGtcMwNsDHUshEVlvjFkKbAHsQBo11L6h3k7nVEop5V19LvUopZTyQhO/
UkqFGE38SikVYjTxK6VUiNHEr5RSIUYTv1JKhRhN/EopFWI08StVBcaY/saYbe71AmLcPdMD3kNIKV/
oDVxKVZEx5s9AFNAAVw+avwY4JKV8oolfqSpytx3YCOQBF4mII8AhKeUTLfUoVXWxQEOgEa6Rv1J1go74la
oiY8wyXC2ZO+JatvLuAIeklE/qbXdOpfzJGHMLYBeRhe7OoWuNMcNF5PNAx6ZURXTEr5RSIUZr/
EopFWI08SulVIjRxK+UUiFGE79SSoUYTfxKKRViNPErpVSI0cSvlFIh5v8BfRo2vTT6IIQAAAAASUVORK5C
YII=\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 3\n",
"validation score = 0.8122\n",
"train score = 0.9552\n",
"validation MSE = 10.7929\n",
"train MSE = 6.5447\n"
]
},
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = 2.134-1.768x^1+1.490x^2-0.045x^3$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA3k0lEQVR4nO3deXiU5dX48e+dyUbCEiBsAiGALAqELUSBsqOiIlhlcytgK6K24lIU69L+rLa8lb5qrYpU
WVQUEQUpiq+KbAIKgQRQ9iVAACFsEQhZZub8/
phJCEOWmWQmM5k5n+vKNZnleeaY4Mk9576fcxsRQSmlVOgI83cASimlqpYmfqWUCjGa+JVSKsRo4ldKqRCj
iV8ppUJMuL8DcEd8fLwkJib6OwyllKoyR88f5XTuaQTBYKgbXZcmsU08OsfGjRtPiEgD18erReJPTEwkNTX
V32EopVSVyMrJ4sZPb6SerV7RY1GWKL68/Uvia8S7fR5jzIGSHtdSj1JKBZjpW6ZjF/slj9nFzvTN071y/
mox4ldKqVCQlZPF5FWTyc7LpsBecMlzBfYC0o+ne+V9NPErpVSAmL5lOpuObWJUu1EsHL7QZ+9TbRN/
QUEBmZmZ5Obm+jsUVY7o6GiaNWtGRESEv0NRKmBl5WTx2Z7PEIRFexYxsfNEj+r5nqi2iT8zM5NatWqRmJi
IMcbf4ahSiAgnT54kMzOTli1b+jscpQJW8bp+YT3/
mWuf8cl7VdvJ3dzcXOrXr69JP8AZY6hfv75+MlOqDIWj/
cK6foG9gEV7FnHiwgmfvF+1TfyAJv1qQn9PSpXN16t4XFXrxK+UUsFg8/HNPl3F46ra1viro/
79+zNt2jSSk5Or/L179erF2rVry3xNzZo1OXfu3GWP/+tf/
+LNN9+kW7dujB49mm3btjFlyhQWLVpE27Ztufrqq30VtlIhYcGwBVX6fpr4Q0R5Sb8sb7zxBkuXLi2anB02
bBgAixYtYujQoZr4lapmtNRTQRkZGbRv356xY8eSlJTEiBEjyMnJAWDZsmV07dqVTp06ce+995KXl3fJse+
88w6PPvpo0f3//Oc/PPbYY2RkZHDVVVdx33330aFDB66//nouXLgAQHp6Otdeey1JSUn8+te/
5vTp04DjU8Sjjz5K3759ueqqq9iwYQO33XYbbdq04ZlnLq4IqFmzJgDnzp1j0KBBdOvWjU6dOvHZZ5+V+d8
5ceJE9u3bx7Bhw3j55ZeZPXs2v//
971m7di2LFy9m8uTJdOnShb1791b+h6pUkMnKyWLcl+N8NklbYSIS8F/du3cXV9u2bbvk/qjpay/
7enftfhERycmzlvj8/A0HRUTk5Lm8y54rz/
79+wWQ7777TkRExo8fLy+99JJcuHBBmjVrJjt37hQRkXvuuUdefvllERHp16+fbNiwQc6dOyetWrWS/
Px8ERHp2bOnbNmyRfbv3y8Wi0XS0tJERGTkyJHy3nvviYhIp06dZMWKFSIi8uyzz8qkSZOKzvnEE0+IiMgr
r7wiTZo0kSNHjkhubq40bdpUTpw4ISIisbGxIiJSUFAg2dnZIiKSlZUlrVu3FrvdfslrXLVo0UKysrJERGT
WrFny0EMPiYjI2LFj5eOPPy73ZyVy+e9LqVDw/LrnpdPsTvLXdX/1y/
sDqVJCTtURfyU0b96c3r17A3D33Xfz3XffsXPnTlq2bEnbtm0BGDt2LKtWrbrkuNjYWAYOHMiSJUvYsWMHB
QUFdOrUCYCWLVvSpUsXALp3705GRgbZ2dmcOXOGfv36lXjOwtJLp06d6NChA02aNCEqKopWrVpx6NChS95b
RPjTn/
5EUlISgwcP5vDhwxw7dsz7PxylQpzrBVmBNOr3aY3fGBMHvA10BAS4F9gJfAQkAhnAKBE5Xdn3+uj+nqU+V
yPSUubz9WIjy3y+NK7LFI0xiJub1//ud7/
jb3/7G+3bt2f8+PFFj0dFRRV9b7FYiko9ZSk8Jiws7JLjw8LCsFqtl7x27ty5ZGVlsXHjRiIiIkhMTNQ19k
r5gDcuyMpJSyNn/QZiUnoQ07Wr12Lz9Yj/
VeBLEWkPdAa2A1OAZSLSBljmvF8tHTx4kHXr1gHw4Ycf8qtf/
Yr27duTkZHBnj17AHjvvfeKRurFXXPNNRw6dIgPPviAO+64o8z3qVOnDnXr1mX16tVlntMd2dnZNGzYkIiI
CJYvX86BAyV2bXVLrVq1OHv2bIWPVypYeeOCrJy0NA6Ov5esV1/l4Ph7yUlL81p8Pkv8xpjaQF/
gHQARyReRM8BwYI7zZXOAW30Vg69dddVVzJkzh6SkJE6dOsUDDzxAdHQ0s2bNYuTIkXTq1ImwsDAmTpxY4v
GjRo2id+/e1K1bt9z3mjNnDpMnTyYpKYn09HSee+65CsV81113kZqaSnJyMnPnzqV9+/YVOg/
AmDFjeOmll+jatatO7ipVjDcuyPr6g6XY8/
PBbkcKCshZv8Fr8Rl3SxMen9iYLsAMYBuO0f5GYBJwWETiir3utIhclvmMMROACQAJCQndXUem27dv56qrr
vJJ7O7IyMhg6NCh/
PjjjxU+x9ChQ3n00UcZNGiQFyMLTP7+fSlVlUYsHsHO0zsve7xd3XaXrNkvbMM8rd+0Sxqyvf/
9Ad6fuYSX1s0g3G7DRESQMGumx+UeY8xGEbnswiFf1vjDgW7AH0TkB2PMq3hQ1hGRGTj+cJCcnOybv05+cu
bMGVJSUujcuXNIJH2lQo27F2QVtmEuXv//ZtsxnvvsR/r3SiHx/p7kpaZ6vcbvy8SfCWSKyA/
O+wtwJP5jxpgmInLUGNMEOO7DGHwmMTGxwqP9uLg4du3a5eWIlFLVSUltmA+v2s63/1nETe2S+MedNxATGU
6t7t28/t4+S/wi8rMx5pAxpp2I7AQG4Sj7bAPGAlOdt2VfQaSUUkHIddXP/E/+St//
WcGd1gIsu5fBiCTw4ii/OF+3bPgDMNcYEwnsA8bjmFCeb4z5LXAQGOnjGJRSKqCUtOon6/
vlWGw2EAGr1bGMszomfhFJB0rqSKaFbaVUyCpp1c9PzQ3WcEO4zYKJiCAmpYfP3l+btCmlVBUrbMPcJlPoc
FD4KcGwvZmdmfcl8HTkrV6fzHWlib+Czpw5wwcffMCDDz7o8bE33XQTH3zwAXFxcRV679LaJ3sjNqWU7y0Y
toCcTWnsnTYOU1AAkRG0mjPLp8m+OO3VU0FnzpzhjTfeKPE5m81W5rFffPFFhZO+O8qKTSkVGL6ZtxRTUIA
FwWKzevUCrfKEVuI/tB5W/
9NxW0lTpkxh7969dOnShcmTJ7NixQoGDBjAnXfeWdRw7dZbb6V79+506NCBGTNmFB2bmJjIiRMnymzDXNz+
/fvp2bMnPXr04Nlnny16vLQWy66xedqKWSnlW1abnTU1WyDhEWDxfU3/
MiW17Ay0L3faMpfr4A8if20k8pe6jtuDP3h2vIv9+/dLhw4diu4vX75cYmJiZN+
+fUWPnTx5UkREcnJypEOHDkUtkgvbHJfVhrm4W265RebMmSMiIv/+97/
LbbHsGltZrZirirZlVkrk8Npv5c3HBsuRdcslr8Am2Rs2Stb0t+T8pk0+eT9KacscOjX+jNVgywexOW4zVk
PzFK++RUpKStEuVeDYsnDhwoUAHDp0iN27d1O/
fv1LjimpDbOrNWvW8MknnwBwzz338OSTTwIXWyyvWrWKsLCwUlssl/a6xo0be+M/Wynlhpy0NE5M+AO/
sto48dXvqfPue9RO7gbJ3r9Aqzyhk/gT+4Al0pH0LZGO+14WGxtb9P2KFSv45ptvWLduHTExMfTv37/
E9sfutmF2bQEN7rdY1lbMSvnf7q+/
wmK1YRGwWW2cWLOChCqazHUVOjX+5ikwdjEMfNpxW8nRfnktibOzs6lbty4xMTHs2LGD77//
vsLv1bt3b+bNmwc4knjx9yipxbJrbN5sxayU8tzxs7n87Vw6VgvYDFgtsCQuw2/
xhM6IHxzJ3kvlnfr169O7d286duzIjTfeyM0333zJ80OGDGH69OkkJSXRrl07rr322gq/
16uvvsqdd97Jq6++yu233170+F133cUtt9xCcnIyXbp0KWqx7Brbk08+WeLrlFK+dza3gHtmfcPhljt4/
g5L0br9g6xh1IUTl3TlrCo+a8vsTcnJyZKamnrJY9rmt3rR35cKRTlpaRxduYZnTq1l+5XbscnFHfEiwiK4
rc1tHu/
K5YnS2jKHTqlHKaUqICsni3FfjvN4z9zzmxw7aOXPeJMpC9NpdajgkucL7AWkH0/3YqTuC61Sj1JKeaiknv
nlERGWvLuEjnn5hImdSGNhRvzDxI+d4ONo3aMjfqWUKoVrz3x3R/1vrtzLrJx62MPD/
XOBVjl0xK+UUqVw7Zlf3qg/Jy2NHxZ+zeKfY2k3sBetJvbiwoYNPm+65ilN/
EopVYKSeuYX7pRV0kqcnLQ09o8dT4P8fP4RHkHihJ7EdutGbLfASfiFtNSjlFIlKKlnfuGovyQ56zdgrI6m
axFiI39jaomvCwSa+L3kL3/5C9OmTfP6eWvWrFnm89qJUynfKOyZX1xpK3HO51mJSemBiYjAFgaEhwdUTd9
VSJV6snKymLxqMtP6TfPLRRO+UJj4tfe+Ut61YNiCcl9TuE7/zweiuOXOGzgxuS/
HVi+jcZ9+PBhANX1XITXiL74syxtefPFF2rVrx+DBg9m5c2fR43v37mXIkCF0796dPn36sGPHDrKzs0lMTM
Rud3x0zMnJoXnz5hQUXDqi0BbMSlUPOWlpHBg3ngtvvcEfv3qNVid+ZBZrWdgrjJms8Xjdf1UKmcRf0WVZp
dm4cSPz5s0jLS2NTz/9lA0bLm6iMGHCBF577TU2btzItGnTePDBB6lTpw6dO3dm5cqVAPz3v//
lhhtuICIi4pLzTpo0iQceeIANGzZc0j0zOjqahQsXsmnTJpYvX87jjz+OiDB16lRat25Neno6L730UqmvU0
p51+m132PLz8ciQqTY2L/m3ctWAAWqkEn8JS3LqozVq1fz61//
mpiYGGrXrs2wYcMAx8h87dq1jBw5ki5dunD//
fdz9OhRAEaPHs1HH30EwLx58xg9evRl512zZg133HEH4GjBXKiwtXJSUhKDBw8utwVzea9TSpXMnSt1rTY7
r5yohTUsHAkLw0RE8GnNnZetAArUUX9IJP7SlmVV9pdSUqtku91OXFwc6enpRV/
bt28HYNiwYSxdupRTp06xceNGBg4c6PZ5i7dWTk9Pp1GjRuW2YC7rdUqpkpVXEs5JS+PM22+T3KIuR5+dRs
NJk/h2cl92Nb30/9tAHvWHROL3dFmWO/r27cvChQu5cOECZ8+e5b///
S8AtWvXpmXLlnz88ceAYwS+efNmwLFCJyUlhUmTJjF06FAsFstl59UWzEr5T3kl4ZxNjrp+1quv0vmVZ+jX
rgHx909gee0jbq8ACgQ+XdVjjMkAzgI2wCoiycaYesBHQCKQAYwSkdO+jMOTZVnu6tatG6NHj6ZLly60aNG
CPn0ubuwyd+5cHnjgAV544QUKCgoYM2YMnTt3BhzlnpEjR7JixYoSz6stmJXyn/
Ku1F069wva5eVjQZCCAnLWbyCma1e3VgAFEp+2ZXYm/
mQROVHssX8Ap0RkqjFmClBXRJ4s6zzalrn609+XCnRZOVnc+OmN5Nnyih6LskTx5e1fEl8jnukr97Jo7pe8
tO4tjK0AS0QULWbPCqhWDK4CqS3zcGCO8/s5wK1+iEEppS5RVkn4w/UHmbp0B20G9GLlE/
2Z3yeM5ZP7cb5dswq1bPY3Xyd+Ab4yxmw0xhT2I20kIkcBnLcNSzrQGDPBGJNqjEnNysrycZhKqVBXWkn48
NrvSJ/
6CnfWzGbK0CuYbS6u1X9l0ytevTaoqvj6yt3eInLEGNMQ+NoYs8PdA0VkBjADHKUeXwWolFJQ8pW6OWmOzV
RseYew7FvOosTviz4V2Ow2Pt/
3edFEcGnN2wKRT0f8InLEeXscWAikAMeMMU0AnLfHfRmDUiq0VXQHrS2ZZzjx3Tok37GZihTkc2LNiqJPBV
axYhMbENhLN0vis8RvjIk1xtQq/B64HvgRWAyMdb5sLKA9BZRSPlORVi3bj/7C3W//
wIxf4jCRkWCxYLUYfkq4/
BobCPwLtlz5csTfCPjOGLMZWA98LiJfAlOB64wxu4HrnPeVUsrrKtKqZe+Kdcx/
9AWSsg8y8cFbSZg1kwYPP8zM+xLYfoW91OOq06jfZ4lfRPaJSGfnVwcRedH5+EkRGSQibZy3p3wVQ1XyVVv
myurfvz+FS2Fvuukmzpw5U+prFy1axLZt24ruP/fcc3zzzTe+DlEpn/
G0VcvB1d9z7qH7uT19CU9/+zr1MnYS07Ur8fdP4OU/
fMHWsVvZOnYr7eq2u+zYQL5gy1VItWUOFlarlfBwz391X3zxRZnPL1q0iKFDh3L11VcD8Pzzz1coPqUCgac
7aAF8+f4X9LJZsSBgtRZdoOWqul2w5SokWjYUyklL48RbM8hJS/
PK+XzRlnncuHFMnDiRPn360LZtW5YsWQLA7NmzGTlyJLfccgvXX38958+f595776VHjx507dq1qP3yhQsXG
DNmDElJSYwePZoLFy4UnTsxMZETJxwfdd99912SkpLo3Lkz99xzD2vXrmXx4sVMnjyZLl26sHfvXsaNG8eC
BY5/4MuWLaNr16506tSJe++9l7y8vKJz/
vnPfy5qA71jh9sLt5TyqYq0ahk2dihhUZEBuUG6N4XMiL9wWZbk52MiI0mYNbNSV9wVb8tstVrp1q0b3bt3
BxxtmadPn06bNm344YcfePDBB/n222+L2jIPGDCg1LbMABkZGaxcuZK9e/
cyYMAA9uzZA8C6devYsmUL9erV409/+hMDBw5k5syZnDlzhpSUFAYPHsxbb71FTEwMW7ZsYcuWLXTr1u2y8
//000+8+OKLrFmzhvj4eE6dOkW9evUYNmwYQ4cOZcSIEZe8Pjc3l3HjxrFs2TLatm3Lb37zG958800eeeQR
AOLj49m0aRNvvPEG06ZN4+23367wz1Upb3G3Vcup9ams/vgrBoweQuNeKdSePcsx0g+wDdK9KXQS//
oNSH4+2O2X9NioqOJtmYES2zIXKhwdF7ZlHjBgAPPmzSt116xRo0YRFhZGmzZtaNWqVdEo+rrrrqNevXoAf
PXVVyxevLhoXiE3N5eDBw+yatUqHn74YQCSkpJISkq67PzffvstI0aMID7e8XG38Jyl2blzJy1btqRt27YA
jB07ltdff70o8d92220AdO/enU8//bTMcylVVdwpx5zZsJHMe39La2sBmV/
NJ9HZgiFYE36hkEn8MSk9MJGRSEGB1z7CldeW2dWwYcN46qmnPG7LXHg/
Nja26DER4ZNPPqFdu8snmUqKqzgRKfc1rq8vS1RUFAAWiwWr1er2eZXypwKbnflvf0Yv5wbpZdX0g03I1Ph
junYtWpZV2TIP+K4tM8DHH3+M3W5n79697Nu3r8TkfsMNN/Daa68VJeU057xF3759i9o5//
jjj2zZsuWyYwcNGsT8+fM5efIkAKdOORZWubZ4LtS+fXsyMjKKSk7vvfce/fr1c/
MnpVTgsdmFRz9K51NpBJHBX9N3FTIjfsCrH+F81ZYZoF27dvTr149jx44xffp0oqOjL3vNs88+yyOPPEJSU
hIiQmJiIkuWLOGBBx5g/PjxJCUl0aVLF1JSUi47tkOHDjz99NP069cPi8VC165dmT17NmPGjOG+++7jX//
6V9GkLji2fZw1axYjR47EarXSo0cPJk6cWImfnlL+k5OWRuby7ziyN4Jf3zWEVg/
0CvqaviuftmX2llBqyzxu3LgSJ1iru2D9fanqpfgiDyIiAr6tcmUFUltmpZSqciLC0ve/
wJ7nWORRWNMPRSFV6qkOZs+e7e8QlApK/
1q2h6Vn43gpPJxwuy2kavquqnXi93R1ivKP6lBOVMErJy2NFR99ydJTtekw+Fe0mtiLCxtCq6bvqtom/
ujoaE6ePEn9+vU1+QcwEeHkyZMlTlAr5Ws5aWns+814Egry+Ud4BK0m9iK2W1diu4Vmwi9UbRN/
s2bNyMzMRHfnCnzR0dE0a9bM32GoEJSzfgNh1gIMgkVs5G7YQE2XpJ+Vk8XkVZOZ1m9atdlIpbKqbeKPiIi
gZcuW/g5DKRWgTp/PJyalB2FRZV+4Wbxf/zPXPuOHSKuerupRSlU7Ze2qlZOWxnd/
mcZvn5jJrviWZV64WZF+/cFAE79SqtopbVetnLQ09o8dT9y8mfxl5Ru0+HlPUT/9wqRf/I+Gp/
36g4UmfqVUtVLWKH3LkuVIfj4WhAixYdu06bLjC/
9ovLzx5RL79YfCqF8Tv1KqWiltlP7j4WxePFwDa7jBZsBqMZfV9Iv/
0Viyd0nRZumFQmXUX20nd5VSQezQeshYDYl9oPnFflOl7ao1Iq8Tqxf/m8FJI/h7i0jaZuSzu2UE/
27fnJhip73kjwb2oo2RClWn7RMrQxO/
UiqwHFoPc4aBLR8skTB2cVHyL2lXrZYHC8j7n6foYxVs4a+y5s4IFvUKIyLMXLJSx/WPBkCUJYovb/
8yZJZxFtJSj1IqsGSsdiR9sTluM1YXPVXSrlrtD1ixWAWLgMUqtMtw7AnhWrOvyFaMwUoTv1IqsCT2cYz0j
cVxm3ix5fmCYQvYOnYrW8du5e0+K7DueYk9jTtjteCs68NPCRev5C+e2N3dijEUaKlHKRVYmqc4yjsl1PgL
pX6xisWzFtOzVQs2d9zF83dY6HBQ+CnBsLvZxcRfPLG7sxVjqPB54jfGWIBU4LCIDDXG1AM+AhKBDGCUiJz
2dRxKqWqkeUqJCR8gZ1MaEU/
8njtsVmRHGH+Ns7C92cWEHxEWwW1tbguZq3AroipKPZOA7cXuTwGWiUgbYJnzvlJKle7Qelj9Tzi0npwNG4
i027CIYKy2opp+oVAt33jCpyN+Y0wz4GbgReAx58PDgf7O7+cAK4AnfRmHUqoac67yEWseBSaCyB7/
xEQ6+u+ER0Tw1MSZ/DVE2ytXlK9LPa8ATwC1ij3WSESOAojIUWNMQx/
HoJSqzjJWI9Y8DHbCpABL1FESZs0MuX1yvclnid8YMxQ4LiIbjTH9K3D8BGACQEJCgneDU0pVG9siO9NSwo
kwVizhkcS27Q/
Nu2rCrwRfjvh7A8OMMTcB0UBtY8z7wDFjTBPnaL8JcLykg0VkBjADHJut+zBOpVSA+mHfScZ/bmVQzb/
y927Z1Gw3oNRJX+U+nyV+EXkKeArAOeL/
o4jcbYx5CRgLTHXefuarGJRS1VtsVDhXN6nNc3ePp2atKH+HEzT8cQHXVOA6Y8xu4DrnfaWUKnLwZA4AHZv
W4eOJPWmgSd+rqiTxi8gKERnq/
P6kiAwSkTbO21NVEYNSqnpYsfM4g19eyYfrDwLonto+oC0blFIB49sdx5jw7kaubFCTIR0a+zucoKWJXykV
EP7vp5+5/72NtGtciw/uu4a6sZH+Diloaa8epZTfHTlzgT98kEbHpnWYPT6FOjUi/
B1SUNPEr5TyuyviavD6Xd3o2bo+NaM0LfmalnqUUn4zf8MhVu7KAuC6qxtp0q8imviVUn4xZ20GT3yyhQ9+
OODvUEKO/
nlVSlW5t1bu5e9Ld3Dd1Y341x3aeqGqaeJXSlUZEeGVb3bz6rLdDE1qwsujuxBh0cJDVdOfuFLKPcV64lfm
9cfP5jKiezNeHdP1YtL39NyqUnTEr5Qqn7MnPrZ8xz64YxeX3SzN5fX2ez7jRL3ONKwVzQu3dsIAYWGmYud
WlaYjfqVU+TJWOxKz2By3Gavdfr3Y8lm65GN+/
fpasi8UYAkzF5N+Rc6tKk0Tv1KqfIl9HKNxY3HcJvZx6/
ViLBQQzjuZTbnzmgRqR5dQZPD03KrSjEjgt7pPTk6W1NRUf4ehVGg7tN4xGk/s4yjFuN53kbtvHYs/+4h
5x1swbOitjOvdssLnUhVjjNkoIsmuj2uNXynlnuYpF5OyG3X5v2+txXvHr2Pq7UmMSm5+8YnSjtWEX2U08S
ulPFdSXd4lcT92XTsGtG9I/3YNLx3Ru3Gs8i1N/EopzxXW5QtH7Yl94NB6srd/y3s/
N+d3d4yhTkzExaRffIQ/
ZOrlx6oqpYlfKeW55imOEk3hKB6wz7mFWGs+vyWcn3+6gsQuAxyvdR3hXzh56bE62q9ymviVUhVTrC5/
ZMmLNLTmE44di7GReHYT4Ez8JX060Jq+X2niV0pVytq9J3htfS1mhYVjMTaMa/nG9dOBJny/
08SvlKqUBjWjkGY9yOn7KdFZ60tO7jrCDyjlJn5jzO+BuSJyugriUUpVE+v3n6JHYl3aNKrFvAk9HQ+214n
a6sCdK3cbAxuMMfONMUOMbnmvVEhzdNjcxai31rF48xF/
h6MqoNzELyLPAG2Ad4BxwG5jzN+MMa19HJtSKsDY7MIzi37klW92M6J7M27u1MTfIakKcKtXjzj6Ovzs/
LICdYEFxph/
+DA2pZS3VaL9cW6BjYfmbmLuDwd5oH9rXhqRRLj20q+W3KnxPwyMBU4AbwOTRaTAGBMG7AaeKOW4aGAVEOV
8nwUi8mdjTD3gIyARyABG6fyBUlWgku2PNx86wzfbj/
Hs0Kv57a9aln+ACljurOqJB24TkUs2xhQRuzFmaBnH5QEDReScMSYC+M4YsxS4DVgmIlONMVOAKcCTFYxfK
eWuCrZKyLPaiAq3cE2r+iz/Y3+a14upgmCVL7lT43/
ONekXe257GceJiJxz3o1wfgkwHJjjfHwOcKsnASulKqgC7Y93HzvL4P9dyTfbjgFo0g8SPl3Hb4yxABuBK4
HXReQHY0wjETkKICJHjTENSzl2AjABICEhwZdhKhUaPLyQ6od9J7nv3VSiIiw0iYuuoiBVVfBp4hcRG9DFG
BMHLDTGdPTg2BnADHD04/dNhEqFGDcvpPp8y1Ee/
Sid5vVqMHt8io70g0yVTMmLyBlgBTAEOGaMaQLgvD1eFTEoFZIqsIpn86Ez/P7DTSQ1q8MnD/
TSpB+EfDbiN8Y0AApE5IwxpgYwGPgfYDGOVUJTnbef+SoGpUJaBVfxJDWrw9TbOjG8S1OiIyxVEKiqar4c8
TcBlhtjtgAbgK9FZAmOhH+dMWY3cJ3zvlLK2zzYxPxCvo3H529m17GzGGMY3SNBk34Q89mIX0S2AF1LePwk
MMhX76uUciqpHXIJTpzL43dzUtmceYZrWtWjbaNaVRyoqmranVOpYOXGKp49x88yfvYGss7m8eGNYVx7YT4
c0tbJwU4Tv1LBrIxVPDt+/
oVR09cRGW7hv8MjafPlXRW+qldVL5r4lQpRLeNjualTEx4acCXNf3qz5PkA3TwlKGniVyqE2O3CzDX7GdG9
GXExkUy9PcnxhOt8QI36lerrowKbJn6lQkRugY3HP97M51uOYoy5tNGa63xABfv6qOpBE79SIeD4L7nc995
GtmSe4akb23Nv78TLX+Q6H+DGiiBVPWniVyrI7Tp2lrEz13Mmp4Dpd3fnhg6Nyz9IN0gPapr4lQpycTERNI
2rwX9+k0zHpnXcP1A3SA9aun2OUkFIRFiUdhirzU7DWtF8PLGnZ0lfBTUd8SsVZHILbEz5ZAuL0o9gtQsju
jfDGOPvsFQA0cSvVBD5OTuX+99LZXNmNn+8vi23d2vq75BUANLEr1SQ2JJ5ht/
NSeVcnpW37nFzEvfQep3ADUGa+JWqaj5KtmHGEBcTwbu/
TaF949ruxaEXaYUkTfxKVSUvJ1urzc43248zpGNjOjatw5eT+hIW5mY9Xy/SClm6qkepquRBj/
zynD6fz9hZ65n4/
kY2HjgN4H7Shwptvq6Cg474lapKbvbIL89PR7K5/72NHP8lj3+MSKJ7i7qen0Qv0gpZmviVqkolJVsPa/
7/3XyEyQs2E1cjkvkTe9KledzFJz2dP9CLtEKSJn6lqlrxZFuBmr8xkNQsjtfv7EaDWlEXn9DJWuUmrfEr5
U9u1vyzzubx9bZjAAxNuoJ59117adL34FxKaeJXyp/cmGBNzTjF0NdW8/
j8dH7JLQBKmcTVyVrlJi31KOVPZUywigiz1mTwty+2c0VcDWaPT6F2dESFzqVUcZr4lfK3EiZY7XbhkY/
SWbz5CIOvasQ/
R3WmTo0ykn4Z51LKlSZ+pQJQWJghMT6WJ4e05/6+rTxbn69UOXyW+I0xzYF3gcaAHZghIq8aY+oBHwGJQAY
wSkRO+yoOpaqThWmZNKlTg2tb1eex69r6OxwVpHw5uWsFHheRq4BrgYeMMVcDU4BlItIGWOa8r1RIyy2w8d
SnW3j0o828//2Bi08cWg+r/+m4VcpLfDbiF5GjwFHn92eNMduBpsBwoL/zZXOAFcCTvopDKa/
zcpO1vVnneGjuJnb8fJYH+7e+ONLXdfnKR6qkxm+MSQS6Aj8AjZx/
FBCRo8aYhqUcMwGYAJCQkFAVYSpVPi8n4z3HzzLs32uIjrAwe3wP+rcr9r+DO03UtK2yqgCfJ35jTE3gE+A
REfnF3Z2ARGQGMAMgOTlZfBehUh7wUkdLEcEYQ6v4mtzbuyV3XZtAkzo1Ln1ReX199BOBqiCfXsBljInAkf
TnisinzoePGWOaOJ9vAhz3ZQxKeVVJF0l5WIff8fMvjJi+jszTOYSFGf54Q7vLkz5cXJc/
8OmSk7peqasqyJeregzwDrBdRP632FOLgbHAVOftZ76KQSmvc71ICtwedYsI731/
gBc+306dGhEcP5tHs7ox5b9faaN4L3X6VKHHl6We3sA9wFZjTLrzsT/hSPjzjTG/BQ4CI30Yg1LeVzwZr/
6nW6WfU+fzeWLBFr7ZfowB7RowbWRn6teMuux1QNl1e9fn9EpdVQG+XNXzHVBaQX+Qr95XqSrlzqj70HrSl
n7CLwev4LmhwxjfO5FS57rKqtuX9pwmfOUhvXJXqcooY9SdZ7Xxy661NPh0JANt+QyIiiCsRU8wLUs/
X1mTx7pVovISTfxKVVYJo+5dx84yaV46I3PmM96WjxEbxk75ybqsTxBa01deoolfKS+y24U56zL4+9Id1Io
Kp2O/mzGrPnY/WZdVt9eavvISTfxKecnp8/k8PC+N1btPMLB9Q/
7n9iTHZiktPUzWZdXttaavvEATv1JeEhsVTm6BjRd/
3ZE7UxIuTuBqslYBRnfgUqoSTp7L4+mFW8nOKSAyPIz59/fkrmtalL5qR6kAoIlfKXeUcHXulz/
+zPUvr2J+6iFSD5wC0ISvqgUt9ShVHpf187+M+oTnNsWwKP0IHa6ozQf3XUu7xrX8HaVSbtPEr1R5XNbPr/
p6IUsOD+SRwW14aMCVRFhcPjhrx0wV4DTxK1WexD6IJQJsYCyRXDNgOJ/
FJdHhijqXv1Y7ZqpqQGv8SpVBRFh0oinjbM/
wSZ2xMHYxDa7uU3LSB+2YqaoFHfErVYrDZy7wzMKtLN+ZRdeEbnS+fRw0KqeWr1fXqmpAE79SJVi79wS/
m5OKCDw79GrG9UrEEubGih29ulZVA5r4lSom32onMjyMTk3rMKRjYx4d3Jbm9crpme9KL9hSAU5r/
Co4eLgLlqvzeVZeWLKN4a+vId9qp1Z0BP87qovnSV+pakBH/Kr6q8RKGhHh/346xvP//
Ykj2bnckZJAgc0x6lcqWGniV9VfBfvUn8nJ59GP0lm+M4v2jWvx2p1d6d6iXhUErJR/
aeJX1Z+HK2lEBJO5gVr7VnHF2bo8c/MAxvZKvPxCLKWClCZ+Vf25uZJGRPh62zG++XoJ/
3PuaSy2Al6wRGISF4OlVRUHrZT/aOJXwaGclTR7jp/l+SXbWbUri+fqpIOtAMSGKX6RVfE/
HNp2QQUxTfwqqNnswgufb+PddQeIibTw7NCr+U3z+pj3FlwsDdWof+nk8JCp8OUUbbuggpYmflV9eDAKFxG
MMVjCDJmnLzC6R3Mev64t9WtGAS0vLQ25Tg5v/0w3NVdBTRO/ClzFEz24tWRTRFi+8zgv/d8upt/
djRb1Y5l+d/fLr7p1LQ0Vnxy+ajgcWKdtF1TQ8lniN8bMBIYCx0Wko/OxesBHQCKQAYwSkdO+ikEFGE/
q5q5r87vcUe4o/MfD2bz4+XbW7TtJy/hYTp7Pp0X92PJbLZQ0Odzoaq3xq6DlyxH/
bODfwLvFHpsCLBORqcaYKc77T/
owBhUoPL3IyrX8gpS6ZFNEmLxgCws2ZlIvNpLnh3fgjpQEz5Znun4C0LYLKoj5LPGLyCpjTKLLw8OB/
s7v5wAr0MQfGjy9yMp1bX7nOx1fxUbhv+QWUDs6AmMM9WMjebB/ayb2b03t6Iiq++9Sqhqq6hp/
IxE5CiAiR40xDUt7oTFmAjABICEhoYrCU+Wq6DJHT9sVl7Y235nw3/5qJ+98t5+Z43pwTav6PHXTVb6JW6k
gFLCTuyIyA5gBkJycLH4OR0HldpcqKZGXl4xdyi3n86y8u+4A01fuJftCATd3akLD2tGlx+rhxLBSoaKqE/
8xY0wT52i/CXC8it9fVYY75ZqyknnxRO7hHxG7XRj++hr2HD/
HgHYNePz6dnRsWsouWBWYGFYqlFR14l8MjAWmOm8/
q+L3V5VRXrnGk2Tuxh+RnHwrC9MOM6ZHApYww2PXtaVxnWi6JdQtO04PJoaVCkW+XM75IY6J3HhjTCbwZxw
Jf74x5rfAQWCkr95f+UB5PXE8mcAt44/I2dwC3v/
+IG+v3udYklkvll+1ieemTk3ci9ONiWGlQpkRCfzyeXJysqSmpvo7DFUeT+cAXMpCuQU23li+h9lrM/
gl10rftg2YNOjKirVK1slcpTDGbBSR5Mse18SvvKoCCfdCvo0akRZsduH6l1dyZcOaPDTgSpKaxfk2VqWCX
GmJP2BX9ahqyoMLn346ks3bq/ezevcJVj3Rn5hjm1jafQORrfuBO0lfR/VKVYgmflWl7HZhxa7j/
GfVftbtO0lspIUxKQnYD6yHj24j0pYP3/3TvTKRLtFUqkI08asqtfVwNvfOTqVJnWieurE9Y1ISqFMjwrFR
uidLLiu43aJSShO/8rE9x8/y/vcHibAYnr75ajo3j2PmuGT6tGlwaS8dT6/s9fT1SqkimvhDnQ/
q5PlWO19vO8bcHw6wdu9JIi1h3N69aVGP/IHtG11+kJvbJ1b49UqpIpr4g5G7ydxHdfJ/
fr2Tt1buo2lcDSbf0I7RPZoTXzOq/AM97YipHTSVqhBN/MHGy1fPlicn38rSrT/
zUeohHh3clp6t63NHjwSubVWfvm0alN8LXylV5TTxl6U6Lhf00tWzZbHbhe/3n+TTTYdZuvUo5/
NttIyPJSff6jhtfCyJ8bHV8+enVAjQxF9cMHR09CSZe1AnFxFOns8nvmYUdhEe/
jCN3AI7Q5Ou4PbuzeiRWBdjio3udbmlUgErtBN/
WYm+unZ0rMgkaRmv2X3sLEu2HOXzrUfJybPy3ZMDCbeEMXt8Cq0b1KRGpKXkA3W5pVIBK3QTf3mte6tzR8f
KTHo6/
xh+b7+KZzbGsuf4OYyBa1rW4+ZeiVjtQmSYKb0lciFdbqlUwArdxF9e695g6uhYTq0932rn+30n2Zm6jN/
unUSYvYAeYRH0qvt37hk2kBs7NaZhrVI2PCmNLrdUKmCFbuJ3t3VvdU9YJdXagfy9K1mR246Pj1/
B2j0nOJ9v4+HI5RCWD9ix2OH5zqeh+XFI/
6RiyVuXWyoVkEI38Zexp6tXBMqKlmKfbOzWfI6seIdmBz4jwpZPH7uFBVH/
j+Fd+zCwXUP6RNcj7IPPLv6RqFFfJ2iVCkKhm/
jBdyPSAFnRsnJXFvsON+NOsWARoQALPx39hWa2fIzYiA6Dt351AdO3k/
OIRpf+MdQJWqWCUmgnfl+p4oRZYLOz8+ezpB86w6HTOTx141UAvLs2g9V7arOv8VSGxO4h7uqBDGhUE95fD
rZ8jCUSWrpMurr+MdQJWqWCjiZ+byle2vHhipacfCvR4RbCwgyfpR9m1poMth39hXyrHYD4mlE8MqgtNSIt
/O22TsTFRBAV7rLk0t1JV52gVSooBXfiP7Se87tWEH1lPywtrvHp+1xW2vFCwjyafYHvdp9gb9Z59hw/
y65j5zh0OodvHutH6wY1sdqEqPAwxvZsQcemdejavC7N69UoupCqUe1SVuJ4UuLSCVqlgk7wJn5nMo625pG
/6iX+GPNXzjXoRtO6NUhuUZfbujUD4MDJ88TFRFI7OvzSK089UVJpp8/
jJSZMEcEuYAkznMnJZ+WuLI5m5/
Jzdi6Zpy+QeTqH5265ml6t49mamc3kBVuIsBhaxdekU7M63NatKbGRjl/
b7d2bcXv3ZhX+ESmlQlPwJn5nMrZgJ9LYuD5mN/8534Gth7M5n2ctSvxDX/
uOs7lWwsMMdWMjqRsTwfAuTXlowJWICH9auJXoCAvRERYiLWFEWAzdWtSlV+t4cgtsvLsug/
jTLbnFhGMRsJlwtod3Igk49ksuUz7Zwrk8K2dyCjidU0D2hXz+37CO3HlNApmnLzBpXjoAtaLCuSKuBs3r1
SDS2ae+15XxrJzcn6ZxNQgv3rv+0HrYouUXpVTFBG/
iL1Znt1giGX7raIY7k6TN7thgXkR44daOZJ3N49T5fE7n5HPqfD61ox0/
lnybnWXbj3OhwEb7gu30YBur7Vdxru+N9GodT16Bnb99sQOI4n3zFNeGbSfVdGBAXmuScIzqT57Pp2ZUOK0
b1KRubARxMZG0b1ILgCsb1uTrR/
vSuE40taIjLsZ+aD2sXk3NxD7UdE3sAbJiSClVfRkR8XcM5UpOTpbU1FTPD/
TWWnpnshVnsrXds4jwsDBk/2ouNO1FWEIKljBDeJipeLnI5b1KTeyr/
wnfvugoKxkLDHzaUVbyl0C5XkEpdRljzEYRSXZ93C8jfmPMEOBVwAK8LSJTffJG3pqYdJaNjLOGH751HqTP
w9jyiXF31O1ugixvKWgg9cDRTx9KVUtVnviNMRbgdeA6IBPYYIxZLCLbqjoWt7kmW4xn6/
Q9SZDlJfZAWmKpF3gpVS35Y8SfAuwRkX0Axph5wHAgcBO/a7IFSP/Q/
VG3Owmy+CcC18Tu+mkhUJZYBtKnD6WU2/yR+JsCh4rdzwQuW2RvjJkATABISEiomsjK4ppsPRl1l5cgS/
pEUFi3D+RySiB9+lBKuc0fib+k2c/LZphFZAYwAxyTu74OymOeXgRV1ii+rE8EgV5OCZRPH0opt/
kj8WcCzYvdbwYc8UMcVat4gnQdxQ+ZWvonAnfKKbqyRinlAX8k/g1AG2NMS+AwMAa40w9x+I/
rKP7CydJLJuWVUwK5FKSUCkhVnvhFxGqM+T3wfziWc84UkZ+qOg6/
KmkUX1bJpKznAr0UpJQKOH5Zxy8iXwBfVPkbB0pJxJuTorqyRinloeBt2eAq0Eoi3poU1ZU1SikPVYuWDca
YLOBABQ+PB040rWUaN65pmgIIyLFzcuTwWfnZa0FWMC4/
vn9pAjUuCNzYNC7PaFyeqUxcLUSkgeuD1SLxV4YxJrWkXhX+pnF5LlBj07g8o3F5xhdxhZX/
EqWUUsFEE79SSoWYUEj8M/wdQCk0Ls8Famwal2c0Ls94Pa6gr/
ErpZS6VCiM+JVSShWjiV8ppUJMUCd+Y8wQY8xOY8weY8wUf8cDYIyZaYw5boz50d+xFGeMaW6MWW6M2W6M+
ckYM8nfMQEYY6KNMeuNMZudcf0/
f8dUnDHGYoxJM8Ys8XcsxRljMowxW40x6caYCuxb6hvGmDhjzAJjzA7nv7WeARBTO+fPqfDrF2PMI/
6OC8AY86jz3/2PxpgPjTHRXjlvsNb4nTt97aLYTl/
AHf7e6csY0xc4B7wrIh39GUtxxpgmQBMR2WSMqQVsBG4NgJ+XAWJF5JwxJgL4DpgkIt/
7M65CxpjHgGSgtogM9Xc8hYwxGUCyiATUBUnGmDnAahF52xgTCcSIyBk/h1XEmTcOA9eISEUvGvVWLE1x/
Hu/WkQuGGPmA1+IyOzKnjuYR/xFO32JSD5QuNOXX4nIKuCUv+NwJSJHRWST8/
uzwHYcm+b4lTicc96NcH4FxGjFGNMMuBl429+xVAfGmNpAX+AdABHJD6Sk7zQI2OvvpF9MOFDDGBMOxOClF
vbBnPhL2unL74msOjDGJAJdgR/
8HApQVE5JB44DX4tIQMQFvAI8Adj9HEdJBPjKGLPRuZtdIGgFZAGznOWxt40xsf4OysUY4EN/
BwEgIoeBacBB4CiQLSJfeePcwZz43drpS13KGFMT+AR4RER+8Xc8ACJiE5EuODbtSTHG+L1EZowZChwXkY3
+jqUUvUWkG3Aj8JCzxOhv4UA34E0R6QqcBwJi7g3AWXoaBnzs71gAjDF1cVQpWgJXALHGmLu9ce5gTvyhud
NXJThr6J8Ac0XkU3/
H48pZFlgBDPFvJAD0BoY5a+nzgIHGmPf9G9JFInLEeXscWIij9OlvmUBmsU9sC3D8IQgUNwKbROSYvwNxGg
zsF5EsESkAPgV6eePEwZz4i3b6cv4lHwMs9nNMAcs5ifoOsF1E/
tff8RQyxjQwxsQ5v6+B43+GHX4NChCRp0SkmYgk4vi39a2IeGU0VlnGmFjnBD3OUsr1gN9XkYnIz8AhY0w7
50ODAL8uHnBxBwFS5nE6CFxrjIlx/v85CMfcW6UFbT/+QN3pyxjzIdAfiDfGZAJ/FpF3/
BsV4BjB3gNsddbTAf7k3DTHn5oAc5yrLcKA+SISUEsnA1AjYKEjVxAOfCAiX/o3pCJ/
AOY6B2P7gPF+jgcAY0wMjhWA9/
s7lkIi8oMxZgGwCbACaXipfUPQLudUSilVsmAu9SillCqBJn6llAoxmviVUirEaOJXSqkQo4lfKaVCjCZ+p
ZQKMZr4lVIqxGjiV6oCjDE9jDFbnPsFxDp7pvu9h5BS7tALuJSqIGPMC0A0UANHD5q/
+zkkpdyiiV+pCnK2HdgA5AK9RMTm55CUcouWepSquHpATaAWjpG/
UtWCjviVqiBjzGIcLZlb4ti28vd+DkkptwRtd06lfMkY8xvAKiIfODuHrjXGDBSRb/0dm1Ll0RG/
UkqFGK3xK6VUiNHEr5RSIUYTv1JKhRhN/EopFWI08SulVIjRxK+UUiFGE79SSoWY/
w+098lAFEhmKwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 6\n",
"validation score = -15.6113\n",
"train score = 0.9563\n",
"validation MSE = 954.5483\n",
"train MSE = 6.3899\n"
]
},
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = 2.332+0.315x^1-4.650x^2+4.795x^3-
1.581x^4+0.230x^5-0.012x^6$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA68ElEQVR4nO3deXxU5fX48c8zk8nOElaBAAHKThJCQgQR2VxAERdkcQV3tLYurYpV2/60+rVFa/
1a14qAVEW0LuhXrQWkgOy7yCoQNhFCIBHIMpOZ8/
tjJjGELJMwa+a8X6+8Jrkz995jgmeeOfe55zEiglJKqchhCXYASimlAksTv1JKRRhN/
EopFWE08SulVITRxK+UUhEmKtgBeKNFixaSkpIS7DCUUipgDp06xPHi4wiCwZAUm0SbhDZ1OsbatWuPikjL
ytvDIvGnpKSwZs2aYIehlFIBkVuYy6gPR9HM2ax8W4w1hi/
HfkmLuBZeH8cYs7eq7VrqUUqpEPPqpldxieu0bS5x8erGV31y/
LAY8SulVCTILczlwcUPUlBSgMPlOO05h8vBhiMbfHIeTfxKKRUiXt30KusOr2N89/
F8dMVHfjtP2CZ+h8PBgQMHKC4uDnYoqhaxsbEkJydjs9mCHYpSISu3MJdPvv8EQfj4+4+Zkj6lTvX8ugjbx
H/
gwAEaNWpESkoKxphgh6OqISLk5eVx4MABOnXqFOxwlApZFev6ZfX8xwY85pdzhe3F3eLiYpo3b65JP8QZY2
jevLl+MlOqBmWj/bK6vsPl4OPvP+Zo0VG/
nC9sEz+gST9M6N9JqZr5exZPZWGd+JVSqiHYeGSjX2fxVBa2Nf5wNHToUJ599lmysrICfu7zzjuPZcuW1fi
axMRETp48ecb2//3f/+WVV16hX79+TJgwgS1btjB16lQ+/
vhjunXrRq9evfwVtlIR4YMxHwT0fJr4I0RtSb8mL7/8Ml988UX5xdkxY8YA8PHHHzN69GhN/
EqFGS311FNOTg49evRg0qRJpKWlcc0111BYWAjAggULyMjIIDU1lVtuuYWSkpLT9p0+fTr3339/+c//
+Mc/
eOCBB8jJyaFnz57cfvvt9O7dm4svvpiioiIANmzYwIABA0hLS+Oqq67i+PHjgPtTxP33388FF1xAz549Wb1
6NVdffTVdu3blscd+nhGQmJgIwMmTJxkxYgT9+vUjNTWVTz75pMb/zilTprB7927GjBnD888/
z8yZM7nnnntYtmwZ8+bN48EHH6Rv377s2rXr7H+pSjUwuYW5TP5yst8u0tabiIT8V2ZmplS2ZcuW034e/
+qyM77eWrZHREQKS0qrfH7u6n0iIpJ3suSM52qzZ88eAWTp0qUiInLzzTfLtGnTpKioSJKTk2X79u0iInLj
jTfK888/
LyIiQ4YMkdWrV8vJkyelc+fOYrfbRURk4MCBsmnTJtmzZ49YrVZZv369iIiMGzdOZs+eLSIiqampsmjRIhE
Refzxx+Xee+8tP+ZDDz0kIiJ/
+9vfpE2bNvLDDz9IcXGxtGvXTo4ePSoiIgkJCSIi4nA4pKCgQEREcnNzpUuXLuJyuU57TWUdO3aU3NxcERG
ZMWOG/PKXvxQRkUmTJsn7779f6+9K5My/l1KR4InlT0jqzFR5cvmTQTk/
sEaqyKk64j8L7du3Z9CgQQDccMMNLF26lO3bt9OpUye6desGwKRJk1i8ePFp+yUkJDB8+HA++
+wztm3bhsPhIDU1FYBOnTrRt29fADIzM8nJyaGgoID8/
HyGDBlS5THLSi+pqan07t2bNm3aEBMTQ+fOndm/f/9p5xYRfve735GWlsaFF17IwYMHOXz4sO9/
OUpFuMo3ZIXSqN+vNX5jTFPgDaAPIMAtwHbgPSAFyAHGi8jxsz3Xe3cOrPa5uGhrjc83S4iu8fnqVJ6maIx
BvFy8/rbbbuPpp5+mR48e3HzzzeXbY2Jiyr+3Wq3lpZ6alO1jsVhO299isVBaWnraa99+
+21yc3NZu3YtNpuNlJQUnWOvlB8E8oasuvL3iP8F4EsR6QGkA1uBqcACEekKLPD8HJb27dvH8uXLAXj33Xc
5//zz6dGjBzk5OXz//fcAzJ49u3ykXtG5557L/
v37eeedd7j22mtrPE+TJk1ISkpiyZIlNR7TGwUFBbRq1QqbzcbXX3/
N3r1Vdm31SqNGjThx4kS991eqoQr0DVl15bfEb4xpDFwATAcQEbuI5ANXALM8L5sFXOmvGPytZ8+ezJo1i7
S0NI4dO8Zdd91FbGwsM2bMYNy4caSmpmKxWJgyZUqV+48fP55BgwaRlJRU67lmzZrFgw8+SFpaGhs2bOD3v
/99vWK+/
vrrWbNmDVlZWbz99tv06NGjXscBmDhxItOmTSMjI0Mv7ipVQaBvyKor421pos4HNqYv8DqwBfdofy1wL3BQ
RJpWeN1xETkj8xlj7gDuAOjQoUNm5ZHp1q1b6dmzp19i90ZOTg6jR49m8+bN9T7G6NGjuf/+
+xkxYoQPIwtNwf57KRVI18y7hu3Ht5+xvXtS99Pm7Je1YX52yLN+achmjFkrImfcOOTPGn8U0A/
4lYisNMa8QB3KOiLyOu43DrKysvzz7hQk+fn5ZGdnk56eHhFJX6lI4+0NWWVtmANd//dnjf8AcEBEVnp+/
gD3G8FhY0wbAM/jET/G4DcpKSn1Hu03bdqUHTt28P777/s4KqVUuAjmrB+/
JX4R+RHYb4zp7tk0AnfZZx4wybNtElDzHURKKdUAVTXrJ1D8PavnV8DbxphNQF/gaeAZ4CJjzE7gIs/
PSikVMYI968ev8/hFZANQVUcyLWwrpSJWTbN+AlHr1zt3lVIqwALdhrky7c5ZT/
n5+bzzzjvcfffddd730ksv5Z133qFp06b1Ond17ZN9EZtSyv8C3Ya5Mh3x11N+fj4vv/
xylc85nc4a9/3888/rnfS9UVNsSikVWYl//
ypY8pz78SxNnTqVXbt20bdvXx588EEWLVrEsGHDuO6668obrl155ZVkZmbSu3dvXn/
99fJ9U1JSOHr0aI1tmCvas2cPAwcOpH///jz+
+OPl26trsVw5trq2YlZKNXBVtewMtS9v2jLXat9KkSdbi/wxyf24b2Xd9q9kz5490rt37/Kfv/
76a4mPj5fdu3eXb8vLyxMRkcLCQundu3d5i+SyNsc1tWGu6PLLL5dZs2aJiMjf//
73WlssV46tplbMgaJtmZUSOXLqiEz6YpLkFuYG5HxEfFvmnCXgtIM43Y85S3x+iuzs7PJVqsC9ZGF6ejoDB
gxg//797Ny584x9qmrDXNk333xT3sjtxhtvLN8uXrZY9vZ1Sin/
qninbjBFTuJPGQzWaDBW92PKYJ+fIiEhofz7RYsWMX/
+fJYvX87GjRvJyMiosv1x5TbMldsol6ncAhpOb7G8YcMGWrduXeU5vH2dUsp/Qqk/f+Qk/vbZMGkeDH/U/
dg+
+6wOV1tL4oKCApKSkoiPj2fbtm2sWLGi3ucaNGgQc+bMAdxJvOI5qmqxXDk2X7ZiVkrVTzDv1K0schI/
uJP94N+cddIHaN68OYMGDaJPnz48+OCDZzw/cuRISktLSUtL4/HHH2fAgAH1PtcLL7zASy+9RP/+/
SkoKCjfXl2L5cqx+bIVs1Kq7oJ9p25lfmvL7EtZWVmyZs2a07Zpm9/
won8vFcmeXPEkH+386LSbtmwWG1d3vdqvd+pW15Y5skb8SilVR7mFuUz+cvJZjc6DfaduZXrnrlJK1cAXPf
ODfaduZTriV0qpaoTSTBxf0sSvlFLVCKWZOL6kiV8ppaoQajNxfEkTv1JKVaGmnvnhThO/j/zxj3/
k2Wef9flxExMTa3xeO3Eq5R/
1mYnjixlAgRBRs3pyC3N5cPGDPDvkWVrEtQh2OD5Rlvi1975SvlWfmTi+mAEUCBE14vd1g6SnnnqK7t27c+
GFF7J9+/by7bt27WLkyJFkZmYyePBgtm3bRkFBASkpKbhc7o+OhYWFtG/
fHofj9BGFtmBWKjyF1Qygqlp2htqXL9oyHzl1RDJnZ0qfmX0kc3bmWbdFXbNmjfTp00dOnTolBQUF0qVLF5
k2bZqIiAwfPlx27NghIiIrVqyQYcOGiYjImDFjZOHChSIiMmfOHLn11lvPOG5DaMFcFW3LrBq6J5Y/
IRlvZUifmX0k460MeXL5k8EOSdsy+3pa1pIlS7jqqquIj4+ncePGjBkzBnCPzJctW8a4cePo27cvd955J4c
OHQJgwoQJvPfeewDMmTOHCRMmnHFcbcGsVHDVp04fbjOAIiLx+
+uPUlWrZJfLRdOmTdmwYUP519atWwEYM2YMX3zxBceOHWPt2rUMHz7c6+NqC2alAqM+JeFwmwEUEYnfH3+U
Cy64gI8++oiioiJOnDjBp59+CkDjxo3p1KkT77//PuAegW/
cuBFwz9DJzs7m3nvvZfTo0Vit1jOOqy2YlQqe+tbpQ60XT238OqvHGJMDnACcQKmIZBljmgHvASlADjBeRI
77Mw5//FH69evHhAkT6Nu3Lx07dmTw4J8Xdnn77be56667+NOf/
oTD4WDixImkp6cD7nLPuHHjWLRoUZXHfeGFF7juuut44YUXGDt2bPn266+/
nssvv5ysrCz69u1bZQvmUaNG8fDDD1f5OqVU7aoqCXszOyfUevHUxq9tmT2JP0tEjlbY9hfgmIg8Y4yZCiS
JyMM1HUfbMoc//
XupUJdbmMuoD0dR4iwp3xZjjeHLsV+eNv07nKaFh1Jb5iuAWZ7vZwFXBiEGpZQ6jbcl4YrXAMLlhq3K/
J34BfjKGLPWGHOHZ1trETkE4HlsVdWOxpg7jDFrjDFrcnNz/RymUirSeVMSrnwN4G/r/hYSi6fXlb/
v3B0kIj8YY1oB/zHGbPN2RxF5HXgd3KUefwWolFLgXZ2+4qcCp8vJ/+3+v/
I3gSnpU0K+9FPGryN+EfnB83gE+AjIBg4bY9oAeB6P+DMGpVRk81U5pvK08FIpxSlOILSnblbFb4nfGJNgj
GlU9j1wMbAZmAdM8rxsEqA9BZRSfuOrVi1VXQMoE+o3bFXmzxF/
a2CpMWYjsAr4PxH5EngGuMgYsxO4yPOzUkr5nC/751R1DaCicBr1+y3xi8huEUn3fPUWkac82/
NEZISIdPU8HvNXDIHkr7bMZ2vo0KGUTYW99NJLyc/Pr/a1H3/8MVu2bCn/+fe//
z3z58/3d4hK+Y0vW7V8MOYDvp30Ld9O+pbuSd3PeD6Ub9iqLKLaMjcUpaWlREXV/U/3+eef1/j8xx9/
zOjRo+nVqxcATzzxRL3iUyoUVNeqxRcXYcPthq3KIqJlQ5nC9es5+trrFK5f75Pj+aMt8+TJk5kyZQqDBw+
mW7dufPbZZwDMnDmTcePGcfnll3PxxRdz6tQpbrnlFvr3709GRkZ5+
+WioiImTpxIWloaEyZMoKioqPzYKSkpHD3q/qj71ltvkZaWRnp6OjfeeCPLli1j3rx5PPjgg/
Tt25ddu3YxefJkPvjA/Q98wYIFZGRkkJqayi233EJJSUn5Mf/
whz+Ut4Hets3riVtK+VW49c8JpIgZ8ReuX8++m29B7HZMdDQdZrxJfEZGvY+3du1a5syZw/
r16yktLaVfv35kZmYCcMcdd/Dqq6/StWtXVq5cyd13383ChQtJT0/nv//9L8OGDePTTz/
lkksuwWaznXHsnJwc/vvf/7Jr1y6GDRvG999/D8Dy5cvZtGkTzZo143e/+x3Dhw/nzTffJD8/
n+zsbC688EJee+014uPj2bRpE5s2baJfv35nHP+7777jqaee4ptvvqFFixYcO3aMZs2aMWbMGEaPHs0111x
z2uuLi4uZPHkyCxYsoFu3btx000288sor3HfffQC0aNGCdevW8fLLL/Pss8/yxhtv1Pv3qpSvhFv/
nECKnMS/
ajVit4PLhTgcFK5afVaJv2JbZqDKtsxlykbHZW2Zhw0bxpw5c6pdNWv8+PFYLBa6du1K586dy0fRF110Ec2
aNQPgq6++Yt68eeXXFYqLi9m3bx+LFy/m17/+NQBpaWmkpaWdcfyFCxdyzTXX0KKF+
+Nu2TGrs337djp16kS3bt0AmDRpEi+99FJ54r/66qsByMzM5MMPP6zxWEoFSriXY/wpYhJ/fHZ/
THQ04nBgbDbis/uf9TFra8tc2ZgxY3jkkUfq3Ja57OeEhITybSLCv/71L7p3P/
MiU1VxVSQitb6m8utrEhMTA4DVaqW0tNTr4yqlgiNiavzxGRl0mPEmLX/967Mu84D/2jIDvP/+
+7hcLnbt2sXu3burTO6XXHIJL774YnlSXu+5bnHBBReUt3PevHkzmzZtOmPfESNGMHfuXPLy8gA4dsw9sap
yi+cyPXr0ICcnp7zkNHv2bIYMGeLlb0opFWoiJvGDO/
m3uPOOs076cHpb5rFjx57Rlnn69Omkp6fTu3fv09a9nTBhAv/
85z+rXH2rTPfu3RkyZAijRo3i1VdfJTY29ozXPP744zgcDtLS0ujTp0/5+rx33XUXJ0+eJC0tjb/
85S9kZ2efsW/
v3r159NFHGTJkCOnp6TzwwAMATJw4kWnTppGRkcGuXbvKXx8bG8uMGTMYN24cqampWCwWpkyZUvdfmlIqJP
i1LbOvRFJb5smTJ1d5gTXcNdS/l1KhLJTaMiullAqiiLm4Gy5mzpwZ7BCUUg1cWI/
4w6FMpfTvpFSoCdvEHxsbS15eniaVECci5OXlVXmBWikVHGFb6klOTubAgQPo6lyhLzY2luTk5GCHoVSVwm
kNXV8J28Rvs9no1KlTsMNQSoW5iv36HxvwWLDDCYiwLfUopSKXr1fV8kW//
nCiiV8pFXbOZlWtim8avuzXH0408Sulwkpto/TaPg2UvWk8v/b5Kvv1R8KoXxO/
Uiqs1DZKr+nTQMU3jc92fVa+WHqZSBn1a+JXSoWe/atgyXPuxwqqW1Vr+7HtTP5yMtuPba/
x08Bpbxq4KHWd3k02Uvr1h+2sHqVUA7V/
FcwaA047WKNh0jxo7242WN2qWg8vfpjdBbt5ePHDZ3waKJupU/
lNAyDGGsOXY7+MmGmcZXTEr5QKLTlL3ElfnO7HnCXlT1W3qtbugt0Iwq6CXdXW7HUpxp/
piF8pFVpSBrtH+mUj/pSfW55XtarWkyue5KOdH5Un/K4HhN77hO86GHI6uHjvgyeZUNiLY/
blOBrrUowQxm2ZlVIN2P5V7pF+yuDyMk9VcgtzGfXhKDrsLab3PuGnOLh5vosoJ5RaYcaFFm6eL0SVgjMqi
g4zZhATZXEvvZrd3ydrc4Sy6toy+33Eb4yxAmuAgyIy2hjTDHgPSAFygPEictzfcSilwkj77BoTfplpK/
9Oyl4Hj73rJMoJYsC4wAoYl4Vxe9OwOTdhwYVxOin+7FMOf/IJzhI72GwkvzmdJlmZ/v/
vCTGBqPHfC2yt8PNUYIGIdAUWeH5WSqnqVZrlc/Cblcz85R/
ZsWgRPfeVEuUEq7iTvljAacAaHU3viVdijYkGq9X9CIjdjkVcuOx2/vev7/
HNJws5+trrFHqWL40Efh3xG2OSgcuAp4AHPJuvAIZ6vp8FLAIe9mccSqkwVmGWj1ijKer/
V048NI2skhIybTaa/PZRCldOQxwOomw2Wj8yFWd+QXkpJ6Zbt/LSDkDBJ58gDgdWaxTOhMbE/
+4+DrucWGOifbIedzjwd6nnb8BDQKMK21qLyCEAETlkjGnl5xiUUuEsZwnitGPEiau0hFNff4E47FgRcDmJ
Lz5JixlvVlu3j8/IOG1bhwqvvXP5So4tdWIRF2J3uLdr4q8/Y8xo4IiIrDXGDK3H/
ncAdwB06NDBt8EppcJGbvNsGksUVhGcxoacdyHmy82Iw4Gx2cqTvbcJu/JrC15/DbE7MNHuYzldgtVi/
PWfExL8NqvHGPM/wI1AKRALNAY+BPoDQz2j/TbAIhHpXtOxdFaPUpHpi28PMfXDb+nl3MbUHkdJO/
8yTIdzKVy/3mczcyoea/ZPjclZvJL7Wpyg0YDssB/9VzerJyDTOT0j/t96ZvVMA/
JE5BljzFSgmYg8VNP+mviVijwOp4tLX1hCXLSV/52YQUqLBL+fc97bX9L+qYeIloZR8w/
adM4qPAPMNcbcCuwDxgUhBqVUiDryUzGNYm3ERVuZdUs2LRJjiI4KTJOB807u47C4a/
5Ou73B1vwD8tsUkUUiMtrzfZ6IjBCRrp7HY4GIQSkV+tbtO87oF5fy/
z79DoC2TeMClvQB4rP7Y42JxmUsOIyVgyk9A3buQNKWDUqpkPDZph94YO5G2jSJ5eZBwVlWNT4jgw4z3uTY
Nyt4PCeaS5unkB6USPxLE79SKqhEhNcW7+aZL7bRPyWJ12/
MIikhOmjxlM36ea3URXSUxacXkkOFJn6lVFDlnijh5a+/Z3RaG54dl06szRrskADKk/6eSTdjSh1YosP/
Ym8ZTfxKqaAodbqwWgytGscy757z6dAsHkuIzZ8/
sXIV4rBjEUEcDecGL+3Hr5QKuFMlpdw8czUvff09ACktEkIu6QM0OjcbY4umFIPLGlXe9iHcaeJXSgVUQaG
D699YybJdebRuHBvscGoUn5FBp5kzmD/wKv5nxC+x9EkLdkg+oYlfKRUweSdLuPYfK9jyw0+8fH0/
xmW1D3ZItYrvl8GAxx5gaUxbZi3LCXY4PqE1fqVUQDicLq5/
YyV7jp7iH5OyGNKtZbBD8trALs25NrsD7ZLigh2KT2jiV0p5x8tVsap7vc1q4bbBnWnXNI6BXZqf3bGD4H+
uTgVoENM7NfErpWpXoSc+1miYNK/mBF3h9S6rjc0jZpM28GKuyUw++2MHUd6qNRy67TaspQ5MGE/v1Bq/
Uqp2OUvciVmc7secJV6/3lVqZ/F/
PqLQXuqbYwfRga+Xgt0OLlf59M5wpIlfKVW7lMHu0bixuh9TBtf6epfVRikWHBLFRZeOJT66mgJDXY8dRF0
vGoIzKgqnsZSvBRCOtNSjlKpd+2x3CaZiHb6Guvyhxqk8Yf0j3R0bufTycXTPGnH68SrvW/
nYISq+XwaHHn+Ohe99wRWTRtMjDMs8oIlfKeWt9tk/
J+Va6vLvrtrP0uLO3HHrRLp1SDr9ONXtG8IJv6LhY0fw++8Nh/
MSGRTsYOpJSz1KqbqrpS5/34iuzPvV+WSUJf39q2DJcz+P9MOkpl+V6CgLNwzoSJHdSbHDGexw6kVH/
Eqpuiury5eN2lMGc3z7UuZ/
8S8uuOgqWve+gE5lK2ZVHuGPfOaMfcPNL4f9gl+P6BrsMOpNE79Squ4q1eV/KnIQ9+5VXCWlmA/fgcaf/
ly6qTzCL8oLm5p+dcoWYz9+yk5CTFRAF4vxhfCKVikVOtpnw+DfkN+8L//
6cA5RUkqUcWF1OU4v31Q1a8ezbzgm/TKbDxaQ/
fR8vt5+JNih1JkmfqVUvRUUObhh+kq+OPkLTFQ1UzLLPh0MfzSkb86qqx7nNCLz5AEO/
P0VCtevD3Y4daKlHqVU/QnE2azcdcO1WBMGVl+
+CaNZO96yb9rIowtfwjgc7F02j44zw+cu3loTvzHmHuBtETkegHiUUmHgVEkpVouhSbyNuXcOxBgDtGpwyb
0mhatWY3WWYhDEYQ+rRVq8KfWcA6w2xsw1xow07r+wUipCFdpLuXnGaqb8cy0iQqSmhPjs/
liio3EaC6UWa1jdxVtr4heRx4CuwHRgMrDTGPO0MaaLn2NTSoWYIruTW2euYc3eY4ztlxyxSR/
ci7R0mPEmjptuJ/Gl18JmtA9e1vhFRIwxPwI/AqVAEvCBMeY/IvKQPwNUSvnQWbQ/
LnY4uf2tNazYk8dfx6dzeXpbPwUZPuIzMsgIo4Rfxpsa/
6+BScBR4A3gQRFxGGMswE6gysRvjIkFFgMxnvN8ICJ/MMY0A94DUoAcYLxeP1AqAM6y/
fHUf23im11HmXZNOldlVNFeOYIt3XmUpd8fZeqoHsEOxSve1PhbAFe
LyCUi8r6IOABExAWMrmG/EmC4iKQDfYGRxpgBwFRggYh0BRZ4flZK+dtZtkqYMrQLz41Lr7qnfoTb/
EMBr/53Fz/kFwU7FK94U+P/vYjsrea5rTXsJyJy0vOjzfMlwBXALM/2WcCVdQlYKVVP9Wh/
XFLq5MN1BxARepzTmKv7adKvyogerQBYuC08buby6w1cxhirMWYDcAT4j4isBFqLyCEAz2Orava9wxizxhi
zJjc3159hKhUZ6ngjVbHDyZTZa3lg7kY2HSgIUJDh6RetEunQLJ4FWw8HOxSv+DXxi4hTRPoCyUC2MaZPHf
Z9XUSyRCSrZcvwWZRZqZDmZauEYoeTO2ev5evtuTx9VSrp7ZsGJr4wZYxhRM9WfLMrr/
qVxkJIQFo2iEg+sAgYCRw2xrQB8DyGx2cjpcJRxXbIXiqbvbN4Zy7PXJ3Kded28GOADceFPVuTnBTHweOhX
+f3W+I3xrQ0xjT1fB8HXAhsA+bhniWE5/
ETf8WgVEQrm8Wz8Cn3o5fJf+3e4yzflcefr05jYrYmfW+d16U5nw1vQtLH74Z87x5/9uppA8wyxlhxv8HMF
ZHPjDHLgbnGmFuBfcA4P8agVOSqahZPDSWesrtwB/2iBV//dijtm8UHMNjwV7RhA/
tuvgWx2zHR0XSYEbq9e/yW+EVkE3DGf7WI5AEjztxDKeVTVSyWUp0TxQ5uf2sNtw/
uzIierTXp10PhqtW47HaMy4XLHtq9e7Q7p1INlZeLmOcX2pn05iqiD60hOenfkHhpRDVb85X47P4Ym43SEj
vGGhXSvXuMiAQ7hlplZWXJmjVrgh2GUg3OkRPF3PjGKprkrefdmKfdi6jU465e5Va4fj1vvPgB287pystPT
w52OBhj1opIVuXtOuJXKkLlF9qZ8NoKfiwo5ousn7BudJx5V28YL48YDPEZGXB9Il/
M30F+oZ2m8dHBDqlKugKXUhGqSZyNi3u3Zvat2aRkXnL6Xb1xzes1I0jBwC7NEYEVu48FO5Rq6YhfqQiz+W
ABcdFWurRM5JFRPT1bK10PqOOMIPWz9OSm3D20C51bJgQ7lGpp4lcqgqzYncdts9bQq01j3rtzwOn99Csvj
+jljCB1uugoCw+NDO0unZr4lYoQX24+xK/
nbKBDs3heuLZvzYuoeDkjSFWtpNTJur359GrbmCZxtmCHcwat8SsVAWav2Mtdb6+jT9vGvH/
nQNo0iat9Jy/
7+qgzbfnhJ679xwqW7AzNBpOa+JVq4Jwu4dMNPzC8eyvevm0ASQmhOdOkIUlt14TEmCiW78oLdihV0lKPUg
2UvdRFcamTxrE2pk/
OIs5mJcqqY71AiLJa6J+SxPLdoZn49V+BUg3QT8UOJs9YxW2z1uByCY1ibZr0A2xgl+bszj3F4Z+Kgx3KGf
RfglINzP5jhYx7ZTmr9hxjQlZ7LJYaLuLWo22z8s7Azi0AQrLco6UepQJt/yq/zZZZu/
c4d7y1BofTxaxbshn0ixY1x3EWi6+rmvVq25iPhjSi7crPKCQ7pBq2aeJXKpD8mGydLuGhDzaSGBvF9En9+
UWrxJp30Ju0/Kpk4wbiHrmXY3Y7x0OsTbMmfqUCyQ/
J1uUSnCLYrBZevymLZvHR3s3cqUPbZlV3hatWI3Y7uFyIwxFSbZo18SsVSD5OtieKHdw3ZwPnNInlqatS6d
KyllF+RXqTll/FZ/dHbDacJXYsIdamWRO/UoFUVbKtZ81/V+5J7py9lj1HT/
GHy3u5V9A6sLpux6rcpkH5THxGBm3emM6fn3mHLhcNpneIjPZBE79SgVcx2daz5v/Vdz/
ym7kbsUVZmH1LNuf9ooVerA1BSf0z+W5oEfujorg92MFUoNM5lQqmqmr+tTh+ys4DczfSqWUCn/
7qfHfSr+exlP/
1bd+UjfsLcLpCZ9ErTfxKBVNZzb+sD34NNf+fih2ICEkJ0cy+NZu5dw6kXdO4eh1LBU5Gh6bERFn4MYRu5N
KlF5UKNi9q/
KtzjnHPO+v49YiuXH9ux7M6lgosp0uwGGruhuonuvSiUqGqhgusLpfw6uJdPPfVDpKT4ujbvmm9j6WCw1rT
ndNBoolfqRCVe6KEB+ZuYMnOo1yaeg7PjE2jcWzo9XZXtXtjyW5W7M7jjUmhMaXTbzV+Y0x7Y8zXxpitxpj
vjDH3erY3M8b8xxiz0/
OY5K8YlApn3/1QwOqcYzx9VSovXddPk34YK7Q7WbDtCD8VO4IdCuDfi7ulwG9EpCcwAPilMaYXMBVYICJdg
QWen5VSQLHDyeId7sU7hnZvxYobG3Gd/X33/
HwVtjI6NEUENu0vCHYogB8Tv4gcEpF1nu9PAFuBdsAVwCzPy2YBV/orBqX8wk8dLbf/eIIrX/
qGW2au5sDxQti/
iqZzr4GFT7nn52sHzbCVltwUgA37jwc3EI+A1PiNMSlABrASaC0ih8D95mCMaVXNPncAdwB06NAhEGEqVTs
/3CTldAlvLNnNc1/toHFcFP+4KYvkpHjY7EVfH53FExaaxNn4RatE1u/LD3YoQAASvzEmEfgXcJ+I/
OTtlCYReR14HdzTOf0XoVJ14OMmay6XcOP0lSzblcfI3ufw1FV9aJ4Y436ytr4+eqduWLk0tQ1F9tJghwH4
OfEbY2y4k/7bIvKhZ/NhY0wbz2i/
DXDEnzEo5VNVJeN6jLpFBGMMFotheI9WjO2XzNX92p0+17u2JmraVjmsPHBRt2CHUM5vid+4/
wVPB7aKyF8rPDUPmAQ843n8xF8xKOVzlZMx1HnUvTfvFA99sIk7h3RmeI/
W3Da4c83nq+542lY57IgIdqeLmChrUOPw54h/EHAj8K0xZoNn2+9wJ/y5xphbgX3AOD/
GoJTvVUzGS57zetRd6nTx5jd7+Ot/dmCzWDhV4qz6+DV9gqj8nLZVDhslpU5uuP8NbozN48LrRgW1N7/
fEr+ILAWqK+iP8Nd5lQoob0bd+1dx5Nv5TNvekvcPt+XCnq3505V9OKdJbJWvrfYTRHXPacIPC85vN/
HYwpeIcjnZ95/3g7oil965q9TZqG3U7UnWLUpLeJIorrhkJoOGZlbft6Wmur3W9MNa4arVRLmcWCT4K3Jp4
lfqbFUz6l60/QgtN/
wfvZ12LLiIMU7Oj9oG5rLqj1XTJwit6Ye1+Oz+SFQUpQ4HUVG2oK7IpYlfKR87VFDEE59u4YvNPzK+dTJ/
tkZjnHaMN8m6pk8QWtMPa/EZGRT86Xk+mfUZ4269omHW+JWKNA6ni5nf5PC3+TsodQm/
vbgbt18wEnMo3XfLIWpNP6z1GDGIb2La0iwzOahxaOJXykc2Hcjnqc+3MrxHK/
7fmN60bxbvfkKTtfJonhjDQyN7BDsMTfxKnY0f8otYviuPsZnJZHZsxqf3nE+fdo2DsuiGCg+F9lJyjhbSq
23joMWgSy8q5Y1KjdmKHU5emL+T4c8t4g/zviO/0A5AanITTfqqRi8u/
J4rXlqKvdQVtBh0xK9UbSrMnxdrNN8Mms7DK+M4mF/
EZalteOTSHjSNjw52lCpM9GrTGIdT2HH4BH3aNQlKDDriV6o2lebPr1w4j0axUbxz+7m8dH0/
dyfNivzUtlk1DL09JZ4th34KWgw64leqFnktsmlioogCjDWayy8bz339Ble9lqp2zFS1SGmeQHy0lS0/
aOJXKuScKinl9cW7eW3xSdLkUV47v4ik3sPpVlMi17trVS0sFkPPNo11xK9UKHG6hA/
W7ue5r3Zw5EQJl6W2YeqoISQ1i699Z727Vnnhtxd3J8YWvEq7Jn6lKim0l/
LnL7fTqUUCr9yQSWbHJO931rtrlRcGdmke1PNr4lcK2HywgH+u2MufruxDo1gbn/
xyEMlJcfWbmqk3bKlaFNmd/HfHEbqf05hOLRICfn6d1aMahnrOpNl/
rJB756xn9ItL+fd3P7L76CkA2jeL1/n4ym+KHU6m/HMd87ccDsr5dcSvwl89ZtIU2Z1M+/d2/
rliLxYL3D20C1OGdqFxrC1AQatIlpQQTYvEGHYeORGU82viV+GvDjNpyta6jY6ysGzXUa7u1477LuxW9aIo
SvlR11aJ7DxyMijn1lKPCn9lM2mMtdqZNA6ni3+u2MuoF5ZwotiB9eBqPstYxTPZxZr0VVB0bZ3I94dPIiI
BP7eO+FX4q2Emjcsl/N+3h3juq+3k5BWS1TGJU98vp9HH44ly2mHJs3qTlQqKrq0SOVFSyuGfSgI+
+NDErxqGKmbSnCh2cO0/
VrD54E90b92I6ZOyGN6jFWbpX88sDcHpbxw1LXiulA9cltaW80oOYX13FoXnZgd0YRZN/
KrBOVRQRJsmcTSKtdGnbRNuPq8TV2a0+7nFQuWbrOKan35xeOQz8OVUbbug/
Cp2x3c47rubo3Y7edHRAV18XWv8KnzUMmVz5+ET3Dl7DUP+soj9xwoBeGZsGmMzk0/vq1NWGhr+qPuxKO/
0TwBbP6n6E4FSPlS4ajUuux1cPy++Hig64lehq2K5Baqdsrn/
WCEvLNjJh+sOEB8dxT3Df0GzhFraJFcuDVX8BNDzCti7XNsuKL+Kz+5PqcWKRSDKFtjF1/2W+I0xbwKjgSM
i0sezrRnwHpAC5ADjReS4v2JQIaYudfPKc/
P7XlvllM2CQgcXP78Ypwi3DOrE3cO8SPqVVXVxuHUvrfErv4rPyGDBbX/g+LIVTJ16XYOp8c8E/
g68VWHbVGCBiDxjjJnq+flhP8agQkVdb7KqPDcfKR+Vi9XGYnt3hgBN4m08fXUfzu3UnLZN4+ofX+VPANp2
QQVAUv9+vPBjLPf8oidetAD0Gb/V+EVkMXCs0uYrgFme72cBV/rr/
CrEVHWTVU0qz81Pv46S6z5iRcpd3FT6GJPnG/
Z42itclZF8dklfqSDp2roRQMBv5Ap0jb+1iBwCEJFDxphW1b3QGHMHcAdAhw4dAhSeqlV9pznWtV1xhfKLo
/0g3j3QihcXfk/
uifMY1r0ln13SvW7NrXR6pgpBXVsnAnDweFFAz2v8edeYMSYF+KxCjT9fRJpWeP64iNTa8zYrK0vWrFnjtz
iVl852danKydfLZJxfaGfwX76mZ5vGPHRJd7JSmtXtXKCrYqmQJCIUOZzER/
tnDG6MWSsiWZW3B3rEf9gY08Yz2m8DHAnw+dXZ8KYnTk3JvGLdvIY3EZdL+HzzIb7Y/
CMvTsygaXw0X9w7mHZNvWyT7OWFYaWCzRjjt6Rfk0DP458HTPJ8Pwn4JMDnV2ejtp44ZQl34VPux5paJFfx
JiIizN9ymMteXMo976xnx48nyD1ZAkByUh3aJFd3YbiGXj5KBcsX3x7innfWBfSc/pzO+S4wFGhhjDkA/
AF4BphrjLkV2AeM89f5lR/UtrpUXdabrVTzz22ezW0vL2Pj/nw6No/
nbxP6cnl626oXNK9N5esJ6de5v7TGr0LQwfwiPtt0iD+OKaFFYkxAzum3xC8i11bz1Ah/
nVMFQE3THOtyAdfzJnJy+yISuw+ladss4pau5JmrUxmbmYzNehYfRqt7g9KEr0JQl5buC7x7jp4K/
8SvIlAd1ptdnXOM5//j4vsj/Vg8JJNYq4U5dwz0bSya6FUYSPHMTss5eor+3kxc8AFN/Mq3akm4a/ce52/
zd7Bk51FaJMZw19AulJfu6zrlUqdoqgYgOSkOq8WQk3cqYOfUxK8CZuP+fMa+soxmCdE8emlPbhjQkbhoq/
vJuk4VPduppUqFCJvVQnpyEwyBW+NZE7/yqzU5x9ide4rx/
duTltyEadekcVlamzOnsNXlwnB9Xq9UCPvw7kEBPZ8mfuVzIsKK3cd4ceFOlu3Ko32zOK7q1w6b1cK4rPZV
71TXO3vr+nqlVDlN/
JHOx3Xybw8U8MdPv2Pt3uO0SIzhsct6cv25HWufpVOHC8P1er1SIWzR9iP85cvtzLylP60a+X8ZRk38DZG3
ydxHdXKnSzhZXEqTeBu2KMOPBcU8cUVvxme1J9Zm9f5AdZ2JozN3VANhjGHLoZ/
Yk3tKE7+qh7ok87Oskxc7nHy47iD/WLKbPu2a8OK1GfQ4pzGLHxpWvxuvlIpQnZp7pnTmneLczs39fj5N/
DUJx+mCZ3H3rLd18vxCO2+v3MeMb/
Zw9KSd1HZNuCz1nPLny5N+OP7+lAqCtk1jsVkNe44WBuR8mvgraggdHetx92xdk/
Nri3fzyqJdDOnWkjuHdGZg5+Zn9tHR6ZZKeS3KaqF9s3hyjgZmLn9kJ/
6aEn24dnSsz0XSGl4jIizZeZRZy3K4cWBHhnZvxc2DUriib1t6nNO4+uPqdEul6mRY91Zn16qkDiI38dfWu
rfCUn9hN13wbC56et4MT7UdyAeH2/
LW8hx25Z6iRWI0owvbANCqUWztF6B0uqVSdfL46F4BO1fkJv4a1nRtcB0d6zjLR5x2rGLlk5LfkdiuP38dn
85laW2IiarjDB2dbqlUnYmI9y3I6ylyE7+3rXvDPWFVVWuH0/47j5+y8/
GGg8SteIcJTjtGnEQbeHlQIeekR0POe3CoHslbp1sq5bWN+/N56i/vMbVtIT1GDiU+I8Nv54rcxO/
v1r2hMqOl8iebje/
AhjmI047LYmNa678wfW9LHE7hmla9GW+1YZxgsUZzzjnt9AKtUgHSdM82HlnwEjE42ffeW3SY8abfkn/
kJn7w34g0lGa0VPhkI9Zo7A4hxjOql1Ih8ceV3DTwHsb2S6ZX28awP/
3nNyy9QKtUwMRv2cgJVykGQRwOClet1sQfVkIoYZ5q1Y9N57/
Jse8WMie3IxcUteR263uI046x2phy001EdaxwUanym6FeoFUqIBLOzcZpjcK4nFhtNuKz+/
vtXJr4faViaSdEZrTcN2c9n3/7I3an0DT+Ykb0ak2PjLYweB4mZwnW2spQeoFWqYCJz8jgX9c/
QuLWTdzzwHit8dfb/
lV88vF7LHF0Z7utF1aLISHGSmaHJB64uDsAc1fvx2oxtGkSyzlNYmnTJO7nHvF1OM8ZpZ0AJcxSp4ttP55g
/b7jrNh9jJy8U3z2q/
MxxtCheQKTzuvIiJ6tyeqYRFT5HOGW3sekF2iVCpi0SwazJzOD+Iwefj1Pw038nmQ8urSEkcbGs62nsc3Wg
1MlpfxUXFr+sj9/uY28U/
bTdr0mM5lnx6UD8NxX22meEE1yUjztkuJolxRH41jb6eeqqrQz+Dc+T5hFdie7ck/
SrXUjoqMsvLl0D9P+vZ0ihxOANk1iGdi5OcUOF3HRVh64qJtPz6+U8q9rMpMDcp6Gm/
g9ydiKCyulPNr7KAw+94yX/fehYeSeKOHHgmJ+/KmIH/
KL6exZA7PY4eQfS3ZT7HCdts+UIV2YOqoHxQ4nf5z3Hel0YJyJwiIgFhsFrbJphns+rghYamlY5nIJhQ4nP
xU5OHbKTvukeJrE29h8sIB/rtjLgeNF7M49yQ8FxQAsGB9Hl1Pr6Wftw8Ts9vRt35R+HZJITorz+/
xfpZR/FdndA7k6Vx7qoOEmfi/
r7IkxUSTGRNHJk+wrirVZ2frESI6etHNs+xJce5ayPTaN1t1aApB3ys78rUd471Q87/
MIAyxbWVHSk9G5ydzSHXYeOcnFzy8mzmYlxmYhymKwWgx/
vLw3o1LbsG7fcW54YyWFnj90mTmXWhhgtlBq7cP8rVbaJcVxbufmdGqRQD/LDjp/
fi04HfS1RtN30jxo39v3vz+lVMAdOF7I+X/+mr+MTWN8/2oWLfKBhpv4fXRh0hhDy/
yNtPzyBnDa6WmNhr7zYP8u2uUsYc2kwZS2zeJY4QhyT5QwqNBBx+bxADSNs/
HrEV0pspdiL3VR6hKcLqFFoxgAWibGcF12BxJiokiIsZIYY6NzyXecu3hyeWJfU3kq6JJ54HSExIwhIHTuV
1CqAWjdOBaLcb8B+FNQEr8xZiTwAmAF3hCRZ/xyIl9dmKzmJqiyTxNRk+bRqn32Gf1rWjWO/
bnOflqCbOYOr1k8j1Xuz7Hk/
ZoTe4jMGAJC634FpRoAm9VCmyZx7D9e5NfzBDzxG2OswEvARcABYLUxZp6IbAl0LF6rnGwxdZunX5cEWVti
D6UpliF0v4JSDUVyUhz7jzW8EX828L2I7AYwxswBrgBCN/
FXTrYAG971ftTtTYKs+ImgcmKvXE4JlSmWofTpQ6kGon2zeJbuPOrXcwQj8bcD9lf4+QBwxnQbY8wdwB0AH
Tp0CExkNamcbOsy6q4tQVb1iWDwb6p/LhSSPoTWpw+lGojRaW3o3baxX7t0BiPxV/
VfImdsEHkdeB0gKyvrjOeDri6j7qoSZMVRfE2fCEK9nBIqnz6UaiCGdm/
F0O7+PUcwEv8BoOI8pWTghyDEEVgVE2TlUfzIZ6r/ROBNOUVn1ijVYJQ6Xew/
XkTTOBtJCdF+OUcwEv9qoKsxphNwEJgIXBeEOIKn8ii+KK/6kklt5ZRQLgUppersyIkShj27iKevSuW6c/
1T5g544heRUmPMPcC/cU/nfFNEvgt0HEFV1Si+ppJJTc+FeilIKVUnrRvHYrMa9vtxLn9Q5vGLyOfA5wE/
caiURHx5UVRn1ijVoFgthrZN/
Tuls+HeuVtZqJVEfHVRVGfWKNXgtE+K9+tNXEYk9CbMVGaMyQX21nP3FsDRdo3MOeckmnYAAnL4pPxw8IT8
6LMg6xlXEM9fnVCNC0I3No2rbjSuujmbuDqKSMvKG8Mi8Z8NY8waEckKdhyVaVx1F6qxaVx1o3HVjT/
istT+EqWUUg2JJn6llIowkZD4Xw92ANXQuOouVGPTuOpG46obn8fV4Gv8SimlThcJI36llFIVaOJXSqkI06
ATvzFmpDFmuzHme2PM1GDHA2CMedMYc8QYsznYsVRkjGlvjPnaGLPVGPOdMebeYMcEYIyJNcasMsZs9MT1/
4IdU0XGGKsxZr0x5rNgx1KRMSbHGPOtMWaDMWZNsOMpY4xpaoz5wBizzfNvbWAIxNTd83sq+/
rJGHNfsOMCMMbc7/
l3v9kY864xJrb2vbw4bkOt8XtW+tpBhZW+gGuDvdKXMeYC4CTwloj0CWYsFRlj2gBtRGSdMaYRsBa4MgR+X
wZIEJGTxhgbsBS4V0RWBDOuMsaYB4AsoLGIjA52PGWMMTlAloiE1A1JxphZwBIRecMYEw3Ei0h+kMMq58kb
B4FzRaS+N436KpZ2uP+99xKRImPMXOBzEZl5tsduyCP+8pW+RMQOlK30FVQishg4Fuw4KhORQyKyzvP9CWA
r7kVzgkrcTnp+tHm+QmK0YoxJBi4D3gh2LOHAGNMYuACYDiAi9lBK+h4jgF3BTvoVRAFxxpgoIB4ftbBvyI
m/qpW+gp7IwoExJgXIAFYGORSgvJyyATgC/EdEQiIu4G/
AQ4AryHFURYCvjDFrPavZhYLOQC4ww1Mee8MYkxDsoCqZCLwb7CAAROQg8CywDzgEFIjIV744dkNO/
F6t9KVOZ4xJBP4F3CciPwU7HgARcYpIX9yL9mQbY4JeIjPGjAaOiMjaYMdSjUEi0g8YBfzSU2IMtiigH/
CKiGQAp4CQuPYG4Ck9jQHeD3YsAMaYJNxVik5AWyDBGHODL47dkBN/ZK70dRY8NfR/
AW+LyIfBjqcyT1lgETAyuJEAMAgY46mlzwGGG2P+GdyQfiYiP3gejwAf4S59BtsB4ECFT2wf4H4jCBWjgHU
icjjYgXhcCOwRkVwRcQAfAuf54sANOfGXr/
TleSefCMwLckwhy3MRdTqwVUT+Gux4yhhjWhpjmnq+j8P9P8O2oAYFiMgjIpIsIim4/20tFBGfjMbOljEmw
XOBHk8p5WIg6LPIRORHYL8xpmxF2RFAUCcPVHItIVLm8dgHDDDGxHv+/xyB+9rbWWuw/
fhDdaUvY8y7wFCghTHmAPAHEZke3KgA9wj2RuBbTz0d4HeeRXOCqQ0wyzPbwgLMFZGQmjoZgloDH7lzBVHA
OyLyZXBDKvcr4G3PYGw3cHOQ4wHAGBOPewbgncGOpYyIrDTGfACsA0qB9fiofUODnc6plFKqag
251KOUUqoKmviVUirCaOJXSqkIo4lfKaUijCZ+pZSKMJr4lVIqwmjiV0qpCKOJX6l6MMb0N8Zs8qwXkODpm
R70HkJKeUNv4FKqnowxfwJigTjcPWj+J8ghKeUVTfxK1ZOn7cBqoBg4T0ScQQ5JKa9oqUep+msGJAKNcI/
8lQoLOuJXqp6MMfNwt2TuhHvZynuCHJJSXmmw3TmV8idjzE1AqYi84+kcuswYM1xEFgY7NqVqoyN+pZSKMF
rjV0qpCKOJXymlIowmfqWUijCa+JVSKsJo4ldKqQijiV8ppSKMJn6llIow/
x+pJcDx0pW97QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"degree_list = [1, 2, 3, 6]\n",
"\n",
"reg_list = []\n",
"mse_dev_list = []\n",
"score_dev_list = []\n",
"\n",
"for d in degree_list:\n",
" \n",
" # Split data\n",
" X_train, Y_train, X_dev, Y_dev, X_test, Y_test = split_data(x, y)\n",
" \n",
" # Fit model\n",
" reg = LinearRegression(fit_intercept=False)\n",
" reg.fit(X_train, Y_train)\n",
" \n",
" # Compute errors\n",
" mse_dev = get_error(x_dev, y_dev, reg, d)\n",
" mse_train = get_error(x_train, y_train, reg, d)\n",
" score_dev = reg.score(X_dev, Y_dev)\n",
" score_train = reg.score(X_train, Y_train)\n",
"\n",
" # Print the errors\n",
" print('\\ndegree = %d'%(d))\n",
" print('validation score = %.4f'%( score_dev ))\n",
" print('train score = %.4f'%( score_train ))\n",
" print('validation MSE = %.4f'%(mse_dev))\n",
" print('train MSE = %.4f'%(mse_train))\n",
" \n",
" # Print model\n",
" display(Math(latexify_predictor(reg.coef_[0])))\n",
" \n",
" # Plot results\n",
" plot_results(x_train, y_train, x_dev, y_dev, reg, d)\n",
" \n",
" # Store results\n",
" reg_list.append(reg)\n",
" mse_dev_list.append(mse_dev)\n",
" score_dev_list.append(score_dev)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"best predictor has degree (drum roll)... 2 !\n"
]
}
],
"source": [
"# Let's see who wins!\n",
"best_degree = degree_list[np.argmax(score_dev_list)]\n",
"print('best predictor has degree (drum roll)... ', best_degree, '!')"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qxSgKRbtQefw"
},
"source": [
"Clearly, the 6th degree polynomial is over-fitting and the first degree
polynomial is under-fitting. But with a large noise magnitude and so little data,
it's not clear whether a second order or third order polnomial will do better. When
I run the model, sometimes it prefers the polynomial of degree $3$. Conclusion:
there's no guarantee that we can even recover the model we used to generate the
data! That's a sobering lesson to learn from this example. Machine learning
algorithms in general do not always discover the underlying pattern. This is a good
analogy to think about even for more complex machine learning models like deep
networks.\n",
"\n",
"Before we test our model on the test set, is there something else we can try?
Can we do a better job to recover the quadratic model we used to generate the data?
Of course! This is where regularization comes in.\n",
"\n",
"Linear predictors are great but they'd be even greater if there is a way we
can get them to minimize over-fitting and generalize over the validation set
without trying all possible polynomial degrees. To achieve that, we minimize the
norm of $\\mathbf w$ (by adding it to the original square loss). The $L_1$ norm,
$|\\mathbf w|$, makes the predictor more sparse (sets small coefficients in the
polynomial to zero), while the $L_2$ norm $\\| \\mathbf w\\|$ makes the predictor
less \"wiggly\" or smoother. Adding a loss term that minimizes the norm is called
regularization.\n",
"\n",
"Let's check out what the $L_1$ norm does. In scikit-learn, the function that
does that is `Lasso`, and you can find more details about it
[here](https://sklearn.org/modules/generated/sklearn.linear_model.Lasso.html#sklear
n.linear_model.Lasso). The syntax is exactly the same as before but replacing
`LinearRegression` with `Lasso`"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"id": "YAMk4z4bUVM5"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 2\n",
"validation score = 0.8533\n",
"train score = 0.9523\n",
"validation MSE = 8.4324\n",
"train MSE = 6.9716\n"
]
},
{
"data": {
"text/latex": [
"$\\displaystyle f_\\mathbf{w}(x) = +0.990x^2$"
],
"text/plain": [
"<IPython.core.display.Math object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
AA33UlEQVR4nO3deVzUdf7A8deHAUTwAu8UBA1vURTJcr2trDU7TTu1Y81qt3Pd2nY7dlt33axf61bmuuVR
aWqWaW21baZpeSNeeZQHCWWKqHggMMy8f3/MgBwDDDDDDMz7+XjwGJjj+30H9p7PvD+f7/
tjRASllFKBI8jXASillKpdmviVUirAaOJXSqkAo4lfKaUCjCZ+pZQKMMG+DsAdLVq0kNjYWF+HoZRStebIu
SOczD2JIBgMkWGRtI1oW6VjpKSkHBeRlqXvrxOJPzY2li1btvg6DKWUqhWZOZlc9cFVRNmiiu5rYGnAZzd+
RouGLdw+jjHmB1f3a6lHKaX8zKwds7CLvcR9drEza/ssjxy/
Toz4lVIqEGTmZDJlzRSy87Kx2q0lHrParWw7ts0j59HEr5RSfmLWjllsPbqVm7vczLJrl3ntPHU28VutVjI
yMsjNzfV1KKoSYWFhtG/fnpCQEF+HopTfyszJZPn+5QjCh/s/
ZHLvyVWq51dFnU38GRkZNG7cmNjYWIwxvg5HlUNEyMrKIiMjg7i4OF+Ho5TfKl7XL6znP9bgl+Rs2kx4cn/
CExM9dq46m/hzc3M16dcBxhiaN29OZmamr0NRym8VjvYL6/pWu5Vdq9/nh3eXgtWKCQ0lZu4cjyX/
Or2qR5N+3aB/J6Uq5moVT+dDBdjy88BuR6xWcjZt9tj56nTiV0qp+mD7se1lVvHsihFsFgMWCyYkhPDk/
h47nyb+WjR06FCfXYh22WWXVfqcRo0aubz/n//8J926deO2225jxYoVTJs2DYAPP/
yQ3bt3ezROpQLR0jFL2TlhJzsn7OSjX25ADr6Ivdm/
iJv3Di0fesijZR6owzV+VTXr1q2r9mtnzpzJp59+WjQ5O2bMGMCR+EePHk337t09EqNSge7U5hTef/
V9ujbpwD8euYMmkeGQ1Nfj59ERfzWlpaXRtWtXJkyYQEJCAjfddBM5OTkArFy5ksTERHr16sXdd99NXl5ei
de++eabPProo0U///vf/+axxx4jLS2Nbt268atf/
YoePXpwxRVXcP78eQC2bdvGgAEDSEhI4Prrr+fkyZOA41PEo48+yuDBg+nWrRubN2/mhhtuID4+nj/
+8Y9F5ygczZ89e5YRI0bQt29fevXqxfLlyyv875w8eTIHDx5kzJgxvPzyy8ybN49f//
rXrFu3jhUrVjBlyhT69OnDgQMHav5LVaqeyczJZOJnEzl+/
nilz81JTeXIvfdw5cYP+dNXrxOVts9rcdWbxD/uX+vLfL29Pg2A8/k2l4+/tyUdgBPn8ss85o59+/
YxadIkduzYQZMmTZg5cya5ublMnDiRxYsXs3PnTgoKCnj99ddLvG78+PGsWLECq9VR05s7dy533XUXAN9//
z0PPvgg3377Lc2aNeP9998H4M477+Tvf/
87O3bsoFevXvzpT38qOl5oaChr1qxh8uTJXHvttbz22mvs2rWLefPmkZWVVeLcYWFhLFu2jK1bt7Jq1Soef
/
xxKtp+c9asWVx00UWsWrWqxJvVZZddxpgxY5g+fTrbtm2jU6dObv3OlAokhRdkudNqIWfTZrBasSAE2Qo8O
plbWr1J/
L4QHR3NwIEDAbj99tv5+uuv2bdvH3FxcXTu3BmACRMmsGbNmhKvi4iIYPjw4Xz88cfs3bsXq9VKr169AIiL
i6NPnz4A9OvXj7S0NLKzszl16hRDhgxxeczC0kuvXr3o0aMHbdu2pUGDBnTs2JH09PQS5xYRnnrqKRISEhg
5ciQ//vgjR48e9fwvR6kAV/qCrIpG/
fuPnWGprRUmNNQrk7mlebXGb4xpBrwB9AQEuBvYBywGYoE04GYROVnTcy2+79JyH2sYaqnw8aiI0AofL0/
pZYrGmApHz8Xde++9/
PWvf6Vr165Fo32ABg0aFH1vsViKSj0VKXxNUFBQidcHBQVRUFBQ4rkLFiwgMzOTlJQUQkJCiI2N1auflfIC
Vxdk/XHAH8s8Lye/gPvf2cqJcxFc8+osGny73eMXbJXm7RH/DOAzEekK9Ab2AE8CK0UkHljp/
LlOOnz4MOvXO8pC7777Lr/4xS/o2rUraWlp7N+/
H4C33367aKRe3CWXXEJ6ejoLFy7klltuqfA8TZs2JTIykrVr11Z4THdkZ2fTqlUrQkJCWLVqFT/
84LJrq1saN27MmTNnqv16peorVxdkuRr152xN5b1H/
0Lw3l3MGJ9Iu19cQov7Jnk16YMXE78xpgkwGHgTQETyReQUcC0w3/
m0+cB13orB27p168b8+fNJSEjgxIkT3H///YSFhTF37lzGjh1Lr169CAoKYvLkyS5ff/
PNNzNw4EAiIyMrPdf8+fOZMmUKCQkJbNu2jWeeeaZaMd92221s2bKFpKQkFixYQNeuXat1HHDMVUyfPp3Ex
ESd3FWqGHfaKuekpnJo4l30W7mE6etn0/
dseunDeI1xtzRR5QMb0weYDezGMdpPAR4GfhSRZsWed1JEymQ+Y8wkYBJATExMv9Ij0z179tCtWzevxO6Ot
LQ0Ro8eza5du6p9jNGjR/
Poo48yYsQID0bmn3z991KqNt204ib2nSy7KqdLZBeWjlkKwI+vvc7JV17BgoAliJYPPUyL+yZ5NA5jTIqIJ
JW+35s1/mCgL/
AbEdlojJlBFco6IjIbxxsHSUlJ3nl38pFTp06RnJxM7969AyLpKxVoCpN7RSIvG8CJWa9hK7AhFuPVydzSv
Jn4M4AMEdno/HkpjsR/
1BjTVkSOGGPaAse8GIPXxMbGVnu036xZM7777jsPR6SUqgvsduGr7zPp2aU9U28LIf6Q8H1cCK92jSa8lmL
wWuIXkZ+NMenGmC4isg8YgaPssxuYAExz3lZ8BZFSStUTOamp/G/hp7ye3ZSLb/
yJ79oZvm0bREiQKXfVjzd4u2XDb4AFxphQ4CBwF44J5SXGmHuAw8BYL8eglFI+l5OaStqEu+iUn88LwcH8t
aMFa1vHcuvCVT/e3HylOK8u5xSRbSKSJCIJInKdiJwUkSwRGSEi8c7bE96MQSml/
MGRr77Bnp+PBcFiL6BrWslrbDy5mXpl9MpdpZTyMptdeDmzMQWWYAiyUGCBHdEl16x4cjP1ymh3zmo6deoU
Cxcu5IEHHqjya6+++moWLlxIs2bNqnXuRo0acfbsWa/EppTyPEuQ4Zfjr+B0UjTdj+0nPLk/
H3j5Iq2K6Ii/
mk6dOsXMmTNdPmaz2Sp87SeffFLtpO+OimJTStWenNRU0l95nZzUVK7q1ZbB1w+vlStzKxNYiT99E6x9yXF
bQ08+
+SQHDhygT58+TJkyhdWrVzNs2DBuvfXWooZr1113Hf369aNHjx7Mnj276LWxsbEcP368wjbMxR06dIhLL72
U/v378/TTTxfdX16L5dKxVbUVs1Kq5nJSU0mbeBfZr73CoQl3kZOa6uuQLhARv//
q16+flLZ79+4y91Xo8EaR51uLPBfpuD28sWqvL+XQoUPSo0ePop9XrVol4eHhcvDgwaL7srKyREQkJydHev
ToIcePHxcRkQ4dOkhmZqYcOnRILBaLpKamiojI2LFj5e233y5zrmuuuUbmz58vIiKvvvqqREREiIiI1WqV7
OxsERHJzMyUTp06id1uLxNbec+rTVX+eylVx/
3wz9dkZ5dusrtLV9ndvYdkzvqXHDt3TCZ8OkEyczJrJQZgi7jIqYEz4k9bC7Z8EJvjNm2tx0+RnJxctEsVO
LYs7N27NwMGDCA9PZ3vv/+
+zGtctWEu7Ztvvilq5HbHHXcU3S9utlh293lKKc+w2uzMOO6YzJWgC22Wq9Kf35sCZ3I3dhBYQh1J3xLq+N
nDIiIiir5fvXo1X3zxBevXryc8PJyhQ4e6bH/sbhvm0i2gwf0Wy9qKWana9bdP9vJ+XhQjn3mR/qfSCE/
uz7ku7Vn+wYX+/
LW1Zt+VwEn80ckwYYVjpB87yPFzDVTWkjg7O5vIyEjCw8PZu3cvGzZsqPa5Bg4cyKJFi7j99ttZsGBBiXO4
arFcOjZPtmJWSpUvJzWVnE2biDZtuXvgxVx1zYX9qF/a8Lxb/
flrQ+CUesCR7Ac9XuOkD9C8eXMGDhxIz549mTJlSpnHR40aRUFBAQkJCTz99NMMGDCg2ueaMWMGr732Gv37
9yc7O7vo/
vJaLJeOzZOtmJVSruWkpnL4rrvJnPFPLp35LL9td2GvbXf789cWr7Vl9qSkpCTZsmVLifu0zW/
don8vVd8dfmUmp2e+ikUELBZaPvRQUZvl5zc8z7LvlxUlfoCQoBBuiL/
Bq6P+8toyB9aIXymlqigzJ5OJn02scHReYLPzSlYTCoKCkaCgMnvmbj+2vUTSh9q9Ure0wKnxK6VUNRRfiV
Pe6Pyvn+zlvdxIhj39IsnZaWX2zHWnP39t0sSvlFLlKKzNl7cSJyc1lU3LvmDdz+FMHD2Uq8f08GG07tNSj
1JKlaP43rmu9sw9fNfdtHxvHi+sm81jxSZz/
Z0mfqWUcqGylTg5mzYj+fkEiZ0QsZFfagGKP9PEr5RSLhQf7RcqHPXnFdiYnxMFISFgsZSZzPV3mvg95Lnn
nuPFF1/0+HEbNWpU4ePaiVMp76hoJc4flu3ilaMNOfLMi7R86CFi5s4hPDHRrRVA/
iCgJnczczKZsmYKLw550WeXSntaYeLX3vtKeVZ5K3EWz/
+ElOXzeWbUUIbfOLLEY+6sAPIHATXi93SDpKlTp9KlSxdGjhzJvn37iu4/cOAAo0aNol+/fgwaNIi9e/
eSnZ1NbGwsdrvjo2NOTg7R0dFYrSVHFNqCWSn/tW7FKjq/8CQT9vyXy2Y+W6LVcukVQP486g+YxO/
pP0pKSgqLFi0iNTWVDz74gM2bNxc9NmnSJF555RVSUlJ48cUXeeCBB2jatCm9e/fmq6+
+AuCjjz7iyiuvJCQkpMRxH374Ye6//342b95MmzZtiu4PCwtj2bJlbN26lVWrVvH4448jIkybNo1OnTqxbd
s2pk+fXu7zlFI1IyJsXbGSEHsBQWJHrFZyNl34/76iFUD+JmASv6f/
KGvXruX6668nPDycJk2aMGbMGMAxMl+3bh1jx46lT58+3HfffRw5cgSAcePGsXjxYgAWLVrEuHHjyhxXWzA
r5Vvl1emNMdw66TosoaFlJnT9rRdPZQIi8Xvrj+KqVbLdbqdZs2Zs27at6GvPnj0AjBkzhk8//
ZQTJ06QkpLC8OHD3T5u8dbK27Zto3Xr1pW2YK7oeUop10qXhM+kbOXjJ/
7GiU1biEpOosO8uSUmdAtfU94KIH8UEInfG3+UwYMHs2zZMs6fP8+ZM2f46KOPAGjSpAlxcXG89957gGMEv
n37dsCxQic5OZmHH36Y0aNHY7FYyhy3sAUzoC2YlaplpUvCRzasJm3iXcQuf5sj995LTmoq4YmJZfbN9bde
PJXx6qoeY0wacAawAQUikmSMiQIWA7FAGnCziJz0Zhze+KP07duXcePG0adPHzp06MCgQRc2dlmwYAH3338
/f/
nLX7BarYwfP57evXsDjnLP2LFjWb16tcvjzpgxg1tvvZUZM2Zw4403Ft1/2223cc0115CUlESfPn1ctmC+6
qqreOKJJ1w+TylVudIl4Q8X/ZNBVisWBGwF5Gza7HKjdH/
rxVMZr7Zldib+JBE5Xuy+F4ATIjLNGPMkECkiT1R0HG3LXPfp30v5u8ycTK764CrybBdaL8SnB/
HcIiFE7JiQEGLmzuFcl/Z1Zlm4P7VlvhaY7/
x+PnCdD2JQSqkSXJWEv29vWD1laImafvE5gLpywVZp3k78AnxujEkxxkxy3tdaRI4AOG9buXqhMWaSMWaLM
WZLZmaml8NUSgW6wpJwfIZw3To78RkCxsaayJ+Kavql5wD+sfUffrF5elV5+8rdgSLykzGmFfA/
Y8xed18oIrOB2eAo9XgrQKWUAked/vSWraS/dDdBBVZMaEiJlTtQ8lOBzW7jPwf/4xebp1eVV0f8IvKT8/
YYsAxIBo4aY9oCOG+PeTMGpVRgc7ccIyKsmP8Rkp8P9rIXaJVeFl4gBdjEBvj30k1XvJb4jTERxpjGhd8DV
wC7gBXABOfTJgDaU0Ap5TXutmqZveYg7+S1KLfjpqs5gEL+fsFWad4s9bQGljkvRgoGForIZ8aYzcASY8w9
wGFgrBdjUEoFsMp20ALHhirbPvqSDzPC6DT0UuImX8b5zZvLbJ/
oall4cYWjfn9uzlbIayN+ETkoIr2dXz1EZKrz/
iwRGSEi8c7bE96KoTZ5qy1zTQ0dOpTCpbBXX301p06dKve5H374Ibt37y76+ZlnnuGLL77wdohKeU1lrVpy
UlM5PPFumix8k2nr/sXUeCGib9kLtMAxB7Bzwk52TthJl8guZc7lzxdslRZQbZnri4KCAoKDq/6n+
+STTyp8/MMPP2T06NF0794dgD//+c/Vik8pf1Beq5bio/
6cTZsRaz4WBIvYKdiaAv37VXrsunbBVmkB0bKhUE5qKsf/
NbtEK9Wa8EZb5okTJzJ58mQGDRpE586d+fjjjwGYN28eY8eO5ZprruGKK67g3Llz3H333fTv35/
ExMSi9svnz59n/
PjxJCQkMG7cOM6fP1907NjYWI4fd9Qg33rrLRISEujduzd33HEH69atY8WKFUyZMoU+ffpw4MABJk6cyNKl
jn/
gK1euJDExkV69enH33XeTl5dXdMxnn322qA303r1uL9xSyqsqa9VyOtfK7lYXY1w0XavvAmbEX7gxsuTnY0
JDyyzTqqribZkLCgro27cv/fo5RgqTJk1i1qxZxMfHs3HjRh544AG+/
PLLorbMw4YNK7ctM0BaWhpfffUVBw4cYNiwYezfvx+A9evXs2PHDqKionjqqacYPnw4c+bM4dSpUyQnJzNy
5Ej+9a9/ER4ezo4dO9ixYwd9+/Ytc/xvv/
2WqVOn8s0339CiRQtOnDhBVFQUY8aMYfTo0dx0000lnp+bm8vEiRNZuXIlnTt35s477+T111/
nkUceAaBFixZs3bqVmTNn8uKLL/LGG29U+/eqlKdU1KrFarPzwDtb2XQoj/
+98joRu3eUqenXZ4GT+J0bIxdfplWTP3LxtsyAy7bMhQpHx4VtmYcNG8aiRYvK3TXr5ptvJigoiPj4eDp27
Fg0ir788suJiooC4PPPP2fFihVF8wq5ubkcPnyYNWvW8NBDDwGQkJBAQkJCmeN/
+eWX3HTTTbRo4fi4W3jM8uzbt4+4uDg6d+4MwIQJE3jttdeKEv8NN9wAQL9+/
fjggw8qPJZStaW8ckzO1lQWPfI8x/
NaMHXSGDokRcOgAbUcnW8FTOIPT+6PCQ1FrFaPfaSrrC1zaWPGjOH3v/99ldsyF/
4cERFRdJ+I8P7779OlS9lJJldxFScilT6n9PMr0qBBAwAsFgsFBQVuH1ep2paTmsrBCRNJtFpJDAmh4/2XA
dG+DqvWBUyNPzwxkZi5c8r00a4ub7VlBnjvvfew2+0cOHCAgwcPukzuV155Ja+88kpRUk51zlsMHjy4qJ3z
rl272LFjR5nXjhgxgiVLlpCVlQXAiROOhVWlWzwX6tq1K2lpaUUlp7fffpshQ4a4+ZtSyn8c+mItOLttWuy
2EhdoBZKASfyAyz7a1VW8LfONN95Ypi3zm2++Se/evenRo0eJfW/HjRvHO+
+843L3rUJdunRhyJAhXHXVVcyaNYuwsLAyz3n66aexWq0kJCTQs2fPov1577//
fs6ePUtCQgIvvPACycnJZV7bo0cP/
vCHPzBkyBB69+7NY489BsD48eOZPn06iYmJHDhwoOj5YWFhzJ07l7Fjx9KrVy+CgoKYPHly1X9pSvlY3MhB
ATmZW5pX2zJ7SiC1ZZ44caLLCda6rr7+vZT/
y0lN5fCXX2PtlUivK35BTmqqY44vACZzy2vLHDA1fqVU4MlJTeWHiXdhy8vHbgnmzFvzaNyvb71P+JXRxO9
n5s2b5+sQlKo3Tq7bgC3fcYFWkNjJ27KFxv3KLnEONHW6xl8XylRK/07KN/
IL7MzIakxBUDASFERQaODW9EursyP+sLAwsrKyaN68eZWWJqraJSJkZWW5nKBWypveWp/
GkpxIhj79IsnZaQFR03dXnU387du3JyMjA92dy/
+FhYXRvn17X4ehAkTh5O3NSUl0mtifYV1dbvJXJDMns87soespdTbxh4SEEBcX5+swlFJ+JCc1lUMT7nLuo
BXKJXPnUM7urkWK9+uvCy2VPaFO1/iVUoGpvF21UpavLHcHrfKOU7xff13ZSKWmNPErpeocV7tqfbP/
OH//ORx7cHCFF2gVf9OorF9/faWJXylVp7gape/8/Gs+/
f002jVtSMPXXuKrUW1pOutll5O5hW8aL6e87LJffyCM+jXxK6XqlNKj9CXvP4889gDjd37CI5/
N4PP0j5iZcJQ3+brMa4u/aXx84OOizdILBcqoXxO/Usr/
pG+CtS85botxtatW5jerCLbbsCBgtXL8m9Xl1uxLvGlgp8BesptsXdo+sSbq7KoepVQ9lb4J5o8BWz5YQmH
CCoh2NBt0tavWtzGG6yyCRcBmEb6NMYCU2fy89JsGQANLAz678bOAWcZZSEf8Sin/
krbWkfTF5rhNW1v0UOGuWvEZwnXr7MRnCHsusvPn8UEsHhzEn8YHsecixxtD6Zp9ZVsxBhId8Sul/
EvsIMdIv3DEH3uh5fnSMUs5nbKVtOmFa/VDWP27wbwZ8zXftbeWOVTxUX9FWzEGGk38Sin/
Ep3sKO+krXUk/
egLe0rY7cKyOSvoV+DYTAWbo6ZvHeC6H1TxxF7eVoyByOuJ3xhjAbYAP4rIaGNMFLAYiAXSgJtF5KS341BK
1SHRySUSfqEfTuSw3LShX0gI2G0UWCiq6RcKCQrhhvgbAuYq3OqojRH/
w8AeoInz5yeBlSIyzRjzpPPnJ2ohDqVUXZW+CdLWEhc7iJlTJ9LkwCXkbN7M1PwP2dMkvcRTA7V8UxVeTfz
GmPbAL4GpwGPOu68Fhjq/nw+sRhO/Uqo86ZsomDuaILuVoOAGtJmwAvomE943kZeZ5Ovo6iRvr+r5B/
A7oPhUemsROQLgvK24g5JSKqBtX/
sx2KwEYUdKrfJR1eO1xG+MGQ0cE5GUar5+kjFmizFmi7ZeViowrdj+E3/
aFYktKAQxFkypVT6qerxZ6hkIjDHGXA2EAU2MMe8AR40xbUXkiDGmLXDM1YtFZDYwGxybrXsxTqWUH1q55y
iPLd5Gvw4D4IrlmIx1ZVb5qOrx2ohfRH4vIu1FJBYYD3wpIrcDK4AJzqdNAJZ7KwalVN11/
GwePds15Y0JSTSIuxQGPa5J30N8sY5/
GrDEGHMPcBgY64MYlFJ+KtdqIyzEwrj+MdzYtz3BFm0w4Gm18hsVkdUiMtr5fZaIjBCReOftidqIQSnl/
3ZknGLQC6tYd8DRZkGTvnfob1Up5Rd2/3SaO+dsokFwEHEtInwdTr2miV8p5XPfHz3DHW9uJCzYwsJ7B9C2
aUNfh1SvaeJXSvnUz9m53PrGRoKCDAt/
dQkxzcN9HVK9p03alFI+1bJxA67rcxE3J0XTsWUjX4cTEDTxK6V8IuNkDsYY2jVryB9+2d3X4QQULfUopWr
dT6fOc8u/
N3Df21sQ0esza5uO+JVStepItiPpnzpn5dVb+mKM8XVIAUcTv1Kq1vycncstszeQdTaft+5Jpnd0M1+HFJC
01KOUck/6Jlj7kuO2ms9//j+7Oe5M+n1jIqt/
bFUjOuJXSlUufRPMH3NhH9wJKyrum1PO86de15P0E+fp1b5p9Y+takxH/EqpyqWtdSRmsTl
uK+uJX+z5Ysvnv/
9ZSq7VRrPw0JJJvzrHVjWmiV8pVbnYQY7RuLE4bivrie98vhgLeWLhrSPRpGWd88yxVY1pqUcpVbnoZEcJJ
m3thZ74zn1wXfbIj07m2A1LWLZsMWvzu/Lbe26na5smFx4v/
drSx1ZepYlfKeWe6OQLSbmSuvzhrBxuWVHAaesY3r73EvoUX71T3ms14dcaLfUopaqukrr8ufwCQoODePdX
AxxJv/iqHa3p+5yO+JVSVVdYly8ctccOgvRNnPtuNeHxQ+gWcwn/
e3Swo59+6RH+qGllX6tqlSZ+pVTVla7LA/Z519DAlo/tmxcJvutjggtLN6VH+OeztKbvY5r4lVLVU6wu//
PHU2lhyycYOyIFjqRemNBdfTrQmr5PaeJXStVIyg8neHlzE94wwViMDVO6fKOrdvyOJn6lVLWdPJfPxDmba
dG4F2eu/oCwrE3lLu/UhO8/
Kk38xphfAwtE5GQtxKOUqkMiI0KZPjaBvh0iadk4DNCJ2rrAneWcbYDNxpglxphRRnuoKhXwPtr+E1/
uPQrAqJ5tadU4zMcRqaqoNPGLyB+BeOBNYCLwvTHmr8aYTl6OTSnlhxZuPMxDi1KZ+02abqJSR7l1AZc4/
ro/O78KgEhgqTHmBS/GppTytBq2P5711QGeWraTIZ1bMvuOJN1EpY5yp8b/
EDABOA68AUwREasxJgj4HvhdOa8LA9YADZznWSoizxpjooDFQCyQBtys8wdK1YIatD8WEab/
dx8zVx9gdEJb/u/mPoQG64X/
dZU7f7kWwA0icqWIvCciVgARsQOjK3hdHjBcRHoDfYBRxpgBwJPAShGJB1Y6f1ZKeVsNWyWczrVyS3I0M8Y
natKv4yod8YvIMxU8tqeCxwQ46/wxxPklwLXAUOf984HVwBNuRauUqj5XF1JVIq/
ARuaZPNpHhvPnMT0xBi3v1ANeXcdvjLEAKcDFwGsistEY01pEjgCIyBFjTKtyXjsJmAQQExPjzTCVCgxVvJ
DqbF4Bk99O4dDxc/zvscGEh+plP/WFV/+SImID+hhjmgHLjDE9q/
Da2cBsgKSkJF06oJQnuHkh1fGzedw1dzO7j5xm2g29NOnXM7Xy1xSRU8aY1cAo4Kgxpq1ztN8WOFYbMSgVk
CraLKW8l5zI4c45mziSfZ7Zd/RjRLfWXg5S1TavzdAYY1o6R/
oYYxoCI4G9wAocq4Rw3i73VgxKBbTCVTxfTnXcurmE8+
+f7SXrbB4L7r1Ek3495c0Rf1tgvrPOHwQsEZGPjTHrgSXGmHuAw8BYL8agVOBytYqnglG/
iGCMYer1vcg8k8vFrRrXYrCqNnkt8YvIDiDRxf1ZwAhvnVcp5VSFVTwrtv/
Eok2HmTOxP00bhtC0YUgtBqpqm87YKFVfubGKR0T499qD/
PWTvdzW7mdYuxbih2gnzXpOE79S9VkFq3hsduH5j3czb10av44/weNH/oBZmw/
rXqrSVb2q7tHEr1SAKkz6vxoUx2ON92IyXFzVq5un1Eua+JUKUHdc2oFOLSO449JYSD8La4rNBzRsXu2+Ps
r/acMNpQLIgcyz/N/
n+xAROrVs5Ej6cGE+YPgfHLfns2rU10f5Nx3xKxUgNhzM4r63UwgOMtxySQxtmzYs+YTS8wFV7Ouj6g5N/
EoFgPdTMnjygx3ERIUzd2Jy2aRfmm6QXq9p4leqnntt1X6m/
3cfl3Vqzuu39aNpuJtr9HWD9HpLE79S9Vz3tk0Y3z+aP1/bU/voK0ATv1L10rHTuWw8dIJrel/
EsK6tGNbVZfdzFaA08StVz+z6MZtfvbWFM7kFDLy4BVERob4OSfkZ/
dynVD3y6c4jjJ21HoBFkwZUnvRruPm6qpt0xK9UbatGj3x3FE7i9oluxuw7+9GqcVjlcehFWgFJE79StcmL
ydYSZLiuz0VMuzGBsBBL5S+oYttmVX9o4leqNnk42WaczOHHk+e5pGNz7hvcEajCZujV2Hxd1Q+a+JWqTR5
MthsOZvHggq00DLWw6rdDCbFUccpOL9IKWJr4lapNrpJtFWv+IsL8dWk8/589xDYPZ/adSReSflXnD/
QirYCkiV+p2lY82Vax5m+12fn9BztZmpLByG6teXlcbxqHhVTrWCpw6XJOpXzJVc2/
AsFBBrtdeHhEPLPv6Hch6VfjWCpw6YhfKV9ys+b/
zf7jtG4SxsWtGvHSzb1dT+DqZK1ykyZ+pXypkglWu12YteYAL/53H1f2aMPrt/
crf9WOTtYqN2niV8rXyplgzT5v5fEl2/
liz1F+mdCWF25MqPaxlCpOE79Sfij9RA63v7mRH0+e55nR3blrYKz76/
OVqoTXJneNMdHGmFXGmD3GmG+NMQ87748yxvzPGPO98zbSWzEoVVe1bNyA+FaNWTRpAHf/
Ik6TvvIob67qKQAeF5FuwADgQWNMd+BJYKWIxAMrnT8rFfDO59v426d7yD5vJSzEwhsTkkiy7NcmasrjvFb
qEZEjwBHn92eMMXuAdsC1wFDn0+YDq4EnvBWHUh7nhSZr3x89w4MLt/
L9sbP0ateU0QkX6bp85TW1UuM3xsQCicBGoLXzTQEROWKMcblDhDFmEjAJICYmpjbCVKpyXkjGS1MyePrDX
YSHWnjr7mQGxbd0POBOXx8vdfpU9ZvXE78xphHwPvCIiJx2t1YpIrOB2QBJSUnivQiVqgIPN1n795qDTP1k
DwM6RjFjfCKtmxRrpVzZunz9RKCqyauJ3xgTgiPpLxCRD5x3HzXGtHWO9tsCx7wZg1Ie5SoZV2PULSIYYxj
T5yLybXYmD+mEJajUoKiydfnaVllVk9cSv3EM7d8E9ojI/
xV7aAUwAZjmvF3urRiU8rjSyRiqNOoubLC25vvjvHFnEq2bhPHgsIsrPl95x9MrdVU1eXPEPxC4A9hpjNnm
vO8pHAl/iTHmHuAwMNaLMSjlecWT8dqX3B51Z53NY8rSHXy59xjDu7Yix2qjUQMX/
wtW9Ami9GN6pa6qBm+u6vkaKK+gP8Jb51WqVrkz6k7fxKEtn/
H8ruZ8ndeR567pzoTLyrkgq6K6fXmPacJXVaRX7ipVE5WNutM3IfPHEF2Qx0yCOXLjEuIS48o/
XkV1e63pKw/RxK9UTZUz6t5/7AyxB9cQbMsnGDsWYyPu7FZgWPnHqugThNb0lYdo4lfKw+x2Yc43h3jhv/
v4U2IstziTtXEnWVf0CUJr+spDNPEr5UE/njrPb5dsZ/
3BLEZ2a83lVw6H5BjPbYeoNX3lAZr4lfKQL3Yf5dHF27CL8MKNCYxNau+YwG2kyVr5F038SnlITPNw+sQ0Y
+p1vYhpHu7rcJQql+65q5Q70jeV6ZIpIqzY/hPPrfgWgM6tG/
P2PZdo0ld+T0f8SlXGxfr5zGa9efrDXXz27c/0iW5GTn4B4aH6v5OqG/
RfqlKVKbZ+Xmz57F73H27fd4pz+TaevKorvxrUsWSfHe2YqfycJn6lKlNi/XwIf9vTgthWEUy/
KYGLWzUu+VztmKnqAE38SlXC3q4/
G34xhwFBewiKG8Szod3o2LJR2W6aoFfXqjpBJ3eVqsCBzLOMn72BWz8TPo+6FaKTiW/
d2HXShwufDoxFr65VfktH/Eq5kFdgY9bqg7y2aj9hIUG8cFMCV/ZoU/
kL9epaVQdo4lfKhfvf2cqXe49xTe+LeHp0N1o1Dqv8RYX06lrl5zTxq/
rBAytpss7m0TDUQnhoMJMGd+SOSzswrIvLLaGVqtM08au6r4Yraex2YfGWdKZ9upfbLonhd6O6MqBjcy8Gr
JRvaeJXdV8NVtLszMjm6eW72JZ+iuS4KK5LbOflYJXyPU38qu6rTp/
69E2kfPURU3dHkRHei5fG9uaGvu1c74qlVD2jiV/VfVVYSWOzC7mH1hPx7g30teWzuEEweeM/
pNHF7WsxYKV8SxO/qh/cWEmz8WAWz320mwcsy7nGlo8RGyEGQo6shwbBJd84tO2Cqsc08at6L/1EDn/
7dA+f7PyZi5qGETVgOHzzzoXSUMPmJSeHR02Dz57Utguq3tLEr+qOaozCP//
2Z379bioWY3js8s5MGtyRsBALXFysNFR6cnjPcm27oOo1TfzKfxVP9OD2ks0Cm50T5/Jp1SSMxJhIru/
Tjkcuj6dt04YXnlS6NFR8crjbtfDDet3UXNVbXkv8xpg5wGjgmIj0dN4XBSwGYoE04GYROemtGJSfqcqIvf
Ta/D63VDoKFxG+2HOMaZ/uoUnDED64/
zJaNm7A329KqPhcriaHW3fXGr+qt7w54p8HvAq8Vey+J4GVIjLNGPOk8+cnvBiD8hdVvciqdPkFqXDJ5tbD
J5n2yV42pZ2gY8sIJg/
pVLX4Sn8C0LYLqh7zWuIXkTXGmNhSd18LDHV+Px9YjSb+wFDVi6xKr83vfavjy8Uo/
LNdPzP5nRRaNGrA1Ot7Mi4pmmCLNp5Vqjy1XeNvLSJHAETkiDGm3EYoxphJwCSAmJiYWgpPVaq6yxyrepFV
eWvznbfpJ3I4kp1LclwUQ7u05A9Xd+PWS2KIaFDOP2ldnqlUESMi3ju4Y8T/cbEa/
ykRaVbs8ZMiElnZcZKSkmTLli1ei1O5qaa7S5VOvtVIxkdP5/
LKl9+zeHM6MVHhfPHYENdX21ZzYlip+sQYkyIiSaXvr+0R/
1FjTFvnaL8tcKyWz69qwp1yTUXJvHjdvIpvIsfO5PL66gMs2HgYu10Y1z+a3wyPLz/
pV3FiWKlAUtuJfwUwAZjmvF1ey+dXNVFZuaYqybyKNf+tP5zkrfU/
cENiO34zPJ6Y5uHlx1nFiWGlAo03l3O+i2Mit4UxJgN4FkfCX2KMuQc4DIz11vmVF1TWE6cqybySN5Gfs3O
Z9dUBWjcJ4/6hnbiiextW/
3Yo0VEVJPzyjl3BxLBSgcibq3puKeehEd46p6oFFS1zrMoEbjlvIoezcnj9qwO8n5KBXYQJl8UCEBRk3Ev6
FRxbE75SDl6d3PUUndytQ2qwembO14f4y392ExwUxNik9kwe0sn9ZK+UKsNfJndVfVeFC59EhE2HTnBRs4Z
ER4UzMOwAb3RcQ59Bo4nq2qvyA+gSTaWqRRO/qnUFNjufffsz/
15zkO0Z2dw1MJZn+5yjy2e308WWD0vnV77ksqZLS5UKYJr4Va16e30as746yI+nzhPXIoK/XNeTG/
u2h43/qNqSyxpst6hUoNPEr7wu/UQO7SMbYoxh95EztGvWkGev6c7Ibq0JCnKuw6/
qlb3V2W5RKQXo5K7yUp3cbhe++i6TeevS+Oq7TN6//
zL6dYjEarMTUl4fnarGojV+pSqkk7uBxN2E6IU6eU5+AW+t/4EFG38g/
cR5WjVuwKMjO9PBecFVuUkfqt4RUztoKlUtmvjrGy9ePVseEeHo6TzaNA0jyBj+9dUBOrduzO+u7MqVPdoQ
GqydMpXyJ5r4K1IXSwkevHq2MsdO5/
L+1h9ZsiUdEeHLx4cSFmLhy8eHEhkR6vj9rX+3bv3+lAoAmviLqw8dHT1w9WxlUn44yeur97NqXyY2u5DUI
ZJbkmOwixCEuZD06+LvT6kAENiJv6JEX1c7OlY1mbtRJxcRtmdkc1HTMFo1CePY6Vy2Z2Tzq0EduTmpPR1b
Nir7Il1uqZTfCtzEX1nr3rrc0bEmk57F3gwPNezB8m0/
snzbTxw6fo5HR3bm4ZHxXN69NZd3b13xLle63FIpvxW4ib+y1r31qaNjFVf5iC2ffLHweN5TpNKZAXHNmTy
kI6N6tgVwb1vDapaRlFLeF7iJ393WvXU9YbmqtUOJ/870Ezl8uusIHXYv5UpbPkZsBAO/
736c2H5JtMz6BtoMgoZV3AJTl1sq5ZcCN/
F7u3Wvv6wIKv3JZvtC2LYIseVTYIJ5IuIvfJDZDoCxreO5whKKseVjsYTSv1s8fDBWJ2iVqmcCN/
GD90ak/
rSixfnJRmz52INCsFrthDlH9cYu9JNv6Xb1SK7s0caxq1V67wtvWDpBq1S9FNiJ31v8JGFmnMxhzU9t+KHV
3wnLWMfa3K48ENGJkZYliC0fS3AIt427DaI7XnhR6TdDnaBVqt7RxO8pxUs7PlrRcjrXSnaOleiocI6dzuU
Xf18FQLtm0Qzr+2se7NKKSzs1h24rMO6UoXSCVql6qX43aautOrsbE6jecC6vgC0/
nGTDwSzWH8hiR8YpRnZrzew7HT2ZlmxJJzG6GRe3aoQxxisxKKX8V+A1aavNOrur0s6gxz1+vmNncjmYeY4
BHZsDcPubG0k9fIrgIEPv6GY8OOxihnZpWfT8m5OiPXp+pVT9UH8Tf23W2b1U2tl/
7AxrvjvOtvRTbD18koyT52kQHMSueyMJSf+GP/
buyfnLL6Fvh2aEh9bfP6VSyrPqb7bwdDKuqGxUw1p49nkr+34+w+6fstn102me6X2WJkc3sC0rlj9vCKNNk
zD6dmjGxMti+UXYQYLfuQ5s+fQr/CQTqrV3pZT76m/i9+TEpDs1fDeWhp7LK+Bg5jnaRTYkKiKUb/
Yf53dLd/DjqfNFzxkafohGe58Hu5UbLSEMn7iUqK7F3rTWLvOLFUNF/
OV6BaWU23yS+I0xo4AZgAV4Q0SmeeVEnlqnX85FUK7mD7LPWwFo2jCEn7NzmbHye37IOkfEsa3E52xjg70b
t900lhv7tadl4wb07RDJbQNi6NamCV3bNqbN9pmYVVYQG8YGUZmboHji96ceOP50vYJSym21nviNMRbgNeB
yIAPYbIxZISK7azsWt8UOQpzJVoJCOHu+gCbONwJbQR7L3n+XN8jlx1PnOZNbwJQru/
DgsIsxBj7bdYQrmx7mzwXPERxiRSyhZEckAe3p3Loxr9ySWPJccYNgTQWJ3Z+WWPrJ9QpKqarxxYg/
GdgvIgcBjDGLgGsBryT+DQezOJtbgAA2u2C12WnRqIFjPTvwzoYfOHkunxyrjZy8As7m2ejZrgl3DYwDYMj
0VRw7nUe3gicYELSHDfZuXJHXhsmWpYgtH6tYWG/
rRvsW4STHRdE+siGXdmwBQOsmYaQ+cwWsfQm+LADsYLeWHcVDyZJJ6cReupziLz1w/OnTh1LKbb5I/
O2A9GI/ZwCXlH6SMWYSMAkgJqaKzcGK+eOHu9h/
7GyJ+wZ3blmU+Geu2s9P2bmEWoIIb2AhIjSYxmEXfi3DurQiOMgQGXExzSNuJLFRAzq1jIDcTpi0tYTFDuK
lypJwZQnSVclk0OPlP+YPSR/
869OHUsptvkj8rq4kKnMVmYjMBmaD4wKu6p7stVv7kldgI8gYjIFQSxCNiiX2/
z02hNDgoHI3AX9uTI9yjlyFUberBFl8FF9RycTfyyn+8ulDKeU2XyT+DKD4lUXtgZ+8dbIubRpX+HhEg1r6
FRRPkKVH8aOmlf+JwJ1yiq6sUUpVgS8S/2Yg3hgTB/wIjAdu9UEcvlN6FH8+q/ySSWXlFH8uBSml/
FKtJ34RKTDG/
Br4L47lnHNE5NvajsOnXI3iKyqZVPSYv5eClFJ+xyfr+EXkE+CTWj+xv5REPDkpqitrlFJVVH+v3C3N30oi
npoU1ZU1SqkqqhNtmY0xmcAP1Xx5C+B4u8amTZtGph2AgBw9Kz/9eEZ+9liQ1YzLh+cvj7/
GBf4bm8ZVNRpX1dQkrg4i0rL0nXUi8deEMWaLq37UvqZxVZ2/
xqZxVY3GVTXeiMv14nWllFL1liZ+pZQKMIGQ+Gf7OoByaFxV56+xaVxVo3FVjcfjqvc1fqWUUiUFwohfKaV
UMZr4lVIqwNTrxG+MGWWM2WeM2W+MedLX8QAYY+YYY44ZY3b5OpbijDHRxphVxpg9xphvjTEP+zomAGNMmD
FmkzFmuzOuP/k6puKMMRZjTKox5mNfx1KcMSbNGLPTGLPNGLPF1/EUMsY0M8YsNcbsdf5bu9QPYuri/
D0Vfp02xjzi67gAjDGPOv/
d7zLGvGuMCfPIcetrjd+509d3FNvpC7jF1zt9GWMGA2eBt0Skpy9jKc4Y0xZoKyJbjTGNgRTgOj/
4fRkgQkTOGmNCgK+Bh0Vkgy/
jKmSMeQxIApqIyGhfx1PIGJMGJImIX12QZIyZD6wVkTeMMaFAuIic8nFYRZx540fgEhGp7kWjnoqlHY5/79
1F5LwxZgnwiYjMq+mx6/OIv2inLxHJBwp3+vIpEVkDnPB1HKWJyBER2er8/gywB8emOT4lDoU76YQ4v/
xitGKMaQ/
8EnjD17HUBcaYJsBg4E0AEcn3p6TvNAI44OukX0ww0NAYEwyE46EW9vU58bva6cvniawuMMbEAonARh+HAh
SVU7YBx4D/iYhfxAX8A/
gdYPdxHK4I8LkxJsW5m50/6AhkAnOd5bE3jDERvg6qlPHAu74OAkBEfgReBA4DR4BsEfncE8euz4nfrZ2+V
EnGmEbA+8AjInLa1/
EAiIhNRPrg2LQn2Rjj8xKZMWY0cExEUnwdSzkGikhf4CrgQWeJ0deCgb7A6yKSCJwD/
GLuDcBZehoDvOfrWACMMZE4qhRxwEVAhDHmdk8cuz4n/
lrd6as+cNbQ3wcWiMgHvo6nNGdZYDUwyreRADAQGOOspS8Chhtj3vFtSBeIyE/O22PAMhylT1/
LADKKfWJbiuONwF9cBWwVkaO+DsRpJHBIRDJFxAp8AFzmiQPX58RftNOX8518PLDCxzH5Leck6pvAHhH5P1
/HU8gY09IY08z5fUMc/
zPs9WlQgIj8XkTai0gsjn9bX4qIR0ZjNWWMiXBO0OMspVwB+HwVmYj8DKQbY7o47xoB+HTxQCm34CdlHqfD
wABjTLjz/
88ROObeaqze9uP3152+jDHvAkOBFsaYDOBZEXnTt1EBjhHsHcBOZz0d4Cnnpjm+1BaY71xtEQQsERG/
Wjrph1oDyxy5gmBgoYh85tuQivwGWOAcjB0E7vJxPAAYY8JxrAC8z9exFBKRjcaYpcBWoABIxUPtG+rtck6
llFKu1edSj1JKKRc08SulVIDRxK+UUgFGE79SSgUYTfxKKRVgNPErpVSA0cSvlFIBRhO/
UtVgjOlvjNnh3C8gwtkz3ec9hJRyh17ApVQ1GWP+AoQBDXH0oPmbj0NSyi2a+JWqJmfbgc1ALnCZiNh8HJJ
SbtFSj1LVFwU0AhrjGPkrVSfoiF+pajLGrMDRkjkOx7aVv/
ZxSEq5pd5251TKm4wxdwIFIrLQ2Tl0nTFmuIh86evYlKqMjviVUirAaI1fKaUCjCZ+pZQKMJr4lVIqwGjiV
0qpAKOJXymlAowmfqWUCjCa+JVSKsD8P3wnP0cl6k7mAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.linear_model import Lasso\n",
"\n",
"d = 2\n",
"\n",
"# Split data\n",
"X_train, Y_train, X_dev, Y_dev, X_test, Y_test = split_data(x, y)\n",
"\n",
"# Fit model\n",
"reg = Lasso(fit_intercept=False)\n",
"reg.fit(X_train, Y_train)\n",
"\n",
"# Compute errors\n",
"mse_dev = get_error(x_dev, y_dev, reg, d)\n",
"mse_train = get_error(x_train, y_train, reg, d)\n",
"score_dev = reg.score(X_dev, Y_dev)\n",
"score_train = reg.score(X_train, Y_train)\n",
"\n",
"# Print the errors\n",
"print('\\ndegree = %d'%(d))\n",
"print('validation score = %.4f'%( score_dev ))\n",
"print('train score = %.4f'%( score_train ))\n",
"print('validation MSE = %.4f'%(mse_dev))\n",
"print('train MSE = %.4f'%(mse_train))\n",
"\n",
"# Print model\n",
"display(Math(latexify_predictor(reg.coef_)))\n",
"\n",
"# Plot results\n",
"plot_results(x_train, y_train, x_dev, y_dev, reg, d)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Beautiful! Lasso recovered our model almost perfectly. The motivation for
using sparse regularization is Occam's razor: the simplest explanation is usually
the right one. The algorithm found that it only needs one term to fit the data, so
it set the other terms to zero. This is the power of adding the norm $|\\mathbf w|$
to the loss. There's something I ignored when I use Lasso: how of the $L_1$ norm to
include. You will see in the documentation that it is set to $1.0$ by default, but
in my experience, you'll want to include much less than that to avoid making the
model too simple. That's a hyperparameter that you can also loop over and see what
works best for your model.\n",
"\n",
"Finally, we can test our model on the test set:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"degree = 2\n",
"validation score = 0.8533\n",
"train score = 0.9523\n",
"validation MSE = 8.4324\n",
"train MSE = 6.9716\n"
]
},
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIH
ZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYA
ABAkklEQVR4nO3dd3yUVbrA8d+Zkk5vAgESIBQhjUDo3YYiitJUEGwIXlbXvbKIBXdddfFaFmybZVVARUAR
EcuyLG1pCgQCCIROSEIQEiChpE05949JhiGNADOZlOf7+fCZzDtvOZPo+7ynPUdprRFCCCEADN4ugBBCiMp
DgoIQQggnCQpCCCGcJCgIIYRwkqAghBDCyeTtAtyIhg0b6pCQEG8XQwghqpTt27dnaK0blfRZlQ4KISEhxM
fHe7sYQghRpSiljpf2mTQfCSGEcJKgIIQQwkmCghBCCKcq3adQEovFQmpqKrm5ud4uiigHPz8/
goODMZvN3i6KEAIPBgWl1KfAUOC01rpzwbb6wGIgBEgCRmmtzxV8Nh14DLABT2ut/
309101NTaVWrVqEhISglLrh7yE8R2vNmTNnSE1NJTQ01NvFEULg2eajecAdRbY9D6zWWocBqwveo5S6GRgD
dCo45iOllPF6Lpqbm0uDBg0kIFQBSikaNGggtTohrtGlrDy+fWc7l7Ly3H5ujwUFrfV64GyRzfcA8wt+ng/
c67J9kdY6T2t9DDgMxF7vtSUgVB3ytxLi2sX/eIy0w1nE/
3jM7eeu6D6FJlrrkwBa65NKqcYF25sDv7jsl1qwrRil1ERgIkDLli09WFQhhKhc4qasw2a1Y7emYbeksntN
MHvWp2E0GZj0wQC3XKOyjD4q6XGxxIUetNZztNZdtdZdGzUqcUJelTNgwACvTcLr1avXVfcJCgoqcft7771
Hx44deeihh1i+fDkzZ84EYNmyZezbt8+t5RRCwLjXe9IsLJf8C0uw5m4i/
8ISmrfLZdzrPd12jYquKZxSSjUtqCU0BU4XbE8FWrjsFwykVXDZaqTNmzdf97EfffQR//
rXv5ydxMOGDQMcQWHo0KHcfPPNbimjEDXVpaw8Vn68h9se70xgHV8C6/iSe+EYjvE4GrCRe/
4YgXV83XbNiq4pLAfGF/
w8HvjOZfsYpZSvUioUCAO2VnDZ3CIpKYkOHTowfvx4IiIiGDFiBNnZ2QCsXr2a6OhowsPDefTRR8nLu7KT6
JNPPuHZZ591vv/nP//JH/
7wB5KSkujYsSNPPPEEnTp14rbbbiMnJweAnTt30qNHDyIiIhg+fDjnzp0DHLWPZ599ln79+tGxY0e2bdvGf
ffdR1hYGC+99JLzGoW1gIsXLzJ48GC6dOlCeHg43333HWWZNGkSR48eZdiwYfztb39j3rx5TJkyhc2bN7N8
+XKmTp1KVFQUR44cufFfqhA1VNG+g6wcC0ez6qEMJpQyoAwmzP6t3HpN5anlOJVSC4EBQEPgFPAKsAz4Cmg
JJAMjtdZnC/Z/EXgUsAK/11r/62rX6Nq1qy7a7JKYmEjHjh2d70f/
4+dixw2NaMq4niHk5NuYMLd47BkRE8zIri04eymfyV9sv+KzxU+WXU1LSkoiNDSUjRs30rt3bx599FFuvvl
mpkyZQlhYGKtXr6Zdu3Y8/PDDdOnShd///vcMGDCAt99+m44dOxIREcH+/fsxm8306tWLf/
zjH9SqVYu2bdsSHx9PVFQUo0aNYtiwYYwdO5aIiAjef/99+vfvz4wZMzh//jyzZs1iwIABdO/
enTfffJPZs2fz5ptvsn37durXr0+bNm3YtWsXDRo0ICgoiIsXL2K1WsnOzqZ27dpkZGTQo0cPDh06hFLKuU
9RhbmnGjZsyLx584iPj+eDDz5gwoQJDB06lBEjRpT5uyrtbyZETVfYd+DKbk3DZknl+3qNeWF4J4LOHqdFp
3Catbv2/3eUUtu11l1L+syTo48e0Fo31VqbtdbBWutPtNZntNaDtdZhBa9nXfZ/
XWvdRmvdvjwBoTJr0aIFvXv3BmDs2LFs3LiRAwcOEBoaSrt27QAYP34869evv+K4wMBABg0axA8//MD+/
fuxWCyEh4cDEBoaSlRUFAAxMTEkJSWRlZVFZmYm/fv3L/
Gchc054eHhdOrUiaZNm+Lr60vr1q1JSUm54tpaa1544QUiIiK45ZZbOHHiBKdOnXL/
L0cIcVXjXu9JWLcmmMyOW7TiN/IvLsGWu4k7Ty2nY9PadB8+6roCwtVUuxnNRZX1ZO/vYyzz8/
qBPletGZSk6DBLpRTlrZE9/
vjjvPHGG3To0IFHHnnEud3X93KbodFodDYflaXwGIPBcMXxBoMBq9V6xb4LFiwgPT2d7du3YzabCQkJkfkD
QnhJYB1ffPyMWAtqC5acZNAF/Qh2G1+//
h2+tU65bcSRq8oy+qhaSU5O5uefHc1WCxcupE+fPnTo0IGkpCQOHz4MwOeff+58wnfVvXt3UlJS+PLLL3ng
gQfKvE6dOnWoV68eGzZsKPOc5ZGVlUXjxo0xm82sXbuW48dLzax7VbVq1eLChQvXfbwQAnIu5NO5X3Pufjo
Sa0ALwIhjoKaRVpERbh1x5EqCggd07NiR+fPnExERwdmzZ5k8eTJ+fn7MnTuXkSNHEh4ejsFgYNKkSSUeP2
rUKHr37k29evWueq358+czdepUIiIi2LlzJzNmzLiuMj/
00EPEx8fTtWtXFixYQIcOHa7rPABjxozhrbfeIjo6WjqahbhOQyZFEBZj5+SB1bTrWB+fWiMwB/
bBp9YI6t3U2q0jjlx5rKO5IpSno7miJSUlMXToUPbs2XPd5xg6dCjPPvssgwcPdmPJKi9v/
82EqIxS9yey+NUXUHYbKCPt+0yi+z292LshjeysPIZMirjuc5fV0Vzt+xSqkszMTGJjY4mMjKwxAUEIUbJF
y9eibVYMaJSChs2yaBhci/
4PtPfodSUouFlISMh11xLq1q3LwYMH3VwiIURV8+PukyxJ82WE0YTSNowmEy06hVfItSUoCCFEJbJpczyfL
1hB+xbtGPHka5zav/e65yNcDwkKQghRSaQdTGTz+6/R1W7DlLUDn/tep/
vwURVaBhl9JIQQlUTK3l8x2G0oNDaLhZS9v1Z4GSQoCCFEJfDR/
6xl64/5uM5H2PpjPnFT1lVoOSQouFlmZiYfffTRdR175513kpmZed3XLi3FdaEbKZsQwnM+XbqWDdaNmJr5
419vFCa/3vjXG0WHXtEem6RWGgkKblbWjddms5V57E8//UTdunU9UCoHCQpCVD4r124h/
avZxGRuJefQF9isdnxr90Crm/DxM3psklppJCgApGyFDe84Xm/Q888/
z5EjR4iKimLq1KmsW7eOgQMH8uCDDzqT2917773ExMTQqVMn5syZ4zw2JCSEjIyMMlNluzp27Bg9e/
akW7duvPzyy87tpaXBLlq2a02XLYRwr+Qz2Xy2dBVG7ehH0HYrjVqcZ8S0GDr3a072+fyKL5TWusr+i4mJ0
UXt27ev2LYyJW/
R+i9NtP5TPcdr8pZrO76IY8eO6U6dOjnfr127VgcEBOijR486t505c0ZrrXV2drbu1KmTzsjI0Fpr3apVK5
2enq6PHTumjUajTkhI0FprPXLkSP35558Xu9bdd9+t58+fr7XW+oMPPtCBgYFaa60tFovOysrSWmudnp6u2
7Rpo+12e7GylbZfRbvmv5kQ1UDq/n363fF/1bMm/E2/Peoe/faoofrtUffo9x77XP/
9f9Z69NpAvC7lvipDUpM2gC3fkYHQlu943yLWrZeIjY11rk4GjmUsv/
32WwBSUlI4dOgQDRo0uOKYklJlF7Vp0ya+
+eYbAMaNG8e0adOAy2mw169fj8FgKDUNdmn73XTTTe742kKIUqQdTGTJay9it1iwKyM+tQZit+Rg9m9JWGw
kve5v67WySVAI6QtGH0dAMPo43rtZYGCg8+d169axatUqfv75ZwICAhgwYECJKarLmyq7aJpuKH8abEmXLY
R3bNm8FZvFClqDtmG35uBbuwc2q90r/
QiupE+hRSyMXw6DXnS83mAt4Wppo7OysqhXrx4BAQHs37+fX3755bqv1bt3bxYtWgQ4bvCu1ygpDXbRsrkz
XbYQony+2pbCmzutaGUAFCgjbbtFe7cfwYXUFMARCNzUZNSgQQN69+5N586dGTJkCHfdddcVn99xxx3ExcU
RERFB+/bt6dGjx3Vfa/bs2Tz44IPMnj2b+++/
37n9oYce4u6776Zr165ERUU502AXLdu0adNK3E8IcW0uZeWx8uM93PZ451Kf8tMOJrJ54xbSNhsZZwrFHjg
CuyUVgzmYpF/NpCRu98iiOddKUmcLr5O/majq/
vvlfvZsSKNz32b0f7D4w1XawUS+evVFLBYLWhlpHfM4Z5KDsFrsmMwGWkc3otf9bSus2UhSZwshhAfETVmH
rWDJTIA969PYsz4No8lwxVN/
0p7dWCwWDGhQdiyXjmO1dsRoNmCtBP0IrqRPQQghrtO413sS1q0JJrPjVmoyG2gX26TYLOSQzhEYTSZQBkw
mEz7+rejcr3ml6UdwJTUFIYS4ToF1fPHxM2K12kt86j9xIJHd27YTGRvDmFfeIGXvr8XSYHt60ZxrJUFBCC
FuQM6FfDr3a06nvs2cS2WCox9h0asvYLda2b9iKaNnVHwa7OshQUEIIW6A61rJrk/
9a9f+jN3qWE5T26wc2bGTLd9nlzlCqTKQPgUhhHCjtIOJLJ//
GUv2nkUbjCiDAaPJxPmMeqQdziL+x2PeLmKZpKbgYX/6058ICgriueeec+t5g4KCuHjxYqmfZ2Zm8uWXX/
LUU0+59bpCiNK5Dj3toYz0GvsYO5buQxmak7THByh9hFJlITUFID07nQkrJpCRk+HtoriNpMkWouKl7P3V2
WRkwo6+eJFm7QfRpmvEVUcoVRYSFIC43XHsOLWDuF1xbjnf66+/Tvv27bnllls4cOCAc/
uRI0e44447iImJoW/fvuzfv5+srCxCQkKw2x1jnbOzs2nRogUWi+WKc0qabCG841JWHt+
+s51LBR3IpbHa7Pi3agfKsXKaUkbOZ9TjVNIFMk9llzpCqbKp8c1H6dnpfHf4OzSaZYeXMSlyEg39G173+b
Zv386iRYtISEjAarXSpUsXYmJiAJg4cSJxcXGEhYWxZcsWnnrqKdasWUNkZCT//e9/GThwIN9//
z233347ZrP5ivM+88wzTJ48mYcffpgPP/zQud3Pz49vv/
2W2rVrk5GRQY8ePRg2bBgzZ85kz5497Ny5EwCr1VrifiUl1BNCXBb/
4zFnX0BJs5XBMfT065nfYTQGYw68/3L6ioImo3MnswHQdu2Yl3CVAONNNT4oxO2Ow64dT+l2bSduVxwv9Xj
pus+3YcMGhg8fTkBAAADDhg0DHE/0mzdvZuTIkc598/Ic/
2GMHj2axYsXM3DgQBYtWlRiP4CkyRaiYpV3trLr0FObMuJfdxQGUyxKAQq0Ha+ksrheXgkKSqlngccBDfwK
PAIEAIuBECAJGKW1PufJchTWEix2R1ONxW5xS22hpKdvu91O3bp1nU/uroYNG8b06dM5e/
Ys27dvZ9CgQeU+r6TJFsIzxr3ek01LDnNsZ3qxHEWu/
rN6s7MfAW3DkpuMb61m2Cx20FSJJiNXFd6noJRqDjwNdNVadwaMwBjgeWC11joMWF3w3qNcawmFCmsL16tf
v358++235OTkcOHCBb7//nsAateuTWhoKF9//
TXgeHLftWsX4BhJFBsbyzPPPMPQoUMxGo3FzitpsoWoWCXNVlYKVn68h0tZeaQdTGTZvM/
4Zu8559BTZTA502DXauhHrQa+lTKVRVm81XxkAvyVUhYcNYQ0YDowoODz+cA6YJonC7Hr9C5nLaGQxW5h5+
md133OLl26MHr0aKKiomjVqhV9+15etGfBggVMnjyZ1157DYvFwpgxY4iMjAQcTUgjR45k3bp1JZ5X0mQLU
fGKzlY+vieDC2fzWPf5Wg5vmYPNaqWfMtJn7OOo/OwrUlg8/
Fov53kqWyqLsngldbZS6hngdSAHWKm1fkgplam1ruuyzzmtdb0Sjp0ITARo2bJlTNEnXknDXPXI30xUdkX7
F6w5W7HmbgI0ymCg96ixVSKFRaGyUmd7o/
moHnAPEAo0AwKVUmPLe7zWeo7WuqvWumujRo08VUwhhHAqmg1Vm4PR6vJs5Radwr1cQvfxRvPRLcAxrXU6g
FJqKdALOKWUaqq1PqmUagqc9kLZhBCimML+hfycVGzWVJSpOQ0iH+HmDnnFsp5Wdd4ICslAD6VUAI7mo8FA
PHAJGA/MLHiV2VVCiEojI/
UweReXoLUNg8FIbcPjVarJqLwqvPlIa70FWALswDEc1QDMwREMblVKHQJuLXgvhBCVwklzqiMgoFHYadzqQ
rlmOlc1Xhl9pLV+BXilyOY8HLUGIYSoNNIOJpKy91ci2jYjPt6E0rZiWU9Lm+lcFdX4Gc1CCFGatIOJLH71
RbTNitFk4tZHJ7Luy91VKuvptZKEeB72pz/
9ibffftvbxShmwIABxMfHA3DnnXeSmZlZ6r7Lli1j3759zvczZsxg1apVni6iEF5TmARv09qfsVosaLsdm9
VKzoULPPa339O+Z3SVyXp6raSmUI1YrVZMpmv/k/
70009lfr5s2TKGDh3KzTffDMCrr756XeUToqooTIJ32GCiqTKilN059PRq6zJXdVJTALITEsj4xxyyExLcc
j5PpM6eMGECkyZNom/
fvrRr144ffvgBgHnz5jFy5EjuvvtubrvtNi5dusSjjz5Kt27diI6OdqbIzsnJYcyYMURERDB69GhycnKc5w
4JCSEjw7GWxGeffUZERASRkZGMGzeOzZs3s3z5cqZOnUpUVBRHjhxhwoQJLFmyBIDVq1cTHR1NeHg4jz76q
DPJX0hICK+88oozVff+/
fvd8rsVwpPipqzjw0lr2L0mHmv2VlrnGfAPGoHJvzcjX37dOfS0cKZzVUthUS5a6yr7LyYmRhe1b9+
+YtvKcmnHDp0YGaX3dbxZJ0ZG6Us7dlzT8UXFx8frzp0760uXLumsrCzdpk0b/
dZbb2mttR40aJA+ePCg1lrrX375RQ8cOFBrrfWwYcP0mjVrtNZaL1q0SD/22GPFzjt+/Hh9+
+23a5vNpg8ePKibN2+uc3Jy9Ny5c3Xz5s31mTNntNZaT58+XX/++edaa63PnTunw8LC9MWLF/
U777yjH3nkEa211rt27dJGo1Fv27ZNa611q1atdHp6ut6zZ49u166dTk9P11pr5znHjx+vv/
766yvK8vXXX+ucnBwdHBysDxw4oLXWety4cfpvf/ub85zvvfee1lrrDz/8sMTvVOha/
2ZCeMrFzFy99K0f9Nuj7tFvjxqq3x51j/72nR/
1xcxcbxfNrYB4Xcp9tcbXFLK3bkPn54PdjrZYyN667YbO55o6u3bt2iWmzo6KiuLJJ5/
k5MmTwOXU2QCLFi1i9OjRJZ571KhRGAwGwsLCaN26tfPp+9Zbb6V+/
foArFy5kpkzZxIVFcWAAQPIzc0lOTmZ9evXM3asY+J4REQEERERxc6/
Zs0aRowYQcOGjgyxhecszYEDBwgNDaVdu3YAjB8/nvXr1zs/v+++
+wCIiYkhKSnp6r88IbwssI4vuReTABuOJM42cs8fqzZNQ+VR4/
sUAmK7oXx80BYLymwmILbbDZ+zolJnF74PDAx0btNa880339C+ffEEXFdbUEdrfU2L7uir5M3y9XX8j2Q0G
rFareU+rxDecDxxH5s3bsFu80UZTKBtoIyY/
Vt5u2gVqsbXFAKio2k591MaPf00Led+SkB09A2dz1OpswG+/vpr7HY7R44c4ejRoyXe+G+//Xbef/
995w07oaCfpF+/
fs6U23v27GH37t3Fjh08eDBfffUVZ86cAeDs2bNA8TTchTp06EBSUhKHDx8G4PPPP6d///7l/
E0JUXmk7k/kq7+8QOqqpZw+9hO3PDaR3qPHMubPb3D/tKHeLl6FqvFBARyBoeGTE284IMCVqbPvv//
+YqmzP/nkEyIjI+nUqdMV6ySPHj2aL774otSmI4D27dvTv39/
hgwZQlxcHH5+fsX2efnll7FYLERERNC5c2fnes6TJ0/m4sWLRERE8H//93/ExsYWO7ZTp068+OKL9O/
fn8jISP7whz8AMGbMGN566y2io6M5cuSIc38/Pz/mzp3LyJEjCQ8Px2AwMGnSpGv/
pQnhRVpr5i9dBTbHbGVtcww97T58VLXKaVReXkmd7S5du3bVhWPtC1XXNMwTJkxg6NChjBgxwttFcbvq+jc
Tld+RHbv5/uN/
81+t6Z31M4aC2cquI42qo7JSZ9f4PgUhRM2UdjCR7956BW230lsZufWxJ8m9eKHaZT29VhIUqoh58+Z5uwh
CVBtxU9aRd+EXtN0KaJS2se6LXZj8Y+k8qLW3i+dV0qcghKhxWo1vS712HXEsEa8AI7UatwHlmM1ck0lNQQ
hRo6xY8wtzv15Fx4DWNKw1ArslFYM5mJwLDYDql+DuWklQEELUGGvXb2XXnJl00zaMmdtp3WcSEYOG8N+FB
zmfnoPWjgR3raMb0ev+tt4urldI85EQokbYm5bFP7/6D4aChXLARsNmWbTo2IDg9vXQUC0T3F0rCQpulpmZ
yUcffXTdx8+aNYvs7Oyr7rdu3TqGDi17Us3OnTuvmgFViJog7WAi33w6H+0bgNlsRhkMzqynUM0T3F0jaT7
CkTt95cd7uO3xzjf8dFAYFJ566qnrOn7WrFmMHTuWgICAGyoHOIJCfHw8d9555w2fS4iqKu1gIl//
5UWCrFa6G00MmvAEOReuHHo6ZNLlXGD9HyieKaAmkZoCl3Onu2PUwfPPP8+RI0eIiopi6tSpALz11lt069a
NiIgIXnnFsQrppUuXuOuuu4iMjKRz584sXryY9957j7S0NAYOHMjAgQOLnXvFihV06NCBPn36sHTpUuf2rV
u30qtXL6Kjo+nVqxcHDhwgPz+fGTNmsHjxYqKioli8eHGJ+wlRnZ3MymHW5//
CarGi7XbsNitZGZmkHW1DnSY1e+hpaWp0TSFuyjpsVrvzvTtGHcycOZM9e/
Y4E9+tXLmSQ4cOsXXrVrTWDBs2jPXr15Oenk6zZs348ccfAcjKyqJOnTq8+
+67rF271pmptFBubi5PPPEEa9asoW3btlekw+jQoQPr16/
HZDKxatUqXnjhBb755hteffVV4uPj+eCDDwA4f/
58ifsJUR3t27mbv332LzJsJm5SxoJ8YMZqu7ayu9TooDDu9Z5sWnKYYzvTsVrsHhl1sHLlSlauXEl0QV6li
xcvcujQIfr27ctzzz3HtGnTGDp06BU5kkqyf/
9+QkNDCQsLA2Ds2LHMmTMHcASU8ePHc+jQIZRSxRboKVTe/
YSoKtKz05m6fipv93+bhv6XH6QO7PqVH2bOoIO2AUaMAQPAnovBHFxt11Z2lxrdfFQRy+pprZk+fTo7d+5k
586dHD58mMcee4x27dqxfft2wsPDmT59ermWuCwtrfXLL7/MwIED2bNnD99//
z25ubk3tJ8QVUXc7jh2nNpB3K4457asHAuzF/
wLg768JoJB5WHyj8VoboYquOtVt7WV3aVG1xTg8qiDTn2bsXdDGtlZeTd0vqJppm+//
XZefvllHnroIYKCgjhx4gRmsxmr1Ur9+vUZO3YsQUFBzjQWhccXbT7q0KEDx44d48iRI7Rp04aFCxc6P8vK
yqJ58+bAlekwipaltP2EqIrSs9P57vB3aDTLDi/
jvsBbuHA4mW0rLHS0NSMfI47FcoxgcPx3rzWgZehpWWp8UHD3qIMGDRrQu3dvOnfuzJAhQ3jrrbdITEykZ0
/H00hQUBBffPEFhw8fZurUqRgMBsxmM3//+98BmDhxIkOGDKFp06asXbvWeV4/Pz/mzJnDXXfdRcO
GDenTpw979uwB4I9//CPjx4/n3XffvWKBnoEDBzpXYZs+fXqp+wlRlRQ2GTUPao5dO/
oE65818tPMNzDYwWA00SrqMU4eHoUlJxmDOZh6zdrQ/
4H2rF2wH7TmzskRbnkIrI4kdbbwOvmbiWvxl1/+wlcHvsKojNi0DYDww7WJPlgXAwplMNC0/
e2cPdURo8mAzWqnc99m0qnsQlJnCyGqhcImIwCbthGWqumUrElukIvdoFFaYTKZ8PFv5dZm4ZpEgoIQosqI
2x3nbDIKS9XMWGjDZAOrMZv3h14kLLM3wyc+QJsuMhntetXo0UdCiKqjsJZgsTuGUndK1phsYNTgYzcw0vg
stdStpO738XJJqzapKQghKo3S5h3A5VpCYZPReX+wGmFDz1nYjWY449hP5h/
cGKkpCCEqjZLmHRTadXoXIcn5zFhoY/
R6O4+ssjP3FgOWgPdo3daMyey4ncn8gxvjlaCglKqrlFqilNqvlEpUSvVUStVXSv1HKXWo4LWeN8omhPCOo
vMOMnIyrvh8ybAlfFR/CmabAaMGX7uRlzs+w9Ozf8S/
aSOPTkKtSbxVU5gNrNBadwAigUTgeWC11joMWF3wvsqpqNTZ7hAUFARAWloaI0aMKHPfouW68847yczM9GT
xRA3j2ols1/
ZitYVci43ZGbXJV0a0wYDyMRMQ2w2Q1NfuVOHzFJRStYFdQGvtcnGl1AFggNb6pFKqKbBOa13msIHKOE8hK
SmJoUOHOieWXauQkBDi4+OLzWguL6vVislUvq6ioKAgLl68WCHlKou3/2bC+9Kz0xmydAh5tstDR32Nvqy4
fwUN/
RtyfONqPvvsVX42DuWpvhH0uHCcgNhuBBTkFBPXpqx5Ct6oKbQG0oG5SqkEpdTHSqlAoInW+iRAwWvjkg5W
Sk1USsUrpeLT09PdUqC0g4ls+fYr0g4m3vC5PJk6OyQkhGnTphEbG0tsbCyHDx8GYMKECfzhD39g4MCBTJs
2jSNHjnDHHXcQExND37592b9/
PwDHjh2jZ8+edOvWjZdfftl53qSkJDp37gyAzWbjueeeIzw8nIiICN5///0SyxUSEkJGhqN6/+6779K5c2c
6d+7MrFmznOfs2LEjTzzxBJ06deK2224jJyfnhn+/
onpyrSUUKqwtZCckkDX5GYZvOM3MjfMY1LExDZ+cKAHBQ7wx+sgEdAF+p7XeopSazTU0FWmt5wBzwFFTuNH
CFC7AYbNaMZpMjHz5defCG9fDU6mzC9WuXZutW7fy2Wef8fvf/
54ffvgBgIMHD7Jq1SqMRiODBw8mLi6OsLAwtmzZwlNPPcWaNWt45plnmDx5Mg8//
DAffvhhieefM2cOx44dIyEhAZPJxNmzZ6lfv36p5dq+fTtz585ly5YtaK3p3r07/
fv3p169ehw6dIiFCxfyz3/+k1GjRvHNN98wduzY6/7diupr1+ldzqGmhSx2CztP7yQ9ORCD1YZRA1Y7GZvW
0VICgsd4IyikAqla6y0F75fgCAqnlFJNXZqPTldEYVL2/
orN6liAw2a1krL31xsKCkW5K3V2oQceeMD5+uyzzzq3jxw5EqPRyMWLF9m8eTMjR450fpaX56iSb9q0ybl+
wrhx45g2bVqx869atYpJkyY5m6Dq169fZnk2btzI8OHDCQwMBOC++
+5jw4YNDBs2jNDQUKKiogCIiYkhKSmpXN9R1DxLhi0pti1jSzxfffwdPzbbSq+C3HZWI/
xQN4nrW9dQlEeFBwWt9W9KqRSlVHut9QFgMLCv4N94YGbB63cVUZ4WncIxmkzOmkLhmq3uUpg6+8knnyz22
fbt2/npp5+YPn06t912GzNmzLjq+VzTZ7v+XHhTttvt1K1b11lTKev40sp7tX2K7l8aX9/
Loz+MRqM0H4lyS/85nrQnHqWf1YrVpJl7i4HaObC3pSKZTYzKySg2j0G4h7dGH/0OWKCU2g1EAW/
gCAa3KqUOAbcWvPe4Zu06MvLl1+k9auwNNx1ByamzP/
30U2eH7okTJzh9+jRpaWkEBAQwduxYnnvuOXbs2FHi8UUtXrzY+VqYedVV7dq1CQ0N5euvvwYcN+1du3YB0
Lt3bxYtWgTAggULSjz/bbfdRlxcHFarFYCzZ8+WWa5+/fqxbNkysrOzuXTpEt9+
+225az1ClOTspXzmxy3FaLVixDFruXYOLOtl4FCwKnFkknAfr8xo1lrvBErq+R5cwUUBHIHBXU1GnkqdXSg
vL4/u3btjt9uvWFPB1YIFC5g8eTKvvfYaFouFMWPGEBkZyezZs3nwwQeZPXs2999/
f4nHPv744xw8eJCIiAjMZjNPPPEEU6ZMKbVcXbp0YcKECcTGxjqPj46OlqYicV1O/
7yNeX9fSrLVjPIxY7PkYzU6agiFCvsahGdI6uwqxJPDQr2pOv/NRPllJySQ/
Mij2PLyUWYz2x+M4NCx7dzU9xaeGjvb28WrViR1thCi0spOSCBt3SY4/Rs6Px+DtoPNwtHjO/
m2lwFf6UOoUBIUqhBpkhHVTXZCAscnPIItLx+70YCPyYS22VyajLSzD+GlHi95u7g1QrVMiFeVm8RqGvlbV
W/p2elMWDGhWB6jQkf/
swFbXj5GNGYNdYYPJ2DyY7z+oJnEZo7JbBa7pcRcSMIzql1Q8PPz48yZM3KzqQK01pw5cwY/
Pz9vF0V4SGlZT7MTEkj46yz+ufsMNqMJDEaUj5k6997DZ10vcrD5lcOiZcRRxal2zUfBwcGkpqbirhQYwrP
8/PwIDg72djGEBxTNejopchIN/Rs6O5TNeXk8ajBR549/
JCg325nLaNfy10ud3Sw8r9oFBbPZTGhoqLeLIUSNV1LW05d6vET21q3o/
HyMWmPETlBuNg2fnOg8rqTZzaLiVLvmIyGE9xVdOtNit7Bn3Tf8+MKfWJCYhfLxAaMRZTaTHxFWZr+DqFjV
rqYghPC+ollPw1I1zy/MxWRbTAujD/
VfmI7hwnkCYrvxTt4Pzn4HGWHkfVJTEEK4VXp2Ot8f+f6KfoFOyY50FUYNZm3DcOE8DZ+cyKX2wWWutiYqn
gQFIYRbxe2OI9eay+j2o9kS8RkvJYzidNZwtOlyk1HhimlXW21NVDwJCkIIt3EdcbRn3Tccn/
AI4SsX8bu931P7j7/jv3c0pU7c3wiIji6x30FqC94nQUEI4TauT/
7tj1mx5+eh7HaMdhtbDqzio4hTfMJG0rPTGfXDKGzadsXxUlvwPgkKQohyK2uGcuGTf0hyPvdutpPpb8diB
IwGMJlYGnTA2Xcwa8csMnIysNqtV5xD5iN4n4w+EkKUm+sM5aIjheJ2x9E62cILC22YClZJ+
+xWEz0DO3G6Q2MO6o1gB5vdxo9HHcvQ+hp9WXH/
Ckl2V4lctaaglJqilKpXEYURQlReRWcou9YWshMS8P9iJb12W5yjjEw2CMy2s6BrLnPZ7Ow7sGqrs9lImos
qn/
I0H90EbFNKfaWUukNdy1qNQohqo7SRQoVpK+5cc5ZBvxowFowyMvn6MX3SF8TcFHPFnAVX0rlc+Vw1KGitX
wLCgE+ACcAhpdQbSqk2Hi6bEKKSKG2kUHp2OslrNqLz81F2O2ag7n3DafT007Sc+6kjl9HpXcVyGbmS2kLl
Uq4+Ba21Vkr9BvwGWIF6wBKl1H+01n/
0ZAGFEN5XdIYyQOsUC5899xhHz0UyxWwGqxVldmQ6DYiOdu7nmstoxPIRHDh34IrzSOdy5XLVoKCUehoYD2
QAHwNTtdYWpZQBOARIUBCimiv6tB+WqnlhYT4m2yEwHeemF1/AlpXlzHRaGkl2V/
mVp6bQELhPa33cdaPW2q6UGuqZYgkhKhPXm/
lvWbl88fSrmKzLMKLBbsOWlXVFplNRdV01KGitZ5TxWaJ7iyOEqMyyExKIX7SCZKsZg48P2KxXpK0QVZ/
MUxBClMvZrfGcnvgEbfLzmWw2c9OL07FlXr3JSFQtEhSEEKXKTkgge+s21vkFs2/
FOkbm54PdDlYrtszLTUbp2elMXT+Vt/u/
LRPRqjhJcyGEKDF9ReH8g1OzZtPmzeep06Qhylw80ymUvhazqHokKAghSrypn9v8C7a8fAzajo+28WCHOrS
c96lzDsKl9sFMWDGBA2cPyJoI1YgEBSFquKLpK07+so6Mf8xhdVoeFoMBmwKDj5nA7rEEREfT8MmJBERHOw
PJtPXTZE2EakT6FISo4VwnprVOsZDx5hQMVhvdfHxZNyKck7/t4qa+/
XnKpTPZNZAcyTri3F4403lS5CTpW6iipKYgRE2SshU2vON4pXj6ivZJVpTVhkGD3ZLH6dN7+LaXgU/
ZdEWzUEkznAtJbaFqk5qCEDVFylaYPwxs+WD0gfHLiTvxb+zaTliqplOy5ry/
I+U1NrAaYG9LBWjnjf6lHi8VCyRFSdqKqs1rQUEpZQTigRNa66FKqfrAYiAESAJGaa3Peat8QlQ7SRscAUH
bHK9JG9h1bhchyfnMcFkDYe4tBmrnOALCoWaO2oBrs1BJtQSzwcx9YfcVW2NBVD3ebD56BnCdEf08sFprHQ
asLngvhHCXkL6OGoIyOl79G7CkXk8ePNoHk1U510ConQPLehk4FHxllvzC2kJJWU+ldlB9eKWmoJQKBu4CX
gf+ULD5HmBAwc/zgXXAtIoumxDVVotYGL/
cUWPwb4Be8TzKls+QIH+SfRpgt1qxGnRBk1FxhTd+SWpXvXmr+WgWjuyqtVy2NdFanwTQWp9USjUu6UCl1E
RgIkDLli09XEwhqpkWsdiad2Pj3On0seZhxE5g/Rxa/
eEOPt65hXWNzhSrIbSv114CQQ1S4UGhILPqaa31dqXUgGs9Xms9B5gD0LVrV+3e0glRvWVlW3hmcQLnDzeh
p58ZA1aU0YeAwSN4esL/
8bS3Cyi8zhs1hd7AMKXUnYAfUFsp9QVwSinVtKCW0BQ47YWyCVFtJZ48z6QvtpOWmcMr99yHuVkv1PGNjr6
GFrHeLp6oJCo8KGitpwPTAQpqCs9prccqpd7CsZjPzILX7yq6bEJUVxabncfnx2Ox2Vk0sQcxreoDraBld2
8XTVQylWmewkzgK6XUY0AyMNLL5RGiyrPY7BiVwmw08P6D0QTX86dxLT9vF0tUYl4NClrrdThGGaG1PgMM9
mZ5hKhOfsvK5X+
+3MHA9o2YMiiMLi3rebtIogqQNBdCVEObD2dw13sbSDx5npCGgd4ujqhCKlPzkRDiBtntmg/
XHuZvqw4S2jCQxeN60LZxrasfKEQBCQpCVFYpWx0TzcoaHVRknwOnLjBr9SHujmzGG8PDCfQ1le88QhSQoC
BEZVRC8rpiN3SXfexGM4bx39OxRSw//
K4PHW6qhVKqfOcRwoX0KQhRGRVNXrfryytSXhfuowv2sVvyObptBQAdm9ZGpW5z7L9rYbEkeEKURWoKQlRG
hcnrbPlgMELCl2C3XvG0n9WkO36YMGqN3WCmabPmjkDg3wBWPH/
5WIMJ7DiODenr7W8mKjkJCkJURq7J67JSYfv8K2oNx7f/m1d/
rc8Fy4tM75hBVPvW+KyY7vhcKdB2xz87EPMw1GkhfQqiXCQoCFFZtYh1/EvZCjsXXlFraGGz8CEmTt7/
FaHRAx01hMJmIm0AgwFQjtpB5IMSDES5SVAQorIrqDVk7lvDpdNJND/
6FQbs+CoboRd3AAOvbG4y+sAdMyHnjNQOxDWToCBEFfD92WBe2BxNd3Nt/
mlchrLlo1z7CFybmyQQiBsgQUGIinCdcwUu5Fp4Zflelu44QZeWdXllzATUpa4ln6uwuUmIGyBBQQhPu865
AudzLQx9byOp57J5enAYTw9qi8logPpy8xeeI0FBCE8rOucgaUOZN3WtNUopavuZub9LML3bNqBrSP0KLLC
oyWTymhCeVtgJrIxXnStwJP0iI+J+5tfULACeuSVMAoKoUFJTEMJTXPsRrtIJbLdrPv/lOH/
9VyJ+ZiNnLuV5ocBCSFAQwjNK6kfo+78l7pqWmcPUJbvYdPgMA9o34s37I2hSWxbCEd4hQUEIT7iGfoSlO1
LZmZzJX+8LZ0y3Fo5EdkJ4iQQFITyh6GSyIv0Ip87nciIzhy7qEJON6xk5OpYmnVp6qbBCXCZBQQhPKGUym
daapTtO8Ofv99LH7ygfWv+M0ZZPE6MP1F7uOFYmoAkvkqAghKcUmUyWlpnDC9/+yroD6XRtVY/
XQrNQW4qkx965SNY+EF4lQUGICpCUcYmh72/
EZte8cvfNjO8ZguGECeJnXQ4CqGuazyCEJ0hQEMKDcvJt+PsYadUggAm9QhjVtQUtGwQ4PizaxASXs6HK2g
fCS5TW2ttluG5du3bV8fHx3i6GEMVYbHY+3nCMf244yvIpvQmuF1C+A2U9ZVEBlFLbtdZdS/
pMagpCuNnOlEye/2Y3+3+7wO2dmuBjLJI4oKwbvyS1E14mQUEIcMsTutaaP3+/j/k/J9Gklh//
GBfD7Z1uKn6d60iOJ0RFkaAghJtu1EopLDY7D/
doxXO3t6eWn7n4TteYHE+IiiYJ8YQoeqPe9aVjecuUrVc99PiZSzw6bxs7UzIBeC0mmz/X/
ze10hNKPuAakuMJ4Q1SUxDCdfZxwRrI2K1l1hpyLTb+vu4If//
vEXyMBlLOZhPFQdRn95Rd45AV0kQlJ0FBCNcbdVYqbJ9fZvPO2gOneeW7vSSfzWZYZDNevKujI4HdhoXlax
qSzmRRiUlQEAIu36hTtl51rsC+tPP4mAwseLw7vds2vPzBVfIdCVEVVPg8BaVUC+Az4CbADszRWs9WStUHF
gMhQBIwSmt9rqxzyTwF4RFFRiJdzLPywZrDRAbXYUh4U/
KtdgB8TCV0yck8A1EFlDVPwRtBoSnQVGu9QylVC9gO3AtMAM5qrWcqpZ4H6mmtp5V1LgkKokRuujHb7ZpvE
07w5or9nL6Qx6tdsnm4abLc8EWVV6kmr2mtTwInC36+oJRKBJoD9wADCnabD6wDygwKQhTjpuGlCcnn+NPy
vexKzSIyuA6f3w7tVzwGiSWcV2oHohrxap+CUioEiAa2AE0KAgZa65NKqcalHDMRmAjQsqXknxdFlDQPoHD
7Ndy0U87lcOp8Hu+OiuTeqOYYNr1bcieyTEYT1YzXgoJSKgj4Bvi91vp8eVeb0lrPAeaAo/
nIcyUUVVLRzl7/BuW6aWdlW/hw3WEa1/Ll8b6tuTuiKbd2bIK/
j7Hk8xZ2IstkNFHNeCUoKKXMOALCAq310oLNp5RSTQtqCU2B094om6jiis4DKOumnbIV69H1/
HShDTN2BJKVY2F8zxDAMTvZ38d4ZdNQ0YymG95xBB0ZcSSqkQoPCspRJfgESNRav+vy0XJgPDCz4PW7ii6b
qCaKzgMo6aadshXbvLvBls+t2kRCk/9jxL330alZncvHldQ01Pd/i2+/YybknJE+BVEteKOm0BsYB/
yqlNpZsO0FHMHgK6XUY0AyMNILZRPVTZGagw7uRp7Fhl/
SBgz2fBR2DAYbr4SfBdeAAKXXMopuzznjCBZCVAPeGH20ESitA2FwRZZF1BAFNYetx87y9j9+oU3jIP7arS
/
K6Iu25WMordmntH4EmaQmqjGZ0SyqvV0pmby98gAbDmXQuJYv90Y3hxbhMH45qqxRSaXlKZL8RaIak5XXRP
VQylyBeZuO8afv91E/0IfJ/
dswtkeryyOKhKihKtXkNSHcrkjH75E7v8TevBthTWoxuGMTLuRaeaRPKEG+JploJsRVSFAQVZ9Lx6/
Nmsc33yziWMc6/H1sDC3qB/C7wWGO/
WSimRBXJYvsiCpvv18keZiwagP5mAjtejtvjogovmNps52FEE5SUxBVktYarcFgUKzIaslONYMnW6cR0Wco
I9v0KvkgGTUkxFVJR7Pwrmts47fa7Pz460ni/nuUpwe1ZUh4Uy7lWTEUzkB28/
WEqI6ko1lUTtfQxn8xz8pX21L4ZOMxTmTm0LZxEL5mR+tnoO81/
Gcsq54JUSYJCsJ7yptMLmUrSxd9wQ9nQxnQtDYT2qbSptsdGAzHYcMX8tQvhBtJUBAVo6RmmzLa+HemZLJw
SzKvdrmE75fDGWfNY6y/CUOWgnNWSPwAUGC3ykgiIdxIgoLwnMJA4N8AVjxfvJmoyMzg/
KZd+SnhBPM2J7EzJZNaviae9t1Gc5sjR5GyWwpOrMFmd/lZUlYL4S4SFMS1K09nrWt/gVKg7Y5/RW/
gBcEh/UIeQ2auIeNiHq0bBvLnYZ24PyaYoNP1YNcHjuMMRpy1A9efZSSREG4jQUFc24ic8nYOu/
YXaAMYDIBy3sDtds36Q+kkn83m4Z4hNKrly71RzegT1pB+YY0wGApyJhbNM1R47qI/
Sy1BCLeQoFDTXess3/
Iud1m0v6BgzYGzjWJZeLg+C79cS+q5HJrX9efB2JaYjAZeirwISf+CgBJu+K5lKu1nIcQNk6BQ011lZbKr3
uxLW+6yhEyii7Ym8+Jne7DZz9OzdQOm3dGB2zo1wWQ0XBmcijYNSSeyEBVGgkJNV9oIoNJqENew3OV+cweW
ZAVxq6UJ3YGuIfWY2K81o7q2ILRh4JXluOI80okshLdIUKjpSlsboKwaRBnLXZ5tHMvSDUf5ZscJEk+ex2x
UNK3rT/fWDWjbuBbT7uhQcjlcg5N0IgvhNRIURMmzfMubJ6hFLNZxyzAlb0K36sPzX2yn7aXPCW/
YjdF338KwqObUD/S58piSmqXK6lCWWoIQFUZyH4nSlTEqKTvfyurE0/
ywO43EkxdY+9wAjCe2YZt3Nwa7BVVaX4CkrxbC6yT3UU12IwngSqhBJCSfY876o6w7kE6OxUbjWr7cGd6U7
HwrtZI2YLRbyk5bUd7UFkIIr5CgUJVd7Ybvhqfy9At5rE48RdeQerRtXIusHAvxx88xIiaYuyKa0i2kPsbC
OQXlaXKS9NVCVGoSFMqrsqVcLs8N/
zqeyrXWHDx1kVWJp1ideIqElEy0hrd75NG2wTH6tuzDlumDL08uc1WeBe1l0XshKjUJCkW53vyh7Nw93lSe
G345n8ov5Vn57XwubRoFkW+zM/
yjTWTn2whvXoenB4Vxb8MThPz4GNjyMV7t+5cnNbWkrxai0pKg4Kq0CVRl5e7xlpImkW145+ojeja8g61lH
/Ya27PxcAbrD6az/fg52jQKYsXv++FrMvL3sTG0b1KLm+r4FRzzvfQDCFFDSFBwVdoEqhJy93id6w2/
aE2mIKVEYYDQwd048et/CV4+Bmz52DDxZd5Y6quLNK3flUd796Vfu0bOU/
d3+RmQfgAhahAJCq7KmkBV5EZ7VRXRB1HYDLPhncvBzJqH/ul/
QWtsysQ7Td9m8W9NGZP7NVN98lHahhnNG77zUWhUznIIXw4tOpZ9HekHEKJGkKDgyl0TqCp4LH5mk+7UMpg
x2EEpBXY7CjvYNXVObWFAuyeIqX83bPkObI591LU2h0k/
gBA1Qs0NCqU9yZeVkbO858xK9WgbfFaOhQVbjrPnRBa7UrI4kZlDF/
U8L3U+S5f2bWDFNOxWCwazmUnjx0OLKCAKOnxfcnOTNAcJIQrUzKDgiSf5op3UBhPYue6brsVm51jGJQ78d
oHzhzbhl7oZc9t+DBs6HIOCt/59gOZ1/
YlqWZcJvUKICO5Bx+C64GNENbkZdbWA1+RmaQ4SQhRTM4PCjc6qLWnYqmvtwA7EPAx1Wlz1ppuZnc/
RjEucP7iJpufiad/jTnRwN3q8sZozl/
Lpog6ywOcNfJQVvWMBRDanVotYdr1yG7X9zCWfVIaFCiGuU6ULCkqpO4DZgBH4WGs90+0XuZHRNKUNWy1aO
4h8EB3cjcxsC5kJa7EdXc/
pBt3oNeBOAJ5emMC6A6c5n2u94sbPgTjU+OU8c0sYtf3M9EzbhV+8raAPwOoMYKUGhBtV2SbpCSEqVKUKCk
opI/AhcCuQCmxTSi3XWu9z64WuczSNxWbH7FLLsNvsKEChsdtgZ6NhdIkIh5C+TN/
mz7dzVnCzdT8LfN7AjJVgZY
I2P0KLWNo2DqKOv5mW9QMYmB6P356CG39BzeXhvv/ruGjDWyDhvYpp/
5dkdULUeJUqKACxwGGt9VEApdQi4B7AvUEBWHm+JcuSB2BPAruOx2bXWOya9x+Ipo6/mfmbk/
jil+PkWGxk59vIzreSa7FzaFJvzEYfbNY8rNoAgBE7Foy8d6Yrn/
b+HwwGRfRvKQT5Grnt7CZ8j1gxYMeobM4n/
acHhxU8lf8bWrWCxCI1F9cn9ooaDirJ6oSo8SpbUGgOpLi8TwW6u+6glJoITARo2bLldV/
oXHY+h05dRCkwKIXRoDAZDdjsjlTidQPMtG0chL+PkUAfEwE+RgJ9Tdiat8Y8fjmZe1ZzqkE3avmaqJe+Fb
+wfsxr1cN5/lHdWjh+SBkGxz8GW74jnXThzOOyJpxB8Sf2wpqDJ5t3ZJKaEDVepVpPQSk1Erhda/
14wftxQKzW+ncl7V9l1lMovJG7BgLX1BnKCINevHzj3/
AOrHnd8cTu+llFNO9In4IQ1V5VWk8hFWjh8j4YSPP4VT19Iyxp5nFZqTNKe2KviOYdGZUkRI1W2YLCNiBMK
RUKnADGAA969IoV2bla9GZfWuqM0jrCpXlHCOFhlSooaK2tSqkpwL9xDEn9VGu916MXrcjO1WsZ9VTSE7vk
IBJCeFilCgoAWuufgJ8q7IIV/
fR9o80z0rwjhPCgShcUKpw8fQshhJMEBZCnbyGEKGDwdgGEEEJUHhIUhBBCOElQEEII4SRBQQghhJMEBSGE
EE4SFIQQQjhVqoR410oplQ4cv4FTNAQy3FScqqCmfV+Q71xTyHe+Nq201o1K+qBKB4UbpZSKLy1TYHVU074
vyHeuKeQ7u480HwkhhHCSoCCEEMKppgeFOd4uQAWrad8X5DvXFPKd3aRG9ykIIYS4Uk2vKQghhHAhQUEIIY
RTjQwKSqk7lFIHlFKHlVLPe7s8nqaUaqGUWquUSlRK7VVKPePtMlUUpZRRKZWglPrB22WpCEqpukqpJUqp/
QV/757eLpMnKaWeLfhveo9SaqFSys/
bZfIEpdSnSqnTSqk9LtvqK6X+o5Q6VPBazx3XqnFBQSllBD4EhgA3Aw8opW72bqk8zgr8r9a6I9AD+J8a8J
0LPQMkersQFWg2sEJr3QGIpBp/
d6VUc+BpoKvWujOOJXzHeLdUHjMPuKPItueB1VrrMGB1wfsbVuOCAhALHNZaH9Va5wOLgHu8XCaP0lqf1Fr
vKPj5Ao4bRXPvlsrzlFLBwF3Ax94uS0VQStUG+gGfAGit87XWmV4tlOeZAH+llAkIANK8XB6P0FqvB84W2X
wPML/g5/
nAve64Vk0MCs2BFJf3qdSAG2QhpVQIEA1s8XJRKsIs4I+A3cvlqCitgXRgbkGT2cdKqUBvF8pTtNYngLeBZ
OAkkKW1XundUlWoJlrrk+B48AMau+OkNTEoqBK21YhxuUqpIOAb4Pda6/
PeLo8nKaWGAqe11tu9XZYKZAK6AH/XWkcDl3BTk0JlVNCGfg8QCjQDApVSY71bqqqvJgaFVKCFy/
tgqmmV05VSyowjICzQWi/
1dnkqQG9gmFIqCUcT4SCl1BfeLZLHpQKpWuvCWuASHEGiuroFOKa1TtdaW4ClQC8vl6kinVJKNQUoeD3tjp
PWxKCwDQhTSoUqpXxwdEwt93KZPEoppXC0Mydqrd/
1dnkqgtZ6utY6WGsdguNvvEZrXa2fIrXWvwEpSqn2BZsGA/
u8WCRPSwZ6KKUCCv4bH0w17lgvwXJgfMHP44Hv3HFSkztOUpVora1KqSnAv3GMVvhUa73Xy8XytN7AOOBXp
dTOgm0vaK1/8l6RhIf8DlhQ8MBzFHjEy+XxGK31FqXUEmAHjhF2CVTTdBdKqYXAAKChUioVeAWYCXyllHoM
R4Ac6ZZrSZoLIYQQhWpi85EQQohSSFAQQgjhJEFBCCGEkwQFIYQQThIUhBBCOElQEEII4SRBQQghhJMEBSH
cSCnVTSm1Wynlp5QKLMj139nb5RKivGTymhBuppR6DfAD/
HHkIvqrl4skRLlJUBDCzQpSTGwDcoFeWmubl4skRLlJ85EQ7lcfCAJq4agxCFFlSE1BCDdTSi3Hka47FGiq
tZ7i5SIJUW41LkuqEJ6klHoYsGqtvyxYD3yzUmqQ1nqNt8smRHlITUEIIYST9CkIIYRwkqAghBDCSYKCEEI
IJwkKQgghnCQoCCGEcJKgIIQQwkmCghBCCKf/BxDXtwrQDsidAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Print the errors\n",
"print('\\ndegree = %d'%(d))\n",
"print('validation score = %.4f'%( score_dev ))\n",
"print('train score = %.4f'%( score_train ))\n",
"print('validation MSE = %.4f'%(mse_dev))\n",
"print('train MSE = %.4f'%(mse_train))\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.add_subplot(111)\n",
"ax.plot(x, reg.predict(make_features(x, degree=d)), '--')\n",
"ax.plot(x_train, y_train, '.')\n",
"ax.plot(x_dev, y_dev, '^', ms=6)\n",
"ax.plot(x_dev, reg.predict(make_features(x_dev, degree=d)), '.')\n",
"ax.plot(x_test, y_test, '*', ms=6)\n",
"ax.plot(x_test, reg.predict(make_features(x_test, degree=d)), '.')\n",
"\n",
"ax.set_xlabel('x')\n",
"ax.set_ylabel('y')\n",
"ax.legend(['polynomial fit', 'train data', 'dev data', 'dev prediction', 'test
data', 'test prediction'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Adding regularization will also prevent higher order polynomials from over-
fitting. Lasso might get rid of all other features except the one you need! This is
a teaser. Download the code and try it out yourself.\n",
"\n",
"One way of improving your predictions is to add more data. If you go back and
set the data input to a 1000, you'll see that your results will be much better. The
higher dimensional your feature vector, the more data you need. This is
particularly the case with neural networks: those beasts are always data-hungry!"
]
}
],
"metadata": {
"colab": {
"name": "ML_tutorial.ipynb",
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

You might also like