mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-25 19:52:37 +01:00
1900 lines
183 KiB
Plaintext
1900 lines
183 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",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-19T09:18:59.373219Z",
|
||
"start_time": "2025-03-19T09:18:59.369013Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"\n",
|
||
"import warnings\n",
|
||
"\n",
|
||
"warnings.filterwarnings('ignore')"
|
||
],
|
||
"outputs": [],
|
||
"execution_count": 1
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-19T09:19:03.853918Z",
|
||
"start_time": "2025-03-19T09:19:02.315325Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd # dataframes are in pandas \n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"hitters = pd.read_csv(\"data/Hitters.csv\", index_col=\"Name\")\n",
|
||
"\n",
|
||
"hitters"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"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]"
|
||
],
|
||
"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>"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 2
|
||
},
|
||
{
|
||
"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",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-19T09:19:12.575121Z",
|
||
"start_time": "2025-03-19T09:19:12.561648Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"hitters_bis = pd.read_csv(\"data/Hitters.csv\")\n",
|
||
"\n",
|
||
"hitters_bis"
|
||
],
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"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]"
|
||
],
|
||
"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>"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"execution_count": 4
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Answer for ex. 1 : \n",
|
||
"\n",
|
||
"\n",
|
||
"\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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Hint for Question (4) :\n",
|
||
"ex = pd.DataFrame(dict(nom=['Alice', 'Nicolas', 'Jean'],\n",
|
||
" age=[19, np.NaN, np.NaN],\n",
|
||
" exam=[15, 14, np.NaN]))\n",
|
||
"\n",
|
||
"print(\"data : \\n\", ex)\n",
|
||
"print(\"First result : \\n\", ex.isnull())\n",
|
||
"print(\"Second result : \\n\", ex.isnull().sum())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2025-03-19T09:22:51.269241Z",
|
||
"start_time": "2025-03-19T09:22:51.242330Z"
|
||
}
|
||
},
|
||
"source": [
|
||
"print(hitters.shape)\n",
|
||
"print(hitters.columns)\n",
|
||
"print(hitters.describe())\n",
|
||
"print(hitters.isnull().sum())"
|
||
],
|
||
"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",
|
||
"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"
|
||
]
|
||
}
|
||
],
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"metadata": {},
|
||
"cell_type": "markdown",
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex 3\n",
|
||
"\n",
|
||
"# (1)\n",
|
||
"\n",
|
||
"\n",
|
||
"# (2)\n",
|
||
"# Complete with your code\n",
|
||
"\n",
|
||
"X =\n",
|
||
"Y =\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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"#Answer for Exercise 4\n",
|
||
"from # complete\n",
|
||
"\n",
|
||
"Xtrain, Xtest, Ytrain, Ytest = # complete"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"type(XtrainScaled)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let us turn Ytrain into a numpy array as well :"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for ex. 4, complete with your code\n",
|
||
"coef_ridge = []\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex. 6\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": "alpha_s = np.logspace(-4, 6, 50)"
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"*Info about logspace* (if necessary)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": "np.logspace(0, 3, 4)"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": "10 ** (np.linspace(0, 3, 4))"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": "np.logspace(-2, 2, 5) == 10 ** (np.linspace(-2, 2, 5))"
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"print(alpha_s)\n",
|
||
"\n",
|
||
"fig, (ax1, ax2) = plt.subplots(1, 2)\n",
|
||
"ax1.plot(alpha_s, \".\")\n",
|
||
"ax2.plot(np.log10(alpha_s), \".\")"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Exercise 7\n",
|
||
"\n",
|
||
"coefs_ridge = []\n",
|
||
"for alpha in alpha_s:\n",
|
||
"#complete\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": 114,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"((16, 50), (50, 16))"
|
||
]
|
||
},
|
||
"execution_count": 114,
|
||
"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_ridge.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": 115,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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L8fv91NcXMzXvvY1dF3vcc2GDRtYsmQJXq+XUaNGcc8992BZ1mA0XeTYO++8QyQSoaCgQNaZEkIIcdQcg/Eh3/zmN6msrGTdunU9jhuGwaWXXkpJSQnLly+nubmZG2+8EcuyePDBBwEIh8NceOGFnHvuuaxevZrt27dz00034ff7ufPOOwej+SJHYrEYb7/9NgDnnnsuDseg/HMVQggxAgz4T4yXXnqJV155hWeeeSY7h0mnV155hc2bN3PgwAEqKysBeOCBB7jpppu49957ycvL43e/+x2JRIJHH30Ut9vNrFmz2L59Oz/60Y+444475GmaEWz58uUkk0nKysqYNWtWrpsjhBBiGBnQW1T19fXcfPPNPPHEE70++bJy5UpmzZqVDTcAF110EclkkjVr1mSvOXjsxUUXXURNTQ179+7t9XOTySThcLjHJoaX9vZ2Vq1aBdiT+slCmkIIIY7FgP3UsCyLm266iS9/+cvMmzev12vq6uooKyvrcaygoACXy0VdXd1hr+nc77zmYPfffz+hUCi7jRkz5ni/HDHIli1bRjqdZty4cUyZMiXXzRFCCDHMHHPA+c53voOiKEfc3nvvPR588EHC4TB33333Ed+vt1tMlmX1OH7wNZ0DjA93e+ruu++mvb09ux04cOBYv0yRQ42Njbz//vuA3XsjtyGFEEIcq2Meg3PrrbdyzTXXHPGa8ePH873vfY933nnnkMd6582bx3XXXcdjjz1GeXl5duHETq2traRSqWwvTXl5+SE9NQ0NDQCH9Ox0crvd8jjxMPbGG29gWRbTpk1j7NixuW6OEEKIYeiYA05xcTHFxcV9XvfTn/6U733ve9n9mpoaLrroIp5++unsZG0LFy7k3nvvpba2loqKCsAeeOx2u5k7d272mm9/+9vouo7L5cpeU1lZyfjx44+1+WKIq66uZvPmzQCcd955OW6NEEKI4WrAxuCMHTuWWbNmZbepU6cCMGnSJEaPHg3ARz7yEWbOnMn111/P+++/z+uvv85dd93FzTffTF5eHgDXXnstbrebm266iY0bN/Lcc89x3333yRNUI9Rrr70GwCmnnHLYHjohhBCiLzl9NEXTNF544QU8Hg+LFi3iqquu4sorr+S///u/s9eEQiFeffVVqqqqmDdvHrfccgt33HEHd9xxRw5bLgbCrl272LNnD5qmcc455+S6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",
|
||
"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": 116,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"[<matplotlib.lines.Line2D at 0x1693d5520>]"
|
||
]
|
||
},
|
||
"execution_count": 116,
|
||
"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": 117,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Text(0, 0.5, 'Lasso coefficients')"
|
||
]
|
||
},
|
||
"execution_count": 117,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsYAAAISCAYAAADPxwmMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADE6UlEQVR4nOzdd5xcdb3/8dcp09v2lt4LqSShgyBNBKUpINjRq6IIAoLo9SpeL1z0p6LXLgIKIthFRQHpPYUSkpDeNpvtZXb6zCm/P85sy26S3WR3djf5PB+Pw/ec7zkz850k7L7nO9/z/Sq2bdsIIYQQQghxlFNHuwFCCCGEEEKMBRKMhRBCCCGEQIKxEEIIIYQQgARjIYQQQgghAAnGQgghhBBCABKMhRBCCCGEACQYCyGEEEIIAUgwFkIIIYQQApBgLIQQQgghBCDBWAghhBBCCGCcBeO6ujo++MEPUlpait/vZ8mSJaxZs6b7vG3bfP3rX6empgafz8fpp5/O+vXr+zxHJpPh2muvpaysjEAgwHvf+1727NlT6LcihBBCCCHGmHETjNvb2zn55JNxuVz885//ZMOGDXznO9+hqKio+5pvfetbfPe73+WHP/whq1atoqqqirPPPptYLNZ9zfXXX8+f//xnHnroIV544QXi8TgXXHABpmmOwrsSQgghhBBjhWLbtj3ajRiML33pS7z44os8//zzA563bZuamhquv/56brnlFsDpHa6srOTOO+/kU5/6FNFolPLycu6//34uv/xyAPbu3cukSZN49NFHOffccwv2foQQQgghxNiij3YDBuuRRx7h3HPP5f3vfz/PPvssEyZM4JprruGTn/wkADt27KChoYFzzjmn+zEej4d3vOMdvPTSS3zqU59izZo15HK5PtfU1NSwYMECXnrppf0G40wmQyaT6T62LIu2tjZKS0tRFGWE3rEQQgghhDhUtm0Ti8WoqalBVQc3SGLcBOPt27fzk5/8hBtuuIEvf/nLrFy5ks9//vN4PB4+/OEP09DQAEBlZWWfx1VWVrJr1y4AGhoacLvdFBcX97um6/EDueOOO7jtttuG+R0JIYQQQoiRVltby8SJEwd17bgJxpZlsXz5cm6//XYAli5dyvr16/nJT37Chz/84e7r9u3BtW37oL26B7vm1ltv5YYbbug+jkajTJ48mdraWsLh8KG8HSGE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+TFt2jSsVqvZZYmIiMgFCsYitSQhIYEjR47g7u7O3XffTdOmTc0uSURERC6iYCxSC0pKSti4cSMAt956K61btza3IBEREbmMgrFILdixYwd5eXkEBgZqBgoREZE6SsFYpIYVFhayZcsWAIYPH67bPYuIiNRRCsYiNezbb7+lqKiIkJAQevbsaXY5IiIichUKxiI1KDc3l23btgEwYsQITc0mIiJSh+m3tEgN2rx5MzabjdatWxMZGWl2OSIiInIN9S4YFxcX06tXLywWC4mJiS7bkpOTmThxIn5+fgQHB/PII49QUlLi0mbfvn0MHToUHx8fWrVqxR//+EcMw6jFbyCNRWZmJrt37wbKZqKwWCwmVyQiIiLXUu+uAnr88ccJDw9nz549Luvtdjvjx48nJCSELVu2kJmZycyZMzEMgwULFgBl/9YeOXIkw4cPZ+fOnRw9epSYmBj8/PyYN2+eGV9HGrD169djGAadOnUiIiLC7HJERETkJ9SrYLx69WpiY2NZunQpq1evdtkWGxvLwYMHSUlJITw8HIBXX32VmJgYnn/+eQICAvjkk08oKiriX//6F1arlR49enD06FFee+015s6dqx49qTapqakcOHAAKOstFhERkbqv3gylOHv2LLNmzeKjjz7C19f3su3x8fH06NHDGYoBRo8eTXFxsfPf2fHx8QwdOtTlNryjR48mNTWVpKSkq+67uLiY3Nxcl0XkWr755hsAbrzxRsLCwkyuRkRERCqiXgRjwzCIiYnhgQceICoq6opt0tLSaNGihcu6oKAgvLy8SEtLu2qb8tflba7kxRdfJDAw0Lm0adPmer6ONHAnT57k+PHjuLm5MXz4cLPLERERkQoyNRg/++yzWCyWay67du1iwYIF5ObmMn/+/Gt+3pWGQhiG4bL+0jblF95daxjF/PnzycnJcS4pKSmV+ZrSiBiGwbp16wDo06cPzZo1M7kiERERqShTxxjPnj2bqVOnXrNNREQEf/rTn9i2bZvLEAiAqKgo7rnnHj788EPCwsLYvn27y/bs7GxKS0udvcJhYWGX9Qynp6cDXNaTfDGr1XrZvkWu5PDhw5w+fRpPT09uvvlms8sRERGRSjA1GAcHBxMcHPyT7d566y3+9Kc/OV+npqYyevRoPv30U/r37w9AdHQ0zz//PGfOnKFly5ZA2QV5VquVPn36ONs8+eSTlJSU4OXl5WwTHh6uWQPkutntdufY4gEDBuDv729yRSIiIlIZ9WKMcdu2benRo4dz6dKlCwAdO3akdevWAIwaNYru3bszffp0EhIS+Oabb3jssceYNWsWAQEBAEybNg2r1UpMTAz79+9n+fLlvPDCC5qRQqrF3r17+fHHH/Hx8WHQoEFmlyMiIiKVVC+CcUW4u7uzcuVKvL29GTRoEFOmTOG2227jlVdecbYJDAxk7dq1nDp1iqioKB588EHmzp3L3LlzTaxcGoLS0lI2bNgAwODBg/H29ja5IhEREaksi6HbvlVabm4ugYGB5OTkOHujpXHbunUrsbGxBAQE8PDDD+Pp6Wl2SSIiIo1aVfJag+kxFjFLUVERcXFxAAwbNkyhWEREpJ5SMBa5Tlu3bqWwsJDmzZtz0003mV2OiIiIVJGCsch1OH/+PPHx8QCMGDECd3d3kysSERGRqlIwFrkOmzZtorS0lPDwcLp162Z2OSIiInIdFIxFqujMmTPs2rULgFtvvVVT/omIiNRzCsYiVeBwOFi5ciWGYdC9e3c6dOhgdkkiIiJynRSMRaogMTGRU6dO4enpyejRo80uR0RERKqBgrFIJRUUFLB27VoAhg8fTmBgoMkViYiISHVQMBappHXr1lFYWEhoaCj9+/c3uxwRERGpJgrGIpWQkpLCd999B8D48eM1PZuIiEgDomAsUkF2u52VK1cC0KtXL9q1a2dyRSIiIlKdFIxFKmjnzp2kpaXh7e3NyJEjzS5HREREqpmCsUgF5OXlsX79eqDsDnd+fn4mVyQiIiLVTcFYpAJiY2MpKSkhPDycPn36mF2OiIiI1AAFY5GfcOLECfbt2wfAhAkTcHPTj42IiEhDpN/wItdgs9mcF9z17duX8PBwkysSERGRmqJgLHIN8fHxZGZm4ufnxy233GJ2OSIiIlKDFIxFriI7O5tNmzYBMGrUKHx8fEyuSERERGqSgrHIVaxZswabzUa7du3o2bOn2eWIiIhIDVMwFrmCI0eOcOTIEdzc3Bg/fjwWi8XskkRERKSGKRiLXKKkpITVq1cDEB0dTWhoqMkViYiISG1QMBa5RFxcHOfOnSMgIICbb77Z7HJERESkligYi1wkPT2db7/9FoCxY8ditVpNrkhERERqi4KxyAU2m41ly5bhcDjo3LkzXbt2NbskERERqUUKxiIXbNy4kbS0NHx8fJg4caIuuBMREWlkFIxFgB9++IEtW7YAMHHiRAICAkyuSERERGqbgrE0ekVFRSxbtgyAXr160b17d5MrEhERETMoGEujt3r1anJycmjatCljxowxuxwRERExiYKxNGoHDhxgz549WCwWbr/9dry9vc0uSUREREyiYCyNVm5uLl999RUAgwcPpl27diZXJCIiImZSMJZGyeFw8MUXX1BYWEjLli0ZOnSo2SWJiIiIyRSMpVHasWMHJ06cwMPDg8mTJ+Ph4WF2SSIiImIyBWNpdNLT01m3bh0Ao0aNIiQkxOSKREREpC5QMJZGpfzudjabjU6dOtG3b1+zSxIREZE6QsFYGpUNGzY47243adIk3d1OREREnBSMpdFISkri22+/BeBnP/sZ/v7+JlckIiIidYmCsTQKRUVFLF++HCi7u123bt1MrkhERETqGgVjaRRWrVpFTk4OQUFBjB071uxyREREpA5SMJYGb//+/ezdu9d5dzur1Wp2SSIiIlIHKRhLg5aRkcGKFSsAGDJkCG3btjW5IhEREamrFIylwSosLGTRokWUlJTQtm1b3d1ORERErknBWBokh8PBsmXLyMrKIiAggClTpuDu7m52WSIiIlKHKRhLg7RhwwaOHTuGh4cHU6dOpUmTJmaXJCIiInWcgrE0OAcOHCAuLg4om684PDzc5IpERESkPlAwlgYlLS2NL774AoDo6Gh69uxpbkEiIiJSbygYS4NRUFDA4sWLKS0tpUOHDtx6661mlyQiIiL1iIKxNAh2u53PPvuMc+fOERQUxM9//nNdbCciIiKVomAsDcLatWs5efIknp6eTJ06FV9fX7NLEhERkXpGwVjqvT179rBt2zYAbrvtNlq0aGFyRSIiIlIfKRhLvXb69GmXO9vdcMMNJlckIiIi9ZWCsdRb58+f59NPP8Vut9O5c2eGDx9udkkiIiJSjykYS71ks9lYsmQJubm5NG/enDvuuAM3N53OIiIiUnVKElIvrVmzhuTkZKxWK1OnTsXb29vskkRERKSeUzCWemfr1q3s2rULgMmTJxMSEmJyRSIiItIQKBhLvZKQkEBsbCwAI0aMIDIy0uSKREREpKGoV8F45cqV9O/fHx8fH4KDg5k8ebLL9uTkZCZOnIifnx/BwcE88sgjlJSUuLTZt28fQ4cOxcfHh1atWvHHP/4R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IiKAgrGIiIiICKBgLCIiIiICKBiLiIiIiAAKxiIiNWbYsGH85je/MbuMK8rMzCQ0NJSkpKQKvycmJobbbrutUvuJiIjgjTfeqNR7LvX222/zs5/97Lo+Q0SkIhSMRUTqiTNnzjBt2jQiIyNxc3O7auheunQp3bt3x2q10r17d5YvX35ZmxdffJGJEycSERFRs0VXg1mzZrFz5062bNlidiki0sApGIuI1BPFxcWEhITw1FNPcdNNN12xTXx8PHfddRfTp09nz549TJ8+nSlTprB9+3Znm8LCQt5//31++ctf1lbp18VqtTJt2jQWLFhgdiki0sApGIuI1ILs7GxmzJhBUFAQvr6+jB07lmPHjrm0ee+992jTpg2+vr7cfvvtvPbaazRt2tS5PSIigjfffJMZM2YQGBh4xf288cYbjBw5kvnz59O1a1fmz5/PiBEjXIYzrF69Gg8PD6Kjo53r7HY7v/jFL2jfvj0+Pj5ERkby5ptvXvM7DRs2jNmzZzN79myaNm1K8+bNefrppzEMw6VdQUEB999/P/7+/rRt25Z//OMfLtt/97vf0aVLF3x9fenQoQPPPPMMpaWlLm1+9rOf8cUXX1BYWHjNmkREroeCsYhILYiJiWHXrl2sWLGC+Ph4DMNg3LhxzgD47bff8sADD/Doo4+SmJjIyJEjef755yu9n/j4eEaNGuWybvTo0WzdutX5evPmzURFRbm0cTgctG7dmiVLlnDw4EF+//vf8+STT7JkyZJr7u/DDz/Ew8OD7du389Zbb/H666/zz3/+06XNq6++SlRUFAkJCTz44IP8+te/5vDhw87t/v7+/Otf/+LgwYO8+eabvPfee7z++usunxEVFUVpaSk7duyo1PEQEakMD7MLEBFp6I4dO8aKFSv49ttvGThwIACffPIJbdq04YsvvuDOO+9kwYIFjB07lsceewyALl26sHXrVr766qtK7SstLY0WLVq4rGvRogVpaWnO10lJSYSHh7u08fT05LnnnnO+bt++PVu3bmXJkiVMmTLlqvtr06YNr7/+OhaLhcjISPbt28frr7/OrFmznG3GjRvHgw8+CJT1Dr/++uts3LiRrl27AvD0008720ZERDBv3jw+/fRTHn/8ced6Pz8/mjZtSlJSEkOHDq3MIRERqTD1GIuI1LBDhw7h4eFB//79neuaN29OZGQkhw4dAuDIkSP069fP5X2Xvq4oi8Xi8towDJd1hYWFeHt7X/a+v/3tb0RFRRESEkKTJk147733SE5Ovua+BgwY4PLZ0dHRHDt2DLvd7lzXs2dPl9rCwsJIT093rvv8888ZPHgwYWFhNGnShGeeeeaK+/Xx8aGgoOCa9YiIXA8FYxGRGnbpmNuL15eHykvD67Xedy1hYWEuvcMA6enpLr3IwcHBZGdnu7RZsmQJc+bM4f777yc2NpbExETuu+8+SkpKKl3DpTw9PV1eWywWHA4HANu2bWPq1KmMHTuWr776ioSEBJ566qkr7jcrK4uQkJDrrkdE5GoUjEVEalj37t2x2WwuM0NkZmZy9OhRunXrBkDXrl0vGz+7a9euSu8rOjqatWvXuqyLjY11DuEA6N27NwcPHnRpExcXx8CBA3nwwQfp3bs3nTp14vjx4z+5v23btl32unPnzri7u1eo3m+//ZZ27drx1FNPERUVRefOnfnhhx8ua3f8+HGKioro3bt3hT5XRKQqFIxFRGpY586dmTRpErNmzWLLli3s2bOHe++9l1atWjFp0iQAHn74YVatWsVrr73GsWPH+Pvf/87q1asv60VOTEwkMTGR8+fPk5GRQWJiokvIffTRR4mNjeXll1/m8OHDvPzyy6xbt85lzuPRo0dz4MABl17jTp06sWvXLr7++muOHj3KM888w86dO3/yu6WkpDB37lyOHDnCokWLWLBgAY8++miFj02nTp1ITk5m8eLFHD9+nLfeeuuK8y7HxcXRoUMHOnbsWOHPFhGpLAVjEZFa8MEHH9CnTx8mTJhAdHQ0hmGwatUq5zCDQYMG8be//Y3XXnuNm266iTVr1jBnzpzLxgL37t2b3r17s3v3bv7973/Tu3dvxo0b59w+cOBAFi9ezAcffEDPnj3517/+xaeffuoyvvnGG28kKirKZcaJBx54gMmTJ3PXXXfRv39/MjMznRfMXcuMGTMoLCykX79+PPTQQzz88MP86le/qvBxmTRpEnPmzGH27Nn06tWLrVu38swzz1zWbtGiRS4X9ImI1ASLUZVBbCIiUuNmzZrF4cOHiYuLq/bPXrVqFY899hj79+/Hza1qfSTDhg2jV69e133L55+yf/9+RowYwdGjR686f7OISHXQdG0iInXEK6+8wsiRI/Hz82P16tV8+OGHvPPOOzWyr3HjxnHs2DFOnz5NmzZtamQf1SU1NZWFCxcqFItIjVMwFhGpI3bs2MGf//xn8vLy6NChA2+99VaN3ra5MmOBzXTpDUtERGqKhlKIiIiIiKCL70REREREAAVjERERERFAwVhEREREBFAwFhEREREBFIxFRERERAAFYxERERERQMFYRERERARQMBYRERERAeD/AyArscqf19OmAAAAAElFTkSuQmCC",
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Hint for Ex. 8\n",
|
||
"\n",
|
||
"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))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex. 8\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex. 9\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.linear_model import RidgeCV, LassoCV\n",
|
||
"\n",
|
||
"alpha_s = 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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex. 10\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Hint for Exercise 11 : \n",
|
||
"\n",
|
||
"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))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Ex. 11\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Exercise 12\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"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": {},
|
||
"outputs": [],
|
||
"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": [
|
||
"\"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"alpha_score = lassoCV.mse_path_.mean(axis=1)\n",
|
||
"alpha_score.shape"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"alphas = lassoCV.alphas_\n",
|
||
"plt.plot(np.log10(alphas), alpha_score)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": null,
|
||
"metadata": {},
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.linear_model import LinearRegression\n",
|
||
"\n",
|
||
"LinReg = LinearRegression()\n",
|
||
"LinReg.fit(Xtrain,\n",
|
||
" Ytrain) # 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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Optional Exercise 1\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 2** Do the same with Lasso with alpha chosen by CV. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Answer for Optional Exercise 2\n"
|
||
]
|
||
},
|
||
{
|
||
"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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Comparison between predicted salary and true salary for \"LassoBIC\" estimator :** "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"lasso.set_params(alpha=alpha_BIC)\n",
|
||
"lasso.fit(XtrainScaled, Ytrain)\n",
|
||
"\n",
|
||
"hatY_BIC = lasso.predict(Xtest)\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": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# answer for Optional Exercise 3\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 4** Display the boxplot of the absolute errors for each estimator. "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# answer for Optional Exercise 4\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**Optional Exercise 5**\n",
|
||
"Based on the above information, which estimator would you recommend?"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# answer fot Optional Exercise 5"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.21"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|