mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-14 15:54:13 +01:00
- Adjusted indentation and line breaks for better clarity in function definitions and import statements. - Standardized string quotes for consistency across the codebase. - Enhanced readability of DataFrame creation and manipulation by breaking long lines into multiple lines. - Cleaned up print statements and comments for improved understanding. - Ensured consistent use of whitespace around operators and after commas.
2645 lines
446 KiB
Plaintext
2645 lines
446 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"# TP4 Ridge, Lasso, CV\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"### Table of Contents\n",
|
||
"\n",
|
||
"* [0. Data Preparation ](#chapter0)\n",
|
||
"* [1. Ridge and Lasso Regression ](#chapter1)\n",
|
||
"* [2. Cross validation for the hyperparameters $\\alpha$ of Ridge and Lasso](#chapter2)\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 0. Data Preparation <a class=\"anchor\" id=\"chapter0\"></a>\n",
|
||
"\n",
|
||
"We will predict the salary of a baseball player and use the dataset `Hitters`.\n",
|
||
"\n",
|
||
"Reference : book \"James, Gareth, Daniela Witten, Trevor Hastie, and Robert Tibshirani. An introduction to statistical learning. Vol. 112. New York: springer, 2013\"."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:52.177602Z",
|
||
"start_time": "2025-03-26T10:33:52.174201Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import warnings\n",
|
||
"\n",
|
||
"warnings.filterwarnings(\"ignore\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:34:01.222808Z",
|
||
"start_time": "2025-03-26T10:34:01.200754Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>AtBat</th>\n",
|
||
" <th>Hits</th>\n",
|
||
" <th>HmRun</th>\n",
|
||
" <th>Runs</th>\n",
|
||
" <th>RBI</th>\n",
|
||
" <th>Walks</th>\n",
|
||
" <th>Years</th>\n",
|
||
" <th>CAtBat</th>\n",
|
||
" <th>CHits</th>\n",
|
||
" <th>CHmRun</th>\n",
|
||
" <th>CRuns</th>\n",
|
||
" <th>CRBI</th>\n",
|
||
" <th>CWalks</th>\n",
|
||
" <th>League</th>\n",
|
||
" <th>Division</th>\n",
|
||
" <th>PutOuts</th>\n",
|
||
" <th>Assists</th>\n",
|
||
" <th>Errors</th>\n",
|
||
" <th>Salary</th>\n",
|
||
" <th>NewLeague</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Name</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>-Andy Allanson</th>\n",
|
||
" <td>293</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>293</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>446</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Alan Ashby</th>\n",
|
||
" <td>315</td>\n",
|
||
" <td>81</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>24</td>\n",
|
||
" <td>38</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>3449</td>\n",
|
||
" <td>835</td>\n",
|
||
" <td>69</td>\n",
|
||
" <td>321</td>\n",
|
||
" <td>414</td>\n",
|
||
" <td>375</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>632</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>475.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Alvin Davis</th>\n",
|
||
" <td>479</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>72</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1624</td>\n",
|
||
" <td>457</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>224</td>\n",
|
||
" <td>266</td>\n",
|
||
" <td>263</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>880</td>\n",
|
||
" <td>82</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>480.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Andre Dawson</th>\n",
|
||
" <td>496</td>\n",
|
||
" <td>141</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>5628</td>\n",
|
||
" <td>1575</td>\n",
|
||
" <td>225</td>\n",
|
||
" <td>828</td>\n",
|
||
" <td>838</td>\n",
|
||
" <td>354</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>200</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>500.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Andres Galarraga</th>\n",
|
||
" <td>321</td>\n",
|
||
" <td>87</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>42</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>396</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>46</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>805</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>91.5</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Willie McGee</th>\n",
|
||
" <td>497</td>\n",
|
||
" <td>127</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2703</td>\n",
|
||
" <td>806</td>\n",
|
||
" <td>32</td>\n",
|
||
" <td>379</td>\n",
|
||
" <td>311</td>\n",
|
||
" <td>138</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>325</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>700.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Willie Randolph</th>\n",
|
||
" <td>492</td>\n",
|
||
" <td>136</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>5511</td>\n",
|
||
" <td>1511</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>897</td>\n",
|
||
" <td>451</td>\n",
|
||
" <td>875</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>313</td>\n",
|
||
" <td>381</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>875.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Wayne Tolleson</th>\n",
|
||
" <td>475</td>\n",
|
||
" <td>126</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>61</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>1700</td>\n",
|
||
" <td>433</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>217</td>\n",
|
||
" <td>93</td>\n",
|
||
" <td>146</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>113</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>385.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Willie Upshaw</th>\n",
|
||
" <td>573</td>\n",
|
||
" <td>144</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>3198</td>\n",
|
||
" <td>857</td>\n",
|
||
" <td>97</td>\n",
|
||
" <td>470</td>\n",
|
||
" <td>420</td>\n",
|
||
" <td>332</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>1314</td>\n",
|
||
" <td>131</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>960.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>-Willie Wilson</th>\n",
|
||
" <td>631</td>\n",
|
||
" <td>170</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>77</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>4908</td>\n",
|
||
" <td>1457</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>775</td>\n",
|
||
" <td>357</td>\n",
|
||
" <td>249</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>408</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1000.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>322 rows × 20 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" AtBat Hits HmRun Runs RBI Walks Years CAtBat CHits \\\n",
|
||
"Name \n",
|
||
"-Andy Allanson 293 66 1 30 29 14 1 293 66 \n",
|
||
"-Alan Ashby 315 81 7 24 38 39 14 3449 835 \n",
|
||
"-Alvin Davis 479 130 18 66 72 76 3 1624 457 \n",
|
||
"-Andre Dawson 496 141 20 65 78 37 11 5628 1575 \n",
|
||
"-Andres Galarraga 321 87 10 39 42 30 2 396 101 \n",
|
||
"... ... ... ... ... ... ... ... ... ... \n",
|
||
"-Willie McGee 497 127 7 65 48 37 5 2703 806 \n",
|
||
"-Willie Randolph 492 136 5 76 50 94 12 5511 1511 \n",
|
||
"-Wayne Tolleson 475 126 3 61 43 52 6 1700 433 \n",
|
||
"-Willie Upshaw 573 144 9 85 60 78 8 3198 857 \n",
|
||
"-Willie Wilson 631 170 9 77 44 31 11 4908 1457 \n",
|
||
"\n",
|
||
" CHmRun CRuns CRBI CWalks League Division PutOuts \\\n",
|
||
"Name \n",
|
||
"-Andy Allanson 1 30 29 14 A E 446 \n",
|
||
"-Alan Ashby 69 321 414 375 N W 632 \n",
|
||
"-Alvin Davis 63 224 266 263 A W 880 \n",
|
||
"-Andre Dawson 225 828 838 354 N E 200 \n",
|
||
"-Andres Galarraga 12 48 46 33 N E 805 \n",
|
||
"... ... ... ... ... ... ... ... \n",
|
||
"-Willie McGee 32 379 311 138 N E 325 \n",
|
||
"-Willie Randolph 39 897 451 875 A E 313 \n",
|
||
"-Wayne Tolleson 7 217 93 146 A W 37 \n",
|
||
"-Willie Upshaw 97 470 420 332 A E 1314 \n",
|
||
"-Willie Wilson 30 775 357 249 A W 408 \n",
|
||
"\n",
|
||
" Assists Errors Salary NewLeague \n",
|
||
"Name \n",
|
||
"-Andy Allanson 33 20 NaN A \n",
|
||
"-Alan Ashby 43 10 475.0 N \n",
|
||
"-Alvin Davis 82 14 480.0 A \n",
|
||
"-Andre Dawson 11 3 500.0 N \n",
|
||
"-Andres Galarraga 40 4 91.5 N \n",
|
||
"... ... ... ... ... \n",
|
||
"-Willie McGee 9 3 700.0 N \n",
|
||
"-Willie Randolph 381 20 875.0 A \n",
|
||
"-Wayne Tolleson 113 7 385.0 A \n",
|
||
"-Willie Upshaw 131 12 960.0 A \n",
|
||
"-Willie Wilson 4 3 1000.0 A \n",
|
||
"\n",
|
||
"[322 rows x 20 columns]"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd # dataframes are in pandas\n",
|
||
"\n",
|
||
"hitters = pd.read_csv(\"data/Hitters.csv\", index_col=\"Name\")\n",
|
||
"\n",
|
||
"hitters"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 1** : \n",
|
||
"\n",
|
||
"In `pd.read_csv(\"Hitters.csv\", index_col = \"Name\") `, what does `index_col = \"Name\"` mean ? Try without `index_col = \"Name\"`.\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:52.585039Z",
|
||
"start_time": "2025-03-26T10:33:52.568658Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Name</th>\n",
|
||
" <th>AtBat</th>\n",
|
||
" <th>Hits</th>\n",
|
||
" <th>HmRun</th>\n",
|
||
" <th>Runs</th>\n",
|
||
" <th>RBI</th>\n",
|
||
" <th>Walks</th>\n",
|
||
" <th>Years</th>\n",
|
||
" <th>CAtBat</th>\n",
|
||
" <th>CHits</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>CRuns</th>\n",
|
||
" <th>CRBI</th>\n",
|
||
" <th>CWalks</th>\n",
|
||
" <th>League</th>\n",
|
||
" <th>Division</th>\n",
|
||
" <th>PutOuts</th>\n",
|
||
" <th>Assists</th>\n",
|
||
" <th>Errors</th>\n",
|
||
" <th>Salary</th>\n",
|
||
" <th>NewLeague</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>-Andy Allanson</td>\n",
|
||
" <td>293</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>293</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>29</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>446</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>-Alan Ashby</td>\n",
|
||
" <td>315</td>\n",
|
||
" <td>81</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>24</td>\n",
|
||
" <td>38</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>3449</td>\n",
|
||
" <td>835</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>321</td>\n",
|
||
" <td>414</td>\n",
|
||
" <td>375</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>632</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>475.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>-Alvin Davis</td>\n",
|
||
" <td>479</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>18</td>\n",
|
||
" <td>66</td>\n",
|
||
" <td>72</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1624</td>\n",
|
||
" <td>457</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>224</td>\n",
|
||
" <td>266</td>\n",
|
||
" <td>263</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>880</td>\n",
|
||
" <td>82</td>\n",
|
||
" <td>14</td>\n",
|
||
" <td>480.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>-Andre Dawson</td>\n",
|
||
" <td>496</td>\n",
|
||
" <td>141</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>5628</td>\n",
|
||
" <td>1575</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>828</td>\n",
|
||
" <td>838</td>\n",
|
||
" <td>354</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>200</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>500.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>-Andres Galarraga</td>\n",
|
||
" <td>321</td>\n",
|
||
" <td>87</td>\n",
|
||
" <td>10</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>42</td>\n",
|
||
" <td>30</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>396</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>46</td>\n",
|
||
" <td>33</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>805</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>91.5</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>317</th>\n",
|
||
" <td>-Willie McGee</td>\n",
|
||
" <td>497</td>\n",
|
||
" <td>127</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>48</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>2703</td>\n",
|
||
" <td>806</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>379</td>\n",
|
||
" <td>311</td>\n",
|
||
" <td>138</td>\n",
|
||
" <td>N</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>325</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>700.0</td>\n",
|
||
" <td>N</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>318</th>\n",
|
||
" <td>-Willie Randolph</td>\n",
|
||
" <td>492</td>\n",
|
||
" <td>136</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>76</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>94</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>5511</td>\n",
|
||
" <td>1511</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>897</td>\n",
|
||
" <td>451</td>\n",
|
||
" <td>875</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>313</td>\n",
|
||
" <td>381</td>\n",
|
||
" <td>20</td>\n",
|
||
" <td>875.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>319</th>\n",
|
||
" <td>-Wayne Tolleson</td>\n",
|
||
" <td>475</td>\n",
|
||
" <td>126</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>61</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>6</td>\n",
|
||
" <td>1700</td>\n",
|
||
" <td>433</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>217</td>\n",
|
||
" <td>93</td>\n",
|
||
" <td>146</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>37</td>\n",
|
||
" <td>113</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>385.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>320</th>\n",
|
||
" <td>-Willie Upshaw</td>\n",
|
||
" <td>573</td>\n",
|
||
" <td>144</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>85</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>78</td>\n",
|
||
" <td>8</td>\n",
|
||
" <td>3198</td>\n",
|
||
" <td>857</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>470</td>\n",
|
||
" <td>420</td>\n",
|
||
" <td>332</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>E</td>\n",
|
||
" <td>1314</td>\n",
|
||
" <td>131</td>\n",
|
||
" <td>12</td>\n",
|
||
" <td>960.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>321</th>\n",
|
||
" <td>-Willie Wilson</td>\n",
|
||
" <td>631</td>\n",
|
||
" <td>170</td>\n",
|
||
" <td>9</td>\n",
|
||
" <td>77</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>11</td>\n",
|
||
" <td>4908</td>\n",
|
||
" <td>1457</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>775</td>\n",
|
||
" <td>357</td>\n",
|
||
" <td>249</td>\n",
|
||
" <td>A</td>\n",
|
||
" <td>W</td>\n",
|
||
" <td>408</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1000.0</td>\n",
|
||
" <td>A</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>322 rows × 21 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Name AtBat Hits HmRun Runs RBI Walks Years CAtBat \\\n",
|
||
"0 -Andy Allanson 293 66 1 30 29 14 1 293 \n",
|
||
"1 -Alan Ashby 315 81 7 24 38 39 14 3449 \n",
|
||
"2 -Alvin Davis 479 130 18 66 72 76 3 1624 \n",
|
||
"3 -Andre Dawson 496 141 20 65 78 37 11 5628 \n",
|
||
"4 -Andres Galarraga 321 87 10 39 42 30 2 396 \n",
|
||
".. ... ... ... ... ... ... ... ... ... \n",
|
||
"317 -Willie McGee 497 127 7 65 48 37 5 2703 \n",
|
||
"318 -Willie Randolph 492 136 5 76 50 94 12 5511 \n",
|
||
"319 -Wayne Tolleson 475 126 3 61 43 52 6 1700 \n",
|
||
"320 -Willie Upshaw 573 144 9 85 60 78 8 3198 \n",
|
||
"321 -Willie Wilson 631 170 9 77 44 31 11 4908 \n",
|
||
"\n",
|
||
" CHits ... CRuns CRBI CWalks League Division PutOuts Assists \\\n",
|
||
"0 66 ... 30 29 14 A E 446 33 \n",
|
||
"1 835 ... 321 414 375 N W 632 43 \n",
|
||
"2 457 ... 224 266 263 A W 880 82 \n",
|
||
"3 1575 ... 828 838 354 N E 200 11 \n",
|
||
"4 101 ... 48 46 33 N E 805 40 \n",
|
||
".. ... ... ... ... ... ... ... ... ... \n",
|
||
"317 806 ... 379 311 138 N E 325 9 \n",
|
||
"318 1511 ... 897 451 875 A E 313 381 \n",
|
||
"319 433 ... 217 93 146 A W 37 113 \n",
|
||
"320 857 ... 470 420 332 A E 1314 131 \n",
|
||
"321 1457 ... 775 357 249 A W 408 4 \n",
|
||
"\n",
|
||
" Errors Salary NewLeague \n",
|
||
"0 20 NaN A \n",
|
||
"1 10 475.0 N \n",
|
||
"2 14 480.0 A \n",
|
||
"3 3 500.0 N \n",
|
||
"4 4 91.5 N \n",
|
||
".. ... ... ... \n",
|
||
"317 3 700.0 N \n",
|
||
"318 20 875.0 A \n",
|
||
"319 7 385.0 A \n",
|
||
"320 12 960.0 A \n",
|
||
"321 3 1000.0 A \n",
|
||
"\n",
|
||
"[322 rows x 21 columns]"
|
||
]
|
||
},
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"hitters_bis = pd.read_csv(\"data/Hitters.csv\")\n",
|
||
"\n",
|
||
"hitters_bis"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Answer for ex. 1 : \n",
|
||
"\n",
|
||
"\n",
|
||
"It set the column named `Name` as the main column\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 2** :\n",
|
||
"\n",
|
||
"(1) Sample size of `Hitters` ? How many features in `Hitters` ?\n",
|
||
"\n",
|
||
"(2) What are the features in `Hitters` ? \n",
|
||
"\n",
|
||
"(3) Are all the features in $\\mathbb{R}$? \n",
|
||
"\n",
|
||
"(4) Are there many missing data ? `print` the number of missing data for each feature. \n",
|
||
"\n",
|
||
"- Hint : \n",
|
||
" - (2) et (3) Use `pandas.DataFrame.dtypes`. https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dtypes.html\n",
|
||
" - (4) Use `pandas.DataFrame.isnull`.\n",
|
||
" https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.isnull.html\n",
|
||
" See the example below. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:52.804278Z",
|
||
"start_time": "2025-03-26T10:33:52.784889Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"data : \n",
|
||
" nom age exam\n",
|
||
"0 Alice 19.0 15.0\n",
|
||
"1 Nicolas NaN 14.0\n",
|
||
"2 Jean NaN NaN\n",
|
||
"First result : \n",
|
||
" nom age exam\n",
|
||
"0 False False False\n",
|
||
"1 False True False\n",
|
||
"2 False True True\n",
|
||
"Second result : \n",
|
||
" nom 0\n",
|
||
"age 2\n",
|
||
"exam 1\n",
|
||
"dtype: int64\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Hint for Question (4) :\n",
|
||
"ex = pd.DataFrame(\n",
|
||
" {\n",
|
||
" \"nom\": [\"Alice\", \"Nicolas\", \"Jean\"],\n",
|
||
" \"age\": [19, np.NaN, np.NaN],\n",
|
||
" \"exam\": [15, 14, np.NaN],\n",
|
||
" }\n",
|
||
")\n",
|
||
"\n",
|
||
"print(\"data : \\n\", ex)\n",
|
||
"print(\"First result : \\n\", ex.isnull())\n",
|
||
"print(\"Second result : \\n\", ex.isnull().sum())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.092776Z",
|
||
"start_time": "2025-03-26T10:33:53.053583Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"(322, 20)\n",
|
||
"Index(['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'Years', 'CAtBat',\n",
|
||
" 'CHits', 'CHmRun', 'CRuns', 'CRBI', 'CWalks', 'League', 'Division',\n",
|
||
" 'PutOuts', 'Assists', 'Errors', 'Salary', 'NewLeague'],\n",
|
||
" dtype='object')\n",
|
||
" AtBat Hits HmRun Runs RBI Walks \\\n",
|
||
"count 322.000000 322.000000 322.000000 322.000000 322.000000 322.000000 \n",
|
||
"mean 380.928571 101.024845 10.770186 50.909938 48.027950 38.742236 \n",
|
||
"std 153.404981 46.454741 8.709037 26.024095 26.166895 21.639327 \n",
|
||
"min 16.000000 1.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
"25% 255.250000 64.000000 4.000000 30.250000 28.000000 22.000000 \n",
|
||
"50% 379.500000 96.000000 8.000000 48.000000 44.000000 35.000000 \n",
|
||
"75% 512.000000 137.000000 16.000000 69.000000 64.750000 53.000000 \n",
|
||
"max 687.000000 238.000000 40.000000 130.000000 121.000000 105.000000 \n",
|
||
"\n",
|
||
" Years CAtBat CHits CHmRun CRuns \\\n",
|
||
"count 322.000000 322.00000 322.000000 322.000000 322.000000 \n",
|
||
"mean 7.444099 2648.68323 717.571429 69.490683 358.795031 \n",
|
||
"std 4.926087 2324.20587 654.472627 86.266061 334.105886 \n",
|
||
"min 1.000000 19.00000 4.000000 0.000000 1.000000 \n",
|
||
"25% 4.000000 816.75000 209.000000 14.000000 100.250000 \n",
|
||
"50% 6.000000 1928.00000 508.000000 37.500000 247.000000 \n",
|
||
"75% 11.000000 3924.25000 1059.250000 90.000000 526.250000 \n",
|
||
"max 24.000000 14053.00000 4256.000000 548.000000 2165.000000 \n",
|
||
"\n",
|
||
" CRBI CWalks PutOuts Assists Errors \\\n",
|
||
"count 322.000000 322.000000 322.000000 322.000000 322.000000 \n",
|
||
"mean 330.118012 260.239130 288.937888 106.913043 8.040373 \n",
|
||
"std 333.219617 267.058085 280.704614 136.854876 6.368359 \n",
|
||
"min 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
|
||
"25% 88.750000 67.250000 109.250000 7.000000 3.000000 \n",
|
||
"50% 220.500000 170.500000 212.000000 39.500000 6.000000 \n",
|
||
"75% 426.250000 339.250000 325.000000 166.000000 11.000000 \n",
|
||
"max 1659.000000 1566.000000 1378.000000 492.000000 32.000000 \n",
|
||
"\n",
|
||
" Salary \n",
|
||
"count 263.000000 \n",
|
||
"mean 535.925882 \n",
|
||
"std 451.118681 \n",
|
||
"min 67.500000 \n",
|
||
"25% 190.000000 \n",
|
||
"50% 425.000000 \n",
|
||
"75% 750.000000 \n",
|
||
"max 2460.000000 \n",
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"Index: 322 entries, -Andy Allanson to -Willie Wilson\n",
|
||
"Data columns (total 20 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 AtBat 322 non-null int64 \n",
|
||
" 1 Hits 322 non-null int64 \n",
|
||
" 2 HmRun 322 non-null int64 \n",
|
||
" 3 Runs 322 non-null int64 \n",
|
||
" 4 RBI 322 non-null int64 \n",
|
||
" 5 Walks 322 non-null int64 \n",
|
||
" 6 Years 322 non-null int64 \n",
|
||
" 7 CAtBat 322 non-null int64 \n",
|
||
" 8 CHits 322 non-null int64 \n",
|
||
" 9 CHmRun 322 non-null int64 \n",
|
||
" 10 CRuns 322 non-null int64 \n",
|
||
" 11 CRBI 322 non-null int64 \n",
|
||
" 12 CWalks 322 non-null int64 \n",
|
||
" 13 League 322 non-null object \n",
|
||
" 14 Division 322 non-null object \n",
|
||
" 15 PutOuts 322 non-null int64 \n",
|
||
" 16 Assists 322 non-null int64 \n",
|
||
" 17 Errors 322 non-null int64 \n",
|
||
" 18 Salary 263 non-null float64\n",
|
||
" 19 NewLeague 322 non-null object \n",
|
||
"dtypes: float64(1), int64(16), object(3)\n",
|
||
"memory usage: 52.8+ KB\n",
|
||
"None\n",
|
||
"AtBat 0\n",
|
||
"Hits 0\n",
|
||
"HmRun 0\n",
|
||
"Runs 0\n",
|
||
"RBI 0\n",
|
||
"Walks 0\n",
|
||
"Years 0\n",
|
||
"CAtBat 0\n",
|
||
"CHits 0\n",
|
||
"CHmRun 0\n",
|
||
"CRuns 0\n",
|
||
"CRBI 0\n",
|
||
"CWalks 0\n",
|
||
"League 0\n",
|
||
"Division 0\n",
|
||
"PutOuts 0\n",
|
||
"Assists 0\n",
|
||
"Errors 0\n",
|
||
"Salary 59\n",
|
||
"NewLeague 0\n",
|
||
"dtype: int64\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(hitters.shape)\n",
|
||
"print(hitters.columns)\n",
|
||
"print(hitters.describe())\n",
|
||
"print(hitters.info())\n",
|
||
"print(hitters.isnull().sum())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"There are 20 features, all the features are in $\\mathbb{R}$. And there are 59 missing values in the column **Salary**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As `Salary` is the **target** we want to predict, if it is missing for a player, we will remove this player.\n",
|
||
"\n",
|
||
"To simplify here, **we only take numeric features** and ignore factors (i.e. categorical attributes) like `League`, `Division` and `NewLeague`. \n",
|
||
"\n",
|
||
"**Remark :**\n",
|
||
"To handle the categorical features, one can use one-hot encoding, see https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 3** :\n",
|
||
"\n",
|
||
"(1) Remove the players for whom `Salary` is missing. \n",
|
||
"\n",
|
||
"- Hint : use `pandas.DataFrame.dropna`. https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html\n",
|
||
"\n",
|
||
"\n",
|
||
"(2) `Salary` is the **target**, denoted as `Y` in the next cell. For the features ( `X` in the next cell, we remove `League`, `Division` and `NewLeague`.) \n",
|
||
"\n",
|
||
"- Hint : (1) You can use `dtypes == 'int64'` to select the integer-valued features. Alternative : use `select_dtypes`with `include=number`\n",
|
||
" (2) Use `pandas.DataFrame.loc` to access the dataframe. \n",
|
||
"https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.191743Z",
|
||
"start_time": "2025-03-26T10:33:53.186755Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"0\n",
|
||
"(263, 16)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# We remove the players for whom Salary is missing\n",
|
||
"hitters.dropna(subset=[\"Salary\"], inplace=True)\n",
|
||
"\n",
|
||
"X = hitters.select_dtypes(include=int)\n",
|
||
"Y = hitters[\"Salary\"]\n",
|
||
"\n",
|
||
"# check-point\n",
|
||
"print(Y.isnull().sum()) # should be 0\n",
|
||
"print(X.shape) # should be (322-59, 20-4)=(263,16)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 4**\n",
|
||
"Split the data into a train set and a test set. Use 30% of the data for the test set and a random state = 42. (In the end you can try other values than 42). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.367971Z",
|
||
"start_time": "2025-03-26T10:33:53.348332Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Exercise 4\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, Y, test_size=0.3, random_state=42)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Standardization**\n",
|
||
"We will standardize the data before applying Lasso or Ridge as is usually advised. For this we use the transformer `StandardScaler`. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.539084Z",
|
||
"start_time": "2025-03-26T10:33:53.531578Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"\n",
|
||
"scaler = StandardScaler()\n",
|
||
"XtrainScaled = scaler.fit_transform(Xtrain)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let us check that the columns are now standardized :"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.574140Z",
|
||
"start_time": "2025-03-26T10:33:53.568355Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]),\n",
|
||
" array([ 2.41352831e-17, 9.65411326e-18, 1.93082265e-17, -1.20676416e-17,\n",
|
||
" 1.01368189e-16, 1.61706397e-16, 7.72329061e-17, 6.75787928e-17,\n",
|
||
" -1.93082265e-17, -3.86164530e-17, 5.79246795e-17, -3.86164530e-17,\n",
|
||
" 2.89623398e-17, -3.25826322e-17, -6.75787928e-17, 8.68870193e-17]))"
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"XtrainScaled.std(axis=0), XtrainScaled.mean(axis=0)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Note that the initial dataframe is now a numpy array :"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.625854Z",
|
||
"start_time": "2025-03-26T10:33:53.619268Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"numpy.ndarray"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"type(XtrainScaled)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let us turn Ytrain into a numpy array as well :"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.657967Z",
|
||
"start_time": "2025-03-26T10:33:53.654162Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"Ytrain = Ytrain.to_numpy()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## 1. Ridge and Lasso <a class=\"anchor\" id=\"chapter1\"></a>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Ridge**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 5** : (1) Create a Ridge regression model. Specify `fit_intercept=True`, use the default value `alpha=1` and call it `ridge`. Check what alpha corresponds to. \n",
|
||
"\n",
|
||
"Hint : Use `sklearn.linear_model.Ridge`.\n",
|
||
"\n",
|
||
"https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html\n",
|
||
"\n",
|
||
"(2) Fit `ridge` on the data `(XtrainScaled,Ytrain)`.\n",
|
||
"\n",
|
||
"(3) Display the estimated coefficients (`intercept` included !). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.735321Z",
|
||
"start_time": "2025-03-26T10:33:53.685415Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[-215.12785148 290.20873256 53.45833136 -7.60173315 -38.54941926\n",
|
||
" 73.36945017 32.60415669 -323.39710533 116.22147257 26.20493566\n",
|
||
" 353.14584561 122.1676183 -121.03308298 93.78447846 36.78702805\n",
|
||
" -14.33540126] 535.83825\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import Ridge\n",
|
||
"\n",
|
||
"ridge = Ridge(fit_intercept=True, alpha=1)\n",
|
||
"ridge.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"print(ridge.coef_, ridge.intercept_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 6** : (1) Create a Lasso regression model with `alpha=1` and `fit_intercept=True`, call it `lasso`. What does `alpha` correspond to ?\n",
|
||
"\n",
|
||
"Hint : use `sklearn.linear_model.Lasso` https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html\n",
|
||
"\n",
|
||
"(2) Fit `lasso` on the data `(XtrainScaled,Ytrain)`.\n",
|
||
"\n",
|
||
"(3) Display the estimated coefficients. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.759155Z",
|
||
"start_time": "2025-03-26T10:33:53.751938Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([-230.44564808, 301.60792783, 40.17406635, -10.38454116,\n",
|
||
" -22.84228549, 70.6672065 , 40.56803687, -395.18954578,\n",
|
||
" 36.12817932, -0. , 486.21184889, 170.22079734,\n",
|
||
" -133.5656457 , 94.08801971, 35.12092631, -8.15322646])"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import Lasso\n",
|
||
"\n",
|
||
"lasso = Lasso(fit_intercept=True, alpha=1)\n",
|
||
"lasso.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"lasso.coef_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n",
|
||
"-------------------\n",
|
||
"\n",
|
||
"In the next exercise, we will display the variation of the Ridge estimator coefficients as a function of the regularization (`alpha`, *shrinkage parameter* ).\n",
|
||
"Let us generate 50 different values for alpha as follows :"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.780921Z",
|
||
"start_time": "2025-03-26T10:33:53.777186Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"alphas = np.logspace(-4, 6, 50)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"*Info about logspace* (if necessary)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.807330Z",
|
||
"start_time": "2025-03-26T10:33:53.802462Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([ 1., 10., 100., 1000.])"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"np.logspace(0, 3, 4)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.850865Z",
|
||
"start_time": "2025-03-26T10:33:53.845506Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([ 1., 10., 100., 1000.])"
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"10 ** (np.linspace(0, 3, 4))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:53.872536Z",
|
||
"start_time": "2025-03-26T10:33:53.868382Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"array([ True, True, True, True, True])"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"np.logspace(-2, 2, 5) == 10 ** (np.linspace(-2, 2, 5))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.012679Z",
|
||
"start_time": "2025-03-26T10:33:53.899578Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[1.00000000e-04 1.59985872e-04 2.55954792e-04 4.09491506e-04\n",
|
||
" 6.55128557e-04 1.04811313e-03 1.67683294e-03 2.68269580e-03\n",
|
||
" 4.29193426e-03 6.86648845e-03 1.09854114e-02 1.75751062e-02\n",
|
||
" 2.81176870e-02 4.49843267e-02 7.19685673e-02 1.15139540e-01\n",
|
||
" 1.84206997e-01 2.94705170e-01 4.71486636e-01 7.54312006e-01\n",
|
||
" 1.20679264e+00 1.93069773e+00 3.08884360e+00 4.94171336e+00\n",
|
||
" 7.90604321e+00 1.26485522e+01 2.02358965e+01 3.23745754e+01\n",
|
||
" 5.17947468e+01 8.28642773e+01 1.32571137e+02 2.12095089e+02\n",
|
||
" 3.39322177e+02 5.42867544e+02 8.68511374e+02 1.38949549e+03\n",
|
||
" 2.22299648e+03 3.55648031e+03 5.68986603e+03 9.10298178e+03\n",
|
||
" 1.45634848e+04 2.32995181e+04 3.72759372e+04 5.96362332e+04\n",
|
||
" 9.54095476e+04 1.52641797e+05 2.44205309e+05 3.90693994e+05\n",
|
||
" 6.25055193e+05 1.00000000e+06]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[<matplotlib.lines.Line2D at 0x30a321970>]"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGsCAYAAAAPJKchAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApCUlEQVR4nO3dDXBU1d3H8X8IkiiSWEBCFAiB+hKNigTEEKLgCxocKj5UYkXAFxiioMS0VpCOCHWMWkVEBYRSGKqFjAoOdlBhSuXFSCsRKhWLCtFESIzBmvDSJpLsM+c8bp7s5m032d17z73fz8wa97Kb3OzOnvzvOf/fvVEej8cjAAAAFulk1Q8GAABQKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAICljCpGtm/fLmPHjpVzzjlHoqKi5M033wz6e6iz3z/zzDNy/vnnS0xMjPTt21eeeOKJsOwvAABoW2cxyIkTJ+Syyy6Tu+66S8aPH9+u7zFr1izZvHmzLkguueQSqaqqksrKypDvKwAACEyUqRfKUzMjGzZskHHjxjVsq62tld/85jfy6quvyvfffy+pqany1FNPyciRI/W/f/rpp3LppZfKP//5T7ngggss3HsAAGDkMk1b1IzJ+++/L+vWrZOPP/5Ybr31Vrnxxhvl888/1//+1ltvyYABA+TPf/6zJCcnS//+/WXq1Kny3XffWb3rAAC4lmOKkYMHD8ratWvltddek8zMTBk4cKD86le/khEjRsiqVav0Yw4dOiRfffWVfsyaNWtk9erVUlRUJD//+c+t3n0AAFzLqJ6R1nz00Ue6OVU1pjZWU1MjPXr00P9fX1+v76tCxPu4lStXSlpamhw4cIClGwAALOCYYkQVGtHR0XqmQ31t7Mwzz9RfExMTpXPnzj4FS0pKiv5aUlJCMQIAgAUcU4xcfvnlUldXJxUVFXqZpjkZGRly6tQpvaSjlnGUzz77TH9NSkqK6P4CAAAD0zTHjx+XL774oqH4WLhwoYwaNUq6d+8u/fr1kzvuuEM3sD777LP631Vkd+vWrTrCO2bMGD17MnToUD1TsmjRIn1/xowZEhcXp+O+AAAg8owqRt577z1dfPibMmWKbkb94Ycf5PHHH9c9IYcPH9a9Iunp6TJ//nxdkChHjhyR+++/XxcfXbt2laysLF28qIIGAABEnlHFCAAAcB7HRHsBAICZKEYAAICljEjTqEZT1evRrVs3fRp4AJGlVnOPHTumL1LZqZMZxzCMG4A5Y4cRxYgaUNTVdQFYq7S0VPr06SMmYNwAzBk7jChG1JGN95dRMVwAkVVdXa3/sHs/iyZg3ADMGTuMKEa8U6xqQGFQAaxj0nIH4wZgzthhxuIvAABwLIoRAABgKYoRAABgKYoRAABgKYoRAABgKYoRAABgKYoRAABgKYoRAABgKYoRAABgVjGyfft2GTt2rL7ojTqj2ptvvtnmc7Zt2yZpaWkSGxsrAwYMkGXLlrV3fwG4yOHDh+WOO+6QHj16yBlnnCGDBg2SoqIiq3cLgNXFyIkTJ+Syyy6TF198MaDHFxcXy5gxYyQzM1P27NkjjzzyiDzwwAPyxhtvtGd/AYRQWdV/pPBgpf5qN//+978lIyNDTjvtNHn77bdl//798uyzz8pZZ51l9a4BrlcW4rEj6GvTZGVl6Vug1CxIv379ZNGiRfp+SkqK7N69W5555hkZP358sD8eQIgUfFgic9bvk3qPSKcokfz/uUSyh/YTu3jqqaf0BbZWrVrVsK1///6W7hMACcvYEfaekQ8++EBGjx7ts+2GG27QBckPP/zQ7HNqamr0lf4a3wCEjjqa8Q4mivr6yPp/2mqGZOPGjTJkyBC59dZbpVevXnL55ZfLihUrWnw84wZg7tgR9mKkvLxcEhISfLap+6dOnZLKyspmn5Ofny/x8fENN3V0BCB0iitPNAwmXnUej3xZeVLs4tChQ7J06VI577zz5N1335WcnBy9xLtmzZpmH8+4AZg7dnSy4tLBHo+n1UsKz5kzR6qqqhpupaWlkdhNwDWSe3bV06uNRUdFSf+eZ4hd1NfXy+DBg+WJJ57QsyLTp0+XadOm6QKlOYwbgLljR9iLkd69e+vZkcYqKiqkc+fOukO+OTExMRIXF+dzAxA6ifGn63VeNYgo6usT/5Oqt9tFYmKiXHTRRT7bVM9ZSUlJs49n3ADMHTuCbmANVnp6urz11ls+2zZv3qzXglWXPABrqIazq84/W0+vqqMaOxUiikrSHDhwwGfbZ599JklJSZbtEwAJy9gRdDFy/Phx+eKLL3yiu3v37pXu3bvr1IyaKlXnBvCu66p1XhUDzsvL01OsqqF15cqVsnbt2g7vPICOUYOI3YoQrwcffFCGDx+ul2kmTJggf//732X58uX6BiByVHOq6hVRSzTe8SLUY0fQxYhKwYwaNarhvioylClTpsjq1aulrKzMZxo1OTlZNm3apAeWl156SZ8sbfHixcR6AbRq6NChsmHDBn2As2DBAj2WqFMETJw40epdA1yjIEKnAIjyeLtJbUxF9FR3vGpKYx0YiDwTP4Mm7jNgtxmRjCe3+qRnVI/IztmjAp4VCfRzyLVpAACApacAoBgBAACWngKAYgQAAFh6CoCwR3sBAICZsiN0CgCKEQAA0GKUNxKnAKAYAQAAll7Nm54RAAAgVl7Nm2IEAACIlVfzphgBAABi5dW8KUYAAIBYeTVvGlgBAIClV/OmGAEAwMXKLIjy+qMYAQDApQosivL6o2cEAAAXKrMwyuuPYgQAABcqtjDK649iBAAAF0q2MMrrj2IEAAAXSrQwyuuPBlYAAFwq26Iorz+KEQAAXKTMBlFefxQjAAC4RIFNorz+6BkBAMAFymwU5fVHMQIAgAsU2yjK649iBAAAF0i2UZTXH8UIAAAukGijKK8/GlgBAHCJbJtEef1RjAAA4GBlNozy+qMYAQDAoQpsGuX1R88IAAAOVGbjKK8/ihEAAByo2MZRXn8UIwAAOFCyjaO8/ihGAABwoEQbR3n90cAKAIBDZds0yuuPYgQAAAcpMyDK649iBAAAhygwJMrrj54RAAAcoMygKK8/ihEAAByg2KAorz+KEQAAHCDZoCivP4oRAAAcINGgKK8/GlgBAHBIcibbkCivP4oRAAAclJxJNCDK649lGgAADFNmcHKmORQjAAAYptjg5ExzKEYAADBMssHJmeZQjAAAYJhEg5MzzaGBFQAAA2UbmpxpDsUIAACGKDPwIniBoBgBAMAABYZeBC8Q9IwAAGBzZQ6L8vqjGAEAwOaKHRbl9UcxAgCAzSU7LMrrj2IEAACbS3RYlNcfDawAABgg20FRXn8UIwAA2FSZQ6O8/ihGAACwoQIHR3n90TMCAIDNlDk8yuuPYgQAAJspdniU1x/FCAAANpPs8ChvSIqRJUuWSHJyssTGxkpaWprs2LGj1ce/+uqrctlll8kZZ5whiYmJctddd8nRo0fbu88AXCY/P1+ioqIkNzfX6l0BIiLR4VHeDjewFhQU6AFBFSQZGRny8ssvS1ZWluzfv1/69WvaWLNz506ZPHmyPPfcczJ27Fg5fPiw5OTkyNSpU2XDhg2h+j0AONSHH34oy5cvl0svvdTqXQEiKtvBUd4Oz4wsXLhQ7rnnHl1MpKSkyKJFi6Rv376ydOnSZh+/a9cu6d+/vzzwwAN6NmXEiBEyffp02b17dyj2H4CDHT9+XCZOnCgrVqyQn/zkJ1bvDhB2ZVX/kcKDlQ2NqqoASR/Yw9GFSNDFSG1trRQVFcno0aN9tqv7hYWFzT5n+PDh8vXXX8umTZvE4/HIN998I6+//rrcdNNNLf6cmpoaqa6u9rkBcJ8ZM2boseK6665r87GMG3BClDfjya1y+4q/6a/qvlsEVYxUVlZKXV2dJCQk+GxX98vLy1ssRlTPSHZ2tnTp0kV69+4tZ511lrzwwgutrg/Hx8c33NTMCwB3WbdunXz00Ud6PAgE4wZMVuayKG9IGlhVI1ljasbDf5uX6iVRSzSPPvqonlV55513pLi4WPeNtGTOnDlSVVXVcCstLW3PbgIwlPrMz5o1S1555RXdKB8Ixg2YrNhlUd4ONbD27NlToqOjm8yCVFRUNJktaXy0ohpdH3roIX1fNaF17dpVMjMz5fHHH9fpGn8xMTH6BsCd1IGLGldUWs9Lzcpu375dXnzxRb0ko8aixhg34IQob73HHVHeDs2MqGUWNThs2bLFZ7u6r5ZjmnPy5Enp1Mn3x3gHETWjAgD+rr32Wtm3b5/s3bu34TZkyBDdzKr+378QAUyX6LIob4ejvXl5eTJp0iQ9MKSnp+vIXUlJScOyi5oqVfHdNWvW6Psqzjtt2jSdtrnhhhukrKxMR4OvuOIKOeecc0L/GwEwXrdu3SQ1NdVnm5pR7dGjR5PtgFNkuyjK2+FiRDWiqhOWLViwQBcWamBQSZmkpCT972qbKk687rzzTjl27JieWv3lL3+pm1evueYaeeqpp0L7mwAAYBi3XJW3LVEeA9ZKVERPdcerprS4uDirdwdwHRM/gybuM9zFDVflrQ7wc8i1aQAAiDC3R3n9UYwAABBhbo/y+qMYAQAgwtx2Vd62UIwAABBhbo/ydjhNAwAAOs7NUV5/FCMAAFgQ41XcGuX1RzECAECYuSHG2xH0jAAAEEbEeNtGMQIAQBgR420bxQgAAGFEjLdtFCMAAIQRMd620cAKAECYEeNtHcUIAABhwBV5A0cxAgBAiBHlDQ49IwAAhBBR3uBRjAAAEEJEeYNHMQIAQAgR5Q0exQgAACFElDd4NLACABDi9AxR3uBQjAAAEKb0DEVIYFimAQCgA0jPdBzFCAAAHUB6puMoRgAA6ADSMx1HMQIAQAeQnuk4GlgBAOgg0jMdQzECAEA7cCG80KEYAQAgSFwIL7ToGQEAIAhEeUOPYgQAgCAQ5Q09ihEAAIJAlDf0KEYAAAgCUd7Qo4EVAIAgEeUNLYoRAAACQJQ3fChGAABoA1He8KJnBACAVhDlDT+KEQAAWkGUN/woRgAAaAVR3vCjGAEAoBVEecOPBlYAANpAlDe8KEYAAGgjxqsQ5Q0fihEAABohxht59IwAAPAjYrzWoBgBAOBHxHitQTECAMCPiPFag2IEAIAfEeO1Bg2sAAA0Qow38ihGAACuxxV5rUUxAgBwNaK81qNnBHDZ0V/hwUpiisCPiPLaAzMjgEtw9AcEF+VlmSZymBkBXICjP6B5RHntgWIEcAFO5AQ0jyivPbBMA7jo6K9xQcLRH/B/iPJaj5kRwAU4+gNab+ZWn4X0gT34TFiEmRHAJTj6A/4Pzdz2w8wI4CIc/cHtaOZ2UDGyZMkSSU5OltjYWElLS5MdO3a0+viamhqZO3euJCUlSUxMjAwcOFD+8Ic/tHefAbhAfn6+DB06VLp16ya9evWScePGyYEDB6zeLRiOZm6HFCMFBQWSm5uri4s9e/ZIZmamZGVlSUlJSYvPmTBhgvzlL3+RlStX6sFk7dq1cuGFF3Z03wE42LZt22TGjBmya9cu2bJli5w6dUpGjx4tJ06csHrXYDCivPYU5fF4/GrE1g0bNkwGDx4sS5cubdiWkpKij1rUkYy/d955R2677TY5dOiQdO/evV07WV1dLfHx8VJVVSVxcXHt+h4A2s8On8Fvv/1Wz5CoIuWqq64yYp9h354RtTSjZkS8zdz0jIRHoJ/DoBpYa2trpaioSGbPnu2zXR2tFBYWNvucjRs3ypAhQ+Tpp5+WP/7xj9K1a1f52c9+Jr/97W/l9NNPb3FZR90a/zIA3E0NZkpLBzWMGwgUzdz2E1QxUllZKXV1dZKQkOCzXd0vLy9v9jlqRmTnzp26v2TDhg36e9x3333y3Xfftdg3omZY5s+fH8yuAXAwNYGbl5cnI0aMkNTU1GYfw7iB1nBVXgc2sEb9eK6CxgOF/zav+vp6/W+vvvqqXHHFFTJmzBhZuHChrF69Wv7zn+a7l+fMmaOPgry30tLS9uwmAIeYOXOmfPzxx7rfrCWMG2htWSbjya1y+4q/6a/qPgyeGenZs6dER0c3mQWpqKhoMlvilZiYKOeee65eM2rcY6IKmK+//lrOO++8Js9RiRt1A4D7779fL/du375d+vTp0+LjGDcQTJRXLdMwM2LozEiXLl10lFd1tjem7g8fPrzZ52RkZMiRI0fk+PHjDds+++wz6dSpU6sDCwB3UwcsakZk/fr1snXrVn06ASBYRHkdukyj1m1///vf636PTz/9VB588EEd683JyWmYKp08eXLD42+//Xbp0aOH3HXXXbJ//359dPPQQw/J3Xff3WIDKwCoWO8rr7wif/rTn/S5RtSMrLq1tLwLNIcor0OLkezsbFm0aJEsWLBABg0apIuLTZs26ROaKWVlZT7nHDnzzDP1zMn333+vUzUTJ06UsWPHyuLFi0P7mwBwFHX6ANX7MXLkSL3c672pcx0BgeK6TA49z4gVOF8AYC0TP4Mm7jPCl55R94nyOuQ8IwAAmHohPIoQ++JCeQAAx+BCeGaiGAEAOAbpGTNRjAAAHIP0jJkoRgAAjkF6xkw0sAIAHIUL4ZmHYgQAYDwuhGc2ihEAgCOjvDAHPSMAAGMR5XUGihEAgLGI8joDxQgAwFhEeZ2BYgQAYCyivM5AAysAwGhEec1HMQIAMDrGqxDlNRvFCADAGMR4nYmeEQCAEYjxOhfFCADACMR4nYtiBABgBGK8zkUxAgAwAjFe56KBFQBgDGK8zkQxAgCwNa7I63wUIwAA2yLK6w70jAAAbIkor3tQjAAAbIkor3tQjAAAbIkor3tQjAAAbIkor3vQwAoAsC2ivO5AMQIAsBWivO5DMQIAsA2ivO5EzwgAwBaI8roXxQgAwBaI8roXxQgAwBaI8roXxQgAwBaI8roXDawAANsgyutOFCMAAEsR5QXFCADAMkR5odAzAgCwBFFeeFGMAAAsQZQXXhQjAABLEOWFF8UIAMASRHnhRQMrAMAyRHmhUIwAACKKKC/8UYwAACKGKC+aQ88IACAiiPKiJRQjAICIIMqLllCMAAAigigvWkIxAgCICKK8aAkNrACAiCVniPKiORQjAICIJmeI8sIfyzQAgJAjOYNgUIwAAEKO5AyCQTECAAg5kjMIBsUIACDkSM4gGDSwAgDCguQMAkUxAgAIGS6Ch/agGAEAhAQXwUNEe0aWLFkiycnJEhsbK2lpabJjx46Anvf+++9L586dZdCgQe35sQBcqL3jDSKLKC8iWowUFBRIbm6uzJ07V/bs2SOZmZmSlZUlJSUlrT6vqqpKJk+eLNdee21H9heAi7R3vEHkEeVFRIuRhQsXyj333CNTp06VlJQUWbRokfTt21eWLl3a6vOmT58ut99+u6Snp3dkfwG4SHvHG0QeUV5ErBipra2VoqIiGT16tM92db+wsLDF561atUoOHjwo8+bNC+jn1NTUSHV1tc8NgLsEO94wbliLKC8i1sBaWVkpdXV1kpCQ4LNd3S8vL2/2OZ9//rnMnj1br/OqfpFA5Ofny/z584PZNQABJBtMEux4w7hhPaK8iGgDa9SPla+Xx+Npsk1RA4lamlEDxPnnnx/w958zZ47uMfHeSktL27ObgLg92ZDx5Fa5fcXf9Fd130SBjjeMG9YVvIUHKxsaVVUBkj6wB4UIwjcz0rNnT4mOjm5yVFJRUdHk6EU5duyY7N69WzeezZw5U2+rr6/Xg4maJdm8ebNcc801TZ4XExOjbwBCm2xQR62m/JEIdrxh3Ig8orywZGakS5cuOlq3ZcsWn+3q/vDhw5s8Pi4uTvbt2yd79+5tuOXk5MgFF1yg/3/YsGEd/w0AODLZEOx4g8giygtLT3qWl5cnkyZNkiFDhuhkzPLly3XMThUZ3qnSw4cPy5o1a6RTp06Smprq8/xevXrp8wX4bwcQ+mRD44LExGRDW+MN7FnwmjL7BoOLkezsbDl69KgsWLBAysrKdFGxadMmSUpK0v+utnEOAMAeyQZ1pKr+QJiabGhrvIF1nFLwwh6iPKqBw+ZURC8+Pl43pamlHwCBUVPmoUg2mPgZNHGfTewZ8S946RlBez6HXJsGcDAuUoZwIsqLUKEYAQAEjKvyIhwoRgAAASHKC1ud9AwA4C5EeRFOFCMAAFecuwb2RTECAGgTV+VFOFGMAADaxFV5EU40sAIAAkKUF+FCMQIAaBFRXkQCxQgAoFlEeREp9IwAAJogyotIohgBADRBlBeRRDECAGiCKC8iiWIEANAEUV5EEg2sAIBmEeVFpFCMAAAaEOWFFShGAAAaUV5YhZ4RAABRXliKYgQAQJQXlqIYAQAQ5YWlKEYAAER5YSkaWAEAGlFeWIViBABcyj/GqxDlhRUoRgDAhYjxwk7oGQEAlyHGC7uhGAEAlyHGC7uhGAEAlyHGC7uhGAEAlyHGC7uhgRUAXJieIcYLO6EYAQAXp2coQmAHLNMAgMORnoHdUYwAgMORnoHdUYwAgMORnoHdUYwAgMORnoHd0cAKAC5AegZ2RjECAC65EB4XwYNdUYwAgANxITyYhJ4RAHAYorwwDcUIADgMUV6YhmIEAByGKC9MQzECAA5DlBemoYEVAByIKC9MQjECODjKCXchygtTUYwADkGU0914/2EyekYAByDK6W68/zAdxQjgAEQ53Y33H6ajGAEcgCinu/H+w3QUI4ADEOV0N95/mI4GVsAhiHK6G+8/TEYxAjgIUU53IcoLp6AYAQADEeWFk9AzAgCGIcoLp6EYAQDDEOWF01CMAIBhiPLCaShGAMAwRHnhNDSwAoCBiPJC3D4zsmTJEklOTpbY2FhJS0uTHTt2tPjY9evXy/XXXy9nn322xMXFSXp6urz77rsd2WcADvfll1/KPffco8eZ008/XQYOHCjz5s2T2tpacSvVnFp4sNKnSVUVIOkDe1CIwH3FSEFBgeTm5srcuXNlz549kpmZKVlZWVJSUtLs47dv366LkU2bNklRUZGMGjVKxo4dq58LAM3517/+JfX19fLyyy/LJ598Is8995wsW7ZMHnnkEXFrjDfjya1y+4q/6a/qPuAkUR6Px68nu3XDhg2TwYMHy9KlSxu2paSkyLhx4yQ/Pz+g73HxxRdLdna2PProowE9vrq6WuLj46WqqkrPrgCILDt8Bn/3u9/pcefQoUPG7HMoqJkQVYA0Ts+oHpGds0cxIwLbC/RzGFTPiJoiVbMbs2fP9tk+evRoKSwsDOh7qKOdY8eOSffu3Vt8TE1Njb41/mUAuJsazNw4brQW46UYgSuXaSorK6Wurk4SEhJ8tqv75eXlAX2PZ599Vk6cOCETJkxo8TFqhkVVUt5b3759g9lNAA5z8OBBeeGFFyQnJ8d14wYxXrhBuxpYo36Mk3mplR7/bc1Zu3atPPbYY7rvpFevXi0+bs6cOfooyHsrLS1tz24CsBn1+VdjRWu33bt3+zznyJEjcuONN8qtt94qU6dOdd24QYwXbhDUMk3Pnj0lOjq6ySxIRUVFk9kSf6oAUd3xr732mlx33XWtPjYmJkbfADjLzJkz5bbbbmv1Mf379/cpRFTTu0rhLV++3LXjBjFeOF1QxUiXLl10lHfLli1yyy23NGxX92+++eZWZ0Tuvvtu/fWmm27q2B4DMJY6oFG3QBw+fFgXImrMWbVqlXTq5K5zNHJFXrhJ0Cc9y8vLk0mTJsmQIUMajlZUrNe7lqumStUgsmbNGn1fFSCTJ0+W559/Xq688sqGWRV17gC1rgsA/tSMyMiRI6Vfv37yzDPPyLffftvwb7179xan44q8cJugixEVyT169KgsWLBAysrKJDU1VZ9DJCkpSf+72tb4nCPqPAGnTp2SGTNm6JvXlClTZPXq1aH6PQA4yObNm+WLL77Qtz59+vj8W5BnI3DMFXnVMg0zI3CqoM8zYgWnnC8AMJWJn0ET91lRZ1lVJzfzt3balfpsq4BJAv0cumsRFgBsjigv3IhiBABshCgv3Iir9gKAzRDlhdtQjACADRDlhZtRjACAxYjywu3oGQEAG0Z51XbALShGAEOpP1YqBsofLedelRdwC5ZpAAMxre+8KG/jgoQoL9yGmRHAMEzrOwtRXoCZEcBR0/r8ATMzPUOUF25HMQIYhml95y6zUYTArVimAQzDtL7ZWGYDmmJmBDAQ0/rmYpkNaIpiBDAUZ+g0E8tsQFMs0wBABLHMBjTFzAgARBjLbIAvihEAiAAuhAe0jGIEAMKMM+YCraNnBADCiCgv0DaKEQAIIy6EB7SNYgQAIhDlbYwoL+CLYgQAwogoL9A2GlgBIMyI8gKtoxgBgDAgygsEjmIEAEKMKC8QHHpGAIOOtAsPVhIJtTmivEDwmBkBDMCRtjm4Ki8QPGZGAJvjSNssRHmB4FGMADbHSbPMQpQXCB7LNIAhR9qNCxKOtO2NKC8QHGZGAJvjSNvM5mL1/qQP7MH7BASAmRHAABxp2xfNxUDHMTMCGIIjbfuhuRgIDYoRAGgnmouB0KAYAYB2IsYLhAbFCAC0E83FQGjQwAoAHUBzMdBxFCOAIVd9hX1wRV4gtChGABsiLmpfvDdA6NEzAtgMcVH74r0BwoNiBLAZ4qL2xXsDhAfFCGAzxEXti/cGCA+KEcBmiIvaF+8NEB40sAI2RFzUvnhvgNCjGAFsiriofRDlBcKLYgSwCc4rYk9EeYHwoxgBbIA/eGZFedUyDQUjEDo0sAIW49wV9kWUF4gMihHAYvzBsy+ivEBkUIwAFuMPnn0R5QUig54RwAYNq+oPnlqaUTMi/MGzF6K8QPhRjAA2aVjdOXsUf/BsgigvEFkUI4BNGlZVMZI+sIfVu+d6JJuAyKNnBIhQAVJ4sLLhiJuGVXsi2QRYg5kRIMzT/Ns/+9bnSPvhGy/UXxsXJDSs2kNrhSLLNED4UIwAYZzm94ZkvH/f1Lan3zkgD2ddKE+/fYCGVZsmmygUAQOWaZYsWSLJyckSGxsraWlpsmPHjlYfv23bNv049fgBAwbIsmXL2ru/gO2WXRrf/0fpv32m+dUXvwNtXYBceu5Zukdk7bQr9Vd6ElpWU1MjgwYNkqioKNm7d29YfxZRXsCQmZGCggLJzc3VBUlGRoa8/PLLkpWVJfv375d+/ZoOqMXFxTJmzBiZNm2avPLKK/L+++/LfffdJ2effbaMHz9ewtkB39b99jzHiu/Jfttrv/2XXW65/FzZsOdww0yIf/Hhz3ukTUIjML/+9a/lnHPOkX/84x9h+xmN31+ivEDkRXk8nrbGTh/Dhg2TwYMHy9KlSxu2paSkyLhx4yQ/P7/J4x9++GHZuHGjfPrppw3bcnJy9MDywQcfBPQzq6urJT4+XqqqqiQuLi6gDvjGfyCau6+OfpRgnmPF92S/7bXf/ssugVDPUQfa6vneI23TZkIC+QyGw9tvvy15eXnyxhtvyMUXXyx79uzRsySh3GfSM0D4BPo5DKoYqa2tlTPOOENee+01ueWWWxq2z5o1S0+fquUYf1dddZVcfvnl8vzzzzds27Bhg0yYMEFOnjwpp512WrPTsurW+Jfp27dvi7+MOqrJeHJrk8azNten/NaGOyoc3zMSP4P9Dv3P6ORXfJh+pG1FMfLNN9/o5d0333xTevbsqZeGWytGgh03Who71Humls5MfJ8AU8eOoJZpKisrpa6uThISEny2q/vl5eXNPkdtb+7xp06d0t8vMTGxyXPUDMv8+fM71AHflnr1nxD/EQvH94zEz2C/Q/sz1B+z9fely8naep/igz9ugVPHSHfeeaeeRR0yZIh8+eWXbT4n2HFDIT0DGNzAqhrJ/AcO/21tPb657V5z5szRVZT3VlpaGvS1PQL5xYN9jhXfMxI/g/0O7mdENdqmCo/xg89t0vB4Wd+f6BOY8QfN12OPPaY/963ddu/eLS+88II+olJjQaCCHTcUrgsEGFiMqKnS6OjoJrMgFRUVTWY/vHr37t3s4zt37iw9ejR/tsmYmBg9ndP4FmwHvP8fCP/7+eMvCfo5VnxP9tt++/3k+Evk/dnXNCRhnp0wiGRMgGbOnKn7x1q7paamytatW2XXrl16LFBjxU9/+lP9fDVLMmXKlJCMGwrpGcDgBla1jqvSNF4XXXSR3HzzzS02sL711ls6beN177336h6TUDawetd/G6/Lt3W/Pc+x4nuy3/bbb7eJdM9ISUmJ/pleR44ckRtuuEFef/11PQb16dMnpPvs9vcXMKqB1RvtnTRpkj5XSHp6uixfvlxWrFghn3zyiSQlJemp0sOHD8uaNWsaor3qSGf69Ok63qsKELUOvHbt2oCjvVZ18gOwx2dQ9Yy01cBqt30GIOFpYFWys7Pl6NGjsmDBAikrK9OFxqZNm3Qhoqht6qjGSw0g6t8ffPBBeemll/T5AhYvXhzyc4wAAAAzBT0zYgWOcABrmfgZNHGfAacJ9HPIVXsBAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClKEYAAIClgj4dvBW8J4ltfOEsAJHj/ewZcMLmBowbgDljhxHFyLFjx/TXvn37Wr0rgKupz6I6tbMJGDcAc8YOI65NU19fry8h3q1bN4mKimq1AlMDT2lpKdeiCAFez9Ax/bVUw4QaTNSFLjt1MmN1N9Bxwwnvj53wWoZWtUvGDiNmRtQv0KdPn4Afr94wE980u+L1DB2TX0tTZkTaO26Y/v7YDa9laMU5fOww4xAHAAA4FsUIAACwlKOKkZiYGJk3b57+io7j9QwdXkt74/0JHV7L0IpxyetpRAMrAABwLkfNjAAAAPNQjAAAAEtRjAAAAEtRjAAAAEs5qhhZsmSJJCcnS2xsrKSlpcmOHTus3iXby8/Pl6FDh+qzVPbq1UvGjRsnBw4c8HmM6nF+7LHH9Bn0Tj/9dBk5cqR88sknlu2zSa+tOvNnbm5uwzZeS/th3Age40Z45btw7HBMMVJQUKDfuLlz58qePXskMzNTsrKypKSkxOpds7Vt27bJjBkzZNeuXbJlyxY5deqUjB49Wk6cONHwmKeffloWLlwoL774onz44YfSu3dvuf766xuu/YGm1Ou0fPlyufTSS32281raC+NG+zBuhM+Hbh07PA5xxRVXeHJycny2XXjhhZ7Zs2dbtk8mqqioUFFvz7Zt2/T9+vp6T+/evT1PPvlkw2P++9//euLj4z3Lli2zcE/t69ixY57zzjvPs2XLFs/VV1/tmTVrlt7Oa2k/jBuhwbgRGsdcPHY4YmaktrZWioqKdGXemLpfWFho2X6ZqKqqSn/t3r27/lpcXCzl5eU+r606+c7VV1/Na9sCdcR40003yXXXXeezndfSXhg3QodxIzRmuHjsMOJCeW2prKyUuro6SUhI8Nmu7qs3EIFRa5J5eXkyYsQISU1N1du8r19zr+1XX31lyX7a2bp16+Sjjz7S06j+eC3thXEjNBg3QmOdy8cORxQjXv6XCVcfkrYuHY7/N3PmTPn4449l586dTf6N17Zt6hLfs2bNks2bN+tmyJbwWtoL70fHMG50XCljhzMaWHv27CnR0dFNjmYqKiqaVJJo3v333y8bN26Uv/71rz6XXVdNUgqvbdvUlL96XVQio3PnzvqmGv0WL16s/9/7evFa2gPjRscxboRGEWOHM4qRLl266DdRdXU3pu4PHz7csv0ygaqs1ZHN+vXrZevWrTri2Ji6rwaWxq+tWmtXHxReW1/XXnut7Nu3T/bu3dtwGzJkiEycOFH//4ABA3gtbYRxo/0YN0LrWsYO56Rp1q1b5znttNM8K1eu9Ozfv9+Tm5vr6dq1q+fLL7+0etds7d5779Ud2e+9956nrKys4Xby5MmGx6gObvWY9evXe/bt2+f5xS9+4UlMTPRUV1dbuu8maNwRr/Ba2gvjRvswboTf1S4bOxxTjCgvvfSSJykpydOlSxfP4MGDG2JmaJmqR5u7rVq1quExKlY2b948HS2LiYnxXHXVVfrDgOAHFF5L+2HcCB7jRvhd7bKxI0r9x+rZGQAA4F6O6BkBAADmohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAACWohgBAABipf8FpFIvP7klIFMAAAAASUVORK5CYII=",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 2 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"print(alphas)\n",
|
||
"\n",
|
||
"fig, (ax1, ax2) = plt.subplots(1, 2)\n",
|
||
"ax1.plot(alphas, \".\")\n",
|
||
"ax2.plot(np.log10(alphas), \".\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 7** : (1) For each `alpha` in `alpha_s`, fit a ridge model. \n",
|
||
"You can use `ridge.set_params`. See : https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html. \n",
|
||
" \n",
|
||
"\n",
|
||
"(2) Plot the coefficients (without the intercept) w.r.t. `log10(alpha)`. What do you observe ? \n",
|
||
"\n",
|
||
"(3) (**Optional** ) Create a linear regression model, compare the coefficients given by the OLS estimator with those you get with a Ridge model with a small `alpha`. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.103061Z",
|
||
"start_time": "2025-03-26T10:33:54.029474Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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hU6nw4033hg7J6Ms7rzzTvTr1w82mw3HHXcc1qxZk/A8r9eL6667Drm5uXA4HDjjjDOwe/fu7rptopR3zpQBmDe2QC1IedNL33O5AyLqdbolzCxduhRPPvkkJkzQJvSKuu+++/Dggw/i0UcfVdcUFhZi3rx5aGxsWf1Xws/rr7+OF198EV999RWamppw2mmnIRjkD2SijpBfIu790XjkppmxobwRDy7cmOxbIiJKrTAj4ePCCy/EU089haysrIRamYceegi//OUv8aMf/Qjjxo3Dc889B5fLhX//+9/qmvr6evztb3/DAw88gBNPPBGTJk3CP//5T6xatQofffRRV986Ua+Rm2bBvT/Sfpl46sutWLK1Otm3RESUOmHmmmuuwamnnqrCSLxt27ahrKwM8+fPj52zWCyYM2cOFi1apI5LSkrg9/sTrpEmKQk+0WvaIk1TDQ0NCRtRXydNTedOHQCZQ+/ml79Ho8ef7FsiIur5YUaahpYvX676y7QmQUYUFBQknJfj6GNSms3mhBqd1te0Rb5eRkZGbCsuLu6kPxFRavt/p43FgCwbdte61fwzRES9QZeFmV27duGGG25QzUJWq3W/7fnxpPmp9bnWDnTN7bffrpqoopvcCxEBTqsJD547EfLP5z/LduOT9eXJviUiop4bZqSJqKKiAlOmTIHRaFTb559/jocffljtR2tkWtewyHOij0mHYJ/Ph9ra2navaYs0V6WnpydsRKSRifSumD1U7f+/N9bA5Qsk+5aIiHpmmJk7d67qqLtixYrYNnXqVNUZWPaHDh2qwsrChQtjz5HgIoHn6KOPVscShEwmU8I1e/fuxerVq2PXENHBu/HEEeifacOeOjce/nhzsm+HiOiwGNFFnE6n6qgbT+aJycnJiZ2XYdf33HMPRowYoTbZt9vtuOCCC9Tj0t/lsssuw80336yel52djVtuuQXjx4/fp0MxEXWc3WzEb884Apf/Yxme/nIrzprUX63nRESUiroszHTErbfeCrfbjauvvlo1JU2fPh0LFixQQSjqT3/6k2qWOvfcc9W1UuPz7LPPwmAwJPPWiVLeiWMLMH9sARasLcev3liFl/5nJvT6/fdXIyLqiXRh6U3by8nQbKnlkc7A7D9D1EKameY9+LlajPK+syfg3Gkc+UdEqff5zbWZiPow6Tfz8xNHqv173l+HmmZf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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"\n",
|
||
"coefs_ridge = []\n",
|
||
"for alpha in alphas:\n",
|
||
" ridge = Ridge(fit_intercept=True, alpha=alpha)\n",
|
||
" ridge.fit(XtrainScaled, Ytrain)\n",
|
||
" coefs_ridge.append(ridge.coef_)\n",
|
||
"\n",
|
||
"plt.plot(np.log10(alphas), coefs_ridge)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.141323Z",
|
||
"start_time": "2025-03-26T10:33:54.136808Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[-212.17552979 307.84554012 70.19893491 -33.94121908 -61.98261284\n",
|
||
" 80.93907097 87.9354101 -854.87222296 301.36091121 -32.55986525\n",
|
||
" 575.96472518 276.24716079 -147.21083025 92.98658147 49.1730284\n",
|
||
" -8.23077394]\n",
|
||
"[-212.18873763 307.85651187 70.19704929 -33.94181179 -61.97778652\n",
|
||
" 80.94031337 87.91930611 -854.70162148 301.23727914 -32.56030861\n",
|
||
" 575.95219431 276.23085108 -147.21581673 92.98728123 49.16991958\n",
|
||
" -8.231394 ]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"linReg = LinearRegression(fit_intercept=True)\n",
|
||
"linReg.fit(XtrainScaled, Ytrain)\n",
|
||
"print(linReg.coef_)\n",
|
||
"print(coefs_ridge[0])\n",
|
||
"coefs_ridge = np.array(coefs_ridge)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Lasso**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We will do the same questions as in Exercise 7 but for Lasso. \n",
|
||
"\n",
|
||
"For that, we will use `sklearn.linear_model.lasso_path`. \n",
|
||
"See https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.lasso_path.html \n",
|
||
"\n",
|
||
"Note that the output of `lasso_path` is a `tuple`. \n",
|
||
"You can read this example : https://scikit-learn.org/stable/auto_examples/linear_model/plot_lasso_lasso_lars_elasticnet_path.html#sphx-glr-auto-examples-linear-model-plot-lasso-lasso-lars-elasticnet-path-py\n",
|
||
"\n",
|
||
"(Also : note the shape of the array of coefficients output by `lasso_path`...)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.178048Z",
|
||
"start_time": "2025-03-26T10:33:54.165251Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"((16, 50), (16, 50))"
|
||
]
|
||
},
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import lasso_path\n",
|
||
"\n",
|
||
"alphas_lasso, coefs_lasso, _ = lasso_path(XtrainScaled, Ytrain, n_alphas=50)\n",
|
||
"coefs_lasso.shape, coefs_lasso.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"(in coefs_ridge the rows corresponded to the different values of alpha and the columns were the features, it is the opposite for the output of `lasso_path`).\n",
|
||
"\n",
|
||
"We used 50 values for alphas (those values are automatically determined by `lasso_path`). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.259091Z",
|
||
"start_time": "2025-03-26T10:33:54.196219Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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DdOmTVNOyHfffbcqHUVuSv/+/dFTkf9Q/gF0HN6vjsN71XF4rzoO71XH4b06/nt1tJabbgn0J4Lko48+OuycgQMHKl+dwzFhwgQVT4cQQgghpCMwFxUhhBBCkg4KnAQiztQ///nPW534IoeG96vj8F51HN6rjsN71XF4rxJ/r7rMyZgQQgghJFHQgkMIIYSQpIMChxBCCCFJBwUOIYQQQpIOChxCCCGEJB0UOIQQQghJOihwuhlJJnrttdeqyIxSpF1fX3/Yx0hqirYZ20888UQkG5KMdciQIbBarSoXmWShPxxLlixR82T+0KFD8ec//xl9iaO5X4sXLz7oNSRl69atSGYkQOgFF1ygwrzL7/vvf//7iI/py6+ro71fffV19eijj2L69Okq/U9eXp5KL7Rt27YjPq4vvrYePYZ71VmvKwqcbkZSUaxdu1alsZAibRE5R+Kcc85RSUmjZcGCBUgmXn/9ddx1110qtcc333yDuXPn4txzz8X+/fvbnb9nzx6cd955ap7Mlzxld955J9588030BY72fkWRN5b419GIESOQzLhcLpUa5g9/+EOH5vf119XR3q+++roSoSLpg7766iuVSigQCOCss85S9+9Q9NXX1pJjuFed9rqSODike9i8ebPEHAp/9dVXsbHly5ersa1btx7ycddff334oosuCiczM2bMCN98882txkaPHh3+8Y9/3O78++67T12P5/vf/374xBNPDPcFjvZ+ffbZZ+p1VldXF+6ryO//9ttvH3ZOX39dHe394utKo7KyUt2HJUuWHHIOX1sdv1ed9bqiBacbWb58udqWmjlzZmxMtppkbNmyZUc02Yl5b+TIkbjppptQWVmJZMHn82H16tVK1ccj/UPdF7mXbeefffbZWLVqlUrsmswcy/2KMnnyZBQWFuL000/HZ5991sUr7X305dfV8dDXX1cNDQ2qzsrKOuQcvrY6fq8663VFgdONlJeXK5HSFhmTa4dCth5eeeUVfPrpp3j88cexcuVKlaHd6/UiGaiurkYwGER+fn6rcekf6r7IeHvzxfwpz5fMHMv9kjeJZ599VpnD33rrLYwaNUq9aTCJbWv68uvqWODrSu2C4O6778acOXMwfvz4Q87jawsdvled9brq0mzifYUHH3wQDz300GHniCgRxFGqvf/09sajXHnllbG2vCgkS/ugQYPw/vvv49JLL0Wy0PYeHOm+tDe/vfFk5Wjul7xBSIkya9YsHDhwAL/97W9x8sknd/laexN9/XV1NPB1Bdx+++1Yv349li5desS5ff21dXsH71Vnva4ocDrpP+2qq6467JzBgwer/9iKioqDrlVVVR2k7A+HqFsRODt27EAykJOTA4PBcJD1QbbhDnVfCgoK2p1vNBqRnZ2NZOZY7ld7yPboyy+/3AUr7L305ddVZ9GXXld33HEH3n33XWVZ6N+//2Hn9vXX1h1Hca8663VFgdNJHzhSjoSoUNl/XLFiBWbMmKHGvv76azV20kkndfjn1dTUKDUrQicZMJvN6uikeNhfcsklsXHpX3TRRYe8l//5z39ajS1cuFBZt0wmE5KZY7lf7SEnOZLlNdRZ9OXXVWfRF15XYnmRD+y3335b+UdKuIYj0VdfW+FjuFed9ro6LhdlctScc8454YkTJ6rTU1ImTJgQnj9/fqs5o0aNCr/11luq3dTUFL7nnnvCy5YtC+/Zs0d5l8+aNSvcr1+/cGNjYzhZeO2118Imkyn897//XZ02u+uuu8IOhyO8d+9edV1OB1177bWx+bt37w7b7fbwD3/4QzVfHieP/9e//hXuCxzt/XryySfViZjt27eHN27cqK7Ln/+bb74ZTmbk7+ebb75RRX7fJ554QrX37dunrvN1dXz3q6++rm655ZZwenp6ePHixeGysrJYcbvdsTl8bR37veqs1xUFTjdTU1MTvuaaa8KpqamqSLvtUTj5j3zuuedUW14EZ511Vjg3N1f9MQwcOFAdG9+/f3842fjjH/8YHjRoUNhsNoenTJnS6hih/M7z5s1rNV/+YCZPnqzmDx48OPzMM8+E+xJHc79+/etfh4cNGxa2Wq3hzMzM8Jw5c8Lvv/9+ONmJHjdtW+T+CHxdHd/96quvq/buUfz7tsDX1rHfq856XekiCyCEEEIISRp4TJwQQgghSQcFDiGEEEKSDgocQgghhCQdFDiEEEIISToocAghhBCSdFDgEEIIISTpoMAhhBBCSNJBgUMIIYSQpIMChxBCCCFJBwUOIYQQQpIOChxCCCGEINn4/9Bu5qfxhxpyAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"coefs_lasso = coefs_lasso.T\n",
|
||
"plt.plot(np.log10(alphas_lasso), coefs_lasso)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.349032Z",
|
||
"start_time": "2025-03-26T10:33:54.282613Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[<matplotlib.lines.Line2D at 0x30a3f6c60>]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# the values of alphas chosen by defaults are also on a logarithmic scale\n",
|
||
"plt.plot(np.log10(alphas_lasso), \".\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 24,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.502618Z",
|
||
"start_time": "2025-03-26T10:33:54.416713Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Text(0, 0.5, 'Lasso coefficients')"
|
||
]
|
||
},
|
||
"execution_count": 24,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAISCAYAAADPxwmMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC5N0lEQVR4nOydB3ib1fXGX23J8t4re++ELJIwAmGPsncLtHSyN6XjX6AtFFoo3YUyC2UXCi0zEAgBQvbeO44T7yVrr/9z7ifJ8khiJ7bl8f54Lufe+32SrmNZer/znXuOLhwOh0EIIYQQQkg/R5/oBRBCCCGEENIToDAmhBBCCCGEwpgQQgghhBANCmNCCCGEEEIojAkhhBBCCNGgMCaEEEIIIYTCmBBCCCGEEA0KY0IIIYQQQiiMCSGEEEII0aAwJoQQQgghpLcJ49LSUnzzm99EVlYWkpKSMHnyZKxYsSJ2XKpb33fffSgsLITNZsPcuXOxYcOGZs/h9Xpx0003ITs7G3a7Hd/4xjewb9++BPw0hBBCCCGkJ9FrhHFtbS3mzJkDk8mE999/Hxs3bsSjjz6K9PT02DmPPPIIHnvsMfz5z3/GsmXLkJ+fj1NPPRUOhyN2zq233oq33noLr7zyCr744gs0NjbinHPOQTAYTNBPRgghhBBCegK6sLhZewE//vGP8eWXX2LRokVtHpcfQzzFInzvueeemHc4Ly8PDz/8MH7wgx+gvr4eOTk5eOGFF3DZZZepc/bv348BAwbgvffew+mnn96tPxMhhBBCCOk5GNFLeOedd5RwveSSS7Bw4UIUFRXh+uuvx/e+9z11fNeuXSgrK8Npp50We4zFYsGJJ56Ir776SgljCbvw+/3NzhExPX78eHXOwYSxCGxpUUKhEGpqalRIh06n69KfmxBCCCGEdBxxmkrUgGg9vV7ft4Txzp078be//Q233347fvKTn2Dp0qW4+eablfi9+uqrlSgWxEMcj4z37Nmj+nKO2WxGRkZGq3Oij2+Lhx56CPfff3+X/FyEEEIIIaTrKCkpQXFxcd8SxuKlnTZtGh588EE1njJlitpYJ2JZhHGUlh5cuVo4nFf3cOfce++9SpBHkZCMgQMHqn/o1NTUo/ipCCGEEEJIV9DQ0KDCZVNSUtr9mF4jjAsKCjB27Nhmc2PGjMG///1v1ZeNdoJ4fuXcKBUVFTEvspzj8/nURr54r7GcM3v27IO+tnilpbVERDGFMSGEEEJIz6UjYa+9JiuFZKTYsmVLs7mtW7di0KBBqj9kyBAlfOfPnx87LiJY4pGjonfq1Kkqq0X8OQcOHMD69esPKYwJIYQQQkjfp9d4jG+77TYlXiWU4tJLL1Uxxk8++aRq0asByUghx0eMGKGa9CXf8ZVXXqnOSUtLw3XXXYc77rhDbZzLzMzEnXfeiQkTJuCUU05J8E9ICCGEEEISSa8RxtOnT1f5hyXe94EHHlAe4scffxxXXXVV7Jy7774bbrdbZauQcImZM2fio48+ahZb8vvf/x5Go1GJazl33rx5eO6552AwGBL0kxFCCCGEkJ5Ar8lj3NOCucX7LJvwGGNMCCGEENI39FqviTEmhBBCCCGkK6EwJoQQQgghhMKYEEIIIYQQDQpjQgghhBBCKIwJIYQQQgjRoDAmhBBCCCGEwpgQQgghhBANCmNCCCGEEEIojAkhhBBCCNGgMCaEEEIIIYTCmBBCCCGEEA0KY0IIIYQQQiiMez6VDi/+vWIf1pTUwekNJHo5hBBCCCF9FmOiF0AOzcq9tbjj9TWxcVG6DcNzk1UbIS0vGcNzUpCWZEroOgkhhBBCejsUxj0cq8mAWUOzsL2yUXmPS+vcqi3cWtnsvJwUiyaUo6I5L0X1s5ItCVs7IYQQQkhvQhcOh8OJXkRvo6GhAWlpaaivr0dqamq3vW6dy4ftFY3YJq28UYnl7eUO7K/3HPQxWXaz8iqPyE3BSPEuRywFMyGEEEL6Mg1HoNcojHuRMD4YDo8fOyqdEdHsUKJZbEmN+6CPyRTBHAnFKM5IQm6KBXmpVmVzU61ItRqh0+m69ecghBBCCOksKIz7qTA+GC5fADsqnNha7oh4mTVbUuvC4X7rFqM+JpTF5sTZrGQzsu2aFYEt4R6EEEIIIb1drzHGuA+TZDZiQnGaavG4fUHsqGxUglm8zGX1HpQ7PKho8KK8wYMGTwDeQAh7a1yqHY4Ui1GJZAnPkNANsdkytpuRHe+JTrHCZqaIJoQQQkjPhMK4HyLidHxRmmpt4fEHlUiucHhQ3sLKBsDqRh+qnZoNhMJweAOq7a5uh4i2GmMiOTe1STRHPdKFaTbkpVlgMVJAE0IIIaR7oTAmrZDQiIFZSaodConCEe9ydaMX1U6fslUimiPCuarRq4R0hUPzRHv8ITg8AdUkJvpQZCdbUJhuRUGaNJtKU1egxjY1L8LaoGcMNCGEEEI6DwpjcsTI5rw0m0m1oTk4rIgWr3LUE10ZEcvauMkrvb/OrcI4RFRLW7uvvs3nE1EsonlARhIGZiZhQKYNA5RNUnMSysHNg4QQQgjpCBTGpFsQkZpqNakmeZYPJaBrXX4lkKUdqPdgf70bB+o8OFAvcyKgPSqEY1+tW7XFO6tbPY/NZFBiWUSzZN0YlJWEIdl2DM1ORlGGjd5mQgghhLSCwpj0OAEtmS6kHSwGOhgKK4/zvlqXyrCxt9qt2RoX9tW4cKDBA7c/iK3lssGwsdXjzQa9EspDc+wYkp2s7FARzTnJ6nUJIYQQ0j9hurY+nK6tv+INBJVnuSSSVUNE854qF3ZVObGr2glfIHTQx6YnmZRnWXI8j8xLwej8VIzMT0ZOsoWhGYQQQkgvgnmMuwkK496LeJslRGNnlRM7KxuVWN5ZqfUPVUFQPMlSMXBUXgpG5adiVL4mnFOspm5dPyGEEELaB4VxN0Fh3DeR/M5KKFdpIRhbyhqU3V3tPGhBFMmWMSo/BROK0jBpQBomFKWr1HOEEEIISSwUxt0EhXH/E8xSCGVLuUMVRdlc5sDWMgfKGtr2MBemWVVRlYnF6ZgotigdaUn0LBNCCCHdCYVxN0FhTIR6l1+J5Y3767G2tF6llpOKgm39RclmPyWUi9Jw5oR8lSmDEEIIIV0HhXE3QWFMDkajN4D1pfVYt68ea/bVYV1pPfa0qAhoNelxy7yR+O7xQ2Ay6BO2VkIIIaQv00Bh3D1QGJOOUOfyKYEsHuUFmyuwYk+tmpeNfA9eOB5TB2UmeomEEEJIn4PCuJugMCZHivy5vbmyFL96d6MqZCJcMWMgfnzGaMYhE0IIIQnWa7yPS0g3IrmQL5pajAV3zMWl04rV3MtL92LeY5/h7dWlSjgTQgghJDFQGBOSADLsZjxy8SS8+v1jMSzHjqpGH255ZTWufmYpdlc5E708QgghpF9CYUxIApk5NAvv3XI87jh1JMxGPRZtq8Jpj3+OPy/YdsgKfYQQQgjpfCiMCUkwFqMBN80bgY9uPQHHDc9Wgvh3H23FWX9chCU7qxO9PEIIIaTfQGFMSA9hcLYdL1w3A3+4fDKyk82qqMhlT36Nv3y6nbHHhBBCSDdAYUxID9ucd97kInxy+1xcMlXbnPfbD7fgrjfWMrSCEEII6WIojAnpgUjqtt9eMgn3f2Mc9DrgjRX78M2nl6DW6Uv00gghhJA+C4UxIT2Ya2YPxtPXTkeyxYilu2pwwV+/xM7KxkQvixBCCOmTUBgT0sM5aVQu/v2j2ShKt2F3tQsX/PUrLN7BTXmEEEJIZ0NhTEgvYFR+Cv5zwxxMGZiOercf33p6CV5bVpLoZRFCCCF9CgpjQnoJOSkWvPy9Y3HupEIEQmHc/e+1eOj9TQiFmLGCEEII6QwojAnpRVhNBvzx8sm4ed4INX5i4U786F8r4PIFEr00QgghpNdDYUxIL0zpdvupI/H4ZZNhNujx4YZyXPbE1yhv8CR6aYQQQkivhsKYkF7K+VOK8NL3ZiLTbsa60nqc9+cvsb60PtHLIoQQQnotFMaE9GKmDc7Ef66fg+G5yShr8ODiv3+F/6wqTfSyCCGEkF4JhTEhvZyBWUkqndvcUTnw+EO49dXVuP+/G+APslIeIYQQ0hEojAnpA6TZTHj6mum46eThavzsl7tx1VNLUOnwJnpphBBCSK+BwpiQPoJBr8Mdp43CE9+aGquUd+6fvsCqvbWJXhohhBDSK6AwJqSPcfq4fFUMZFiOXcUdS8aKl5fuTfSyCCGEkB4PhTEhfRDZjCfi+PRxefAFQ7j3zXW498218AaCiV4aIYQQ0mOhMCakj5JiNeFvV03FXaePgk4HvLy0RHmPD9S7E700QgghpEdCYUxIH0av1+GGk4bj2Wunqw16q0vqVNzxkp3ViV4aIYQQ0uPotcL4oYceUhXAbr311thcOBzGfffdh8LCQthsNsydOxcbNmxo9jiv14ubbroJ2dnZsNvt+MY3voF9+/Yl4CcgpPuYOyoX/73xOIzOT0FVo09lrHj2y13qb4YQQgghvVgYL1u2DE8++SQmTpzYbP6RRx7BY489hj//+c/qnPz8fJx66qlwOByxc0RIv/XWW3jllVfwxRdfoLGxEeeccw6CQcZekr6f7/jN62fjG5MKEQiFcf9/N+Kvn+1I9LIIIYSQHkOvE8YiZK+66ir84x//QEZGRmxePF+PP/44fvrTn+LCCy/E+PHj8fzzz8PlcuGll15S59TX1+Ppp5/Go48+ilNOOQVTpkzBiy++iHXr1uHjjz9O4E9FSPeQZDbiD5dPVnHHwm8/3IJXmLGCEEII6Z3C+IYbbsDZZ5+thG08u3btQllZGU477bTYnMViwYknnoivvvpKjVesWAG/39/sHAm7EBEdPactJPyioaGhWSOktyIhSBJ3fMNJw9T4J2+twwfryxK9LEIIISTh9CphLOEPK1euVPHFLRFRLOTl5TWbl3H0mFiz2dzM09zynLaQ10tLS4u1AQMGdNJPREjiuPO0Ubh8+gCEwsDNr6zC4h3ckEcIIaR/02uEcUlJCW655RYV+mC1Wg/pDYtHQixazrXkcOfce++9Kgwj2mQthPR25D3/q/PHa7mOAyF875/Lsb60PtHLIoQQQhJGrxHGEgZRUVGBqVOnwmg0qrZw4UL88Y9/VP2op7il51ceEz0mm/F8Ph9qa2sPek5bSEhGampqs0ZIX8Bo0OMPl0/BzCGZaPQGcO2zS7G7ypnoZRFCCCEJodcI43nz5qlNcqtXr461adOmqY140h86dKgSvvPnz489RkSwiOfZs2ersYhqk8nU7JwDBw5g/fr1sXMI6W9YTQb845ppGFuQqlK5Xf3MUlQ0eBK9LEIIIaTbMaKXkJKSojbJxSN5iLOysmLzkortwQcfxIgRI1STflJSEq688kp1XOKDr7vuOtxxxx3qcZmZmbjzzjsxYcKEVpv5COlPpFpNeP47M3Dx37/CnmoXrnl2GV75/rGqKAghhBDSX+g1wrg93H333XC73bj++utVuMTMmTPx0UcfKVEd5fe//70Kvbj00kvVueKJfu6552AwGBK6dkISTU6KBS98ZyYu+vtX2HSgQcUc//M7M5RHmRBCCOkP6MIsfdVhJF2beJ9lIx7jjUlfY+P+Blz2xGI4vAGcOjYPf7vqGBWLTAghhPR1vcZvO0JIM8YWpuKpa6bBbNRj/sZyleeY18+EEEL6AxTGhJBWzByahT9fMQV6HfDa8n145MMtiV4SIYQQ0uVQGBNC2uS0cfl46MIJqv+3z3bgmS92JXpJhBBCSJdCYUwIOSiXTR+Iu88Ypfq/fm8TluxkdTxCCCF9FwpjQsgh+dGJw3DhlCIEQ2Hc+PIqVDiY45gQQkjfhMKYEHL40tEXjMfIvGRUOry4+eVVCARDiV4WIYQQ0ulQGBNCDkuS2Yi/fXMq7GYDvt5Zg8fmb030kgghhJBOh8KYENIuhuUk4zcXTVT9v362A59sKk/0kgghhJBOhcKYENJuzp1UiGtnD1b9215djZIaV6KXRAghhHQaFMaEkA7xk7PGYPKAdDR4AvjRv1bA4w8mekmEEEJIp0BhTAjpEFIR7y9XHYOMJBPWlzbgl//bmOglEUIIIZ0ChTEhpMMUpdvw+8smQ6cD/rVkL95atS/RSyKEEEKOGgpjQsgRMXdULm46eYTq/+TN9dha7kj0kgghhJCjgsKYEHLE3DJvBI4fkQ23P4gfvrgCjd5AopdECCGEHDEUxoSQI8ag1+HxyyYjP9WKnZVO3PPvtQiHw4leFiGEEHJEUBgTQo6KrGQL/nLVFBj1Ory79gD+uXhPopdECCGEHBEUxoSQo2bqoEzce9YY1f/Vuxuxam9topdECCGEdBgKY0JIp/CdOYNx5vh8+INh3PCvlahx+hK9JEIIIaRDUBgTQjoFnU6HRy6eiCHZduyv9+DGl1YiEAwlelmEEEJIu6EwJoR0GilWE/7+zalIMhvw1Y5qPPT+5kQviRBCCGk3FMaEkE5lVH4KHr1kkuo//cUuFv8ghBDSa6AwJoR0OmdOKMANJw1T/R//ex3Wl9YnekmEEELIYaEwJoR0CbefOgpzR+XAGwjhBy+sQHWjN9FLIoQQQg6JLsxs/B2moaEBaWlpqK+vR2pqate+WPUOYOuHgN4A6PQR26IfPdbsuE4bI2J1iBu3PCYH0XSsWT8yju+34iBvoVZvrfBRHD+ax7Y4HjvW1lx753F42vzn0gGpRUDWMMBgQl+n3u3H+X/5EruqnJg1NAsvXDcDRgOvxwkhhPRMvWbs8lWRo+PAGuDDexO9CtLZ6E1A1nAgdzSQE2m5Y4DMoX1KMKfZTHjyW1OVOF68sxoPvrcZ/3fu2EQvixBCCGkTCuOeTloxMP5iIBwEQkEgHNKa6kfnpIWbz4lLU+bkXNWXxyFuHJ2LjGPe0cgxbSJuLrqgcGtXaLNhy2MH8zIfZL7Z+fHe6jYe1+q5D/fabT32YM8XP3+450D7Pd3yu6nbC/gagcpNWjuoYB4D5I0FBhwLJOegtzIiLwWPXjoZP3xxBZ75chfGF6XiwmOKE70sQgghpBUMpejpoRSk7xEKAQ37gIrNQGWkVYhI3gL4nW0/JmsEMGgWMHC2ZtMHHeKio2fy6Edb8KcF22Ex6vHGD2djQnFaopdECCGkD9NwBHqNwvgIoDAm3SaY968GKja0PjelMCKUZwGDZmveZX3Pjt0NhcL47j+XY8HmChSmWfHOTcchO9mS6GURQgjpozRQGHcPFMakW3HVACVLgD1fAXsXA/tXAaFA83Os6cDAY4GCyU1hGD1wg1/8ZryZQzLx4ndnwsTNeIQQQroACuNugsKYJBSfCyhdDuxZDOz9CihZ1nYIRst45ahVG/wSt71gW7lDiWOnL4hrZw/Gfd8Yl7C1EEII6bs0UBh3DxTGpEcR9ANla4G9S7Swi2gohmzwawuDWYtZzhmpxSqnD4jYgUDaAMCc1OVL/nBDmcptLEiVvIumcjMeIYSQzoXCuJugMCY9Hvmzrt8Xt7GvHRv8othzNIEsQjm+SYaU1EItbKMTNv499tEW/HHBdpjVZrxZmFicftTPSQghhEShMO4mKIxJr97gV1+iCeTqbUBdiZY+TrU9gLfh8M9hsmsCWbWi1n0R0LaMw4pn2Yz3vX8uxyebKzAg04b3bzkByRZmkCSEENI5UBh3ExTGpM/irosTyi1aQyngrmnf85iSgMxh2gZAiXNWLdJPyoyd1uDx48zHF6G0zo0rZgzEQxdO6LqfjRBCSL+igcK4e6AwJv0Wvxto2K+J5HhbX9rUd1Ud+jnEmxwnlr/yj8CV87XsGc9+ezpOGpXbPT8LIYSQPk0DhXHfE8YOxwZs3fYr2O3DYU8arln7CJjNOdD1sgIPpJ/g92jhGtU7gOrtWquR/g5NPLfB/f5v4dngmcjVN+CjsR8hvXBYU6lsEdAma7f/GIQQQvqfXmNAXw/H0bgJdXVLVYvHaEyLiGRNKEdFs8WST8FMEouI2OwRWmuJzwnU7IwI5ohYrt6Guyvew0LHJOwMFeL/Nhbgj9t/2/QYnR7IGALkjgFyRgH5E4DhpwCWlG79sQghhPR96DHu4R5jj2c/6uqWwenchkbnNjid2+F275WtS22ebzAkIzl5FDIyjkVmxmykpU2BXs/qYqSHEw5j1ebtuOifWxEKA38ZuRpnhz8HKjcBnvrW5xsswIhTgXEXACPPACzJiVg1IYSQHgxDKfpJjHEw6IXLvUuJZRHK0eZ270Y43Lwiml5vRXr6dGRmzEJGxmykpIyFTmfo9jUT0h5+9+EW/PnT7chIMuHD205ArpSMbixvSjUnaed2L9I8zlGMVmDEaRGRfDpgtifyRyCEENJDoDDuJ8L4YIRCPrhcu9DQsBY1tV+htvYr+HxVrUIwNG/yHGRmzobNNpihF6TH4AuEVFW8jQcaMG90Lp66Zlrr96d8ZJWvBza8pTUJzYhitGniWESyiOVuKFZCCCGkZ0Jh3M+FcUvkVyte5ZraL1Fbuxi1tUsQDDavhiYxyXl552BA8TWwWgsTtlZComwua8A3/vQlfMEQHrl4Ii6dNuDgJ8vHl1T9i4rk2t3NU8ZJmMWkK4Dh8wA975QQQkh/ooHCuHvoLcK4JaFQAA7HOuVNrqn5EvX1qxAO+9QxCa/IzTkTAwdeh9TUiYleKunn/O2zHXj4g82q4McHtx6P4ox2eH7lo+zA6iaRLLmXo0jJ62nfAaZ8C7BndenaCSGE9AwojLuJ3iqMWxIMulFT8wVK9j2vPMpR0tOmY+DA7yA7ex7jkUlCCIbCuPSJxVixpxazhmbhX9+dCb2+AyE/8rG2fyWw7g1g9b+aNvDJpr3xFwLTvwsUTe2U0taEEEJ6JhTG3URfEcbxOBwbsbfkGZSX/w/hsF/N2WyDMGDAt1FYcBEMBsZqku5ld5UTZ/5hEdz+IH5x7lh8e86QI3sinwtY/29g2T+AA2ua5gsmawJ5/EWMRSaEkD5IA4Vx99AXhXEUj7cM+/a9iNLSlxAI1Mc27BUVXYHi4m/BaslP9BJJP+KFxbvx87c3wGLU471bjsewnKNIyyYfdaUrgGVPAevfBIJebd6aDkz5phZqIWWrCSGE9AkojLuJviyMowSDLhw48KbyIrvde9ScTmdEXt65GDrkNthsRYleIukHyMfT1c8sxaJtVZg0IB3//uEsGA36o39iZzWw6gVg+dPNY5GHzQOOuxUYfDzDLAghpJdDYdxN9AdhHCUcDqKqaoESyNHqe1IwZNDA72PQoO8zxIJ0OQfq3Tjt95/D4QngztNG4saT26iod6SEgsD2jzUv8rb58o7X5otnACfcqaV8o0AmhJBeCYVxN9GfhHE8kh952/bfoK5uSSzV2/Bh9ygvMnMhk67kzZX7cPtra2Ay6PCfG+ZgXGFa579IzS5g8V+Alf9sCrPImwAcfzsw9jymeyOEkF4GhXE30V+FsSBvl8rKj7Bt+4PwePapubS0YzByxM+Z5o106fvuhy+uwIcbyjEqLwX/vn62SuXWJTjKgcV/BpY/A/gieb+zRgDH3QZMvBQwmLrmdQkhhHQqFMZ9URjLjvqaHUDu2B7lsZKy1CUlz2D3nr+qeGShIP8iDBt2JyyW3EQvj/RBqhu9KqSi2unD4Kwk/OHyKSruuMtw1QBLngCW/B3w1GlzaQOBOTdrm/VMtq57bUIIIUcNhXFfFMY7PgVeOB8w2YGiY4Di6cCAGUDRNCA5B4nG6y3H9h2/RVnZW2psMNgxeND1Ks2bQXLGEtKJrNpbixv+tRL76z0w6nW48/RR+P7xQzuW47ijeB2a9/irPwPOCm3OngvMvhGYdh1gOYpMGYQQQroMCuO+KIzXvAq8ewfgc7Q+ljFY2yQkYrl4GpA/IWG3eevrV2Prtl+ioWG1GtusAzF8xI+Rk30a449Jp1Lv8uPHb67F++vL1Pi44dl47NJJyE21du0L+93AqheBL/8A1Jdoc/YcYO6PgWOuYYgFIYT0MCiM+2qMseycr9wC7FsG7FsK7FsOVG5ufZ7RChRO0UTygJmaaE7JQ3cRDodQVv4Odmx/BF5fuZrLyjwBo0f/GlZrYbetg/R95GPr1WUluP+/G1UBkEy7Gb+9eCLmjemG93vQD6x9DVj0O6BmpzaXNRw45T5g9DnMYkEIIT0ECuP+tPnOXacVKxCRrATzsqY4yHjSB2kiWcIvpOWOAwxdtGkpQiDgxJ49f8fekqcQCvlgMCRjxIifoLDgUnqPSaeyvaIRN7+8ChsPNKjxtbMH48dnjobVZOgegbziOeCz3wCuKm1O/tZOfQAYeGzXvz4hhJBDQmHcn4RxS0IhbZNeiXiUl2m2YmNTXtYoEqtcPLXJoyze5aTMLlmS07kDGzfdg4aGVWqcmXEcxox5iN5j0ql4A0E8/P4WPPPlLjUenZ+CP10xBSPyUrppAQ7gyz9qmSz82kZU5TkWD3J2J+ZcJoQQ0iH6tDB+6KGH8Oabb2Lz5s2w2WyYPXs2Hn74YYwaNSp2jvwo999/P5588knU1tZi5syZ+Mtf/oJx48bFzvF6vbjzzjvx8ssvw+12Y968efjrX/+K4uLi3i2M28JTr3mVRSSXLNG8y17Ns9aM5DwgrVhrqREbawMAe/YR3x6WAiElJc9hx85HEQp51ea84cN/jKLCK+g9Jp3Kp1sqcNfra1DV6FMlpH9+zlhcNXNg973PGg4Anz2kVdQLhwCdAZh6rRaDnMxMLYQQ0t30aWF8xhln4PLLL8f06dMRCATw05/+FOvWrcPGjRtht9vVOSKUf/3rX+O5557DyJEj8atf/Qqff/45tmzZgpQUzXv0ox/9CP/973/VOVlZWbjjjjtQU1ODFStWwGAw9C1hfLBYZSWSxau8BKjefvjHSexyalFEOBdpccsipuXLPjmub0k9qIB2uXYp73F9/Qo1zsiYjTGjH4LN1v4LEkIOR6XDizteX4PPt1aq8Wlj8/DwRRORYTd33yIqNgOf3A9sea/pLo2keJt1IzNYEEJIN9KnhXFLKisrkZubi4ULF+KEE05Q3uLCwkLceuutuOeee2Le4by8PCWYf/CDH6h/mJycHLzwwgu47LLL1Dn79+/HgAED8N577+H000/v28K4Ldy1QO0eoH5fpJXE9fcBjbKJrp1vERHQzcRyHpBSAKQWqhZOzce+hs+wveTPCIU8mvd42D0oKhLvsb6rf1LSTwiFwiqs4uEPNsMfDCPVasQPThyGb88ZjCRz18bXN2P3l8D8n2t3bQT5ezjtV8CES7hBjxBCuoF+JYy3b9+OESNGKK/x+PHjsXPnTgwbNgwrV67ElClTYuedd955SE9Px/PPP48FCxao0AnxEGdkZMTOmTRpEs4//3wVhtEWIrClxf9Di5juE8L4cAR8gGN/c7HsrNQEc2NFk20rROMghM3J8JgBl8kLr1kPXdpAZA25Euas8UD6QCB9AGDW7gIQcqSsL63Hna+vweYyLdVhTooFN508HJdPHwizsZsuxOTjdeN/gI/vB2q1GGgMOQE4+zHGHxNCSA8Uxt3oPuk8RMvffvvtOO6445QoFsrKtJym4iGOR8Z79uyJnWM2m5uJ4ug50ccfLL75YKK5z2M0a/mSpR2uQp8UP5Byuo1xzXEAaNjf1LwN0PkaYfMBsbph5duArS3+fZOyIyI5vg2icCbtZnxRGt69+Xi8s6YUj83fipIaN/7v7Q34x6KduO2UkThvchEMXVkYRBDP8LgLgFFnA1/9Efj8t8Cuz4G/zQbm3AIcfwcr6BFCSA+iVwrjG2+8EWvXrsUXX3zR6ljLjTYiog+3+eZw59x7771KiLf0GJM4zEmAuR0CWnbwyyalhlIllH01G1G/9x0loK3eEJK8ehgCfi39lbT9K9t+HhHOmUOAzKFA5jAga1hkPAywdWGZYNKrEOF7wZRinD2hEK8u24s/LtiuBPLtr63B3xfuwJ2njcKpY/O6foOeXGCecCcw/iLg/buBbR9pInnd68BZjwIjTuna1yeEENI3hfFNN92Ed955R22qi88kkZ+fr6x4fgsKCmLzFRUVMS+ynOPz+VTGinivsZwjWS4OhsViUY10ApYUuacN5IxUQ9kSlR3+JfbtewHrtv8G4bAPyYZCjC++HXafCajbqzWJfa7bo/Ul20ZUOMsmwpYkZbUQzEO1AgzZIzUBT/odEjrxrVmDcdHUYjz31W78/bMd2FreiO+/sAJTBqbjrtNHYfaw7K5fiFy8XfkasOm/wAc/Bmp3A/+6CBh7HnDGb7R4fEIIIQmj18QYyzJFFL/11lv47LPPVHxxy+Oy+e62227D3XffreZEBMsGvZab71588UVceuml6pwDBw4ogd1vN9/1IBoa1mLd+pvg8eyDXm/GyBG/QGHhZa29eVLcRASyxGxW79DyN1fv1KqQNR48JAbQaaEYOaOB3NGazRkFZI9itoB+WFb6ic934Nkvd6vKecLxI7KVQJ5Y3E13HOTuiRQH+fpvQDgImJOBk34KzPh+lxfhIYSQ/kBDX958d/311+Oll17C22+/3Sx3sfzAktdYEAEs8cDPPvusEs4PPvigEtEt07X973//U+naMjMzVU7j6urq/pGurRfg99dj46a7UFX1iRrn51+A0aMegMHQTk+vt1ETyCKWxSrBvAOo2gq4qg/+uDQRzKOaBHPeOCBnDGCydtJPRnoiFQ4P/rxgO15euldlsBAumzYA95w5WpWZ7hbK1gH/u10r9y7kTwDOeVwrvkMIIeSI6dPC+GAxgCKCr7322mYFPp544olmBT6iG/QEj8eDu+66S4ns+AIfHYkZpjDuWsLhEPbu/YcqCiIFQuz2EZgw/q+w24ce3RM7q4DKzZG2BajYpFnZNNgWeqPmTS6YqImV/IhlDHOfo6TGpTbovbWqVI0zkkyqtPQlUwdA39Ub9KKVK1f9E5j/i0hpdx0w43taeWluziOEkCOiTwvjngSFcfdQW7sU6zfcDJ+vUuU8HjP6QeTlndP5L+SqaSGYNwJl6wF3TdvnSziGiOSCSZpQFsvY0D7B8t01+Nl/1sdSvE0dlIFfnT8eYwq66e9cLt4++jmw5iVtLBdmFz2lXZwRQgjpEBTG3QSFcffh9VZiw4ZbUVv3tRoXF38LI4bfC72+izdDyp+FZM44sFa71V22VuvX7237fKkIKLe+i6drTcQyPX29En8whOe/2q08yC5fUGW2+Pbswbj11JFItnRT7O/2T4D/XK/FzOtNwLyfA7NuAvQshEMIIe2FwriboDDuXkKhAHbtehy79/xNjVNTJ2H8uD/BZitKTKVAEcrxglk8zeFQ6zAM8SZHhbKI5owhrHjWizhQ78Yv/7cR763TNnTmp1rxf+eOxZnj87s+vZvgrAb+ezOw+X/aePDxwAV/10qzE0IIOSwUxt0EhXFiqKr6FBs23oFAoB5GYzrGj/s9srJOSPSytA1/B1ZrqeP2LQdKlrYdtyxp5EQkF00DiqYAhccASZmJWDHpAJ9uqcAv3t6AvTUuNT5xZA4eOG8cBmV1Q5EZ+Xhe+U8ttZvfBVjTtI154y/s+tcmhJBeDoVxN0FhnDjc7lKsX38jGhxrodMZMGrUL1FUeBl6FPInJXmXo0JZ7IE1QNDX+lzJsSwCuWiq1iSWlCEYPQ6PP4i/frZD5T/2BUMqL/INc4fjBycOhdXUvmw2R4WkJfz3d5sK3ky6AjjzEcDKzx9CCDkYFMbdBIVxYgmFvNi8+Wc4UPamGg8efAOGDrmte25vHykBrxZ6ISK5dCVQukJLI9cSnQHIG9sklKVJ+jh9N4gvclh2VjaqstJfbK9SY0npduGUIlw2fQBG5GkpIbuMoF/Le/zFY1rojpRIv/AfwMCZXfu6hBDSS6Ew7iYojBOPvG137foDdu3+UyzfsWStkMIgvQbJhrF/leYFFLEs3uW2QjAsqZGNfTOAATO0vtxSJwl77/1v7QE8+N4mHKj3xOYlg4UI5HMmFiDJ3IWb9PYsBt78vrYRVKcHTrgLOOFuFgUhhJAWUBh3ExTGPYf9+1/D5i0/U/mOMzPmYMKEv8Bo7GLPXVdnwoh6lKWJcPY1tjhRB+SO1UTygJmalZCMnuwx74MEgiEs3FqJV5aVYMHmCgRD2kepZK44d1KhEsmTitO65k6GlEV/7y5g7avaWOLWL3kOSG9/PnZCCOnrNFAYdw8Uxj2L6uqFqpR0MOhEcvJoTJr4FKzWAvQJQkEtr3LJEm1Tn9ja3W1v7BORPGg2MOREIG88U3t1IxUNHryxch9eW1aC3dXaJj1hdH6KEsgXTClCelIX3M1Y94ZWNc9bD9hzgEtfAAbN6vzXIYSQXgiFcTdBYdzzcDg2YPWa61QxEIslH5MnPYPk5KbS4X0KR7lWPliJ5WWaVznobX6OLRMYcrwmkqVlDaNHuRuQj9Mlu2rw6rISvLfuALwBLY2fbNaTbBYDMpKQlWxGTrIF2SlmZCdbkCX9ZDMsxiOMI6/dA7xyFVC+Tst5fPajwNRrOvcHI4SQXgiFcTdBYdxzM1asXvMduFzbYTAkY+KEvyIzcw76PLKxT/Iq710M7F4E7PmqdfiFFCAZcoImkoeeyEp93UC9y4+315Ti5aUl2HSg4bDnp1iNSiiLSBabm2JBbqoVeapZNJtiRarN2Do8w+fUCoJs/I82nvF94PQHAYOpi346Qgjp+VAYdxMUxj0Xv78ea9f9EHV1S6HTmTBm9EMoKLgA/QrJXiBxyrsWArs+1zzLLVPFZQ0HRpwOzP0xU351MfIRu760AUt2VaOy0Ysqhw/VTi+q4vr+YPs/hi1GfUwsK+GcYkV+mgWFaTYU7noTxat+i2zUQz/kOODSfzJXNiGk39JAYdw9UBj3/HRuGzbehYqKd9V46NDbMXjQ9T07nVtX4nNp4liE8s6FWjGSaKU+2cR35atA+sBEr7LfIh/BDe6AJpobvahu9Clb4fCgvMGL8gYPKsQ6PKhz+dv1nCYEUKCrRqGpEYXDJqK4oACF6bZYy7KblYfaaGAcOiGk79JAYdw9UBj3fMLhELbveAR79/5DjQsLL8foUQ+ooiD9HncdsPMz4P27gcZywJ4LXPEKUDw10Ssj7Sg0UunQxHJUNItgPlDnUSWs99d5UNbgiWXIOBxJZgNSrSYlklNtERs3ln6yxaAEtFGvg8mgV81okL4ORn203/y4HBMrsdXxY2kGfT+9QCWEdDsUxt0EhXHvoWTfC9i69QHxIyM/73yMHfsIxXGU+n3AS5cB5esBoxW44Alg3PmJXhXphDRy5Q4v9peVY/9Hf0BpRSX2h7NRmnks9usLlHh2eAMJW5/oYiWaRSgr4axTAlqNDXoVKhIV1LF5ox4WOWbSxhaTQbPG5nPRx8pGRunbLQaVU9puNsJmNqixzWTov3ePCOlnNFAYdw8Uxr2LiooPsH7DzSrXcUH+hRgz5jcUx1G8DuCN64BtH2rjef8HHHc7M1j0FYIB4KOfAkv+ro3HfAO44O/wG2xo9ATQ4PHDIdbtR0OrsdZ3egMqBtofDCEQCqm+iO9AKNyiL8dCCATDqmx2tC/HehLy1hZxrARzRCjbLeIpNyIjyYy0JBPSbWZk2E1Is5nUXHpkLt1uQoqljc2PhJAeCYVxN0Fh3Psor3gfGzbcoonjgovVpjydVA0jWq7kD3/SJJ4mXwWc8zhg7EVVBMmhWfkC8L/bgJBfy3Etm/IkhV83EBLRHBHU/oAmmP0yFwgpAe2Ls/7ouMWx+HO9kab1g/D6Q/AGQ5oNBGPnSNiJ2x+E0xuEyxeAyxfslJ9HQkEykkwqc4hsgtSyhzT1c1K0jZE5KZYjT8FHCOkUKIy7CQrj3kl5+f+wfsNtKqyisOBSjB79a4rjeJY8CXxwj7Yxb9BxwGUvMKNBX2LvEuDVb2plx+WOydjzgFk39pvYchHonkCTUBbr9mtWvOLiIZfNjbUuP+rdvkhfs6q5ffD4I5tW24l4miVrSF6aFYVpVhSk2VCQbkVRug0FkbGEeBBCugYK426Cwrj3Ulb2DjZsvEOJ46LCKzBq1C95WzSebfOB178N+BxaSrcrX+s2zyLpprjyd24GdnzSNDdwFjDrBmDUWYCeIu1QiBdaRLKk2KtweFHZoGUPkb7KHuLwqgwiskFSPNztQbzPIpAL0zWhLFlDBmTaMDAzSRWEEXHNzyhCjgwK426Cwrh3c6DsP9i48U7JXYGiom9i1Mj7+MUTT/kGbVNefQlgywAu+xcwuB8USulPlK0HFv8FWPe6Fl4hZAwBjr0emHIVYLYneoW9GvlaFQEdFcxl9R7sr3er7CHKyrjO3a7wDolpHiAiOSqWI0364nm2mngxQ8jBoDDuJiiMez8HDvwbGzfdo8RxcfHVGDni/yiOW5adfvlyYP9KrczwN/4ETL4i0asinY2jDFj6JLDsacBTp81Z04Fp3wZm/ABILUj0Cvt8/mpNKGup9sSW1rpRUuvG3hqX8jwfCvnIKki1YmhOMobm2DEk2671s+3K88zUeKS/Q2HcTVAY9w32738dmzb/WPUHDPg2Rgz/KcVxy8Ig//khsPFtbXzST4ET7070qkhXICWlV78EfP1XoGanNicXROMvAqZeC9izAYMZMFrirDRjolfep3H7gthX60JJrQt7q10xwVwSac5DeJwlbd2QrKhYjgjmHDtG5qUg2cLfG+kfNFAYdw8Uxn2H0v2vYvPmn6j+wAHXYfjweymO4wmFgAW/BL54TBuf/DPghLsSvSrSlRlKtn6ghVns+fLw58vmVRHIksFE2WizRqytxThiTfHzVm2s5sRaW/STmp9jslOQRzzONU4fdlc7saPSiV1VTuysbMTOSif2VLsOGeMsIRij81MwMj9Fs3kpGJaTrMQ0IX0JCuNugsK4b7Gv9CVs2fJz1R808PsYNuxuiuOWfPE48PEvtP6pDwBzbkn0ikhXU7pSE8i7vwACbiDgA4LepnLiiUS81iKYpZmj1h6ZszX1LcmAOdrsmrXE9ePHcr7e2CdyeEvlQwnJ2FmlCWWxIpy3VzSqioltIZULxbusxHKeJprHFqSiOMPGz0PSa6Ew7iYojPse+/a9iC1bNeE3aNCPMGzoHfwyaMnCR4BPf631z/gNcOyPEr0ikqiiISKQA5Gm+r4mG/BEmrcd1g34PYDfpc35ZeyOm4/vu9SegC5FPOBRL3fMqx3n3RYPdtTrHfOUR7zlBlNTqEks3MTU3JMe68tzyDnWyLlRj3rkWBcK9DqXD1vKHNha7sAWaWUObC5zqGIubSGFT8YWpmJcYRrGF2lWYpilTDghPR0K426CwrhvUlLyPLZuk/LRwJAht2DokJsTvaSex4JfAZ//Vuuf/Rgw/bpEr4j0F+SrSsS0CGSJiVYi2qnFwrc1p8ZOwNuo9X1iI/3YnEPrhzun+EenC/SYELc2F+ot56Oe8phtay7Omx5t8lx6vQrLKGvwxASzCGXpbytvbDMkQ8ptjy4QkRxtaSokgxkySE+DwriboDDuu+wteRbbtv1K9ceOeQQFBRclekk9C/m4mP9/wFd/1Mbf+DNwzLcSvSpCjl5wq3AREd7ug4yjnnDxXnuAYMRLHvRHPOf+Jk96tB87Fudhjz6XPF49X8RG0+Z1NxKzLeEoKpwkTjSb7fAZk7E9mI/1nmxsdKVhQ2MyNtab4Qy09mYbdMCIvGRMKErHhOI0TChKw5iCVIplklAojPugMA5UVsKzZas2aParavFriz8W6cd+tc2Otei053HNXjY6iDun1ePaODfuOdV58ee0cZ52Tovz4l6z2RrDbT9P26/T4lgb8zXVX6Kubil0MCA/7zzYrEVN6wkd4nlkoxri5mQcObfVz6MTp5A+0tEpr43WVQe0OZ0OOkm3JEUXDHqtSp9Yg0HN6eRWZtRGjxmN0JnMEWuCzhSxkTGix2U+eo7RGJk3NZ8zGNoOJ5Gf44N7gSV/09Z/wd+BSZe3Po8Q0n7k80IJ6IjwjonwOKHeaj4u/EQ1Vwvbck486WKdR77MsA57wnnYEB6E9aEh2BAejI2hQahGWqtzDQhihLkaE6zVmJBcjwmpToxJ9cNqtTXFf1tStBbry3xKU1/EuvqsJKTjUBj3QWHc8MEHKL1VyhgTkgBaiOVmwtlTDZ23Fjp9GLqc4dCl5mniW4lukyb8RVzHW6PYiNBXNu64IX5eLgCMzcdi5fGGqOiPNHNcPzZnbj22WJrmGT9O+rsIF6GtQk4am0JRok2NGyMhJ1ErYSeONufCnkaUBe1YFxqixPLa8FBlqw4mlnX7MFm/A8fotmGqfiuG6g4cIqRap4lmaxpgTdWsJbX5uNVcBmBL1woUyRwrOvZbGiiM+54wbvzyS1T87tGmibgPD138QE3oDt1vNtfG8+gOZw9x/sHOjb3mQc6NHdY1PXerc7Tzmj1XG8+jHW/5uKbXiB1veUw8sy2OhRFEVdUn8PmrYDCmIDfvTBiMSc1fJ+55lGc3fj4ybnZu9Jxm3upQm97osPI2a19gYUmhJcdCQYQl3i9qg0HtPLGSKSAg80GE/X6EA35l4Q9ExhEb3w8EgLi55nck+jZKHEeFcqyZoDdbtHmrRetbrdBZzNBbxFqgt8pjLHF92TjVQqirFvHax4t2uZiIevhF3Ec9/ka5A6DdCdAuDqIXEcbIXQVCegESNhInrMNeB8pqnVh7wIn1FT6sqwphXbUe1b7WIjXD4MExlv04xrQbx+i2YlJ4E5J81Z2UAUWniWMRyW21pCwgcwiQOQxIH6htiiR9BgrjboIxxv0Dn68Ky5ZfDI+nBGmpUzBlyr9gkF3lfRQlqpVoDgCB5gJa5kRso+Wc34fwoj8gvHMREDYiPONHCGeP1YR2vJAPBFsJ+7DKbtB6rC4EolbEfsuxWmdE0EebT6yv2Rx8foSifWm9EbmQEoEcL5YNcZ7zqJCWFg2JiT9HPPdtHJNQmqa7AfGhN83Db9Q5JrlgiL+AkCYXBZonPnYsdqFhgd6ieeYJiUfkhpTDXruvHqtKarFqTx3W7KuDN9BcAEvFvrEFKTimOAXHFJgxLVeHIosL8DQAnnrAG7EHG0sVR3et5tnuEHogORtIKWhqqYWaTc7TsoxI/LXyRItHOl2bIz0WCuNugsK4/+B0bsfyFZcgEGhAbu7ZGD/ucS3WlzQhgvXN7wHr/62lnrriZWD4KehJiGc97PM1Na8XIdUXUS2COjLn9caOx8YemTtIP16cx3vl/U1CPea1lxb18AeDzTz+fRIR4OJZF7Ec9bzHe+Ejfb2MD2ot0NtssbGasyVBnyTNpo6p4+K5J70SXyCEjQcasGJPLVburcXKPbVKPLdkYGYSZg/LwqxIy02xane5JOzDVQO4a5qssxpwVQON5VrZc2eFNhaxLOEgnZmLW8I84oVyLIQjvckjLU2qR0b7cox3g7oFCuM+KIzrysuwd/1q5S3Sy21XueUqTaeDPtrXG7S+uqWvzbU6Fj+vzjPExvqINypmo8cicZ3K6rTH9Udqar7C6jXfRjgcwOBB12PYsDsSvaSeeRv1jW8Dm/6rpZC68jVg6ImJXlWvQH0ERwWzCPiYdz0insWK6Fae8qZjyisfnQtGjosIF8+7nK+863F99RyRsboDEB9eE/Gsx+ZaiPy4iwrtgqJFk4uIRHrmjcaYSFZCWYSz9O32SEvSrMxH5gyxY5GWnAy9PRmGZLt6fH/9vEsI8v5XXl/x9NahqroSu/eVYn/ZAVRXVsDjqEZa2IF0XSMy0Ih0nQM5BifS0AhT2Hdkrykb/JIytTAL5ewIazm6VcaQ+DzdkjVEXqMTxbS8XrxoVi0TyB0LDJ0L5IzuE4VmegIUxn1QGG9/exFCixrgD/kQCPngD2s2ELFqPhyxIX+k71XNp6xH9YPhtpO3d4SYsDaI2BbBHGnRufj5lnPGqDVGxLix6fGqyVgPg9GkjY1GGGLzcePIcYM8j8xFm5xnNMXG2jFT8/NMJq2pNXRsM8b+/W9g0+Z7VH/M6IdRWHjxUf979jnky+O1q4Gt72s5U8VzLB/ypN8Q88yLUI5411v3PQh7RVB7EXJL36Md97ibbHQ+zqrHueVYU+syIS6OBxHKyZpQFsEcHeuTRVQnQ5+aAkNKCvQpqTCkik2BITUV+mSxKercfhMjLjJCPLEqjCGuxUIcoq2u+dgtY2kNR1W8xRs2olGfiqA1A+aULCRn5sMoIRFJ2XHe2kxtLH1bppYLuiM/X2MFUL0NKF0BlCwF9iwG3NWtz7XnaKEX8noSdiFiW7zVqtUA3vrDv15yvvbZGW2pBR37ByHdK4xXrlwJk8mECRMmqPHbb7+NZ599FmPHjsV9990Hcz+4pdWdwnjfeyuBz488tU6UYDioieawJppFYIto9gU98IU88Abd8AZc8AXdauwLueGNHAuGe2l85iGQLywRyUYRzzHBHBHWamyGUY6bzdp5JjNM+cuhz1oGhPUw1X0TJoxU8+pcsxkmi0VZozlqzTCpfty8xaJeo896o8TD8spVwPb5WpWvy14ARp6e6FWRPoryYEeFskusq0k8O10IuVwIOZ3NW8s5lxNB1Xch1NjYeaEtEXGtxHNaGgzxLT09YpvmtHPSYchIV+EnPdKr69gP1OwEanYBtbs0K+Pa3ZoIPlrkblM0JEGs2jQX6YvQFEGblAmHPhXravRYXAYs2OPHhir5nTV9ppqNehw7NAsnj8rByaPzMDArCZ2OSCf52fd+DZQs0Vrl5oOI3BM1gTvkRE04S0hHTCxHwz4qtOfYu1jzWscjHmQlkk8CBs/RUtmRniOMp0+fjh//+Me46KKLsHPnTowbNw4XXHABli1bhrPPPhuPP/44+jrdKYxD7gAC1W6EvEGEpfmCsf5B5zwBZeWx0j/qKqoGHXRWQ6TJLSC9ZlXTIWzRIWwOI2wBwmYgbAohFA4jFAwgFAppNhi1wbjWfBwMRMdiAwgG4s4JyFjrB1vORWww4I88rqmFAn6t3ymepTAGzduPjOENCHj12PafwfDWdXwznghta3IKrPZkzaqWDFtKaqs5sUlpaUhKTVPCvdeI49e/DWx5Vytte9FTwLgLEr0qQg6LfB2GPR4lkIONjQg1imBubD6WvqMBIYeMHQg2OLSx2EaHsuIZPxok5MOQmamaMSMj0s+AUWx6RlNfjmdlqfM7BUnfVrdXE7p1e+IEsIjfPVqIwaGQPQbR9Gmt0qi11VqI4I54ceMob/Bg8Y5qfLm9Cl/tqEZpnbvZ8WE5dpw8Ohcnjc7F9MGZMHVVOWvxCO9bFhG4S4DS5a1FbtaIJqE8+DgtpCIeyVVd8jWw8zOt7V/d3Jsun6lF04BhJwOjzgTyJzDsItHCWF5AvMbDhg3Dww8/jAULFuDDDz/El19+icsvvxwlJSXo6/SmzXfqg16EszsimKW5xQYRFhvfXP6IbeojeGSqWmczwpBsgj7ZBEOKWTV9xDb1TdAnSb5bXbf8OyjR7Pcj4PdHxLTWlznpK+vX5rXzfKoFfVpf5vx+F3ypzyJs3oewPxX+XRch4DYi4PMi4PPFNS/8zea82karo0BEsy0tXYlkTSynN7O21DR1jtmWBHNSEsxWm/JOJyzm+D8/Ata9rsXTnfcXYPKViVkLId2MbM4MOUQwi1Bu0MRzXR2C9fUI1ms2JP06GTdvR+KxVkI6JxvG7BwYs8Vmw6jG2TCovsznwJiRBp2rXBO5UfErVsbSl81qh3whI5A+SEtvliEpzqQN1fqS6kwq6CUY+azfVtGIBZsr8OnmCizfU4ugpLuMkGIx4rgR2UoknzQqFzkpXZhpSIncJcCuhRGRu6r5xj/5bCyY3CSUB87Syn63FNu7Pgd2fqo9h/y+4kkbCIw+GxhzDjDgWJUKknSzMJYnXrFiBUaMGIFTTz0V55xzDm655Rbs3bsXo0aNglvivvo4vUkYH72oDiHk9kfEckQwO/0INmq2ZV+Od8hDLalck5sEsyFNmiXSmvp6c89J0O7zVWP58ovh9uxFauoUHDPlRRgMh/d0iOdaBLLX5YSnsRFuR4OynkaH1pxx/cjxaDtSUS3hG2abDRYRyramZrHZlHg2WW1KQMs5JqsVZqsIaitMcrzFMXmuDoWASLaK/90KrPynNj7rd8CM7x3Rz0FIf0BdwIugrqlBoKYWwVqxNQhKX+Zq4/ua7Zh3OgyjNQRjUhBGWxAmZUMRGxmnJ0OfMwjIGNQkfqM2tbjXCa96tx+LtlUqobxwSyWqnc03600sTsNxw7OVWJ46KAMWySveVUhM9e4vmoRyVaSqbRSJh576bWD6dVqauLYQL748dtt8YMcCrVBLFAk1ES/y6HOAYScBJhv6Ow3dIYxPPvlkDBgwAKeccgquu+46bNy4EcOHD8fChQtxzTXXYPfuFlczfZDuFMZ7Gvbgs5LPYDPaDt1MmjXpE3u7PRwKNxfPjX4EHT6EHD5ltX5kztn+8Aad1RgTysZ0CwypZhjSrTBmWmDIsKr57vA8R3E6d2L5iosRCNQjN/csjB/3hy5L4yaiWESzq74eroa6ZtbdYiyi2+d2KwHeFXHZIpKVeBarWlLTXFL8sYj4tiUhd8s/kLLtdfUc/hN+AsOJd6oNlISQdiIlnSXtmLRGsZKG7ADCjjKEqvYhWFaKQFUlAo0BBDwGBNx6zXrE6hF0G1T4F8Lt+4yUmGdjXh5MhYVaKypqasVFKka6N+6TCIXCKm+yeJI/3VKJdaXNN8JZTXrMGJKF44ZnYc7wbIzJT4W+K79XGvYDOxdqQllEbtRjL575Md8AZv4QGDDj4KESEvoij9v8rrbpWWKXo8gGaAm3EJEs+zwkRrsf0tAdwnjNmjX45je/qTzEt99+O37xi1+o+ZtuugnV1dV46aWX0NfpTmH84e4PcefCO9t9vlFvVAI5yZiEJFNScxvpq+Om5mOr0QqbQbOqGayx+egxee7O/DCUog5R4axaQ6TVeRFs8CJY70WwTnavt+PWol4HQ7oFxgxNKBtFLGeKlTmrCt3obOFcW/s1Vq2+FuGwH8OG3oXBg3+InoJ4p30eN3wuV0Qsu5Rg9op1ST/SPB41L+f65Xy3WA98Hles7/e2zinaMcKYnbMHs7K1MKvFlQOwtGEkLEl2TUCLNzvJDmuSHRa7tGR1TPraXNPYYbZiB4zITbIh12xClskIUzdeEBHSqVlcXFWAszLSIn3ZhNVMAJe1L5NBFNnclVYMpBbF2SKE7YUIhu3wO4FAZRX8ZWUIlJUjUF4Of3k5AmVlysrmxcMh6ezMRSKaRSw3CWfzwIEwDRykMnn0BioaPFi4tVLFJX+xvQqVjuYOhSy7GbPFmzw8C8eNyEFRehd6YCV7xZb3gCVPAHu+aJqXUAsRyOMvbB1m0fLxe7/SRLK0+riwVp1BC9eYeJkmlC3J6C80JDJdm8fjgdFoVK2v053CeHXFaryy5RW4/W64AwdvknWiqzHoDK1Es4hrJZyj4lqsHBcPtsHWTIjbjfbWYj1iTYeoHiRx0Uok1/siVusHaj0I1noQqJNck4d5Gxt1MGbaYMyONiuMWTaYsm3Qp5qPWPCXlr6CzVt+Cp3OoCrjZaRPR18jFArC7/E2ieWIkBaRrfoRwR0V1iK4vXHi2ytzLicmmDdiTtZ29ZzLq4uwsGJI89rkh6AuJQNLJx+H9aOOQbDFJsTUUBDZRh1yLWYUJtuRZzUjx2xCrtmoxPOYZKsaE9JlyNeopB+LFpFoVXAiKoAjVgSxnN/RjA0p+VqWg5S8JivCNyJ+lT2UeGpnKIcSzSKY9x+Av7S0WQtUVh72eSSuWUSyaoNELEt/kOpLSrueiPzsW8sblUD+YlslluyqgauFU2ZIth1zRCQPz8asodlIS+qiz5WydZpAlj0a0c17csEjYRbTvnP49G3yfjywpkkkV2xo7kkWcTzpMmDI3F4XGtMjhfHQoUNVBoqsrKxm83V1dTjmmGNUpoq+Tk+LMZZfoT/kj4lkV8ClWX+TlbmDWU/AA0/Qo6yc33LcHaJbvNF2k12JZ7vZjmRTsho3s5H52Jw5GanmVKQYk2H32mBrNAL1AQRrvZportFEc7DOc8jc7DqzXolkJZijNtcGU24S9FbjYf/tN268A2Xlb8NizsOMGe/AbM7u/H+gPkJo8d+g//DHqu8eeRGqJ90Kb8Sz7XE54XU6lYfb62xU/Z0w4MO8YVidPwShSE7Y9PpqBIwmOG12hNuZj3qoxYhZmamYlZ6MY9OTUWztgemwelRO2gagUYRcRZyA00Vu6cbbg81Hrf4wc5ENSK3mI/3Ysbbm9C1a/FzkeWSjk8S6i5XPsdhYWrj5MdkoJe5UuT0dsy7A54zYuHkpNdxM/NZqz9FR5Ja5yq2bo+XXVTYnTvhGmpQjVoUodD1iY6F//36tKbEcsSUl8JWUqLjnQyFhGKZBA2EZPATm4cNgGaY1U3GxVsq8B1XkW11Sp0SyiOU1++qbbeKTX8WEojQVciFCWeKTraZOXr9U8Fv5PLDsKaChtOk9M/b8SJhFOx0x1Ts0kb32VS3DSBR5X42/GJh4KVAwqUe8v3qlMJbiDGVlZcjNzW02X15ermKPfb4jrELTi+hpwrir8Qf9cAfdzYSzskGP8mQrG+e9VsI6ck4zIR7px4t17+HS/3QQ8U6nmFKQYm5qqcZU5AezUeDLRo47HelOO5IbLbDU6aFvCEN3iL8AFdOclwRTrNlhFMFsafoADAScWLb8ArhcO5CZeTwmT3qGZaMPxaoXgXdu0gSJ3No776+tvBYr6534495yfFDVlBv1pMwU3DQwF5MNIdSVHUDNgf3YW1GOkppalDY0otztQZ0SzClwJiXDmZSCRnsqatKzImKqibxwANOSzDghPwcn5GZisO3I7xr0uljV8g3abdao8G2MNNWPzLVMMUXah8keybcbrWoWyb2rRG+c8JXWR0sDSyYO39698O/dC9+ePfDt2avGvr17EKysOujjpKy3ecgQWIYNhTkils1Dh8I8eHCPyOvc4PHj6x3VsbCL7RWNzY5bjHqVCk6EsniVxxWmwdBZYV4SJrH5f5oXWcIlogw+Hph7r5bbuD2I3Nu3XBPI6/+tXdjF50oWgTzhUiB9APoKXSqM33nnHWXPP/98PP/88+qFogSDQXzyySeYP38+tmzZgr5Odwrj0i21+PrtndBLLmG9TrOSON4gJaEjc+IgiYzVnEEq1EXGhshjDDoYYs+hb3ZMa1KNTs7RbKwZW88b1JwUyIjMGzV7JDG8gVAgJpSdfqdqjf7G5tan2fg5h8+h+mKj/SPBGDYgz5eFQl8uhoUGYKC/EMW+XOS7s5DiO3jqIX26WYlkrSXBl3kAq/dchVDIg6FDbsOQITce0Xr6DfKh/Ob3gVBAu6138TMIG8xYVNuIP+4pxxd12u9T3lFn56ThpkF5mJRy6FRQ8lEmGTxqD+xHXdl+ZWsPlKKkvBzrw0aU5A9ESeEQlGcXtPI0p/k8GBfyYGayBWcPGoBxA4p6v1CWL1MpOLB/pVatq3QlULFR+zdvb8nc5BxNvMm/hfqqCLdtD3Usdk6oxRzamAu17sefEx3Ht9i5h8rcEvEmy+9deZQNkb7MR+ZkB7/cZpaUYyJwlZWxvcV8pMUVnIjZowhj6A9IQRXxKvt274Fv1054d0jbAd/OnQfPrmEwqJAMy+hRsI4eA+uY0bCMHq1S0CXyb7Ss3qPyJqu2owrlDc3Xn2YzYfawLMwbk4eTRuUgK7mT3hsSIiECee1rQMgfJ5B/rOVF7kiM+45PNJG8+b3mOaoHHw9MvVbbAGhM/EVJjxXG4ilWD9Dp1BdQPFIJb/DgwXj00UdV+ra+TncK423Ly/HRU3HxQT0YEcYivg2miJiOimqjiGgp96xv0Y8ci28S1hA9bor0I+NoXztugFHOVecboDOG4dG54Qw2NhPMDb4GZet99WjwNqDeW6/6dd46re+tP6ioTg7aMMhbiIHeAgyKNOlnBpsuCuOpKVqIynHPqp3fdv/tSC6YifQBOchOzVXx16QFW94HXrtGfSCXDz4V3x73S6xs1D6cjTrg4rxM3DgoF8OTjv7fTvJV15SWoGrvbuwt2Yvl9U6sCRuxMyMPZbnFCLbwWGfVV2OCswZzLHrMLc7HoGEjkJKd2C/iQyKfyZLfVASw5EoVK1+gEgLQEnuulns2OVdrMhYBLLdVo32xPSAnbYdpKZzjBTDpsUjmHQnN8G7fDl9ULO/YoayqRtgGhqwsWEeNgmXM6JhgFu+yLgH7nEQT7ahsxBfbRCRXK8+yw9t0ASo+Iwm1OGVMHk4Zm4dhOZ2w+a2uBPji91o6zHiBfOI9wJDjO/ZcEi618R1NJO+WjX8RjSd3No65RhPJvdSL3C2hFEOGDFExxtnZ/TeOsjuFcWOtBxW7HSrNjEqFJi3Y1Fc2GG77uMxL5oe4c9SxlvORcTDQ+jHBgFSsi5uPzsm5cfFWPQYdlHA2mg1NNiKexZosYg0Rq4fJbIDeDAT0fvgNXvh0HrjhggsOOFCPhlA96kLVqA5VoSZQhRpfNfyNHuS5M5VoFrE8xFuEoZ5i2EM2HBj3FBqKvoDBm4bBix+AzpeCEksZ9trKUJFah4YMD7xZYSSlpiDTmokMa0YzKy3NkgZ9PwjFqPIF8PXK/+LUj34AS8iLp4ouxK9H3oqrCrPwwwG53RIH7G50YN+eXfhqXxm+drixRm/FrrQchONubxv9Pgw4sAujyksw0xjCxKIC5A0dgbxhw5GckdX9YlkqC4onWEIiVFsPHFjb/LZovNe3cDJQNBUoOkazskGLQpH0AkSeBCoq4d26Fd4tm+HZvAWezZvg27lLK1HdAp3FAsuIEbCOGwfbxImwTZqowjEk1WR3EgiGsLa0Hp9tqcQnm8qxYX/zctlDs+1KIItQPmZgOoxHU4kvKpBXvQAEI6Gsg47TPMgdFcjR51v9L2DFcyoloEK+j0aeqeVXlrLUvSj8J6FZKfoT/S3G+GBExXdQiWpNLEeFtFitxfX90fNazMcdC/rDCCgbVHMBmY/aQPw4ctwnLajdfe0GJGzEbDHCaNFBJxuSzSGEjAEEDD4Ew17o/T4kW1fDYKuG2ZeG/D1nwKTTwySCXadTnlDxZziMDSixlmGv5QD2qLYfe81lcBidShSnW9Jjgln68U3mRDxnWDKQbtXmZENij/VmxhEIhfFZrQMvH6jGR1UN8IfDOKfyMzy1UUv72HjKg0g+7oaErrHW48F723djfkUNlgQMqDU1vwUqm/+G7N2KoSXbMLS+EnlZ2UjPL0BGfgHS8wuRnleAjIJCVYnwqH4n8qaWL6ay9Zr4jQphKQrQ1kYvKccr5WELj2kSwlJ+thd9iRHSHkIeD7zbtsGzeTO8m0Qwb4Z382aEXK3vkOiTk2GdMB62iZNgmzhBCWYJw+hOpET1gk3l+GhjOb7eWQ1/XBaljCSTqsAnQnnW0Cxk2I/QIVC/r8mD3Ewg36N5kjv6WRT0a+njZOOfVN6LkjlME8hSybRlOev+LIwlnlhaRUUFQi2u2p555hn0dSiMexZaueewEs0ikpVY9ms2GLH+yLzfK1Zrfq92vjrmFRsZe+OaR7MiyjsbkStKKEfEsgjnsD4Ar8ENl9EJh6kBtaZaVJmr0WhyaB5tgwd+gydio2MvYAghzZqm0t9ZDBaVMs9ijFiDpVlfwjrESmaPbFs2smxZyLHlqCaCuysE9k6XF68cqMZrZbUo8zUVdpmckoQrCjJx2c4XYP3kPs3lf/m/tBKnPeS9tdnpwfyKWswvq8IqTxCB+H+fcAjZtZXIr9iHgvJ9KKjYh+zachhCIVXoJD2vUIlmaWk5eVqeZsndLKW7kySHs4ytMLoroaveBlRtAyq3aFZSLMUn7I9H4n5FBOeNi7TxmmWMK+nP4Rj79sGzcRPc69bCs2Yt3Bs2tJmX2VhYEBHKE2GbPAm28ePV5r/uwOHx4/OtVfh4U7mqxieV+eLJS7VgdH4qxhRIS1H9oTl2mNrrVa4vjQjk5+ME8hzgpJ+2f5NeS+QzafkzwOqXtIw1gtEGTLgImP5doHAK+rUwvv/++/HAAw9g2rRpKCgoaPUl+tZbb6GvQ2Hc/xCveFQkR63PG9D6HimmEYRPrFuz9bW7UFu1ESG/DRbTaAT9VnWe1x1QnvXOJoSQJpiNbiWsvUY3fBHrNboifVerebepEV6jE+FIag6pnChiWURyVDBnJ2lj8UxLerxUS6qyIqIlB/XBhLQzGMT/KuqVd/jremdsPtNkUPHDIojHJEcS5svHkJSPltt3stHp2+/1yA/bxkAQX9Q2YkFNAz6tbkCJt3X1RlPAj9zK/ZpYjrQ0Ry1MuiDSzR5kml3IsriQaXYj0+JChtkNk77tC68Q9HCbc+FOGgh/2jAEs0YCeRNgyh4MS3IKrMnJSmh3961iQnoD4UBAxS27RSSvXQPP2rXwbt8R2eDZhM5qRdIxU5A0YyaSZs7QhLLJ1C0hF8v31Kpwi082VWBnVdPnZDwmgw7Dc1MwJj9FCebREcGck2LpmEAeex5w6gNAxuAjW7C3EVj/BrD0KaB8XdP8yDOAi54CLCnol8JYxPAjjzyCb33rW+ivUBiT9rBp80+wf/+rMJkyMXPG/2Cx5Kl58T4rYe0JNBPb3kYfPJVueKrc8NZ54K33wefwKwEuWrqpheGP9jthnWGE4TO64DI54DE6lVj2GBs1a3LCbRTbqI67zA3qnGiOOyn6Ei+WpflMg7FTNxo7QkXwQ/ty0SGMgfpKjDHuxVB9BYwRHaeT/3Tq/9CFQrh4xWsYWrkTjZZkvDznOjjs6dBDHztHkFATaSo7C/Qw6A3qWGw+rh9tsk45T9mD9VvMGXXGZseajSNzNf4w1jf6sdbpxVqHNA8agprIzfdWYmb9Whxbvxaz6tZgpGs39NFNLS0IhnWo9dlQ47WhxpekbLXXjmpfEoLhQ4teSQ0onmgJ3bClpDa11Lh+pCWlpsGakkIxTfotwcZGeNavj4jltXCvWtUq97I+KQm2aVNhnzlTiWXr2DHdkmNZvMlbyx3YdMCBzWUN2KysA41xG/niKUizYnxRGiYWpWFCcZrKq9wq+4UI5EW/05wOsiHVYAFm3QAcf/uRC9lwGChZqoVZbHhL2/yXPxG46g0tB3d/E8ZS2GPp0qUYNmwY+isUxqQ9BIMeLF9xMRobNyE9fQamTH4BeknO3kGk8p+/woVAmQv+cif85ZoNOfzqVr9Em4pI1sRyGH69HqE0M0LJZgSTjAiaDfDrdcqr7XX54XUFVPNI39lxaR3SheAxOuA0N8AtYtnUAJfJiQZ7OurSRqI+pRBOqx4NNj2CqIDV+TmszkUwBA8SFhCHPRTCP/eXY6Tfj20mE64uzENjbxBw4TAGBgKY6vFiilePqR4PBraR7aTWmIJtSYOwPWmgattsYgdhry0f+pAXloADNn8jbD4H7N5GpLobkOKqR1qjA+kN9bC5vDD4QjB4w9B7g9Adxd0HnckIvcUEvdkEg8Ws+gazWfUNFguMFjOMFgsMZpMS0SLAJfNM1ErMol4uSuSiRaVCk3H0PO0cvcoKEZnX61sc18byHOp51Hlio3Oa1VJRGlXfYJDj2jGDUbtQEcFiMMhxuUgyQm8wqCYXL7GLLllr5KIpekEVf4z0X+QzVOKVXUuWwrV0CVxLlyFY37wqoT4lBUnTpilvcvKcOTAPH95t7xvZ5C4xypsONCiRHBXMu6qdbe6tkbLVE+KEsjQVtyz7Ez64F9i1UDtRstDM+wUw6Yqj24dQugL416VaNcf0gcA33wSyR6BfCeN77rkHycnJ+PnPf47+CoUxaS8u1y4sXXYegkEnBg/6EYYNu7PTnjvo9CMQE8ou+Muc8B9wIuxtY2OWHjDmJMFcmAyTanaYi5IldgIeZwBuhw/uRr+ynojVxn54GrW+q0E71iHMQcAeiDS/suEksX6EpSX5AFtQhXLIR5H8Z3fX4cpFTyHZ24jd2UPwxvTLENSJr1U7JxQOqb7YaD8YCjaba9mkeqNqoaAaB8IBbT4UmW95PBSIjeXcaF+sOhYKYLjPi2lurxLBx3i9yI54imO/H8lIZzZhhdWGpckDsSxlFCos+QgZMxAypEea1oeufRdMupAT+kANDMFq6APVMPprYPHWwuqpgd1ZjRSnA1a/DlafHhafQbN+Q7OxKdgLLjQ6AfXO0MuFXFgyKKr3WChiZdyqr5e+xPlLX8uxFZYLADUWq4l/GLS+yhdvFKuJc73RCL1RRLlRiXYZizUaTTAYTTCapFlgMpthUtYCk9ECs8UKi8kKi8UGi9kKqyVJNdkXIHsBzHozzAaz1jeY+0XGmkTHKnu3bIFzyRJNLC9frspkxyNV+pLnzkXySXNhnz692+KT4xEv8sb9DVi7rw7rS+tVFoydlW2HYhRn2DBlYAamDUzHNGzE6GU/g6EuUgFPQtbOeBgYOPPIF1OzE3jxIs3KhrwrXgEGHot+I4xvueUW/POf/8TEiRNVkxzG8Tz22GPo61AYk45QXv4/rN9wi+pLVbysrBO7NFNIoMYD//5G+Esb4RO7vxGhtjzDOsCUb4dlaJpq5sFpMNhNh4219jj8WLW/Af/dXYn1ZQ5Y3SEke0LI8gGDQwakecMqDERCRNqD5LpOzrAgJcuKlCwbUsXqK5D61Y+Rgr2wTzsL+m/8MfEpxmQj3I5Pge0fa62xvNlhKVASKpgM/8AZCBRPh69wMoJmezNxHhXl8QJdCiTVBkKo9AVQ5Q+jKhBClR9aC+hQrZoBrtDhBZEBIaTpPUjVuZCqcyIZjUiGA0logC1UD33Yg4BUJ5VMLr4Awv6A1L4F/CFldf5Qq6YPRPMDazZaKVLZyJxYXfzx2LhpTv324ubVXLvGumbHomO9es6+6+0N6EMI6sOQX3vQEFZ9NTbIe02nNRHmEpdkNEBniohzsxF6JcLNMJqlWWCyaELcYk1SAtyWlAyr1Y4kWzKSbClITkqFzWJXm3dlc65UEJXNuvSmSwKYoNrQJ95k59cilpcgHFfhV2+3wz5nDpJPOgnJJ54AY2ZmwtYqoRiSGm7dPk0oi2De1UbccrLFgCmpDkxr+BjTQuswWb8d9gnnAqfeD6QVH9mLO6uAly4DSpcDkrdfYo7HnIt+IYxPOumkgz+ZTocFCxagr0NhTDrK5i3/h9LSf8FkysCM6e/Aai3sttdW4RYNPiWURST79juVDda1rjRlyk+CeYgmlC1D0mBIbvKE+ENhvFtZh6f2VWJ5Q1NapGNSk/Dd4hyck5MGc9wtOZ87gMY6L5yRpvq1ERtpLocvlkv+YOgRQHJyEClFeUjJtKqWnGGFPcOC5HQL7OkWWJKMnf8lLhl3DqwGtn8CbJ8P7FvWvLqabBIUr8ig2cDA2VqKNJO1Szf+lXr92O/xKVvq8WF/xJaoOZ8KqTkUsvFxoNWCHLMRqUZDi6bXrMGANKMBKUbNJsXtho9qXdVXHv64cZx+1sZaL6apI3PRb5ymuabnavk82j2Etp9D+pIVKSgtGPXkhxAIBiK52DUvf1g8+ZG7AwjKBUkQCEmaSS0UKRSUcwLQhYLQBf3QSUWwiNUF/FqFsKAfoYBcxAQQCPgRjDTV9we0sbxuQFpQ9cOBYGws4ko1yW4TjLYwdBGrD8bC9hOGeNYDBmmhiA0jZNQhbNKrpjMbVZOQGwmxMVmsMFmtKvuK1WaH1ZaM1NRMpKdlIystD1lpuciwZarsN31JYEtKOOfixXB8+ikaP1uIYFVcmWudDrbJk2PeZMmpnOifXbJeiEBeuacWy/bUYtWe2mbFRwQDghir24Npxh2YNnYkpp92BXKzjiAVm88FvPEdYOv7muflrN8CM76HRMI8xt0EhTHpKMGgFytWXAJH4wYYDMnIzzsXBYWXIDVlYsI+OIMNXnh31cO7s17ZQEUbaY1ybdg/PBUf5hrwasCNMvEwiibU6XBebjq+U5yNY1LtR76GYAiueh8cNR44qqW50aBstLkQkvvch0GKtSixnG5Gcnpz0SzeaDlmSzEd/t/aWQ3sWKB5hKVcqrOy+fHsUcCIU4HhpwADZ3WpED6SHNH7vT7s9fiwxy3Niz2R/l6PFzX+9nnwSduYdTqY9DplzXqdumCw6fWaNWg2Sd/Ujx6LtmSDAfZI324wIFnZaDPAgHBEaDe1gN+nPPxenxserwsejwter9aXOZ/XA6/HDZ/Po1rA64Xfp7Wgzxd7npBfuzugtRB0gSB0/rCKURfPe1egbeoNwW8KI2jWIWwxQGc1w2AzwyQpC5PtsKekIzUtE2npOchMz0VOZhHys4thT0pNuKBsb9iFZ8MGNH76KRyffgbvpk2tQi5SzzwDqWedpcpY94SfKRgKY0uZA8v31GD57los312D/fWeVucdk9aIs6YMxlnHTkRhuq0DLxAA3rsTWPGsNp5zqxbLnKC9It0qjLdv344dO3bghBNOgM1mU1fePeGX3l7++te/4re//S0OHDiAcePG4fHHH8fxx7evSgyFMTkS3O69WL3mOrhcO5s2m9lHorDgEuTnnwezOSuh6ws2+pRA9uysw/r9DZhvDOCTPCN2pjTtxs72h3GFzoarB2ejeEimdhu3C5HQEOd/7oNj+QdoCBfCMfF2OEI5mge6VvNAe5z+dhdnEbEsIjk5M2JtfiT7tyO5cQ1SqhbCUrkUunjXnTkZGDoXGD5PE8OyuaSX0hAIYq/bq4RzrT+I+kAQjoBm5ZgjGES9P2LVsZCaP1rdJN8K0W8G+YrQxtqMrtmcNhM/bjqua3Os9gAq2/bxqIdZaOmpjs5FvdJq42pIMr6E4ZVKouherBGxLQI6xahHiohn8dwb9Mp7L/Pi1dfmms5JNWme/ai33yj/KB0gGAjA742I6ojQdrkcaHTVK+t0OeB2O+B2NcLjdqrjfrcbfo/2GBHgIa8fYfFCegPQy+bQo7wGk5CRgBkIWSNi2m6FJSUZ9tQMpGZkISMjDzlZhcjPGYi0jGyVcUU2XCYa/4EDaFy4UHmTXYu/bhZyIRX4RCCnnn0WLEOGoCchm/uW76rBitUrsGxHOTYH8hFWmfY1pmZ4cPbU4Thr+ijkp7XDGSB/WJIJY8GvtPGES4Hz/iIeDPRJYVxdXY1LL70Un376qRLC27Ztw9ChQ3HdddchPT0djz76KHo6r776qko3J+J4zpw5eOKJJ/DUU09h48aNGDjw8F98FMbkSAmHQ6it/Rr7D7yOysoPEAppH5w6nQnZ2fNQWHgJsjKPh05283frusJY7XCrUAlpu9xNH+imMDDDEcYZuz04pSygxmrNZgMsw9JgHZmhmjGrA16FjiC3wF/9plaFKSkL+O7HQObQ2GEpyuKs14SyEsvxYRu1HjXXnpANwajzIMXcgNQMA1ILc5A6eBBSc5ORmm1FapYNZlvHs4r0ZkLhMDyhcJviVvWjgjUy0fy83uMoaTP8KAz4lFgOKeuLiGax3lAIbrnbEbXBENyhMFzBYLO+OxhW50hOb2dAbAiNkXOi/c5Oay4eaBHK0RYNlVFjkwEZRiMyTAakm4zINBqQYdLGco5cYHQGysvtcqK+oRo1deWora9CfUMVHI5aOB31cDsd8DQ2wud0IuTyAm6/yrJi8ulgaMcdojZf06IDkswwiohOTVXl2jMyc5GbW4zcnAFIzcyGPSMTtuSUbklVKCEXjZ9/joZ331NiOV4kW8aOQdrZZyP1zDNhKuy+sLp24fegfOX/8P6SdXivLBXLQiObieRp2QGcPW0kzjpmCPJSDyOSV/0L+O/NQCgADDkRuOwFwJqGPieMr776alXxToTkmDFjsGbNGiWMP/roI9x2223YsGEDejozZ87EMcccg7/97W+xOflZzj//fDz00EOHfTyFMekM/P56tTFv/4HX4HCsj81bLPkoyL8QBQUXIylpUJeKnmX1TrxbWa/EsMStxtag1+GkzBScnZOO07JSkWYyIigZK7bWwrOtFt5tta029BmzrLCISB6RAcvgVCWcZQd/pwgknxN49kzgwBogtRgYMAMwJ2keXbNdi/dV/aTI2K5ZqQRXvgHBXV/DuXMjGuv9aAxmay2UpVl9sbJu3+GrxlnsRqRl27RNgtlWJKWalViWGGeLsqbY2GyVDAXMIEAOjYhsEclaC6IxoAlm8diL915iyxvi+o5gSHn65bwGdZ7m4ZfHHw3yTk2PCGdlRTibDMhUNtqaj0VQGzrxAkhixmsaK1FRVYrKmgNKVNfXV6GhvhrO+jp4HQ4EGt0Iu7zQu4Ow+PQq00pHNmGqjCN2C0wpdtjS0pCSkaXl+E5JQ3JKOpJT05GWlg17arqatyanqOwiR5s72fHxx2h47z04v1oMBJo+O21TpiBVRPIZp8OYnY0ehbMaZSvexvvLNuO9qjwsC4+OHZLc9NNzobzIEwZmwWYyIslsgC3SkkwGGOXzT8LSXrsG8DVqFTqveh1ILexbwjg/Px8ffvghJk2ahJSUlJgw3rVrFyZMmIDGxta5O3sSPp8PSUlJeP3113HBBRc0y7axevVqLFwYyfEXh9frVS3+H3rAgAG9ThgHw2FU+QIo9/lR7vWjwhdAhc+vPB6aZ0TziKgWCsfmNE9JSNm4Eu+kEwkGXfD5q+HzVSMsm4MiGAw2LUdsS9TvIaxi3GSTmIQcqM1iHaDckIM6SRUWwRqStGNrcKxnubK2cOvNec2WoDcjrLdAJ60d6caa3jqR29RxG7Xag9nvw+SdG2D1N3leOor8C9Un2VBtt6PGnqSaP/KlFw4aEfCkIuDOUC0o1pWJgDtdjUP+jsdS6wwehI0euI1uePSebr89T9ogLJvsfEDIB13Iq/piZV426ekitllf3jnyuMh8s02YPZY4136zv78W5xz0WLtf5ZCvQJojkVqGEKAPhZWNR1IHxvromYSP4DEtL1t8aVbc/cST6KnCuMOXQU6nUwnLllRVVcFiObzHJdHIOmUHc15e8+osMi4rK2vzMeJFllLYPRXZdFPlD6DM69daTPj6US7i1yvWr9JB9YaP8/6LpPnJbP4p0p5fmMq5emSvmBR24hgsw3R8jYm6NTBbfUDk7ljr7RiJRfzZSzOTkV3tg1Ht5A8ra4g2+aKJjaGsfPl4rHrUpplQl2ZCQ6oJQclDq3DBpFr7CPot8Duzm7WgNxlBf5Iq/R30iU1C0GdDOKj9IyobtMLmTUcXBZr0WzSfjg/hkAcIexAOx9mQZsNhNxByazbsRjgkG0yP/MKKkM4icrnVnJ6qhjuZJF9i99N0ujCWzXaSx/iXv/ylGsttUrn9IRvZDpXKrafR8vbuoTYP3nvvvbj99ttbeYy7A4fPh91OjxK6Im7jRe+BiOhtW/DqDvoLzzYbkWc2IcdiQq7ZqDZ1mPTarmvZuCEZB0zRHdiRsaThEmto45kPftOhxXz4cMcP/qnQ6jUOd6PjUMcjxw667mbzcf3wQfyf8bt6Wj3mIK8Rqf4lwZmqqIDLjWB1NQKqVakUQF5HObzhCoQC/rbfm/L7SE2BMT0D+vQMGNPTO5RoPhkBTEIdjBJH6psGp3ManG7A6dKaSzTFYeL9DIYwLGYJ/4CyVgsgSzAZIvGm8Tm5Iv80ulb9jt2K9UWljTzMKDleQ6j016PMXweHzqW9yY3yfjahwJwBu96ifQNJ4b3DF99rhvrdKmd8SPVFfEvpapNszpIEv7ZawFan1lKNRmzSl2ODvgy18MAUtMAUsiIpkIShwQIUBbNU9Ta1O1sF6vasqmtSYcsj5coDUhpDw6DXwWKUstpdsM5w5C5HMHiQFmg9F4ibDwSOOIux+vnkTkF8U78b+b1Efj/6ljZyLFL1r6Pv276G/ElJ4Z1ApEm/vfR8/Rf3IRXZoKmNum7lZm8AJnl/izc5toxIDvC47xhVVr4H/QPqWnzHNW1slWALGUfuSkR+jtRwIwIDB6NPCWMRwHPnzsXy5ctVWMLdd9+t4opramrw5ZdfoqeTnZ2tyoq29A5L3HRLL3IU8YQnyhv+xiefoOa5vzSby4u0CV3ometgfTPSxagPR1WCVwedlL+NVNbS1TkR2ucG9OUISAndSDlcVYlLSufKhhq9QfuQkhbSq71s0mr9wEeeEHyesLqLDLXhL+p+FjGgV38rthQrktKssCVbYI00W6SZbObYa6rXU1ZEv7ym3HJuqminwj2iOWjjjsXOiYjPWD821kJFmvohlXu2vq4O+0pKUFZ2QOWSVR/BYR0yMjKQk52NlORkhENB+HySZ1ZroWC0L3lotRyzcuGh5uSYP9JXVusf9iIsjhwAc9FW/s8DqrW8gJUiDFJyWVnVohXSIvNmS7NCDZpt6pvi+xarll9WxtE8s6q0c2TObG5z05GkbvrrZ9vx3zX7Jb2vYsaQTNxw0nCcMCI7Jt7l31yyFkg2Ap9HrLv5WPXd8LmlueCL74uVsSs6L1Y8vEf/DS8/vzU5WcWCWu3JTf3kFBUjaktNhS0lTYsjjfQtSUndsgGLENL76LAwHjt2LNauXas2rsmXpoRWXHjhhbjhhhtQUFCAno7ZbMbUqVMxf/78ZjHGMj7vvPPQ00g3GlGT6EWQFmiJoJRgiAbLxpJDRYjNRzyjcY+OOknFU9xeVElbKXmsYol9wFHE2XaEYGTfW33bUUY9goiDOIazphzOHV30YnJXxWgCjHq4w15VVEJNq4sXueNihElnhDGSVaTpIkDCUoOa0I5D5an1++BF26VcOxsloi0WdfEiIVguXwDeQAhyY/Na+XyUPLtmI0w1OmxcAWyMbIgKSGquLnrPycWUJcmuNbvYJJht0X58S4oI3iYRbElOVqKfEEI6i35Z4COaru3vf/87Zs2ahSeffBL/+Mc/lOd70KBBPSorhXyRqhKurehA2MGhiGq6DtD27d+2n+Sg2u8gB1rtLtYd/DHNzo07Fu2GxSPo9iDkdiHklJ3MToScTS3olFLJcsyJcGPcscZG7ZijEcFGB8INDoTjNl8eKfrkZBjS0mAqKIBp8CCYBw2CaeBAmAYOgqm4CDqrNeYRFQ+pVO5yN/jgqHXBUeVCY61bSz9W54az1gNXvTuSwzcarRbxwjYbR/thmKw6WGx6mK161RdrSzHCahdholfCTbyCWhOvajAi5rSxmpe1KRt/bqSpKmPSl/UHI6EC4nmWrj5y9zkSPhA5pv2udBEvs3arWo6LN6/JRvo6HfaWlKDRKRt8tVvc6eIdzslV1iBlcaNea/GqG/TKi22IeNebrKmpH/G+y1jNGYzKayvniOdWHRMPrlHr1/rq8PuVv8c7O97Rfqc6PWbkz8CZQ87EvIHzkGY5dCoi+d2qv2m/r1URh5bjmFXN27rf4rjf620q8BDJS6taJwta+Z2YrTatzLBYq3imrTBHrMlmg8Um4laO2TShK+dJUQebpLzTjilrtSmh3pNCSgghfYcu23wnHuLx48erLy/pH4qJEyeip3PZZZepfMwPPPCAKvAhP9t7773XLlHc3US/sPsaSvx5vaqFxHo8CHnEujUx63Frc25P8zllI3MuaS6tuaXvVLG60bn4vJGdhd5uhz41FYbk5CabkgJDeroSvaqlR2xaGvTRuZQU6EymVlXfJNdurVR929AIR3WVqgDXKOMar+oH/QfbfSdeMgv0RsBkMSAlS8oka9XektK0im+SSkysPc0MW6oZhl6eOmzr1q1Y+dJLMGQV4uSTT8bkyZNhtx951b2OIOWE39j6Bv6w6g9w+Bxq7qIRF+GGyTcgJ0kCKNovKqPhEN2FXLCIeJaQh6c/3YLnFm1TqZYkbvjk0bm4bHoxBmQe/N9RPvej5X/FyoUChSwhpF97jOWDUWJyc3NzNc+ObBZq42EyLxkf+jp9IY+x8qaKEPV6NIGqqhf5lA37omPNhlvNR8bRx/nizms259fErbyGp7kI7grRelDEg5iUpDy2enuSErcGu/TtWlPzYrWxQfoidlNSlNVLHsvUFHVMYnfbi3h9XQ0+1Fe6VWuo0qwmfD2qEMVh//p0gD3NghSp1JZpRUqGVRPB0o9Ub5OcuX1dqIinWu7wyF6A2bNn47TTTuu2115ftR6/+vpX2FCt5WgfkzkGPz32p5iUMwm9BSkD+4t31uPFr/eq8aXTinHTySMwILN1hiFCCOkrdJnHWHIU5+TkxPqk+/CXV8CzcUOTdzUiZjWBGe37ImIzclyJ0ZY2Ik6lL6K0RaxjQpFb2LIxyGqF3maDzmaF3mqD3mqFzha1ciypqS/nygYaOS6iV46JFeEbmVPHRMx2oYcrICV0qz3NhG9DVdP44B5fDYOUeM0U4StCVxO98X3x+Mo5/R25UyWi2Gq14rjjjuuW16z31uMPK/+gPMUSoJJiSsGNU27EZaMug0EyGPQSPP4gbn1lNT7YUKZCV+47dxyumd2zd4UTQkiiaJcwjg8x6InhBn0Z1/Jl2H/HnV36GpLiSzWJ9TObNZEaN9ZZtLHeHB2LNUEfPS7zbc3JY6yRY7LhR0StxRo3F+n30FARuSviafQr764W4qCFN0Q9vtLcjkPn75C4WfHspmbbkJpji1RNaxLASSmSKaBve3uPFr/fr0rQCyKK28qj3pmEwiG8vf1t/H7F71Hr1fK7nTv0XNw+7XZk23pYZarDUO/y43v/XI6lu2vUxrrHL5+Msyb0/E3ShBCSKDqsSKTYhaQ1+853vtNs/plnnkFlZSXuueeezlxfv8eYlQ3rhAma4JQmnlIRqhYrdFaLJlatEYGp+pbIuZHjSoy2EKXqOTSrRGw/TFsk8b2uep8KZ3DWe+Gs8ynrqvOiUVqtVwngwGE8voLRYlCCV0oEp4n4zdFEsIhhEcC9PbY30UhqSLkNJpU2pZx7V7KlZosKm1hduVqNh6cPx09n/hTT8qeht3Gg3o1rnlmKreWNSLEY8eTV0zBrWM9OrE8IIb1OGD/xxBN46aWXWs2PGzcOl19+OYVxJ2M/diaGvP5aopfRKxAPr9cVgNvhU83V4Fcxvlo/XgR74W70tztJelKaWXl3JZ5XvL/aRremkAeLve/H+CYKj8eDzz//XPUlf7qpxQbGzqLSVYkn1j6B17e+rjzGScYkXD/5elw55kqY9F3zml3JtnIHrn5mKQ7Ue5CXasFz356BMQW9cz8EIYT0aGEsm/DaylcsMciS4YGQzkI2r3ndARXOIGnJxIqg1caa2JVQhpj4dfgQCrQ/VZ3eoFOiVza3qWwOkQwOEtcbFcHJ6bILnx7fRCFFg9xutyrMI1kouiKO+On1T+PlTS/DE9SKYJ8++HTcNe0u5NnbLvjT01m+uwbXPb8c9W4/huXY8fx3ZqA4g5vsCCGkS4SxlEKWL6shQ4Y0m5e5wsLCjj4d6QdIUQqfOwCvy688uiJyxWrND68zAE/UOqPi1wePMxCpltYxzFaDSk8m6cpsKWYVxytjLZWZWaU1EzFstZsY39uDcTgcWLx4serPmzdPFRTqLJx+J17c+CKe2/AcGv2SFxmYnDMZNx9zM6bnT0dv5cMNZbj55VWqaMcxA9Px9DXTkWHvvtRwhBDS74Txd7/7Xdx6661qQ4zkEhU++eQTVRr6jjvu6Io1kgQixRp8niB8ngD8YkXgugNq7HNr42jzxs154+fdUlb3yNcgeXqtySbYkk3KiqCV1lr8mpQ1mntPxgBycBYuXIhAIIDi4mKMHj26U57TG/TitS2v4al1T6HGo9WUHJUxSgni44uO79UhMf9asgc//896Vdb5lDG5+NMVx8DGvwVCCOlaYSwCuKamBtdffz18kVy0kkJJYovvvffejj4d6cLNZX4RqR5NmPqVjROyURHraerLOVERLNbvDrRr81l7kU1q1iSjyrtrSTJp1q5Zbd4UJ4DNmrWbGMrQD6mqqsKKFStU/5RTTjlqwSqlm6Va3d/W/A1lTq2+9cCUgSr9moROSAW73hxb//jH2/CHT7ap8eXTB+BX54+HkZs+CSGk64WxfEE9/PDD+PnPf45NmzbBZrNhxIgRsFhYr74rkJRgB3bUad5aEasiWr1im/djHl1v5wtaQXLpmm0G5b0124yw2IzKRpsaW6Xf/Hi8CGY+XtJeFixYoATfyJEjMXjwkefclY10H+3+CH9Z/Rfsbtit5vKS8vCjST/CN4Z/o1durGuZo/hn/1mPN1bsU+Ob543AbaeM6NWeb0IISSRHnEA2OTkZ06f33li83oKI4vlPbzzixxtN+iYBazU0F7NWI0wiZK1Nx6LCNzYn51gNFLWk29i3bx82btwYiy0+0hLO8/fOx9Prnsbmms1qLsOSge9O+C4uG30ZLIbefyFfUuPCD19cgQ37GyCh8g+cNx7fPJZ55gkhpMuF8YUXXojnnntOldOT/qF48803j2pBpDmSHaFoVDpMFk2omkSwWsQ2iVYlZiN9dY5F89iK6GUOXdKbEC/xxx9/rPqTJk1SOdM7GkMsxTme3/A89jq08sd2kx3XjLsGV4+9WvX7Ap9uqVDV7CTzRKbdjD9dMQVzhveu4iOEENJrhbHUmY7emhNxzNt03Ufh8HScf9sxiV4GId3Cjh07sHv3bpWB4qSTTmr34xw+B17d8qrKNFHtqVZzaZY0XDn6StXSrenoKxleJJb4jwu2IRwGJg9Ix1+vOgaF6bZEL40QQvqPML7gggvUBjtBPMeEENLZhEIhzJ8/X/VnzJiB9PT0dhXmeGHTCyrThKRgE/Lt+bhm7DW4cMSFSDL1nfy9dS4fbnllNRZurVTjbx07CD87ZwwsRmaeIISQbhfGUthDiniIJ0cKeeTm5nbaIgghZP369SgvL1cbeY8//vhDnru7frfKQSyZJvwhf6x887fHfxtnDjmz12+qa8n60noVT7yv1g2rSY8HL5iAC48pTvSyCCGkfwpjEcRff/01zj33XBUDyFAKQkhnIvmKJROFMGfOHCQlJbWZcm1F+QoVMvHxno8RjiTHnpI7BdeNvw7HFx/fq9OuHYzXlpXgZ2+vhy8QwsDMJPz9m1MxtpDlnQkhJGHC+Ic//CHOO+88JYil5efnH/TcYDDYmesjhPQDli9fjrq6OpXt5thjj20mhpeWLcX8PfOxYO+CWFEOYW7xXHxnwneUMO6LSCq2+97ZgFeWlajxvNG5eOzSyUhL6lvecEII6XXC+L777sPll1+O7du34xvf+AaeffbZdsX/EULI4fB4PPj8889Vf+7cudAZdfiy9Et8tOcjJYbrvHWxc2VD3SkDT8FVY67CiIwR6Kvsq3XhRy+uxLrSesgNujtOHYnr5w6HniXMCSEk8cL4nXfewZlnnqnKsv7iF7/AJZdc0uatTkII6SiLFy9Go6sR7jw3/uP5D2559RY0+BpixyX/8LxB83DqoFMxPX96n4sfbsn/1u5XRTvqXH5kJJnwh8un4ISROYleFiGE9At0YQkaPgyy4Y6b75poaGhQKezq6+tV+jpCSMep99bj052f4ulPn0aptRR+g7aJTsiyZuGUQacoMTw1byqM+iOuRdRrqHH68PO31+PdtQfUeFJxGv5y1TEozqATghBCukuvcfMdIaRbkM+ObXXb8Pm+z7Fo3yKsqVyDYDgIRGpu5NhyYmL4mNxjYND3nzRkH20ow0/eWoeqRh8Meh1uOGk4bjxpOMysOEkIId0KN98RQroMl9+FJQeWYFHpItXKnGXNjqf4UlDgLsAP5v0Ap4w9pU9mlTgU9S4/7v/vBry5qlSNR+Qm49FLJ2FiMfdwEEJIIuDmO0JIp7KnYY/yCIsQXla2LJZnWLAYLJhZMBOz8mZh5yc7EaoNYdasWTht3Gnob3y2pQL3/Hstyhu8kD113zthKG47ZSSspv7jKSeEkJ5GuwP3ZOMdN98RQlriCXiUAP6i9AvV9jr2NjtelFyE44uOxwnFJ6jNc1ajFR9++CG2125XsV8dKf3cF3B4/Pj1u5tiadiGZNvxu0smYeqgjEQvjRBC+j0d3tEiwliS8X/88cfYsWMHrrzySqSkpGD//v0qsFnykBJC+jYljhLlFRYhLHmGvUFv7JhslJMYYRHCIoiHpA1pti9BPitkz4JwzjnnwGw2o7/w1fYq3PXGWpTWudX423MG4+7TR8NmppeYEEJ6pTDes2cPzjjjDOzduxderxennnqqEsaPPPKIykf697//vWtWSghJGCJ8V5StUOERIoZ3N+xudjwvKQ/HFR2nqs8dW3As7KbIjro29iD897//VRvxxo8fjxEj+m4u4nhcvgB+8/5m/HPxHjUekGnDby+ehGOHZiV6aYQQQo5GGN9yyy2YNm0a1qxZg6yspg/1Cy64AN/97nc7+nSEkB6ICNettVvx9YGvsfjAYqwsXwl3QPNyCkadEZNzJyshLIJ4RPqIdmWrWbJkiUr3aLVa1QV2f2B1SR1ue3U1dlU51fjKmQPxk7PGINnS91PQEUJIb6PDn8xffPEFvvzyy1a3PwcNGoTSUm1nNSGk9yEZI5QQ3r9Y2fjyy9F0alEhLF7hFHNKh56/trYWn376qerLnaa+HnYVCIbwl0934I8LtiEYCiM/1YpHLp7IYh2EENKXhHEoFGozJdu+fftUSAUhpHfQ6GtUm+aiXuFd9buaHbcZbaq4hojgWYWz2u0VPpgH+t1334Xf71cX0VOmTEFfZk+1E7e+uhqr9mrlrM+eWIAHz5+AtKS+XbWPEEL6nTAWT8/jjz+OJ598Uo3li7KxsVFtyjvrrLO6Yo2EkE4gEApgfdV6JYLFK7y2cq1WYCOC5BAelzUuJoQn5UyC2dA5G+M2bNig0j1K5UzZcKfX9818xXIB8PryfSo3sdMXRIrFiAfOH4fzJxexMBIhhPRFYfz73/9epVcaO3as2mwnWSm2bduG7OxsvPzyy12zSkLIEWePEBEsTQptOPyOZscHpgxUIljEsKRSS7Okdfoa3G433n//fdU//vjjVSXNvlrS+d431+LDDeVqPGNIJh67dBJLOhNCSF8WxoWFhVi9erUSwStXrlShFddddx2uuuoq2Gy2rlklIaRdNPgasOzAMny1/yvlGRZhHI/EBYsInl04WwliyTHc1cyfPx9Op1NdPB933HHoiyzcWok7X1+DSocXJoMOt586Ct8/Yagq70wIIaT3cETbokUAf+c731GNEJL48AgRwtLWVa1DKBxqlj1iYs5EJYSljc0aC4O++3Lm7t69W11AC+eeey6Mxr6VicHjD6o0bM99paWvG56bjMcvm4zxRZ3veSeEENL1HNG3lBT2kDjjTZs2qbi5MWPGqDRuw4YN6/wVEkKaUdJQEvMIS3hEo7+x2fHBqYOVN1iEsIRHHCyncFcjhYAkZ7EwdepUtemuL7G+tF5tsNteof37Xzt7MH585miWdCaEkP4kjKWU6ze+8Q1MnjwZc+bMUZtNvvrqK4wbN059CcrmPEJI14RHSNvXuK/ZcYkLVhvmCmYpQVyYXIiewKJFi1BdXQ273Y5TTjkFfYVQKIx/LNqJ3320Bf5gGDkpFlXS+USmYSOEkP4njH/84x/jtttuw29+85tW8/fccw+FMSFHQTAUxJ6GPdhUswlbarZgVcUqFR4Rnz1CwiMm5U6KhUeMyRzTreER7aGyslLlPBfOPPPMPrP/oKzegzteX40vt1er8enj8vDQhRORae8/Za0JIaQv02FhLOETr732Wqt5iTeW8ApCSPvLLG+v3a5E8Oaazcpuq93WrMJcfHhEVAhPy5+WsPCI9iAbcuXukeQ7l5LPcjepL/DhhjLc8++1qHP5YTMZ8Itzx+Ky6QOYho0QQvqzMJZUS5KVQr7w4pG53NzczlwbIT3eu+sL+eAL+uAJeJTQ9QQ98AYiNuhVfXfQHZsT0buzbqcSwVJQI94THF9YY2TGSIzOHK3yCs8smNljwiPaw6pVq7B3716YTCacffbZvV44unwB/PJ/m/Dy0r1qPL4oFX+4fAqG5fTtyn2EENIf6bAw/t73vofvf//72LlzJ2bPnq2+9OSW6cMPP4w77rija1ZJ+hWSVUGyLUjzh/zKioCMzsXmwwH4g/7YOHpuq35QG8daZCyCNt5Gj0XFrlgZi8BV48hctC+vf7SkW9KVAJZwCLGjs0ZjUMqgHhca0V68Xi8++eQT1Zd85+np6ejtG+xufmUVdlY61fgHJwzFHaeNgtnYNwuUEEJIf6fDwvjnP/+5Kv386KOP4t57743lNr7vvvtw8803d8Ua+zUi1sQb2VIcttVvOSceTRFvYuPPOdi4rce0dX5UuLbsN3uuFjb6nC3XG309NY7049ON9RYMOgMsBgusRiusBissRotmDZZmfTlenFIcE8J5SXm93qMaz9dffw2Xy4XMzEzMnDkTvXmD3dNf7MIjH25WG+zyUi147NLJmDM8O9FLI4QQ0pOEsXyJy+Y7aQ6HVkVLhDLpGj7Z8wnu+vwu9HdEeBr1xqam06xJb4LJYIr1W9poX5pZb1YljmUuauWxahx3TOakH50TQSvzYuPnY8ciz9HfEUEsGWqi3mIp/9wbqWiQDXZrsGhblRqfNjYPD180ERncYEcIIX2eDgvjXbt2qfykEmMcL4ilLLTEFA4ePLiz19ivib+lrtfpmwSizqiOST9eNEpfzetaj8W2HMtzxh+LPkbNt/H4+PNbPjZmI305LoIx/lj8euNt/JpbNZ2xT3lV+ypffvmlCqXIy8vrtRvu5m8sx91vrEGtyw+rSY//O2ccrpjBDXaEENJf6LAwvvbaa1UGipab75YsWYKnnnoKn332WWeur99z8oCTsfKbK2NCk5CeiNw9ks8A4eSTT4Ze37veq3UuHx56bzNeXa6V0B5XqG2wk0p2hBBC+g/GI9lxLoU9WnLsscfixhtv7Kx1kQjK04reeUua9B8+//xzdSepuLgYI0eORG9BChS9ubIUv35vE2qcPjX3fbXBbiQsRv7dEUJIf+OIYoyjscXx1NfXq7ylhJD+RW1tLVasWKH68+bN6zVhBzsqG/Gzt9Zj8U6tWMeI3GT8+oIJmDEkM9FLI4QQ0luE8fHHH4+HHnoIL7/8cmxzjQhimTvuuOO6Yo2EkB6MhE9JUY+hQ4diyJAh6Ol4/EH89bMd+PtnO+ALhlQs8c3zRuC7xw1lGjZCCOnndFgYP/LIIzjhhBMwatQoJZKFRYsWoaGhAQsWLOiKNRJCeigVFRVYu3ZtzFvc0/liWxV+9p912F3tUuO5o3Lwy/PGY0BmUqKXRgghpDcK47Fjx6ovwj//+c9Ys2YNbDYbrr76ahVfLLlLCSH9h08//VTF6Y4ePRpFRUXoqVQ6vPjVuxvx9ur9aix5iX9x7jicOT6/14R+EEII6YHCOFrQ48EHH+z81RBCeg2lpaXYtGlTLBNFTy3U8dLSvXj4g81weALQ64CrZw1Wm+tSrMw9TQghpBOEMSGEREOnJk6ciNzcXPQ0lu6qwYPvbcLqkjo1nlCUhl9fMB4Ti3t3mWpCCCFdB4UxIaTD7N69Gzt27FD5iufOnYuexNp9dfjdR1vx+dZKNU62GJWHWDzFBnEZE0IIIQeBwpgQ0iEkpviTTz5R/WOOOabH7C3YWu7Aox9twYcbytXYqNfh0ukDcMu8EchLtSZ6eYQQQnoBFMaEkA4h5d9LSkpgNBpVhppEs6faicc/3ob/rC5FOCy51oELJhfhllNGYFCWPdHLI4QQ0h+EcWVlJbZs2aJ2dEulq5ycnM5dGSGkxyH5iqOxxTNmzEBqamrC1nKg3o0/frIdry8vQSAUVnNnjMvH7aeNxMi8lIStixBCSD8Sxk6nEzfddBNeeOGFWKU7KfQhKdv+9Kc/ISmJ+UAJ6ats3LgRZWVlMJvNCSvoU9Xoxd8+24EXvt4DXyCk5k4cmYM7TxuFCcVpCVkTIYSQfiqMb7/9dixcuBDvvPMO5syZo+a++OIL3Hzzzbjjjjvwt7/9rSvWSQhJMHIhLHmLhdmzZ3frRbA/GMLXO6vx4YYyvLmyFC6fdlE+Y3Am7jx9FMs4E0II6RQ6XP/03//+N55++mmceeaZ6jaqtLPOOgv/+Mc/8MYbb6CrdsBfd911qtysFBQZNmwYfvGLX8Dn8zU7b+/evTj33HNht9uRnZ2txHrLc9atW4cTTzxRPY8UJHjggQfUZiJCyKGRgj7V1dVKEM+aNavLX8/tCyohfPurqzHtVx/jW08vxYtf71WiWFKvPf+dGXj1B8dSFBNCCEmcx9jlciEvL6/VvOQxlWNdwebNm1Vs4xNPPIHhw4dj/fr1+N73vqfCOn73u9/FvFlnn322inUWD7Z8gV9zzTVK9EqIhyBlq0899VScdNJJWLZsGbZu3Yprr71WCWnxdhNC2iYQCOCzzz5TfQmhsFgsXfI69W4/Pt1cgQ/Wl2Hh1kq4/ZpnWMiym3Hq2DycOaEAJ4zIZsU6QgghnY4u3EF36bx585CVlYV//vOfsFq1FEhut1uJ0JqaGnz88cfoDn7729+qsI2dO3eq8fvvv49zzjlH7ZaXynzCK6+8ooRvRUWF8mzL+ffeey/Ky8tjX+y/+c1vlHDet29fu79oRWCnpaWhvr4+oZuPCOkuvv76a3zwwQdISUlRd2JMps6rGlfh8GD+xnKVZu2r7VWxjXRCUboNp43LU5vqpg3OZB5iQggh7eZI9FqHPcZ/+MMfcMYZZ6C4uBiTJk1SYnL16tVKJH/44YfoLuSHjM+funjxYowfPz4mioXTTz8dXq8XK1asUF5iOUfCKOK9XXKOiGUJ15BQjbaQ55AW/w9NSH9B3vuLFi1Sffn7OVpRLBvmVuypxefbKlURjg37m/89jchNxunj8lUbX5RKzzAhhJBuo8PCWMSn5DF98cUXVYiDOJwvv/xyXHXVVSputzuQilvi5X300Udjc7JTvmWIR0ZGhto9L8ei5wwePLjZOdHHyLGDCeOHHnoI999/fxf8JIT0fD7//HMVtiR/T1OmTOnw4+UzYne1S4lgaYt3Vsc2z0WZWJyGM8ZrYnhYTnInrp4QQgjp4jzGIoAlxvdoue+++w4rOCUWeNq0abHx/v37lcf6kksuwXe/+91m57blWZIv5fj5ludEI0kO5ZUSj7Jk44j3GA8YMOCQ6yakLyAXjF999ZXqy9+dpGZsDw6PH1/tqNbE8LZKlNS4mx2XeOHjR2TjhJE5OG5ENnJTWJmOEEJILxTGzz//vMr4IBvdhLvvvhtPPvkkxo4di5dffhmDBg1q93PdeOONytt8KOI9vCKKJSRCdsTLa8aTn5+PJUuWNJurra2F3++PeYXlnKj3OIrEHwttbSiMIqEXXbXZiJCeimx4/d///qcuHseMGYNRo0a1OqfW6cPOKid2VjZil7JOZXdUNjaLFTYZdJg6KEMJ4RNG5GBsQSr0jBcmhBDS24Xxgw8+GMtVLDG7f/7zn/H444+rL9DbbrsNb775ZrufSwS2tPZQWlqqRPHUqVPx7LPPQq9vnmlOxPKvf/1rHDhwAAUFBWruo48+UoJWHhM95yc/+YlK4SYhFtFzJC65ZYgFIf0dic2XTanytzJi6nH4YP0B7IgI36gQrnX5D/r4wVlJMSF87LAsJFtYgZ4QQkgfy0ohOUwltnjgwIG45557lBCVDBUbNmzA3LlzVanozkY8xbLpR15TXiv+dq54gaPp2iZPnqw8v5KxQjJkSEaK888/P5auTTbsidfr5JNPVgJZYqXlnP/7v//rULq27sxKsWRnNf7wyTaYjXqYDHqYDWJ1qm8yNo2jx6VZjNFmgMUU1xdriuvHHTdHxtz13//w+IPYV+tGSa1L2X01LpRW1iJ99wIYwwF87R+IzcGD31EpTLNiSI4dQ7LtGJqdrPqyga44g1UwCSGE9PGsFMnJySpHsIhU8baKl1iQrBSStq0rkNfZvn27apINI56orhex/O677+L6669XFfkkDvrKK6+M5TkW5B9n/vz5uOGGG1Tcsmwmktjh+PjhnkaFw6tiNbsLEcZNQrlJMIsAjxfZVpMeVpMB1kjfovoRq5peHbOZDbBF5qJ9NTbrkWQ2qscYDR2uM0OOAIn73VzmwMb9Daptq3CgpNaNSkdTxpUoJ5h2INsQQFUoCVuCuUizmTBYCV+tifgVETw4O0n9HgkhhJB+6TGW7BPiMZbd6RJTLNXmJK+xlIgWL6wU3+jrdKfHeF+tS6W28gfDqiyuNEl35ZN+IG4uYmXOGwiqsdcfgjcgLQiP6ge1cVxfvIVxoaAJQUS3CGkRznazMWaTLAYkmaUZYRdRHbMG2C1G1ZItBiRbTLBbDEiJ2GSrUYn3/or8SR+o92gC+EBDzO6tOXgBHglzKM6wKS9vsaEe2C7p2XQ49cIrMWHkYKRaOy9vMSGEENJnPMZ/+ctf8LOf/UwV0pDy0CKKo/GIV1xxRcdXTQ6JEipdfEs6EBHWIpibrCamm883iemWVmuRvhLfQVW1TB4rVjWfdl50HL0kk+eW1uAJSNbcTvmZJLwkOSaetZZqMyHFalQiT2yK1YRUm2aj86libSblIRUvd09G/j3lwklCIPZWu7C3xo3NZZoIrjtI7K+EPYwtTFWb30blp2Jgpry/bEhPMqnMLBJ//9e//hV1AI49dibmTBzR7T8XIYQQ0ms8xoSV7zoDeduJqBZxFy+cJb+t0xdQfac3oMZaC8DplfM0K+NGr9YXq/W18zsLCSNJt5mUaEy3mZVg1vqaFfGclmRW40y7GRl2MzKTzMqj3Vn/PlWNXpXqrKRGE8BixfN7sBCI+JAYifMVARwVwmMKUtUaD4VUrpSS6vK+lpAjZmMhhBDSW+kWj7GUhZU44+OOOy7mQf7HP/6h0rVJX+J2CTkc4p3UYpEN6Mx3TDAUVsK60aMJ5aholrHDE0CDx6880xJv2+COWI9fHYseFyvPIyErEuMtrSNIWIgIZCWURTAnNVkR1BLyEl2D9rqtX1/mJHzmcKRYjBiQmYQBmTYMyEjCyLwUJYSH5yZ32OMtqQujOYvPPPNMimJCCCH9jg4L47vuugsPP/yw6q9bt05lc5DNawsWLFBWUqkRkijEU6qFRJiOylvr9AVR5/KpkIR6t9akX+f2od7VfCy21uVDjdOnxKyElOyv96jWGSEhWjiNTYU9KBGckRTp25TXujNKJkvO4v/+97/KSuYWyVtMCCGE9Dc6LIx37dqlvMOCxBifc845KrfxypUrcdZZZ3XFGgnpVkRoRuOSizM6Lqil6IWI5BqXL9bXhLOIaZ8K0YjGOMdinVvEPmtWNhsau6UQxqpVq9S+AZPJxL9jQggh/ZYOC2NJ9u9yuWLxiFdffbXqZ2ZmqlgOQvor8YJaPLu9hcbGRpXGUJAc3xKPRQghhPRHOiyMJbZYQiYkV/DSpUvx6quvqvmtW7e2yjFMCOn5SJ5wj8ejiuXMmDEj0cshhBBCEkaHKytICWij0Yg33nhDlYYuKipS8++//z7OOOOMrlgjIaSL2LFjB9auXav65557brOqkoQQQkh/g+najgCmayN9Ab/fry5upXy6eIoZW0wIIaQv0S3p2uKREtDy5RoPhSIhvYNFixYpUZySkqJiiwkhhJD+TodDKZxOJ2688Ubk5uaqfMaStzi+EUJ6PpWVlaqQhyAhUFarNdFLIoQQQnqfML777rtVzmIpGysFAJ566incf//9KCwsxD//+c+uWSUhpNOQi1tJtSg5i0eMGBFLv0gIIYT0dzocSiFFAEQAz507F9/5zndw/PHHY/jw4Rg0aBD+9a9/4aqrruqalRJCjhqHw6H+fsVjnJSUhLPPPrtTCoQQQggh/dJjLDGJQ4YMicUTyziaxu3zzz/v/BUSQjqFuro6PPPMM0oUS1zxt7/9baSnpyd6WYQQQkjvFcZDhw7F7t27VV9uwb722msxTzK/ZAnpmVRXVytRXFtbq/5ORRTn5OQkelmEEEJI7xbG8oW6Zs0a1b/33ntjsca33XYb7rrrrq5YIyHkKKioqMCzzz6r0tZkZWWpv2GpVEkIIYSQTs5jvHfvXixfvhzDhg3DpEmT0B9gHmPSW9i/fz9eeOEFlVpRMslICXfJJkMIIYT0dRqOQK912GPckoEDB+LCCy9UHijZjEcI6RnIRevzzz+vRLFkjbn22mspigkhhJCuFMZRZBOefAkTQhLPzp07lafY6/Wqi1fxFEsWCkIIIYR0UeU7QkjPY8uWLWpTbDAYVCFOl112Gcxmc6KXRQghhPR4KIwJ6UNs2LAhVrxj1KhRuOSSS2A08s+cEEIIaQ/8xiSkj7B69Wq8/fbbkP2048ePxwUXXACDwZDoZRFCCCF9TxjLBrvDFQ8ghCSGZcuW4d1331X9KVOm4Nxzz4Ve32lbCAghhJB+QbuFsaS7ONxx2eBDCOleFi9ejA8//FD1Z86cidNPP52imBBCCOlKYSwFAgghPYtFixbhk08+Uf05c+bglFNOgU6nS/SyCCGEkF4JY4wJ6YVIHPFnn32GhQsXqvGJJ56IuXPnUhQTQgghRwGFMSG9UBR//PHH+PLLL9V43rx5OP744xO9LEIIIaTXQ2FMSC9CRPEHH3yAJUuWqLHEE8+aNSvRyyKEEEL6BBTGhPQSJDexZJ5YsWKFGp999tmYPn16opdFCCGE9BkojAnpJaJYchSvWbNGjc877zyVlo0QQgghnQeFMSE9HCnt/NZbb2H9+vVqc53kFJ8wYUKil0UIIYT0OSiMCenBBAIBvPHGG9i8ebPKTXzxxRdj7NixiV4WIYQQ0iehMCakh+L3+/Haa69h27ZtqrTzpZdeilGjRiV6WYQQQkifhcKYkB4aPhEVxUajEVdccQWGDRuW6GURQgghfRoKY0J6IB999FFMFH/zm9/E4MGDE70kQgghpM+jT/QCCCHNWbp0aSxPsWy0oygmhBBCugcKY0J6ENu3b8f7778fq2jHjXaEEEJI90FhTEgPoaKiAq+//rqqbjdp0iQcd9xxiV4SIYQQ0q+gMCakB+B0OvHSSy/B6/Vi4MCBOPfcc1XOYkIIIYR0HxTGhPSAXMWvvPIK6urqkJGRgcsuu0xtuiOEEEJI90JhTEgCkbCJd955ByUlJbBYLLjyyitht9sTvSxCCCGkX0JhTEgCWbRoEdauXavCJqSAR05OTqKXRAghhPRbKIwJSRAbNmzAggULVP+ss85iAQ9CCCEkwVAYE5IASktL8dZbb6n+sccei+nTpyd6SYQQQki/h8KYkG6mvr4eL7/8stp0N2LECJx22mmJXhIhhBBCKIwJ6V4kHZukZWtsbERubi4uvvhi6PX8MySEEEJ6AvxGJqSbCIVCePPNN1FeXq4yT0gGCslEQQghhJCeAYUxId3EqlWrsGXLFhgMBlxxxRVIT09P9JIIIYQQEgeFMSHdgM/nw2effab6p5xyCoqLixO9JEIIIYS0gMKYkG5g6dKlcDgcSEtLYwYKQgghpIdCYUxIF+N2u/HFF1+o/kknncRyz4QQQkgPhcKYkC7myy+/hMfjUVXtJk6cmOjlEEIIIeQgUBgT0oU0NDTg66+/Vv158+YxNRshhBDSg+G3NCFdyOeff64Kechmu1GjRiV6OYQQQgjpS8JYCiRMnjwZOp0Oq1evbnZs7969OPfcc1WO2OzsbNx8880qG0A869atw4knngibzYaioiI88MADCIfD3fxTkP5AdXU1VqxYEctEIe9ZQgghhPRcet0uoLvvvhuFhYVYs2ZNs/lgMIizzz5bxXHKRicRJddcc40SvX/6059it7VPPfVUtQFq2bJl2Lp1K6699lolpO+4444E/USkr7JgwQL1/hs+fDgGDx6c6OUQQgghpC8J4/fffx8fffQR/v3vf6t+PDK/ceNGlJSUKOEsPProo0r4/vrXv0Zqair+9a9/qU1Qzz33nKo4Nn78eCWOH3vsMdx+++306JFOY//+/diwYUPMW0wIIYSQnk+vCaWQMrrf+9738MILLyApKanV8cWLFyuhGxXFwumnn65CL6K3s+UcCaOIL8Mr54iI2b1790FfW55DvM3xjZBD8cknnyg7YcIE5OfnJ3o5hBBCCOkrwlhuR4vn94c//CGmTZvW5jllZWXIy8trNpeRkQGz2ayOHeyc6Dh6Tls89NBDqjBDtA0YMKATfirSV9m1axd27NihMlBI2A4hhBBCegcJFcb33XefCl84VFu+fLmKERYv7b333nvI52srFEJEdfx8y3OiG+8OFUYhr1tfXx9rEq5BSFvI++njjz9W/alTpyIzMzPRSyKEEEJIb4gxvvHGG3H55Zcf8hzZtPSrX/1K5YKND4EQxHt81VVX4fnnn1e3q5csWdLseG1tLfx+f8wrLOe09AxXVFQo29KTHI+8bsvXJqQtNm/ejNLSUphMJpxwwgmJXg4hhBBCeoswlpRq0g7HH//4RyWOo0hMsMQGv/rqq5g5c6aamzVrltpkd+DAARQUFMQ25ImgFc9d9Jyf/OQnKoWbhFhEz5G4ZGYNIEeLZEaJxhYfe+yxSElJSfSSCCGEENLXYowHDhyoNtZF28iRI9X8sGHDVOEE4bTTTsPYsWPxrW99C6tWrVIC5c4771Qb9iQjhXDllVcqoSzxyuvXr8dbb72FBx98kBkpSKewdu1aVFVVqRzZc+bMSfRyCCGEENIXhXF7MBgMePfdd2G1WpUoufTSS3H++efjd7/7Xewc2Tg3f/587Nu3T4VhXH/99UoUSyPkaJCQnU8//VT1jzvuOPU+JIQQQkjvQhdm2bcOIxsBRWTLRryoN5r0b7766isVliPvh5tuuknFGBNCCCGkd+m1PuMxJiRRSNGYRYsWqf7cuXMpigkhhJBeCoUxIZ3gLXa73cjKysKkSZMSvRxCCCGEHCEUxoQcBY2NjaqiojBv3jwV604IIYSQ3gmFMSFHwcKFC9XGO0n5N2bMmEQvhxBCCCFHAYUxIUeI5MyWyozCKaecwpR/hBBCSC+HwpiQIyAUCqn0gJLURfJnDx06NNFLIoQQQshRQmFMyBGwevVqlQ9bMlBIFUZCCCGE9H4ojAnpIC6XSxWKEU466SSVI5EQQgghvR8KY0I6yMcff6zSs+Xm5mLmzJmJXg4hhBBCOgkKY0I6QElJCVauXKn6Z599NtOzEUIIIX0ICmNC2kkwGFQb7oTJkydj0KBBiV4SIYQQQjoRCmNC2smyZctQVlYGq9WKU089NdHLIYQQQkgnQ2FMSDtwOBxYsGBBrMKd3W5P9JIIIYQQ0slQGBPSDj766CP4fD5V4W7q1KmJXg4hhBBCugAKY0IOw86dO7Fu3TrVP+ecc6DX88+GEEII6YvwG56QQxAIBGIb7qZPn648xoQQQgjpm1AYE3IIFi9ejOrqahVTfPLJJyd6OYQQQgjpQiiMCTkItbW1WLhwoeqfdtppsNlsiV4SIYQQQroQCmNCDsIHH3ygQikkX/HEiRMTvRxCCCGEdDEUxoS0wZYtW1STjXZS4U6n0yV6SYQQQgjpYiiMCWmBpGV7//33VX/WrFnIzc1N9JIIIYQQ0g1QGBPSgkWLFqGurg6pqak44YQTEr0cQgghhHQTFMaExFFRUYEvv/xS9c8880xYLJZEL4kQQggh3QSFMSERZKPdm2++iVAohBEjRmD06NGJXhIhhBBCuhEKY0IifPbZZygrK1Np2c4991xuuCOEEEL6GRTGhADYs2cPvvjiC9UXUSzxxYT8f3t3Al3znf9//I2EEIQmxFqR2rcy1hCjqNgb0hbVKjMdM7YaxekUnZaeY7QzWp3Roe1Mj2EY0SI5xlaMvWJt7Oux1C5piJ1Yvv/z/vjf+0siiSA337s8H+d8T+793s+993O/+VZf95P39/MBAPgWgjF83q1bt0wJhWrYsKHUqVPH7i4BAAAbEIzh83RqtsuXL0upUqWkU6dOdncHAADYhGAMn7Zv3z7ZtWuXqSfu2bOnBAQE2N0lAABgE4IxfNaVK1dk8eLF5nZkZKRZ+hkAAPgugjF8kk7JFh8fLzdv3pTy5ctLmzZt7O4SAACwGcEYPmnr1q1y7Ngx8fPzk5iYGPMTAAD4NoIxfHJ1u1WrVpnbUVFRUqZMGbu7BAAA3ADBGD65up3+rFatmjRt2tTuLgEAADdBMIZPWbNmjXN1u+joaFa3AwAATgRj+IwTJ07IDz/8YG6/9NJLUqJECbu7BAAA3AjBGD6zul1cXJxzdbvatWvb3SUAAOBmCMbwCUuXLjWr25UuXVo6d+5sd3cAAIAbIhjD6+3du1d2797tXN2uSJEidncJAAC4IYIxvFpycrIsWrTI3G7durU8++yzdncJAAC4KYIxvJauajd37lxJS0szgZjV7QAAQE4IxvDaJZ91vuKLFy9KyZIlpVevXlKoUCG7uwUAANwYwRheO1/xkSNHzFLPffr0keLFi9vdJQAA4OYIxvA6+/btkw0bNjjnK65QoYLdXQIAAB6AYAyvoqvaxcfHm9sRERHSoEEDu7sEAAA8BMEYXuPGjRsSGxsrd+7ckfDwcHnxxRft7hIAAPAgBGN4hXv37sl3330nqampZhGPV155hYvtAADAYyEYwyusXLlSjh8/Lv7+/uZiu2LFitndJQAA4GEIxvB4u3btks2bN5vbPXr0kNDQULu7BAAAPBDBGB7tzJkzGVa2q1u3rt1dAgAAHopgDI917do1mTdvnqkvrl69urRt29buLgEAAA9GMIZHunv3rnz77bdy5coVCQ4OlpdfflkKFuR0BgAAT44kAY+0fPlyOXnypBQpUsRcbBcQEGB3lwAAgIcjGMPjbNq0SbZv325ux8TESJkyZezuEgAA8AIEY3iUxMREWbFihbndvn17qVmzpt1dAgAAXsKjgvGSJUukefPmUrRoUQkJCTGjhenpn9a7d+8ugYGB5vHhw4dLWlpahjZ79uyRNm3amNeoWLGifPTRR2JZVj5/EjyJAwcOOGeg0OWeIyMj7e4SAADwIn7iIRYsWCADBw6UP/3pT9KuXTsTZjXkOujMBF27djV/Vt+4caOkpKRI//79TbupU6eaNnqhVocOHczsBdu2bZPDhw/LgAEDTJAeNWqUjZ8Oj3Ls2DGZP3+++X02bNhQoqKipECBAnZ3CwAAeJEClgcMl+oMBGFhYTJhwgR56623smyzbNky6datm5w6dUoqVKhg9sXGxprgm5SUJCVLlpTp06fLmDFj5MKFC+aiLfXxxx+b4Hz69OlcBy0N2EFBQXL58mXzunD9XMUzZ840o/+1atWSV199leWeAQBAnuc1jyil+PHHH0040um4GjVqJOXLl5fOnTvLvn37nG0SEhKkXr16zlCsOnbsKLdv35YdO3Y422gZhSMUO9qcPXtWTpw4ke3762vowU2/IX/ol5rZs2ebUFy1alUzLRuhGAAAuEJBT/kzuho/fry8//77snjxYildurQJuRcvXjSPnT9//qGlgLVN4cKFzWPZtXHcd7TJyqRJk8w3DsdWuXLlPP+MeFhqaqr8+9//lps3b5ovPDotm7+/v93dAgAAXsrWYKxBV8sXctp0Wq779++b9uPGjTMjho0bN5YZM2aYx7/77jvn62VVCqGVIun3Z27jqCTJqYxCyy90GN6xabkGXL+q3axZs+Tq1aumbvyNN97IMNIPAADgVRffDRs2zIwC5kRrizUcqTp16jj3a0gKDw83M1GocuXKyZYtWzI899KlS3Lnzh3nqLC2yTwyrH+qV5lHktPT9yKU5R8dIdbyCf1rgI7Q9+vXT4oVK2Z3twAAgJezNRjrlGq6PYqOEGswPXTokHOKLg28WhdcpUoV5/RdEydOlHPnzpkaZKXz3erz9PmONmPHjjX1qlpi4Wijf6bXAA776e9m7ty55guMzhby5ptvcoEjAADIFx5RY6zBaNCgQfLhhx+aIKsBefDgweYxnaFA6fRdOqKso4u6CMT//vc/GT16tJnizRGs+vbta4KyzlSxd+9eiYuLM9O/jRw5kqm/3IBOuaelMY6lnrV8Ijg42O5uAQAAH+Ex8xj/5S9/ET8/PxN89U/tutDH6tWrzQV2Smcq0AVAhgwZIq1atTILeGgQnjx5svM19M/yK1eulKFDh0qTJk3MczUU6wZ7aR15fHy8HDlyxPye9XfnGPkHAADIDx4xj7G7YR7jvA/F+qVGp9XTKfm07rxGjRp2dwsAAPhYXvOYEWN4b/mEjhQ7VjHs2bMnoRgAANiCYAzb6AWUWlOsS3PrSLGG4vr169vdLQAA4KMIxrCFriaos0/ozCJaU9yrVy9GigEAgK0Ixsh3169flzlz5piluHXaPL3QjunyAACA3QjGyPdCeF3mOTk52cwcorOM6DzSAAAAdiMYI9/oSna6zHNqaqqUKFHCLN6hyz0DAAC4A4Ix8sWFCxfMSPG1a9fkmWeeMSPFjjmoAQAA3AHBGC53+vRpmT17tty6dUvKli1rQrGOGAMAALgTgjFc6tixY2b2CZ2arVKlSvL666+b2mIAAAB3QzCGyxw4cEDmz59vFvEIDw+X3r17S5EiRezuFgAAQJYIxshzusr41q1bZfny5eZ27dq15eWXXzbzFQMAALgrkgry1N27d2XJkiWSmJho7jds2FC6d+8uhQoVsrtrAAAAOSIYI89cvXpV5s2bZy62K1CggHTo0EEiIiLMbQAAAHdHMEaeOHPmjMTGxppwHBAQIK+88opUq1bN7m4BAADkGsEYT23Xrl2yaNEic5FdSEiIvPbaaxIcHGx3twAAAB4LwRhPTIPwqlWrJCEhwdyvUaOGxMTEmBFjAAAAT0MwxhO5efOmmYrt6NGj5n7r1q2lbdu2UrBgQbu7BgAA8EQIxnhsSUlJpp744sWL4u/vL9HR0VKvXj27uwUAAPBUCMZ4LIcOHZIFCxZIWlqaBAUFSZ8+faR8+fJ2dwsAAOCpEYyR63ri9evXy7p168z9KlWqSK9evSQwMNDurgEAAOQJgjEeKTk5WeLi4uTs2bPmftOmTaVTp04s2gEAALwKwRjZun//vlnaWWee0BXtdLaJLl26SIMGDezuGgAAQJ4jGCNLly9flvj4eDl+/Li5Hx4ebi6y07piAAAAb0QwRgaWZcnu3btl6dKlcvv2bfHz85OoqChTPsHSzgAAwJsRjOF0/fp1Wbx4sRw4cMDcr1ixovTs2dOsZgcAAODtCMZwTsOmyzprONZFOl544QVp1aoVF9gBAACfQTD2cbdu3ZLvv/9eEhMTzf0yZcqYZZ2ZmxgAAPgagrEPO3z4sKklTk1NNfdbtmxplnXW1ewAAAB8DcHYB2kQXr58uRw8eNDcL1WqlPTo0UPCwsLs7hoAAIBtCMY+ROciTkhIMKvX6W2dZaJFixamnrhIkSJ2dw8AAMBWBGMfcfToUVM2kZKS4lzSWRfrCA0NtbtrAAAAboFg7OWuXLliLq7bt2+fuR8YGGjmJdbV65iXGAAA4P8QjL3UvXv3ZMuWLbJ27VpJS0szIbhZs2ambKJo0aJ2dw8AAMDtEIy90IkTJ2TJkiWSnJxs7leqVEm6du3KFGwAAAA5IBh7kfPnz8v69etl//795n6xYsXkxRdflIYNG5pFOwAAAJA9grEXOH36tGzYsMGsXufQpEkTadeunQnHAAAAeDSCsYeXTGgg1hknHOrWrSutW7eWcuXK2do3AAAAT0Mw9jCWZZkgrCUTJ0+eNPv0wjqdZUIDcUhIiN1dBAAA8EgEYw8KxFoqoYH47NmzZl+hQoVM/XBkZKSULl3a7i4CAAB4NIKxm7t//765mE5LJi5cuGD2+fn5mRrili1bSsmSJe3uIgAAgFcgGLs5DcRr1qwxtwsXLmzmItZlnIsXL2531wAAALwKwdjNNWrUSLZt22ZGiDUUM8sEAACAaxSwtHgVj73MclBQkFy+fDlfShl0FTutJwYAAIDr8hqrPngAQjEAAIDrEYwBAAAAgjEAAADwAMEYAAAAIBgDAAAADxCMAQAAAIIxAAAA8ADBGAAAACAYAwAAAA8QjAEAAACCMQAAAOBhwfjw4cMSHR0tISEhZr3rVq1ayZo1azK0OXnypHTv3l0CAwNNu+HDh0taWlqGNnv27JE2bdpI0aJFpWLFivLRRx+JZVn5/GkAAADgbvzEQ3Tt2lVq1Kghq1evNqH2888/l27dusnRo0elXLlycu/ePdOmTJkysnHjRklJSZH+/fub0Dt16lTzGleuXJEOHTpI27ZtZdu2bSZsDxgwwATpUaNG2f0RAQAAYKMClgcMl/78888m8K5fv15at25t9l29etWMHK9atUrat28vy5YtM0H51KlTUqFCBdMmNjbWBN+kpCTTdvr06TJmzBi5cOGCFClSxLT5+OOPTXA+ffq0FChQIFf90YAdFBQkly9fNq8LAAAA9/Ikec0jSimCg4Oldu3aMmvWLLl+/brcvXtXvvrqKwkNDZXGjRubNgkJCVKvXj1nKFYdO3aU27dvy44dO5xttIzCEYodbc6ePSsnTpzI9v31NfTgpt8AAADgXTwiGOtI7sqVKyUxMVFKlCghAQEBMmXKFFm+fLmUKlXKtDl//rwJyumVLl1aChcubB7Lro3jvqNNViZNmmS+cTi2ypUru+BTAgAAwGeD8fjx403ozWnbvn27qRMeMmSIlC1bVjZs2CBbt241F+Jp6cS5c+ecr5dVKYQ+N/3+zG0clSQ5lVFo+YUOwzs2LdcAAACAd7H14rthw4ZJnz59cmwTFhZmLrhbvHixXLp0yVkjMm3aNDOKPHPmTHnvvffMBXhbtmzJ8Fxtf+fOHeeosLbJPDKs9ccq80hyelp6kb78AgAAAN7H1mCsU6rp9ig3btwwPwsWzDjArffv379vbkdERMjEiRPNCHL58uXNvhUrVphA66hD1jZjx441U7hpiYWjjdYlawDPLccoM7XGAAAA7smR0x5rngnLAyQnJ1vBwcFWTEyMtXPnTuvQoUPW6NGjLX9/f3Nf3b1716pXr57Vvn1768cff7RWrVplVapUyRo2bJjzdVJTU63Q0FDrtddes/bs2WMtXLjQKlmypDV58uTH6s+pU6f0CLOxsbGxsbGxsYl7b5rbcssjpmtTWms8btw481PLI+rWrSsffPCBdO7cOcMCH1qL7JjruG/fvjJ58uQMZRC6wMfQoUNNnbJenDdo0CDzOrmdqk3pKLXOZKEXAj7O89zpG5ReQKi10kw3l3847vbguOc/jrk9OO724Li773HXiKvT+2plQOaqg+x4TDBG3mEeZntw3O3Bcc9/HHN7cNztwXH3ruPuEdO1AQAAAK5GMAYAAAAIxr5Ja64//PBDpqDLZxx3e3Dc8x/H3B4cd3tw3L3ruFNjDAAAADBiDAAAADxAMAYAAAAIxgAAAMADBGMAAACAYOwbLl26JP369TMTYeumt1NTU3N8zoABA8yqfum3Fi1a5FufPdG0adOkatWqEhAQII0bN5YNGzbk2H7dunWmnbYPDw+XL7/8Mt/66qvHfe3atQ+d17odPHgwX/vs6davXy/du3c3q0np8YuPj3/kczjf8/+4c74/vUmTJknTpk3NSrdly5aVHj16yKFDhx75PM73/D/ueXW+E4x9gC6NvXPnTlm+fLnZ9LaG40fp1KmTnDt3zrktXbo0X/rriebNmycjRowwy5YnJiZK69atzXLlukx5Vo4fPy5dunQx7bT92LFjZfjw4bJgwYJ877svHXcH/Qc2/bldvXr1fOuzN7h+/bo8//zz8sUXX+SqPee7PcfdgfP9yWnAHTp0qGzevFlWrlwpd+/elaioKPO7yA7nuz3HPc/Od52uDd5r//79Oh2ftXnzZue+hIQEs+/gwYPZPq9///5WdHR0PvXS8zVr1swaNGhQhn21atWy3nvvvSzbv/vuu+bx9H73u99ZLVq0cGk/ff24r1mzxpz7ly5dyqceej89nnFxcTm24Xy357hzvue9pKQkc0zXrVuXbRvOd3uOe16d74wYe7mEhARTPtG8eXPnPi2J0H2bNm165J8l9E8YNWrUkIEDB0pSUlI+9NjzpKWlyY4dO8y32fT0fnbHWH8vmdt37NhRtm/fLnfu3HFpf335uDs0atRIypcvL+3bt5c1a9a4uKfgfLcX53veuXz5svn5zDPPZNuG892e455X5zvB2MudP3/ehNvMdJ8+lh39c/ScOXNk9erV8umnn8q2bdukXbt2cvv2bRf32PP8/PPPcu/ePQkNDc2wX+9nd4x1f1bt9c9F+npwzXHXfyy//vpr8yfNhQsXSs2aNc0/nlq7CdfhfLcH53ve0oH6kSNHSmRkpNSrVy/bdpzv9hz3vDrf/fKgz7DB+PHjZcKECTm20TCrtPg8qxMtq/0OvXv3dt7WE7FJkyZSpUoVWbJkicTExDxV371V5uP5qGOcVfus9iPvjrv+Q6mbQ0REhJw6dUomT54sv/zlL13eV1/G+Z7/ON/z1rBhw2T37t2ycePGR7blfM//455X5zvB2INPlD59+uTYJiwszJxMFy5ceOix5OTkh77R5kS/iWkwPnLkyBP115uFhIRIoUKFHhql1NKT7I5xuXLlsmzv5+cnwcHBLu2vLx/3rGhp0ezZs13QQzhwvrsPzvcn8/bbb8uiRYvM6GOlSpVybMv5bs9xz6vznWDswaFAt0fRb0xam7N161Zp1qyZ2bdlyxazr2XLlrl+v5SUFPPNSwMyMipcuLCZlkevnO3Zs6dzv96Pjo7O9vfy3//+N8O+FStWmJF5f39/l/fZV497VvSqcc5r1+J8dx+c749HR3o1nMXFxZnrbnRqyEfhfLfnuOfZ+f5Ul+7BI3Tq1Mlq0KCBmY1Ct/r161vdunXL0KZmzZrWwoULze2rV69ao0aNsjZt2mQdP37cXOkZERFhVaxY0bpy5YpNn8K9xcbGWv7+/tY333xjZgIZMWKEFRgYaJ04ccI8rrMk9OvXz9n+2LFjVrFixax33nnHtNfn6fPnz59v46fw/uM+ZcoUcyX/4cOHrb1795rH9Z/BBQsW2PgpPI/+G5GYmGg2PX6fffaZuf3TTz+Zxznf3eO4c74/vcGDB1tBQUHW2rVrrXPnzjm3GzduONtwvrvHcc+r851g7ANSUlKs119/3SpRooTZ9Hbm6Uz05JkxY4a5rSdeVFSUVaZMGfMf87PPPmumbzt58qRNn8Az/P3vf7eqVKliFS5c2PrFL36RYVoZPX5t2rTJ0F7/g2/UqJFpHxYWZk2fPt2GXvvWcf/kk0+s5557zgoICLBKly5tRUZGWkuWLLGp557LMS1S5k2Pt+J8d4/jzvn+9LI63un/f6k4393juOfV+V7g/3cAAAAA8GlM1wYAAAAQjAEAAIAHCMYAAAAAwRgAAAB4gGAMAAAAEIwBAACABwjGAAAAAMEYAAAAeIBgDAAu8sILL8iIESPEHaWkpEjZsmXlxIkTuX7OgAEDpEePHo/1PmFhYfL555/L0/jiiy/kpZdeeqrXAIDcIBgDgIc4d+6c9O3bV2rWrCkFCxbMNnQvWLBA6tSpI0WKFDE/4+LiHmozadIk6d69uwmu7m7gwIGybds22bhxo91dAeDlCMYA4CFu374tZcqUkXHjxsnzzz+fZZuEhATp3bu39OvXT3bt2mV+9urVS7Zs2eJsc/PmTfnmm2/kN7/5jXgCDfj6hWDq1Kl2dwWAlyMYA0A+uHTpkrz55ptSunRpKVasmHTu3FmOHDmSoc0//vEPqVy5snm8Z8+e8tlnn0mpUqWcj+vo7l//+lfzOkFBQVm+j5YtdOjQQcaMGSO1atUyP9u3b5+hnGHZsmXi5+cnERERzn337t2Tt956S6pWrSpFixY1o9L6Xo8qFRk2bJjZtJ/BwcHy/vvvi2VZGdrduHFDfv3rX0uJEiXk2Wefla+//jrD43/4wx+kRo0a5nOHh4fLH//4R7lz506GNlpKER8fb0I9ALgKwRgA8oHW527fvl0WLVpkRnU1PHbp0sUZAH/44QcZNGiQ/P73v5edO3eacDtx4sTHfh997aioqAz7OnbsKJs2bXLeX79+vTRp0iRDm/v370ulSpXk22+/lf3798sHH3wgY8eONfdzMnPmTBOydUT6b3/7m0yZMkX++c9/Zmjz6aefmvdLTEyUIUOGyODBg+XgwYPOxzUw/+tf/zLvq2FcvyDo66Snz9djtXXr1sc+JgCQW365bgkAeCI6MqyBWMNvy5Ytzb45c+aY0WEdBX311VdNmYCOIo8ePdo8riOoGmYXL178WO91/vx5CQ0NzbBP7+t+B73grkKFChna+Pv7y4QJE5z3deRY31+DsZZiZEc/g4bYAgUKmFHmPXv2mPtaF+ygXwA0EDtGh/XxtWvXmhFtpaPM6UfFR40aJfPmzZN3333XuT8wMNCMSmvf27Rp81jHBAByixFjAHCxAwcOmFHV5s2bO/dp2YEGSX1MHTp0SJo1a5bheZnv55aG1PR0dDr9Pi1HCAgIeOh5X375pRmZ1Trm4sWLm5HbkydP5vheLVq0yPDaWp6hXwS0NMOhQYMGGfpWrlw5SUpKcu6bP3++REZGmv36vlpKkdX7aomHlmUAgKsQjAHAxTLX3Kbf7wiVmcNrTs/LiYbL9KPDSkNo+lHkkJAQU/Ocno4Mv/POO6YWeMWKFaac41e/+pWkpaXJ09LR6PT0c2rphtq8ebP06dPHjJbr6LiWW+jFhVm978WLF01oBwBXIRgDgIvplGl3797NMDOEziN8+PBhqV27trmvZQWZ62e1Jvlx6YjtypUrM+zToOso4VCNGjUy9bzpbdiwwbTRkgd9vFq1anL06NFHvp8G28z3q1evLoUKFcpVf7W8pEqVKiYM62i1Pvenn356qJ325datW6ZvAOAqBGMAcDENe9HR0abuVufi1WnU3njjDalYsaLZr95++21ZunSpmYlCSxG++uorM3tE5lFkHcnV7dq1a5KcnGxupw+5evGeBuFPPvnEXOCmP1etWpVhzmO9GG/fvn0ZRo01CGsQ//77701g13IGnTv4UU6dOiUjR440pSBz5841tdLah9zS99WyidjYWBN+9QK+rOZd1uCuM1Y899xzuX5tAHhcBGMAyAczZsyQxo0bS7du3cyorpZJaBB2lBm0atXK1PhqMNY5ipcvX25KGzLXAuuIqW47duyQ//znP+a2XtzmoKO+GjL1/bS2V2d70AvZ0tc3169f34zOpp9xQmfEiImJMXMga1sd0XZcMJcTnTpOa5a1Hnro0KEm4P/2t7/N9XHRLwb6OXXKt4YNG5oL/jSUZ6ahO/0FfQDgCgWsJyliAwC4nAZBHfXV0dK8pqFcZ8DYu3evWUXvSeg8xhpmn3bJ50fRPupczDqSnd38zQCQF5iuDQDcxOTJk838xTo1mZZR6BzB06ZNc8l76SizlmycOXPGTLnmzs6ePSuzZs0iFANwOYIxALgJvfjuz3/+s1y9etXU02q9rSuXbX6cWmA7ZV6wBABchVIKAAAAgIvvAAAAgAcIxgAAAADBGAAAAHiAYAwAAAAQjAEAAIAHCMYAAAAAwRgAAAB4gGAMAAAAgcj/AyArscrfVRkNAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 800x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots(figsize=(8, 6))\n",
|
||
"ax.plot(np.log10(alphas_lasso), coefs_lasso)\n",
|
||
"ax.set_xlabel(\"log10(alpha)\")\n",
|
||
"ax.set_ylabel(\"Lasso coefficients\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"-------------------\n",
|
||
"\n",
|
||
"Now let us show that **Lasso will help us select the features**, i.e. some coefficients will be set to 0 when `alpha` increases. \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 8** : Compute the number `nb` of zeros among the **Lasso** coefficients for each `alpha`. (Hint in the next cell)\n",
|
||
"\n",
|
||
"Plot `nb` w.r.t. `log10(alphas)`.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 25,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.530858Z",
|
||
"start_time": "2025-03-26T10:33:54.527857Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"1.\n",
|
||
" [[0 1 1]\n",
|
||
" [0 1 1]\n",
|
||
" [0 1 0]]\n",
|
||
"2.\n",
|
||
" [[ True False False]\n",
|
||
" [ True False False]\n",
|
||
" [ True False True]]\n",
|
||
"3. Le nombre de 0 de chaque colonne est :\n",
|
||
" [3 0 1]\n",
|
||
"4. Le nombre de 0 de chaque ligne est : \n",
|
||
" [1 1 2]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"ind = np.array([[0, 1, 1], [0, 1, 1], [0, 1, 0]])\n",
|
||
"\n",
|
||
"print(\"1.\\n\", ind)\n",
|
||
"print(\"2.\\n\", ind == 0)\n",
|
||
"print(\"3. Le nombre de 0 de chaque colonne est :\\n \", (ind == 0).sum(axis=0))\n",
|
||
"print(\"4. Le nombre de 0 de chaque ligne est : \\n\", (ind == 0).sum(axis=1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 26,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.614964Z",
|
||
"start_time": "2025-03-26T10:33:54.561469Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAe50lEQVR4nO3dDZCV1X0/8N8VdhfWgQ1gfaEuK+n4EoNBK76WGEgoSpVoHFqt1lLTdrTxJbgZI1S0apNs7bSWTqgyZjqaNjVxGoWYmop0IqADpu4q6UsaCQkBJ0ppHMrKSxdc7n+ep//durILu8u9nN17P5+ZM7v3uefec/Zwdp8v53me+xSKxWIxAAASOSZVwwAAGWEEAEhKGAEAkhJGAICkhBEAIClhBABIShgBAJISRgCApEbGEHPgwIF48803Y8yYMVEoFFJ3BwDoh+wzVN95552YOHFiHHPMMcM7jGRBpLGxMXU3AIBBeOONN+Lkk08e3mEkWxHp+mHGjh2bujsAQD+0t7fniwld+/FhHUa6Ds1kQUQYAYDhZTCnWDiBFQBIShgBAJISRgCApIQRACApYQQASEoYAQCSEkYAgKSEEQAgKWEEABheYWTt2rUxd+7c/EY42aesrVix4qA6//Ef/xGf/OQno6GhIf9Y2AsvvDC2bt1aqj4DANUcRnbv3h1Tp06NpUuX9vr8j3/845g+fXqcccYZsXr16vj+978f99xzT4waNaoU/QUAKkyhmN3zd7AvLhRi+fLlcdVVV3Vvu/baa6Ompib+9m//dtA32slWVHbu3OneNABQQtkuf+/+zvz70TUjBnUfmXLsv0t6zsiBAwfi2WefjdNOOy0uvfTSOP744+OCCy7o9VBOl46OjvwHeG8BAEovCyJn3rsyL12hZCgoaRjZvn177Nq1K/7kT/4kLrvssnj++efjU5/6VFx99dWxZs2aXl/T0tKSJ6mukt1+GACoHiVfGclceeWVcccdd8TZZ58dCxcujCuuuCKWLVvW62sWLVqUL+l0lTfeeKOUXQIAhriRpXyz4447LkaOHBlnnnlmj+0f+tCH4qWXXur1NXV1dXkBAKpTSVdGamtr47zzzovXX3+9x/aNGzdGU1NTKZsCAKp1ZSQ7J2TTpk3djzdv3hwbNmyI8ePHx6RJk+LOO++Ma665Ji655JKYOXNmPPfcc/Htb387v8wXAOCIw0hra2seMro0NzfnX+fPnx+PP/54fsJqdn5IdmLq7bffHqeffno89dRT+WePAAAccRiZMWNGfp3yoXz605/OCwDA4bg3DQCQlDACACQljAAASQkjAEBSwggAkJQwAgAkJYwAAEkJIwBAUsIIAJCUMAIAJCWMAABJCSMAQFLCCACQlDACACQljAAASQkjAEBSwggAkJQwAgAkJYwAAEkJIwBAUsIIAJCUMAIAJCWMAABJCSMAQFLCCACQlDACACQljAAASQkjAEBSwggAkJQwAgAkJYwAAMMrjKxduzbmzp0bEydOjEKhECtWrOiz7k033ZTXWbJkyZH2EwCoUAMOI7t3746pU6fG0qVLD1kvCynf+9738tACANCXkTFAc+bMycuh/OxnP4tbb701Vq5cGZdffvlAmwAABqFYLMbe/Z19Pr9nX9/PDaswcjgHDhyIG264Ie6888748Ic/fNj6HR0deenS3t5e6i4BQFUEkXnL1kfblh0R1X4C64MPPhgjR46M22+/vV/1W1paoqGhobs0NjaWuksAUPH27u/sdxCZ1jQuRteMiIpcGWlra4u//Mu/jFdffTU/cbU/Fi1aFM3NzT1WRgQSABi81sWzor6277CRBZH+7qeHXRh58cUXY/v27TFp0qTubZ2dnfG5z30uv6Lmpz/96UGvqaurywsAUBpZEKmvLfmZGGVT0p5m54rMmjWrx7ZLL700337jjTeWsikAoEIMOIzs2rUrNm3a1P148+bNsWHDhhg/fny+IjJhwoQe9WtqauLEE0+M008/vTQ9BgCqO4y0trbGzJkzux93ne8xf/78ePzxx0vbOwCg4g04jMyYMSO/fKi/ejtPBACgi3vTAABJCSMAQFLCCACQlDACACQljAAASQkjAEBSwggAkJQwAgAkJYwAAEkJIwBAUsIIAJCUMAIADK8b5QEA/ZPdWHbv/s6j0taefUennXIQRgCgTEFk3rL10bZlR+quDHkO0wBAGWQrIimCyLSmcTG6ZkQMJ1ZGAKDMWhfPivraoxMQRteMiEKhEMOJMAIAZZYFkfpau9y+OEwDACQljAAASQkjAEBSwggAkJQwAgAkJYwAAEkJIwBAUsIIAJCUMAIAJCWMAABJCSMAQFLCCACQlDACACQljAAAwyuMrF27NubOnRsTJ06MQqEQK1as6H5u//79cdddd8VZ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6e0fqLftXa655pru77N/wGnTpkVTU1M8++yzcfXVV0eleP8YHG5ceqvf2/ZKNJCxyn6Rs9Lloosuym/V/Wd/9mdxySWXlL2vw001z6uBMK/+16233hr/8i//Ei+99NJh61b73Lq1n2NVirlVlWEkG+Brr732kHVOOeWU/B/hP//zPw967r/+678OSsyHkqXGLIz86Ec/ikpw3HHHxYgRIw76n312KKqvcTnxxBN7rT9y5MiYMGFCVKrBjFVvssODX/va18rQw+GtWudVqVTbvLrtttvimWeeyf/HfvLJJx+ybrXPrdsGMFalmFtVGUayHURWDidLd9nxsn/+53+O888/P9/2ve99L9928cUX97u9t99+O0+JWSipBLW1tfnlbtmZ1p/61Ke6t2ePr7zyyj7H8tvf/naPbc8//3y+alRTUxOVajBj1ZvsbP5KmT+lVK3zqlSqZV5lKxrZznX58uX5+XzZZfaHU61zqziIsSrJ3Br0qa9V4rLLLit+5CMfya+iycpZZ51VvOKKK3rUOf3004tPP/10/v0777xT/NznPldct25dcfPmzflZxhdddFHxF3/xF4vt7e3FSvGNb3yjWFNTU/zrv/7r/KqjBQsWFI899tjiT3/60/z57EqRG264obv+T37yk2J9fX3xjjvuyOtnr8te/81vfrNY6QY6Vn/xF3+RXxmxcePG4r/927/lz2e/qk899VSx0mW/P6+99lpesp/5oYceyr/fsmVL/rx5NfixquZ59Qd/8AfFhoaG4urVq4tvvfVWd9mzZ093HXNr8GNVirkljBzG22+/Xbz++uuLY8aMyUv2/fsvX8oG/bHHHsu/z/7BZs+eXfyFX/iFfOJOmjQpv9R369atxUrzV3/1V8WmpqZibW1t8Zd/+Zd7XPqV/cwf+9jHetTPJvc555yT1z/llFOKjzzySLFaDGSsHnzwweIv/dIvFUeNGlUcN25ccfr06cVnn322WA26LhF8f8nGKGNeDX6sqnle9TZO7/27nTG3Bj9WpZhbhf/fOABAEi7tBQCSEkYAgKSEEQAgKWEEAEhKGAEAkhJGAICkhBEAIClhBABIShgBAJISRgCApIQRACApYQQAiJT+H3FIfHQBLrjJAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"nb_lasso = np.array(coefs_lasso == 0).sum(axis=1)\n",
|
||
"plt.step(np.log10(alphas_lasso), nb_lasso)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 9** : Compute the number `nb` of 0 among the **Ridge** coefficients for each `alpha`. \n",
|
||
"\n",
|
||
"Plot `nb` w.r.t. `log10(alphas)`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 27,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.687251Z",
|
||
"start_time": "2025-03-26T10:33:54.639809Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAGdCAYAAAAfTAk2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAbr0lEQVR4nO3de4wV5f348c/KVSugQgWpCGiNYKypoiJUiqbKxSuWVtRKo1EqsYpAjIjYnwQbidaqoQgopa223tJQlT/QgmmltqAIBbQUaWpRCYgIVaBqQHC/eSbZ/e2yy005HPbh9Uomu2fOzNk5I+5588yFisrKysoAAMjIQeXeAACAvU3gAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkJ3GcQD6/PPPY/Xq1dGiRYuoqKgo9+YAALsh3Zt406ZN0b59+zjooJ2P0RyQgZPipkOHDuXeDADgC1i5cmUcffTRO13mgAycNHJTtYNatmxZ7s0BAHbDxo0biwGKqs/xnTkgA6fqsFSKG4EDAA3L7pxe4iRjACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsrNPAmfSpEnRuXPnaN68eXTr1i1efvnlnS4/Z86cYrm0/LHHHhtTpkzZ4bJPPfVUVFRUxIABA0qw5QBAQ1TywHn66adj+PDhMWbMmFi0aFH06tUr+vfvH++++269y69YsSLOP//8Yrm0/O233x7Dhg2L6dOn11n2nXfeiVtuuaVYFgCgSkVlZWVllFD37t3j1FNPjcmTJ1fP69q1azHiMn78+DrLjxo1KmbMmBHLli2rnjd06NBYsmRJzJs3r3retm3bonfv3nHNNdcUI0IfffRRPPvss7u1TRs3boxWrVrFhg0bomXLll/6PQIApbcnn98lHcHZsmVLLFy4MPr06VNrfno8d+7cetdJEbP98n379o0FCxbEZ599Vj1v3Lhx8dWvfjWuvfbaXW7H5s2bi51ScwIA8lXSwFm3bl0x0tK2bdta89PjNWvW1LtOml/f8lu3bi1eL/nb3/4W06ZNi6lTp+7WdqSRolR8VVOHDh2+8HsCAPZ/++Qk43QScE3pqNj283a1fNX8TZs2xVVXXVXETZs2bXbr548ePboYzqqaVq5c+YXeBwDQMDQu5YunAGnUqFGd0Zq1a9fWGaWp0q5du3qXb9y4cbRu3TqWLl0ab7/9dlx00UXVz3/++efF17TM8uXL47jjjqu1frNmzYoJADgwlHQEp2nTpsXl3rNnz641Pz3u2bNnvev06NGjzvKzZs2K0047LZo0aRJdunSJN954IxYvXlw9XXzxxXHOOecU3zv8BACUdAQnGTlyZAwePLgIlBQvjzzySHGJeLoyqurw0apVq+Kxxx4rHqf5EydOLNYbMmRIcdJxOt/mySefLJ5P98Y56aSTav2Mww47rPi6/XwA4MBU8sAZNGhQrF+/vrjq6b333isiZObMmdGxY8fi+TSv5j1x0g0B0/MjRoyIhx56KNq3bx8TJkyIgQMHlnpTAYBMlPw+OPsj98EBgIZnv7kPDgBAOQgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACA7AgcAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsrNPAmfSpEnRuXPnaN68eXTr1i1efvnlnS4/Z86cYrm0/LHHHhtTpkyp9fzUqVOjV69ecfjhhxfTueeeG/Pnzy/xuwAAGoqSB87TTz8dw4cPjzFjxsSiRYuKMOnfv3+8++679S6/YsWKOP/884vl0vK33357DBs2LKZPn169zEsvvRRXXHFF/PnPf4558+bFMcccE3369IlVq1aV+u0AAA1ARWVlZWUpf0D37t3j1FNPjcmTJ1fP69q1awwYMCDGjx9fZ/lRo0bFjBkzYtmyZdXzhg4dGkuWLClipj7btm0rRnImTpwYP/zhD3e5TRs3boxWrVrFhg0bomXLll/4vQEA+86efH6XdARny5YtsXDhwmJ0pab0eO7cufWukyJm++X79u0bCxYsiM8++6zedT755JPiuSOOOKLe5zdv3lzslJoTAJCvkgbOunXritGVtm3b1pqfHq9Zs6beddL8+pbfunVr8Xr1ue222+JrX/tacS5OfdJIUSq+qqlDhw5f+D0BAPu/fXKScUVFRa3H6ajY9vN2tXx985N77703nnzyyfjDH/5QnJRcn9GjRxfDWVXTypUrv+A7AQAagsalfPE2bdpEo0aN6ozWrF27ts4oTZV27drVu3zjxo2jdevWtebfd999cffdd8eLL74YJ5988g63o1mzZsUEABwYSjqC07Rp0+Jy79mzZ9eanx737Nmz3nV69OhRZ/lZs2bFaaedFk2aNKme97Of/SzuuuuueOGFF4rnAAD22SGqkSNHxi9/+cv41a9+VVwZNWLEiOIS8XRlVNXho5pXPqX577zzTrFeWj6tN23atLjllltqHZa64447iuc6depUjPik6X//+1+p3w4AcKAfokoGDRoU69evj3HjxsV7770XJ510UsycOTM6duxYPJ/m1bwnTrohYHo+hdBDDz0U7du3jwkTJsTAgQNr3TgwXaH1ve99r9bPuvPOO2Ps2LGlfksAwIF+H5z9kfvgAEDDs9/cBwcAoBwEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANnZJ4EzadKk6Ny5czRv3jy6desWL7/88k6XnzNnTrFcWv7YY4+NKVOm1Flm+vTpceKJJ0azZs2Kr88880wJ3wEA0JCUPHCefvrpGD58eIwZMyYWLVoUvXr1iv79+8e7775b7/IrVqyI888/v1guLX/77bfHsGHDiqCpMm/evBg0aFAMHjw4lixZUny97LLL4tVXXy312wEAGoCKysrKylL+gO7du8epp54akydPrp7XtWvXGDBgQIwfP77O8qNGjYoZM2bEsmXLqucNHTq0CJkUNkmKm40bN8bzzz9fvUy/fv3i8MMPjyeffHKX25TWbdWqVWzYsCFatmwZe0valZ9+tm2vvR4ANGQHN2kUFRUVe+319uTzu3GU0JYtW2LhwoVx22231Zrfp0+fmDt3br3rpIhJz9fUt2/fmDZtWnz22WfRpEmTYpkRI0bUWebBBx+s9zU3b95cTDV3UCmkuDnx//2xJK8NAA3NP8f1jUOaljQ1ynOIat26dbFt27Zo27Ztrfnp8Zo1a+pdJ82vb/mtW7cWr7ezZXb0mmmkKBVf1dShQ4cv+c4AgP3ZPsmq7Yen0qGcnQ1Z1bf89vP35DVHjx4dI0eOrDWCU4rISUNxqVYBgCg+F7MMnDZt2kSjRo3qjKysXbu2zghMlXbt2tW7fOPGjaN169Y7XWZHr5mutEpTqaXAKtdQHACwjw5RNW3atLjce/bs2bXmp8c9e/asd50ePXrUWX7WrFlx2mmnFeff7GyZHb0mAHBgKflwQzo0lC7jToGSwuSRRx4pLhFPV0ZVHT5atWpVPPbYY8XjNH/ixInFekOGDClOKE4nGNe8Ourmm2+Ob3/723HPPffEJZdcEs8991y8+OKL8de//rXUbwcAaABKHjjpku7169fHuHHj4r333ouTTjopZs6cGR07diyeT/Nq3hMn3RAwPZ+uknrooYeiffv2MWHChBg4cGD1Mmmk5qmnnoo77rgjfvKTn8Rxxx1X3G8nXZIOAFDy++Dsj0p1HxwAYP/4/PZvUQEA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZKekgfPhhx/G4MGDo1WrVsWUvv/oo492uk5lZWWMHTs22rdvHwcffHCcffbZsXTp0urn//vf/8ZNN90UJ5xwQhxyyCFxzDHHxLBhw2LDhg2lfCsAQANS0sC58sorY/HixfHCCy8UU/o+Rc7O3HvvvXH//ffHxIkT47XXXot27drFeeedF5s2bSqeX716dTHdd9998cYbb8RvfvOb4rWvvfbaUr4VAKABqahMQyYlsGzZsjjxxBPjlVdeie7duxfz0vc9evSIN998sxiB2V7alDRyM3z48Bg1alQxb/PmzdG2bdu455574vrrr6/3Z/3+97+Pq666Kj7++ONo3LjxLrdt48aNxYhSGvVp2bLll36vAEDp7cnnd8lGcObNm1dsRFXcJGeeeWYxb+7cufWus2LFilizZk306dOnel6zZs2id+/eO1wnqXqjuxM3AED+SlYEKVSOPPLIOvPTvPTcjtZJ0ohNTenxO++8U+8669evj7vuumuHoztVo0BpqlmAAEC+9ngEJ50AXFFRsdNpwYIFxbLp+/oOQ9U3v6btn9/ROilULrjgguJQ2J133rnD1xs/fnz1ic5p6tChwx68YwAg+xGcG2+8MS6//PKdLtOpU6d4/fXX4/3336/z3AcffFBnhKZKOqG4aiTnqKOOqp6/du3aOuukk4779esXhx56aDzzzDPRpEmTHW7P6NGjY+TIkbXCSOQAQL72OHDatGlTTLuSTiZO58bMnz8/zjjjjGLeq6++Wszr2bNnvet07ty5iJzZs2fHKaecUszbsmVLzJkzpzjJuGag9O3btzg/Z8aMGdG8efOdbktaLk0AwIGhZCcZd+3atRhhGTJkSHH1VJrS9xdeeGGtK6i6dOlSjMAk6TBUuoLq7rvvLub94x//iKuvvrq430265Lxq5CadhJyumJo2bVoRO2nEJ03btm0r1dsBABqQkl529Pjjjxc34au6Kuriiy8u7m9T0/Lly2vdpO/WW2+NTz/9NG644YbiRoHpKqxZs2ZFixYtiucXLlxYjAQlX//61+tchZUOjwEAB7aS3Qdnf+Y+OADQ8OwX98EBACgXgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkJ2SBs6HH34YgwcPjlatWhVT+v6jjz7a6TqVlZUxduzYaN++fRx88MFx9tlnx9KlS3e4bP/+/aOioiKeffbZEr0LAKChKWngXHnllbF48eJ44YUXiil9nyJnZ+699964//77Y+LEifHaa69Fu3bt4rzzzotNmzbVWfbBBx8s4gYAoKbGUSLLli0rouaVV16J7t27F/OmTp0aPXr0iOXLl8cJJ5xQ74hMipYxY8bEd7/73WLeo48+Gm3bto0nnngirr/++upllyxZUoRQiqCjjjqqVG8DAGiASjaCM2/evOKwVFXcJGeeeWYxb+7cufWus2LFilizZk306dOnel6zZs2id+/etdb55JNP4oorrihGedIIz65s3rw5Nm7cWGsCAPJVssBJoXLkkUfWmZ/mped2tE6SRmxqSo9rrjNixIjo2bNnXHLJJbu1LePHj68+DyhNHTp02MN3AwBkHTjpBOB03svOpgULFhTL1nd+TDoMtavzZrZ/vuY6M2bMiD/96U/FoazdNXr06NiwYUP1tHLlyt1eFwA4AM7BufHGG+Pyyy/f6TKdOnWK119/Pd5///06z33wwQd1RmiqVB1uSqM1Nc+rWbt2bfU6KW7eeuutOOyww2qtO3DgwOjVq1e89NJLdV43HeZKEwBwYNjjwGnTpk0x7Uo6mTiNlsyfPz/OOOOMYt6rr75azEuHl+rTuXPnInJmz54dp5xySjFvy5YtMWfOnLjnnnuKx7fddltcd911tdb7xje+EQ888EBcdNFFe/p2AIAMlewqqq5du0a/fv1iyJAh8fDDDxfzfvSjH8WFF15Y6wqqLl26FOfIXHrppcVhqOHDh8fdd98dxx9/fDGl7w855JDikvMkBVB9JxYfc8wxRSABAJQscJLHH388hg0bVn1V1MUXX1xc+VRTumQ8jepUufXWW+PTTz+NG264obhRYLoKa9asWdGiRYtSbioAkJGKynQG7wEmXSaerqZKYdWyZctybw4AsJc/v/1bVABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQHYEDAGRH4AAA2RE4AEB2BA4AkB2BAwBkR+AAANkROABAdgQOAJAdgQMAZEfgAADZETgAQHYEDgCQncZxAKqsrCy+bty4sdybAgDspqrP7arP8Z05IANn06ZNxdcOHTqUe1MAgC/wOd6qVaudLlNRuTsZlJnPP/88Vq9eHS1atIiKioq9XpcpnFauXBktW7bcq6/N/2c/7xv2875hP+879nXD3s8pWVLctG/fPg46aOdn2RyQIzhppxx99NEl/RnpP6j/eUrPft437Od9w37ed+zrhrufdzVyU8VJxgBAdgQOAJAdgbOXNWvWLO68887iK6VjP+8b9vO+YT/vO/b1gbOfD8iTjAGAvBnBAQCyI3AAgOwIHAAgOwIHAMiOwNkHNm/eHN/85jeLuyYvXry43JuTlbfffjuuvfba6Ny5cxx88MFx3HHHFWfub9mypdybloVJkyYV+7Z58+bRrVu3ePnll8u9SVkZP358nH766cVd1Y888sgYMGBALF++vNybdUDs9/T7ePjw4eXelOysWrUqrrrqqmjdunUccsghxWffwoULy7ItAmcfuPXWW4vbSrP3vfnmm8U/vfHwww/H0qVL44EHHogpU6bE7bffXu5Na/Cefvrp4gNgzJgxsWjRoujVq1f0798/3n333XJvWjbmzJkTP/7xj+OVV16J2bNnx9atW6NPnz7x8ccfl3vTsvXaa6/FI488EieffHK5NyU7H374YXzrW9+KJk2axPPPPx///Oc/4+c//3kcdthh5dmgdJk4pTNz5szKLl26VC5dujRdjl+5aNGicm9S9u69997Kzp07l3szGrwzzjijcujQobXmpT/Lt912W9m2KXdr164tfk/MmTOn3JuSpU2bNlUef/zxlbNnz67s3bt35c0331zuTcrKqFGjKs8666zK/YURnBJ6//33Y8iQIfHb3/62GKpj39iwYUMcccQR5d6MBi0d4kvDymk0oab0eO7cuWXbrgPhz27iz29ppNGyCy64IM4999xyb0qWZsyYEaeddlp8//vfLw65nnLKKTF16tSybY/AKZF0/8Srr746hg4dWvwHZ99466234he/+EWx3/ni1q1bF9u2bYu2bdvWmp8er1mzpmzblfvvjJEjR8ZZZ50VJ510Urk3JztPPfVU/P3vfy/Ov6E0/vOf/8TkyZPj+OOPjz/+8Y/F7+Fhw4bFY489FuUgcPbQ2LFji5PTdjYtWLCg+JBN/1z86NGjy73JWe/nmlavXh39+vUr/vZw3XXXlW3bc5L28/YfwtvPY++48cYb4/XXX48nn3yy3JuSnZUrV8bNN98cv/vd74oT5imNdD7kqaeeGnfffXcxenP99dcXRzFS9JRD47L81Ab+S+jyyy/f6TKdOnWKn/70p8WJg9v/OxxpNOcHP/hBPProoyXe0gNjP9eMm3POOSd69OhRnEDIl9OmTZto1KhRndGatWvX1hnV4cu76aabiuH9v/zlL3H00UeXe3Oykw63pj+76UrAKmmEMu3viRMnFle6pj/vfDlHHXVUnHjiibXmde3aNaZPnx7lIHC+wC/+NO3KhAkTisip+QHct2/f4sqU7t27l3grD5z9XHVZYoqb9Mvr17/+dRx0kIHJL6tp06bF/kxX9lx66aXV89PjSy65pKzblpM0Ipbi5plnnomXXnqpuCSfve873/lOvPHGG7XmXXPNNdGlS5cYNWqUuNlL0hVU29/m4F//+ld07NgxykHglMgxxxxT6/Ghhx5afE33afE3tL0nhePZZ59d7O/77rsvPvjgg+rn2rVrV9Zta+jS+SCDBw8uRh2rRsbSJeLOb9q7J70+8cQT8dxzzxX3wqkaMWvVqlVxXyf2jrRvtz+v6Stf+UpxrxbnO+09I0aMiJ49exaHqC677LKYP39+8XujXKPqAocGbdasWfHvf/+7mLYPx/S3Y764QYMGxfr162PcuHHx3nvvFR8EM2fOLNvfxnJUdW5CivSa0khkukgBGpLTTz+9GI1M556m3xtpRPLBBx8sTssoh4p0rXhZfjIAQIk4WQEAyI7AAQCyI3AAgOwIHAAgOwIHAMiOwAEAsiNwAIDsCBwAIDsCBwDIjsABALIjcACA7AgcACBy838gH4EjoXCcPgAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"nb_ridge = np.array(coefs_ridge == 0).sum(axis=1)\n",
|
||
"plt.plot(np.log10(alphas), nb_ridge)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"source": [
|
||
"----------------\n",
|
||
"\n",
|
||
"\n",
|
||
"## 2. Cross Validation for the Lasso and Ridge hyperparameter $\\alpha$ <a class=\"anchor\" id=\"chapter2\"></a>"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"In the next exercises, we will select an optimal `alpha` among the values in `alpha_s` by cross-validation.\n",
|
||
"\n",
|
||
"We will use `sklearn.linear_model.RidgeCV` and `sklearn.linear_model.LassoCV`.\n",
|
||
"\n",
|
||
"Reference :\n",
|
||
"\n",
|
||
"1. `sklearn.linear_model.RidgeCV` : https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeCV.html\n",
|
||
"\n",
|
||
"2. `sklearn.linear_model.LassoCV` : https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 28,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.710558Z",
|
||
"start_time": "2025-03-26T10:33:54.707998Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"alphas = np.logspace(-4, 6, 50)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 10** : (1) Create a model for `RidgeCV`, call it `ridgeCV`, with parameters `alphas=alpha_s` and `store_cv_values=True`. Fit `ridgeCV` on `(XtrainScaled,Ytrain)`. \n",
|
||
"\n",
|
||
"Remark : to be completely rigorous, we should have created a pipeline containing the scaler to avoid what we call \"data leakage\" in the CV calculation. We will ignore this detail here to simplify. \n",
|
||
"\n",
|
||
"(2) We have 50 different values for `alpha`. For each `alpha`, how many `score`s do we get for the cross-validation ? Read the info concerning the parameter `cv_values_` of `RidgeCV` in https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RidgeCV.html \n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.738765Z",
|
||
"start_time": "2025-03-26T10:33:54.732482Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[1.00000000e-04 1.59985872e-04 2.55954792e-04 4.09491506e-04\n",
|
||
" 6.55128557e-04 1.04811313e-03 1.67683294e-03 2.68269580e-03\n",
|
||
" 4.29193426e-03 6.86648845e-03 1.09854114e-02 1.75751062e-02\n",
|
||
" 2.81176870e-02 4.49843267e-02 7.19685673e-02 1.15139540e-01\n",
|
||
" 1.84206997e-01 2.94705170e-01 4.71486636e-01 7.54312006e-01\n",
|
||
" 1.20679264e+00 1.93069773e+00 3.08884360e+00 4.94171336e+00\n",
|
||
" 7.90604321e+00 1.26485522e+01 2.02358965e+01 3.23745754e+01\n",
|
||
" 5.17947468e+01 8.28642773e+01 1.32571137e+02 2.12095089e+02\n",
|
||
" 3.39322177e+02 5.42867544e+02 8.68511374e+02 1.38949549e+03\n",
|
||
" 2.22299648e+03 3.55648031e+03 5.68986603e+03 9.10298178e+03\n",
|
||
" 1.45634848e+04 2.32995181e+04 3.72759372e+04 5.96362332e+04\n",
|
||
" 9.54095476e+04 1.52641797e+05 2.44205309e+05 3.90693994e+05\n",
|
||
" 6.25055193e+05 1.00000000e+06]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import RidgeCV\n",
|
||
"\n",
|
||
"ridgeCV = RidgeCV(alphas=alphas, store_cv_values=True)\n",
|
||
"ridgeCV.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"print(ridgeCV.alphas)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 11** : For each alpha, give the mean of the scores, and call it `alpha_score`."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.765343Z",
|
||
"start_time": "2025-03-26T10:33:54.762563Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"1\n",
|
||
" (2, 3)\n",
|
||
"2\n",
|
||
" [2.5 3.5 4.5]\n",
|
||
"3\n",
|
||
" [2. 5.]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"ind2 = np.array([[1, 2, 3], [4, 5, 6]])\n",
|
||
"\n",
|
||
"print(\"1\\n\", ind2.shape)\n",
|
||
"print(\"2\\n\", ind2.mean(axis=0))\n",
|
||
"print(\"3\\n\", ind2.mean(axis=1))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 31,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.804392Z",
|
||
"start_time": "2025-03-26T10:33:54.799816Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"(50,)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"alpha_score = np.array(ridgeCV.cv_values_).mean(axis=0)\n",
|
||
"print(alpha_score.shape)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Exercise 12** : Plot `alpha_score` w.r.t. `log10(alpha_s)`. Which `alpha` are we going to choose ? Display the coefficients for the chosen `alpha`.\n",
|
||
"\n",
|
||
"Hint : read the attributes `alpha_` and `coef_` of ridgecv."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 32,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.888467Z",
|
||
"start_time": "2025-03-26T10:33:54.839691Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.plot(np.log10(alphas), alpha_score)\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 33,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:54.917915Z",
|
||
"start_time": "2025-03-26T10:33:54.915253Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"best alpha for ridge : 132.57113655901108\n",
|
||
"ridge coef for the best alpha : [18.60099315 44.83916896 19.65511565 31.2895848 19.53291699 23.82494567\n",
|
||
" 17.58025351 24.95507189 34.79628953 25.54796552 36.50612186 32.17517034\n",
|
||
" 17.53213942 56.00516056 0.58648412 -8.49246715]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(\"best alpha for ridge : \", ridgeCV.alpha_)\n",
|
||
"print(\"ridge coef for the best alpha : \", ridgeCV.coef_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"We will do the same for **Lasso** using `LassoCV`. \n",
|
||
"\n",
|
||
"**Remark** : By default, `LassoCV` uses 5-fold cross-validation, which is different from *Leave-One-Out Cross-Validation* used in `RidgeCV`. \n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:55.011780Z",
|
||
"start_time": "2025-03-26T10:33:54.966551Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(50, 5)"
|
||
]
|
||
},
|
||
"execution_count": 34,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import LassoCV\n",
|
||
"\n",
|
||
"lassoCV = LassoCV(n_alphas=50)\n",
|
||
"lassoCV.fit(XtrainScaled, Ytrain)\n",
|
||
"lassoCV.mse_path_.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Il y a **50** alphas et **5** K"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\"5\" corresponds to the 5-folds and \"50\" corresponds to the 50 values of alpha. Here we let LassoCV choose those 50 values. \n",
|
||
"\n",
|
||
"Pay attention to the fact that, again, the rows and the columns are reversed compared to RidgeCV output : that is why we use the parameter \"axis=1\" in the next cell. \n",
|
||
"\n",
|
||
"NB : the default value for cv is 5 here (using leave-one-out for Lasso would be too costly (no fast formula, contrary to Ridge)). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 35,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:55.023571Z",
|
||
"start_time": "2025-03-26T10:33:55.020025Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(50,)"
|
||
]
|
||
},
|
||
"execution_count": 35,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"alpha_score = lassoCV.mse_path_.mean(axis=1)\n",
|
||
"alpha_score.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:55.115836Z",
|
||
"start_time": "2025-03-26T10:33:55.049527Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[<matplotlib.lines.Line2D at 0x30a361f70>]"
|
||
]
|
||
},
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"alphas = lassoCV.alphas_\n",
|
||
"plt.plot(np.log10(alphas), alpha_score)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 37,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:55.145416Z",
|
||
"start_time": "2025-03-26T10:33:55.142140Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"best alpha for lasso : 4.783179587705159\n",
|
||
"lasso coef for the best alpha : [-99.92030224 202.5757594 25.01239288 0. -0.\n",
|
||
" 32.47945631 0. -0. 0. 27.91148338\n",
|
||
" 150.0851833 27.07622842 -0. 86.82862045 0.\n",
|
||
" -8.03825832]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(\"best alpha for lasso : \", lassoCV.alpha_)\n",
|
||
"print(\"lasso coef for the best alpha : \", lassoCV.coef_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## OPTIONAL : Comparing estimators"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Remark about the standardization : the standardization needs to be done in three steps : \n",
|
||
"- first we use `fit` on the train set, which means the standardizer computes the mean and the std for each feature in your train set.\n",
|
||
"- Then you transform the data : it means, for each column, you remove the mean computed before (i.e. the means computed on the **train** set) and divide by the std computed before (i.e. the std computed on the **train** set).\n",
|
||
"- But pay attention to the fact that you must transform the train set **and** the test set. But the fit has to be done on the train set only !\n",
|
||
"\n",
|
||
"Previously, we used the shorter syntax `fit_transform` that allows you to do the `transform` calculation and then to `fit`. We could do that because we only used the train set. But for the test set, we must only use `transform`. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:33:55.172132Z",
|
||
"start_time": "2025-03-26T10:33:55.168656Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"XtestScaled = scaler.transform(Xtest)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Prediction of Salary on the test set using the OLS estimator**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:39:51.250274Z",
|
||
"start_time": "2025-03-26T10:39:51.153010Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(-47.125, 2529.625, -84.28768799283341, 2492.4623120071665)"
|
||
]
|
||
},
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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VdTl9HDxd5Q4dfv375eePXuqCyzj9RtuuEHmzZsn+/btkw4dOqhp8Brec9CgQYZ9fyIj8eLgRDYycOBAmTNnjgrOu+66S11qCjdU706YMEH+/ve/y/bt29W0JUuWVP9jWgTjrFmzpHLlyurvu3XrJhs3bpQ6derIsGHDVOBmZGSoMN2yZYv6W4T3V199pT4H75mUlCTFihUzeAkQGYNhSmQzH3zwgTRs2FCWLVsmX375pVSsWFE9j3ZTlB71C07D7t275bPPPpNDhw6pIAWUbOfPn6+qjV955RU5cOCACkxcAB6uu+46x98nJyer//EZoW6PJbIShimRzSDYHnnkEZk7d67ceeedPqf96aefVHVw3bp1r7nge7ly5dT9J554Qh577DH58ccfVScnBOuNN94Y1u9AZDUMUyIbKlKkiLoVJD8/X+Li4iQrK0v970yvBn744YdVL+Hvv/9eBer48ePljTfekBEjRoRt/omshh2QiKJEQkKC5OXluTzXtGlT9dyxY8ekdu3aLjfn6mC0jw4dOlRmz54to0ePlsmTJzveE9zflyjaMEyJogR69J47d04WLVokJ06ckAsXLqjq3f79+8uDDz6oghK9gNeuXSuvvfaa6rELI0eOlB9++EG9hmrhxYsXS4MGDdRraWlpqh32u+++k+PHj6v3J4pGDFOiKNG6dWtVuuzbt69UqFBBXn/9dfU8OhohTFHirFevnvTq1Uudr4rSqF7qRI9eBCh6+WIaDAQBOJ3mxRdflGeffVZSUlJk+PDhhn5HIqPEaOh9QERERIXGkikREVGQGKZERERBYpgSEREFiWFKREQUJIYpERFRkBimREREQWKYEhERBYlhSkREFCSGKRERUZAYpkREREFimBIREQWJYUpERCTB+X+T/2IhjYDIlQAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"\n",
|
||
"linReg = LinearRegression()\n",
|
||
"linReg.fit(\n",
|
||
" Xtrain, Ytrain\n",
|
||
") # no need to scale for OLS if you just want to predict (unless the solver works best with scaled data)\n",
|
||
"# the predictions should not be different with or without standardization (could differ only owing to numerical problems)\n",
|
||
"hatY_LinReg = linReg.predict(Xtest)\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.scatter(Ytest, hatY_LinReg, s=5)\n",
|
||
"ax.plot([0, 1], [0, 1], transform=ax.transAxes, ls=\"--\", c=\"gray\")\n",
|
||
"ax.set_xlabel(\"Ytest\")\n",
|
||
"ax.set_ylabel(\"hatY\")\n",
|
||
"ax.set_title(\"Predicted vs true salaries for OLS estimator\")\n",
|
||
"ax.axis(\"square\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 1**\n",
|
||
"Do the same with the Ridge estimator (with alpha chosen by CV). "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 40,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:42:58.124288Z",
|
||
"start_time": "2025-03-26T10:42:58.032948Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(-47.125, 2529.625, -96.55458820082124, 2480.1954117991786)"
|
||
]
|
||
},
|
||
"execution_count": 40,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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ZNmYbd3hJdiIiIiCxDZTIiKiIDFMiYiIgsQwJSIiChLDlIiIKEgMUyIioiAxTImIiILEMCUiIgoSw5SIiChIDFMiG8C5V/r37y/XXnttub9Nnz5dXZvxmWeekVq1aoX0c3EtSVxZo6CgIKTvS2Q1DFMiG0CgzZo1S52g+80333Q8j4tL/+EPf5BXX31VMjIyDJ1HIjtjmBLZROPGjVVoTp48WYUoSqt333239OvXTy699FK566671JUwELy4TZ061XEVkscee0waNmyoLqeHi7+jxKnbu3evDBkyRF1gGX+//PLLZf78+bJnzx7p27evmgZ/w3veeeedhn1/IiPx4uBENjJ69GiZO3euCs5hw4apS03hhurdV155RZ588knZvn27mvaSSy5R/2NaBOPs2bMlPT1dvf66666TjRs3SosWLWTcuHEqcHNyclSYbtmyRb0W4f3pp5+qz8F71qxZU6pWrWrwEiAyBsOUyGbeeustadu2rSxbtkz+/e9/S/369dXzaDdF6VG/4DT8/PPP8vHHH8v+/ftVkAJKtgsWLFDVxs8++6zk5eWpwMQF4KFp06aO16ekpKj/8Rmhbo8lshKGKZHNINjuvfdemTdvntx0001ep/3+++9VdXDLli3LXfC9Tp066v6DDz4o999/v3zzzTeqkxOC9YorrgjrdyCyGoYpkQ3FxcWpW2XKysqkSpUqsm7dOvW/M70a+J577lG9hL/88ksVqNOmTZMXX3xRJkyYELb5J7IadkAiihIJCQlSWlrq8lzHjh3Vc/n5+dK8eXOXm3N1MNpHx44dK3PmzJFJkybJzJkzHe8J7u9LFG0YpkRRAj16z5w5I99++60cO3ZMzp07p6p3R44cKXfccYcKSvQCXrt2rTz//POqxy5MnDhRvv76a/U3VAsvXrxY2rRpo/6WmZmp2mG/+OILOXr0qHp/omjEMCWKEj169FCly+HDh0u9evXkhRdeUM+joxHCFCXOVq1aydChQ9V4VZRG9VInevQiQNHLF9PgRBCA4TRPP/20PP7445Kamirjx4839DsSGSVGQ+8DIiIiChhLpkREREFimBIREQWJYUpERBQkhikREVGQGKZERERBYpgSEREFiWFKREQUJIYpERFRkBimREREQWKYEhERBYlhSkREFCSGKRERkQTn/wDXbit3vUFk5QAAAABJRU5ErkJggg==",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"best_ridge = Ridge(fit_intercept=True, alpha=132.57)\n",
|
||
"best_ridge.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"hatY_ridge = best_ridge.predict(XtestScaled)\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.scatter(Ytest, hatY_ridge, s=5)\n",
|
||
"ax.plot([0, 1], [0, 1], transform=ax.transAxes, ls=\"--\", c=\"gray\")\n",
|
||
"ax.set_xlabel(\"Ytest\")\n",
|
||
"ax.set_ylabel(\"hatY\")\n",
|
||
"ax.set_title(\"Predicted vs true salaries for Ridge estimator\")\n",
|
||
"ax.axis(\"square\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 2** Do the same with Lasso with alpha chosen by CV. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 41,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:43:01.103239Z",
|
||
"start_time": "2025-03-26T10:43:01.012916Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(-47.125, 2529.625, -130.82214503665753, 2445.9278549633423)"
|
||
]
|
||
},
|
||
"execution_count": 41,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"best_lasso = Lasso(fit_intercept=True, alpha=4.78)\n",
|
||
"best_lasso.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"hatY_lasso = best_lasso.predict(XtestScaled)\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.scatter(Ytest, hatY_lasso, s=5)\n",
|
||
"ax.plot([0, 1], [0, 1], transform=ax.transAxes, ls=\"--\", c=\"gray\")\n",
|
||
"ax.set_xlabel(\"Ytest\")\n",
|
||
"ax.set_ylabel(\"hatY\")\n",
|
||
"ax.set_title(\"Predicted vs true salaries for Ridge estimator\")\n",
|
||
"ax.axis(\"square\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Calculation of the best alpha with a \"BIC criterion\".**\n",
|
||
"Here is an alternative method to choose the \"best\" alpha : "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 42,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:43:03.416471Z",
|
||
"start_time": "2025-03-26T10:43:03.407079Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"best alpha chosen by BIC criterion : 17.81143051916605\n",
|
||
"best alpha chosen by CV : 4.783179587705159\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.linear_model import LassoLarsIC\n",
|
||
"\n",
|
||
"lassoBIC = LassoLarsIC(criterion=\"bic\")\n",
|
||
"lassoBIC.fit(XtrainScaled, Ytrain)\n",
|
||
"print(\"best alpha chosen by BIC criterion :\", lassoBIC.alpha_)\n",
|
||
"print(\"best alpha chosen by CV :\", lassoCV.alpha_)\n",
|
||
"\n",
|
||
"alpha_BIC = lassoBIC.alpha_"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Comparison between predicted salary and true salary for \"LassoBIC\" estimator :** "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 43,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:43:14.238270Z",
|
||
"start_time": "2025-03-26T10:43:14.158168Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"(-47.125, 2529.625, -111.67387145852295, 2465.076128541477)"
|
||
]
|
||
},
|
||
"execution_count": 43,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"lasso.set_params(alpha=alpha_BIC)\n",
|
||
"lasso.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"hatY_BIC = lasso.predict(XtestScaled)\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.scatter(Ytest, hatY_BIC, s=5)\n",
|
||
"ax.plot([0, 1], [0, 1], transform=ax.transAxes, ls=\"--\", c=\"gray\")\n",
|
||
"ax.set_xlabel(\"Ytest\")\n",
|
||
"ax.set_ylabel(\"hatY\")\n",
|
||
"ax.set_title(\"Predicted vs true salaries for LassoBIC estimator\")\n",
|
||
"ax.axis(\"square\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 3** Compute the MSE for these four different estimators (LassoCV, LassoBIC, OLS, RidgeCV)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 44,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:43:16.115247Z",
|
||
"start_time": "2025-03-26T10:43:16.108424Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"MSE for LassoCV : 8747438999.110947\n",
|
||
"MSE for LassoBIC : 13652129197.77105\n",
|
||
"MSE for RidgeCV : 34959235357.83314\n",
|
||
"MSE for OLS : 150074.5486842358\n",
|
||
"150074.5486842358\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.metrics import mean_squared_error\n",
|
||
"\n",
|
||
"MSEs = []\n",
|
||
"for name, estimator in zip(\n",
|
||
" [\"LassoCV\", \"LassoBIC\", \"RidgeCV\", \"OLS\"],\n",
|
||
" [lassoCV, lassoBIC, ridgeCV, linReg],\n",
|
||
" strict=False,\n",
|
||
"):\n",
|
||
" y_pred = estimator.predict(Xtest)\n",
|
||
" MSE = mean_squared_error(Ytest, y_pred)\n",
|
||
" print(f\"MSE for {name} : {MSE}\")\n",
|
||
" MSEs.append(MSE)\n",
|
||
"\n",
|
||
"print(np.min(MSEs))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 4** Display the boxplot of the absolute errors for each estimator."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 45,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-26T10:43:18.421455Z",
|
||
"start_time": "2025-03-26T10:43:18.334991Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAIOCAYAAAAr5eWKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZ5ElEQVR4nO3dCXxU1f3//0/YA7KKLGELyhYEVMCyVQHZZRFpv/gTQWgRFxCkQG2RfhWpLCqLLVSkbqigYEVcAJFFZSmrLJUdbImArMoOYRHm/3if//dOZ0IICU6Ym+T1fDyuydw5c+/JOEPynnPu58QEAoGAAQAAAAB8KUe0OwAAAAAAuDxCGwAAAAD4GKENAAAAAHyM0AYAAAAAPkZoAwAAAAAfI7QBAAAAgI8R2gAAAADAxwhtAAAAAOBjhDYAAAAA8DFCGwBkEZMnT7aYmJiw7YYbbrAmTZrYrFmzzC/i4+OtR48e6X7c6dOnbejQofbVV19FvE+JiYnWtm1bK1asmHve+vfvf8XHnD9/3kqVKuXaf/DBBym20c953XXX2bWmPum5uhovv/yyey1Fmp6L5K/P0A0AcHm5UrkPAJAJvfnmm1atWjULBAK2f/9+mzBhgrVv394++eQT9zWzUmh79tln3fcKopH0u9/9zlauXGlvvPGGC2KlS5e+4mMUhA8cOOC+f/311+3Xv/61ZQUKbcWLF7+qYH0lsbGx9sUXX0T8uACQ1RHaACCLqVGjhtWtWzd4u3Xr1la0aFF77733MnVoy0gbN260X/ziF9axY8c0P0ZBLU+ePNa4cWObN2+e7dmzx8qWLZuh/czscuTIYfXr10/34zSqqdG4XLlypRjm8+fPf9V90ocbZ86ccYESAPyK6ZEAkMXly5fPhYvcuXOH7T98+LD17t3bypQp4+6/8cYbbciQIXb27Fl3v/6Qve2226xSpUp27Nix4OM0eqfRKI12XbhwIWwa4KZNm6xZs2ZWoEABNzXz8ccfd39UX8muXbusa9euVqJECcubN68lJCTYmDFj7OLFi8HpizqeaLTNm1J3pdGgKx1XUy11nG+//dY+++yz4HF1vtTs3bvX5s6d60Lw73//e3e81KYUpuV5+cc//mH16tWzwoULuxCi/x+//e1v0/XzXI6mSqY0BdGbUuv9vJq6qr4uWrQo+Fxon+f48eM2aNAgq1ixonvN6LWjqaSnTp2ySPH+n7zzzjs2cOBAdw79rPp/5L3ONmzYYC1btrSCBQu65zUtr2ePjq3n/5VXXnHPn4791ltvufsmTpxot9xyizuHjq0R66eeeipiPxsAXC1G2gAgi1GQ+umnn9wIgqbvvfjii+6P6i5dugTbKJA1bdrU/v3vf7sQVKtWLVuyZImNHDnS1q9fb7Nnz3Zh7/3337c6deq48DBjxgwXDh544AF3bI3c5cyZM2w05O6777ZHHnnE/vjHP9qyZcvsueees++++84+/fTTy/b30KFD1rBhQzt37pz9+c9/diFBUw8VDtQ/TdfTdEWFJI0a9uzZ0x566CH3WC/IXe1xa9eubcuXL7d7773XbrrpJhs9erR77JWmRyrs6HnW89K8eXOrUKGCm1qpkJA8HKXleVEf7rvvPrcpYOm51/2hUwnT8vP8XDNnznTTPBUcveMp1IhCpkYVNaKoIKPXjALe008/7ULUggUL0nRtml6bKY3AaQs1ePBga9CggQtXuk9BVfTzd+jQIfh86nhpeT2H+uijj9z96rs+gNCxp02b5kJf37593etA51RQ3Lx58896TgEgIgIAgCzhzTffDOif9eRb3rx5Ay+//HJY21deecXd9/7774ftf/75593+efPmBfdNnz7d7XvppZcCTz/9dCBHjhxh90v37t1dm7/85S9h+4cPH+72L126NLivQoUKrr3nj3/8o2uzcuXKsMc+9thjgZiYmMC2bdvc7UOHDrl2zzzzTJqej7Qe1+tT27Zt03TcixcvBipVqhQoU6ZM4KeffnL71Ceda+HChVf1vIwePdrdPnr0aER+nuTPk9e/y71mdu7cGdx38803Bxo3bnxJ25EjR7r/96tXrw7b/8EHH7hjzJkz57J9D30uUtqaNWsWbPfll1+6fXfeeedlj/HGG29c9etZtwsXLhw4fPhwWNvHH388UKRIkVR/BgCIFqZHAkAW8/bbb9vq1avdpil/3bt3tz59+riCJB6N4GiqXvLiGd50w4ULFwb3de7c2R577DE3DVAjRBpladGiRYrn1ihcKG9078svv7xsf9WX6tWru2vKkvdFf2NfbeGKjDqupg5qBEbPqzfS+Jvf/MaNMmm07Wqel9tvvz34XGt08/vvv79mP09aaVRP10veeuutbnTL21q1auV+9rRU9dR1Y95rM3RLaZTwV7/6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IbrXX3/d3nnnHWvevLnbp/K95cqVswULFlirVq1cWV+da8WKFVavXj3X5tVXX7UGDRq4kb2qVavavHnzXFjcvXu3xcXFuTa6BkShbPjw4W6xu6lTp9qZM2ds8uTJrk8qk63gNnbsWBswYIAbBQQAAACALFuIRAFMihUrFrb/q6++cmGuSpUq1qtXLzt48GDwPgW88+fPuxE6j0KXAtWyZcvcbV1srymRXmATTbHUvtA2eowX2ESBT1MvvfVh1EZTIxXYQtvs3bvXLVwLAAAAAFk2tGkaokarfvnLX4YtANumTRs3wvXFF1+4kS9NS7zrrrtcmJL9+/e76ZJFixYNO17JkiXdfV4bhb7ktC+0jR4TSsfUsVNr49322iSnfmpaZegGAAAAAJmueuTjjz9u33zzjbueLNR9990X/F5hrm7dulahQgWbPXt2qhfPKwSGTldMaepiJNp4RUguNzVSxVaeffbZy/YTAAAAAHw/0qbKj5988omrZFa2bNlU25YuXdqFNlU8E13rpgqPqg4ZSlMovVEwtTlw4MAlxzp06FBYm+SjZTqmpl6m1sabqpl8BM4zePBgN+3T23TNHAAAAABkitCmUSqNsH344Ydu+qPWC7oSVXVU8FF4kzp16lju3Llt/vz5wTb79u2zjRs3BtciUsERBaZVq1YF26xcudLtC22jx+ixHhUn0fVrOofXZvHixWHLAKiNroOLj49Psb96vIqYhG4AAAAAkClCm8r9q9Kj1gvSWm0axdKWlJTk7j958qQNGjTIFQBRoQ8VJNE6alpD7d5773VtVEykZ8+eruT+woULbd26dda1a1erWbNmsJpkQkKCWzZARUxUQVKbvteyAKocKSpkUr16dbcMgI6hY+ncaucFLS0boBCmipIKeDNnzrQRI0ZQORIAAABA1gxtEydOdKNdWjNII2feNn369OB6QlrM+p577nGVI7Vumr4qxCnkecaNG+cW5u7cubM1atTI8ufP79Zf89ZoExUzUZBTONNWq1Ytt0yAR211nVy+fPncMXQsHXP06NHBNgqIGtHTem+6tq53794usGkDAAAAgIwQE/AqaaSBFsBWqFm/fn1YhUeknapHKvwprDJV8tpbu3atm+6qZRxq164d7e4AAKKE3wcAMlM2SNdIW65cuVwRkAsXLkSijwAAAACASE+P/NOf/uQqIh4+fDi9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yZJhbXXbu09f8+TJY0WLFk21jdfPUNoX2ib5eXRMHTu1Nt5tr01K1+1519FpK1euXLqeFwAAAADZW7pD21dffXVJcQ45c+aMLVmy5Ko78vjjj9s333xj77333iX3xcTEXBLwku9LLnmblNpHoo1XhORy/Rk8eLAbQfQ2jUoCAAAAQFrlSmtDBSrP5s2bw0aWVMRDxT1UTfFqqPLjJ598YosXL7ayZcsG96voiOhcpUuXDu7XtExvhEttFCJVHTJ0tE1tGjZsGGxz4MCBS8576NChsOOsXLky7H4dU1MvQ9skH1HTeST5CJxHUylDp1MCAAAAQIaMtN16661ufTaNKGkapG57W506dey5556zp59+Ol0n1yiVRtg+/PBD++KLL9xyAqF0W0FJlSU9CmiqOukFMp07d+7cYW327dtnGzduDLZp0KCBG+VSpUuPApr2hbbRY/RYz7x581zg0jm8NgqWoSONaqPr4OLj49P1swMAAABAREfaVBREIevGG2904eeGG24I3qfrvnR9WM6cOS09VO7/3XfftY8//tit1eaNYunaL62DpoCocv4jRoywypUru03f58+f35Xw99qqCIpK819//fWuiMmgQYOsZs2a1rx5c9cmISHBWrdu7QqoTJo0ye17+OGH3bIAVatWdbdVyETrzGkZgBdffNEOHz7sjqPHFCpUyLXROZ999lnr0aOHW+Jgx44drj8Kq1eargkAAAAAGRraKlSo4L5evHjRImXixInuqxbMDvXmm2+6YCRPPvmkJSUlWe/evd10RVWA1OiWQp5n3LhxlitXLuvcubNr26xZM5s8eXJYiJw6dapbLNurMqkFuLX2m0dtZ8+e7c7TqFEjFxoV0rQOm0cBUSN6Cpt169Z10zFVPEUbAAAAAEQ1tHnefvvtVO9/8MEH03wsr4hHajSCNXToULddTr58+dxC19ouRyNwU6ZMSfVc5cuXt1mzZqXaRiN4miIJAAAAAL4MbU888UTYbRXqOH36tJsiqWmL6QltAAAAAIAIl/zXFMXQ7eTJk7Zt2za3vlpK5foBAAAAANcwtKVEBUJGjRp1ySgcAAAAAMAHoc0r5LF3795IHQ4AAAAAcDXXtGkR7OTFRLS2mSoxquoiAAAAACCKoa1jx46XVHfUmm1acHvMmDER7BoAAAAAIN2hLZLrtAEAAAAArtE1bQAAAACA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",
|
||
"text/plain": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Boxplot the absolute error for LassoCV, LassoBIC, RidgeCV, OLS\n",
|
||
"ridge_cv_errors = np.abs(Ytest - ridgeCV.predict(Xtest))\n",
|
||
"lasso_cv_errors = np.abs(Ytest - lassoCV.predict(Xtest))\n",
|
||
"lasso_bic_errors = np.abs(Ytest - lassoBIC.predict(Xtest))\n",
|
||
"ols_errors = np.abs(Ytest - linReg.predict(Xtest))\n",
|
||
"\n",
|
||
"fig, ax = plt.subplots(figsize=(10, 6))\n",
|
||
"ax.boxplot(\n",
|
||
" [ridge_cv_errors, lasso_cv_errors, lasso_bic_errors, ols_errors],\n",
|
||
" labels=[\"RidgeCV\", \"LassoCV\", \"LassoBIC\", \"OLS\"],\n",
|
||
")\n",
|
||
"ax.set_title(\"Boxplot of Absolute Errors\")\n",
|
||
"ax.set_ylabel(\"Absolute Error\")\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 5**\n",
|
||
"Based on the above information, which estimator would you recommend?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 46,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# answer fot Optional Exercise 5"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "base",
|
||
"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.12.2"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|