Skip to content

Instantly share code, notes, and snippets.

@AbheeHub
Created March 6, 2020 12:25
Show Gist options
  • Save AbheeHub/2922e801ba3535e7edc0da1b62aa5cdc to your computer and use it in GitHub Desktop.
Save AbheeHub/2922e801ba3535e7edc0da1b62aa5cdc to your computer and use it in GitHub Desktop.
Created on Cognitive Class Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/corsera_da0101en_notebook_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://www.bigdatauniversity.com\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/CCLog.png\" width=300, align=\"center\"></a>\n",
"\n",
"<h1 align=center><font size=5>Data Analysis with Python</font></h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Module 5: Model Evaluation and Refinement</h1>\n",
"\n",
"We have built models and made predictions of vehicle prices. Now we will determine how accurate these predictions are. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Table of content</h1>\n",
"<ul>\n",
" <li><a href=\"#ref1\">Model Evaluation </a></li>\n",
" <li><a href=\"#ref2\">Over-fitting, Under-fitting and Model Selection </a></li>\n",
" <li><a href=\"#ref3\">Ridge Regression </a></li>\n",
" <li><a href=\"#ref4\">Grid Search</a></li>\n",
"</ul>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This dataset was hosted on IBM Cloud object click <a href=\"https://cocl.us/DA101EN_object_storage\">HERE</a> for free storage."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# Import clean data \n",
"path = 'https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/module_5_auto.csv'\n",
"df = pd.read_csv(path)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df.to_csv('module_5_auto.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" First lets only use numeric data "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"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>Unnamed: 0</th>\n",
" <th>Unnamed: 0.1</th>\n",
" <th>symboling</th>\n",
" <th>normalized-losses</th>\n",
" <th>wheel-base</th>\n",
" <th>length</th>\n",
" <th>width</th>\n",
" <th>height</th>\n",
" <th>curb-weight</th>\n",
" <th>engine-size</th>\n",
" <th>...</th>\n",
" <th>stroke</th>\n",
" <th>compression-ratio</th>\n",
" <th>horsepower</th>\n",
" <th>peak-rpm</th>\n",
" <th>city-mpg</th>\n",
" <th>highway-mpg</th>\n",
" <th>price</th>\n",
" <th>city-L/100km</th>\n",
" <th>diesel</th>\n",
" <th>gas</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>0.890278</td>\n",
" <td>48.8</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>...</td>\n",
" <td>2.68</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>13495.0</td>\n",
" <td>11.190476</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>122</td>\n",
" <td>88.6</td>\n",
" <td>0.811148</td>\n",
" <td>0.890278</td>\n",
" <td>48.8</td>\n",
" <td>2548</td>\n",
" <td>130</td>\n",
" <td>...</td>\n",
" <td>2.68</td>\n",
" <td>9.0</td>\n",
" <td>111.0</td>\n",
" <td>5000.0</td>\n",
" <td>21</td>\n",
" <td>27</td>\n",
" <td>16500.0</td>\n",
" <td>11.190476</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>122</td>\n",
" <td>94.5</td>\n",
" <td>0.822681</td>\n",
" <td>0.909722</td>\n",
" <td>52.4</td>\n",
" <td>2823</td>\n",
" <td>152</td>\n",
" <td>...</td>\n",
" <td>3.47</td>\n",
" <td>9.0</td>\n",
" <td>154.0</td>\n",
" <td>5000.0</td>\n",
" <td>19</td>\n",
" <td>26</td>\n",
" <td>16500.0</td>\n",
" <td>12.368421</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>99.8</td>\n",
" <td>0.848630</td>\n",
" <td>0.919444</td>\n",
" <td>54.3</td>\n",
" <td>2337</td>\n",
" <td>109</td>\n",
" <td>...</td>\n",
" <td>3.40</td>\n",
" <td>10.0</td>\n",
" <td>102.0</td>\n",
" <td>5500.0</td>\n",
" <td>24</td>\n",
" <td>30</td>\n",
" <td>13950.0</td>\n",
" <td>9.791667</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>164</td>\n",
" <td>99.4</td>\n",
" <td>0.848630</td>\n",
" <td>0.922222</td>\n",
" <td>54.3</td>\n",
" <td>2824</td>\n",
" <td>136</td>\n",
" <td>...</td>\n",
" <td>3.40</td>\n",
" <td>8.0</td>\n",
" <td>115.0</td>\n",
" <td>5500.0</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>17450.0</td>\n",
" <td>13.055556</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" Unnamed: 0 Unnamed: 0.1 symboling normalized-losses wheel-base \\\n",
"0 0 0 3 122 88.6 \n",
"1 1 1 3 122 88.6 \n",
"2 2 2 1 122 94.5 \n",
"3 3 3 2 164 99.8 \n",
"4 4 4 2 164 99.4 \n",
"\n",
" length width height curb-weight engine-size ... stroke \\\n",
"0 0.811148 0.890278 48.8 2548 130 ... 2.68 \n",
"1 0.811148 0.890278 48.8 2548 130 ... 2.68 \n",
"2 0.822681 0.909722 52.4 2823 152 ... 3.47 \n",
"3 0.848630 0.919444 54.3 2337 109 ... 3.40 \n",
"4 0.848630 0.922222 54.3 2824 136 ... 3.40 \n",
"\n",
" compression-ratio horsepower peak-rpm city-mpg highway-mpg price \\\n",
"0 9.0 111.0 5000.0 21 27 13495.0 \n",
"1 9.0 111.0 5000.0 21 27 16500.0 \n",
"2 9.0 154.0 5000.0 19 26 16500.0 \n",
"3 10.0 102.0 5500.0 24 30 13950.0 \n",
"4 8.0 115.0 5500.0 18 22 17450.0 \n",
"\n",
" city-L/100km diesel gas \n",
"0 11.190476 0 1 \n",
"1 11.190476 0 1 \n",
"2 12.368421 0 1 \n",
"3 9.791667 0 1 \n",
"4 13.055556 0 1 \n",
"\n",
"[5 rows x 21 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df=df._get_numeric_data()\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Libraries for plotting "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"! pip install ipywidgets"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/IPython/html.py:14: ShimWarning: The `IPython.html` package has been deprecated since IPython 4.0. You should import from `notebook` instead. `IPython.html.widgets` has moved to `ipywidgets`.\n",
" \"`IPython.html.widgets` has moved to `ipywidgets`.\", ShimWarning)\n"
]
}
],
"source": [
"from IPython.display import display\n",
"from IPython.html import widgets \n",
"from IPython.display import display\n",
"from ipywidgets import interact, interactive, fixed, interact_manual"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Functions for plotting</h2>"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def DistributionPlot(RedFunction, BlueFunction, RedName, BlueName, Title):\n",
" width = 12\n",
" height = 10\n",
" plt.figure(figsize=(width, height))\n",
"\n",
" ax1 = sns.distplot(RedFunction, hist=False, color=\"r\", label=RedName)\n",
" ax2 = sns.distplot(BlueFunction, hist=False, color=\"b\", label=BlueName, ax=ax1)\n",
"\n",
" plt.title(Title)\n",
" plt.xlabel('Price (in dollars)')\n",
" plt.ylabel('Proportion of Cars')\n",
"\n",
" plt.show()\n",
" plt.close()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"def PollyPlot(xtrain, xtest, y_train, y_test, lr,poly_transform):\n",
" width = 12\n",
" height = 10\n",
" plt.figure(figsize=(width, height))\n",
" \n",
" \n",
" #training data \n",
" #testing data \n",
" # lr: linear regression object \n",
" #poly_transform: polynomial transformation object \n",
" \n",
" xmax=max([xtrain.values.max(), xtest.values.max()])\n",
"\n",
" xmin=min([xtrain.values.min(), xtest.values.min()])\n",
"\n",
" x=np.arange(xmin, xmax, 0.1)\n",
"\n",
"\n",
" plt.plot(xtrain, y_train, 'ro', label='Training Data')\n",
" plt.plot(xtest, y_test, 'go', label='Test Data')\n",
" plt.plot(x, lr.predict(poly_transform.fit_transform(x.reshape(-1, 1))), label='Predicted Function')\n",
" plt.ylim([-10000, 60000])\n",
" plt.ylabel('Price')\n",
" plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1 id=\"ref1\">Part 1: Training and Testing</h1>\n",
"\n",
"<p>An important step in testing your model is to split your data into training and testing data. We will place the target data <b>price</b> in a separate dataframe <b>y</b>:</p>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"y_data = df['price']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"drop price data in x data"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"x_data=df.drop('price',axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we randomly split our data into training and testing data using the function <b>train_test_split</b>. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of test samples : 31\n",
"number of training samples: 170\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"\n",
"x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.15, random_state=1)\n",
"\n",
"\n",
"print(\"number of test samples :\", x_test.shape[0])\n",
"print(\"number of training samples:\",x_train.shape[0])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The <b>test_size</b> parameter sets the proportion of data that is split into the testing set. In the above, the testing set is set to 10% of the total dataset. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #1):</h1>\n",
"\n",
"<b>Use the function \"train_test_split\" to split up the data set such that 40% of the data samples will be utilized for testing, set the parameter \"random_state\" equal to zero. The output of the function should be the following: \"x_train_1\" , \"x_test_1\", \"y_train_1\" and \"y_test_1\".</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"number of test samples : 81\n",
"number of training samples: 120\n"
]
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.4, random_state=0) \n",
"print(\"number of test samples :\", x_test1.shape[0])\n",
"print(\"number of training samples:\",x_train1.shape[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.4, random_state=0) \n",
"print(\"number of test samples :\", x_test1.shape[0])\n",
"print(\"number of training samples:\",x_train1.shape[0])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's import <b>LinearRegression</b> from the module <b>linear_model</b>."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We create a Linear Regression object:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"lre=LinearRegression()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we fit the model using the feature horsepower "
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.fit(x_train[['horsepower']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's Calculate the R^2 on the test data:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.707688374146705"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.score(x_test[['horsepower']], y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"we can see the R^2 is much smaller using the test data."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.6449517437659684"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lre.score(x_train[['horsepower']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #2): </h1>\n",
"<b> \n",
"Find the R^2 on the test data using 90% of the data for training data\n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.7340722810055448"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
"lre.fit(x_train1[['horsepower']],y_train1)\n",
"lre.score(x_test1[['horsepower']],y_test1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train1, x_test1, y_train1, y_test1 = train_test_split(x_data, y_data, test_size=0.1, random_state=0)\n",
"lre.fit(x_train1[['horsepower']],y_train1)\n",
"lre.score(x_test1[['horsepower']],y_test1)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Sometimes you do not have sufficient testing data; as a result, you may want to perform Cross-validation. Let's go over several methods that you can use for Cross-validation. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Cross-validation Score</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets import <b>model_selection</b> from the module <b>cross_val_score</b>."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We input the object, the feature in this case ' horsepower', the target data (y_data). The parameter 'cv' determines the number of folds; in this case 4. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Rcross = cross_val_score(lre, x_data[['horsepower']], y_data, cv=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The default scoring is R^2; each element in the array has the average R^2 value in the fold:"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([0.7746232 , 0.51716687, 0.74785353, 0.04839605])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Rcross"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We can calculate the average and standard deviation of our estimate:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The mean of the folds are 0.522009915042119 and the standard deviation is 0.291183944475603\n"
]
}
],
"source": [
"print(\"The mean of the folds are\", Rcross.mean(), \"and the standard deviation is\" , Rcross.std())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use negative squared error as a score by setting the parameter 'scoring' metric to 'neg_mean_squared_error'. "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([20254142.84026703, 43745493.2650517 , 12539630.34014931,\n",
" 17561927.72247591])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"-1 * cross_val_score(lre,x_data[['horsepower']], y_data,cv=4,scoring='neg_mean_squared_error')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #3): </h1>\n",
"<b> \n",
"Calculate the average R^2 using two folds, find the average R^2 for the second fold utilizing the horsepower as a feature : \n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5166761697127429"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"Rc=cross_val_score(lre,x_data[['horsepower']], y_data,cv=2)\n",
"Rc.mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"Rc=cross_val_score(lre,x_data[['horsepower']], y_data,cv=2)\n",
"Rc.mean()\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also use the function 'cross_val_predict' to predict the output. The function splits up the data into the specified number of folds, using one fold to get a prediction while the rest of the folds are used as test data. First import the function:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import cross_val_predict"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We input the object, the feature in this case <b>'horsepower'</b> , the target data <b>y_data</b>. The parameter 'cv' determines the number of folds; in this case 4. We can produce an output:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([14141.63807508, 14141.63807508, 20814.29423473, 12745.03562306,\n",
" 14762.35027598])"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat = cross_val_predict(lre,x_data[['horsepower']], y_data,cv=4)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1 id=\"ref2\">Part 2: Overfitting, Underfitting and Model Selection</h1>\n",
"\n",
"<p>It turns out that the test data sometimes referred to as the out of sample data is a much better measure of how well your model performs in the real world. One reason for this is overfitting; let's go over some examples. It turns out these differences are more apparent in Multiple Linear Regression and Polynomial Regression so we will explore overfitting in that context.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create Multiple linear regression objects and train the model using <b>'horsepower'</b>, <b>'curb-weight'</b>, <b>'engine-size'</b> and <b>'highway-mpg'</b> as features."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr = LinearRegression()\n",
"lr.fit(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prediction using training data:"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([11927.70699817, 11236.71672034, 6436.91775515, 21890.22064982,\n",
" 16667.18254832])"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat_train = lr.predict(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"yhat_train[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Prediction using test data: "
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([11349.16502418, 5914.48335385, 11243.76325987, 6662.03197043,\n",
" 15555.76936275])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat_test = lr.predict(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"yhat_test[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's perform some model evaluation using our training and testing data separately. First we import the seaborn and matplotlibb library for plotting."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's examine the distribution of the predicted values of the training data."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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vTZexy0iIiKp49ChQ6xbt479+/cnOhQp56pVq0bjxo2pXLly1OvEdRz1VJaVleXUmVRERKR8W7VqFTVq1KBOnTr427uIxJ5zjm3btpGTk0OzZs3yzTOzuc65rEjr6c6kIiIiUmHt379fSbrEnZlRp06dEl+5UaIuIiIiFZqSdCkLpTnPlKiLiIiIiCQhJeoiIiIiIklIibqIiIhIgo0ZMwYz45tvvil22VGjRrFhQ8Fb00Rv6tSpXHLJJfmmff/999SpU4ddu3blm37ppZfy9ttvl2hbsfbkk0/yyiuvcPPNN5OZmUmrVq3IyMggMzOTzMxM3nnnnai3NWbMGB577LEil9m4cSMDBw483rBjIm7DM4qIiIhIdN588026du3K6NGjuf/++4tcdtSoUbRp04ZTTz01Zvs/4YQT6NevH++//z4jR/rb1ezatYvPP/+cN954I2b7Kanc3Fxeeukl5s2bx4gRIwBYvXo1l1xyCfPnzy90nfT0yCnukCFDit1nw4YNqV27NjNnzqRTp06lDz4GlKiLiIiIANx+OxSS/JVaZiY8+WSRi+zZs4fp06czZcoUBg0alC9Rf/TRR3n11VepVKkSAwYMICsrizlz5nD11VeTkZHBjBkzaNmyJXPmzKFu3brMmTOHO+64g6lTpzJr1ixuv/129u3bR0ZGBv/85z85++yzC41j+PDhPPvss3mJ+pgxY+jfvz/Vq1ePalv3338/J554InfccQcAbdq04cMPP6Rp06a89tprPPXUUxw8eJBOnTrxzDPPAHD99dczZ84czIzrrruOX/3qV/m2OXnyZNq3b19o4h3StWtXevTowWeffcZll11Gs2bN+NOf/sTBgwepV68er732GvXr1+cf//gHixYt4sknn+THP/4xderUYfbs2WzcuJHHH388L5G/9NJLef3115Woi4iIiFRk77//Pv379+ess86idu3azJs3j/bt2/Of//yH999/n5kzZ1K9enW2b99O7dq1+dvf/sZf/vIXsrIiDr2dp0WLFkybNo309HQmTpzIPffcw7vvvlvo8v379+eGG25g27Zt1KlTh9GjR/PLX/6yVNsK9/XXX/PWW28xffp0KleuzC9+8Qtef/11Wrduzfr161m0aBEAO3fuPGbd6dOn06FDh6j2s3v3bqZNmwbAjh07GDRoEGbGc889x+OPP86f//znY9bZvHkz06dPZ+HChQwbNiwvUc/KyuLBBx+Mar/xpERdREREBIpt+Y6XN998k9tvvx2Aq666ijfffJP27dszceJEfvKTn1C9enUAateuXaLt7tq1i5EjR7J8+XLMjEOHDhW5fJUqVRg0aBDvvPMOQ4cOZf78+fTr169U2wo3adIk5s6dS8eOHQHYt28f9evX54c//CErV67kl7/8JQMHDszbV7js7GxatmwZ1X6uuuqqvN+/++47hg0bxsaNGzlw4ABnnXVWxHUuvfRSzIy2bduyfv36vOn169c/rn4AsaJEXURERCRBtm3bxuTJk1m0aBFmxuHDhzEzHn30UZxzUY29nZ6ezpEjRwDy3VDn97//PRdeeCFjxoxh9erV9OzZs9htDR8+nAcffBDnHIMHD8673X002wqPIzwW5xwjR47k4YcfPmadBQsW8Mknn/D000/z9ttv89JLL+Wbn5GREfVNgk444YS832+++WbuueceLr74YiZOnMgjjzwScZ2qVavm/e6cyxd7RkZGVPuNJ436IiIiIpIg77zzDiNGjGDNmjWsXr2atWvX0qxZMz7//HP69evHSy+9xN69ewHYvn07ADVq1CAnJydvG02bNmXu3LkA+cpRdu3aRaNGjQDfATUaF154IcuXL+fpp59m+PDhJdpW06ZNmTdvHgDz5s1j1apVAPTu3Zt33nmHzZs35x3HmjVr2Lp1K0eOHGHo0KE88MADeeuGa9myJStWrIgq9nCheJ1zvPzyyyVef9myZbRp06bE68WaEnURERGRBHnzzTePGYlk6NChvPHGG/Tv359BgwaRlZVFZmYmf/nLXwC49tpruemmm8jMzGTfvn3cd9993HbbbXTr1o20tLS87fzmN7/h7rvvpkuXLhw+fDiqeCpVqsTQoUPZtm0b3bt3L9G2hg4dyvbt28nMzOTZZ5/NKzdp1aoVDz74IP369aNt27b07duX7Oxs1q9fT8+ePcnMzOTaa6+N2OI+YMCAvLrzkrj//vsZMmQIPXr0oEGDBiVef8qUKUkxRKOFN/PLUVlZWW7OnDmJDkNERETi6Ouvv466BloSY8iQITz66KM0b968TPbnnKNbt2589NFH1KxZM6bbjnS+mdlc51zEnsFqURcRERGRpPXII4+QnZ1dZvvbvHkzv/nNb2KepJeGOpOKiIiISNI6++yzixz/PdYaNGjAoEGDymx/RVGLuoiIiIhIElKiLiIiIiKShJSoi4iIiIgkIdWoi4h34AAsXAhz5sCXX0L//lBgyDAREREpO2pRF6nosrOhe3eoUQM6doSf/xxefBGuuQZWr050dCIi5V5aWhqZmZm0adOGK664Iu8GR6UxdepULrnkEgDGjh1b6B05AXbu3MkzzzxT4n3cf//9eWO6h++3c+fO+abl5ubSoEGDIkdsibStWLv88stZuXIlnTp1IjMzk9NOO4169eqRmZlJZmYmq0vwv+53v/sdU6ZMKXKZ999/nwceeOA4o/aUqItUdH/+M8yYAb/6FfzrX7ByJaxYAWZw442gey2IiMRVRkYG8+fPZ9GiRVSpUoXnnnsu33znHEeOHCnxdgcNGsRdd91V6PzSJuqRdO/enXXr1uVLeidOnEibNm045ZRTYrKP0li8eDGHDx/m9NNPZ+bMmcyfP58//vGPXHnllcyfP5/58+fTtGnTfOsUdXOohx56iAsvvLDIfQ4ePJh3332X/fv3H3f8StRFKrItW+CFF+Dqq33Cfvnl0KwZNG3q/54wAf75z0RHKSJSJm6/HXr2jO3P7beXLIZu3bqxYsUKVq9eTcuWLfnFL35B+/btWbt2LePHj6dz5860b9+eK664gj179gDw8ccf06JFC7p27cp7772Xt61Ro0Zxyy23ALBp0yaGDBnCueeey7nnnst///tf7rrrLr799lsyMzO58847AXjsscfo2LEjbdu25b777svb1kMPPcTZZ59Nnz59WLp06TFxV6pUiSuuuIK33norb9ro0aMZPnw4AC+88AIdO3bk3HPPZejQoRGvGvTs2ZPQzSa3bt2al0AfPnyYO++8My+uv//97wBkZ2fTvXv3vKsRn3322THbfP311xk8eHCRz3lubi61atXi3nvv5bzzzmPWrFncd999dOzYkTZt2nDTTTcRukHoj3/8Y95//30AGjduzP3330+7du1o27Yty5YtA8DM6NatG+PGjStyv9FQoi5SkT31FOzbB7/97bHzbrrJl8T8z//Ahg1lH5uISAWTm5vLf/7zH8455xwAli5dyogRI/jyyy854YQTePDBB5k4cSLz5s0jKyuLJ554gv379/PTn/6UDz74gM8++4yNGzdG3Patt95Kjx49WLBgAfPmzaN169Y88sgjnHHGGcyfP5/HHnuM8ePHs3z5cmbNmsX8+fOZO3cu06ZNY+7cuYwePZovv/yS9957j9mzZ0fcx/Dhwxk9ejQABw4cYNy4cQwdOhSAyy67jNmzZ7NgwQJatmzJiy++GPXz8uKLL1KzZk1mz57N7NmzeeGFF1i1ahVvvPEGF110EfPnz2fBggVkZmYes+706dPp0KFDsfvYtWsX7du3Z9asWXTu3JnbbruN2bNns3DhQnbt2sXHH38ccb0GDRrw5ZdfcsMNN/DEE0/kTc/Kyor4xaGk1JlUpKLavRv+9jffYTTS7bMrVfK16m3b+qT93//25TAiIuXUk08mZr/79rCDdOcAACAASURBVO3LSzK7devG9ddfz4YNG2jSpAnnn38+AF988QVLliyhS5cuABw8eJDOnTvzzTff0KxZM5o3bw74Ft/nn3/+mH1MnjyZV155BfA18TVr1mTHjh35lhk/fjzjx4+nXbt2AOzZs4fly5eTk5PDkCFDqF69OkChNwPq2LEje/bsYenSpXz99decf/75nHzyyQAsWrSIe++9l507d7Jnzx4uuuiiqJ+f8ePH89VXX/HOO+8APqlevnw5HTt25LrrruPQoUNceumlERP17Oxs6tWrV+w+qlSpwpCwARQmTZrEY489xv79+9m6dSsdOnRgwIABx6x32WWXAdChQ4d8Lej169dnQwwauZSoi1RUzz0HO3fC3XcXvsyZZ8KDD8Kvfw2jR0NwCVNERGInVKNe0AknnJD3u3OOvn378uabb+ZbZv78+ViMGlGcc9x999387Gc/yzf9ySefjHofV111FaNHj+brr7/OK3sBuPbaa3n//fc599xzGTVqFFOnTj1m3fT09Lxa/PD6bucc//d//xcxuZ82bRofffQR11xzDXfeeScjRozINz8jIyOqWvGMjIy8Y9y7dy+33HIL8+bNo1GjRtx7772FbqNq1aqA//KTm5ubN33//v1kZGQUu9/iqPRFpCLatw+eeAL69oWsrKKXve026NQJbr0VYtAxRkRESu78889n+vTprFixAvDJ5LJly2jRogWrVq3i22+/BTgmkQ/p3bs3zz77LOBrvnfv3k2NGjXIycnJW+aiiy7ipZdeyqt9X79+PZs3b6Z79+6MGTOGffv2kZOTwwcffFBonMOHD+e1115j8uTJ+Vrec3JyOOWUUzh06BCvv/56xHWbNm3K3LlzAfJaz0Nx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OiIRSRVK1CUljBsHxx8PTZoUOJGbC19+qbIXkaC0amXJunPQvXvc1qz36QOPP27t4P/yl6CjEZFUoZVdJOktXGglsE88UcjJH36A335T2YtIkA49FL74wrLhk06yRuZnnhl0VPu48UYb9B85Eg47DC65JOiIImDXLvuhvv8e5syBVatgzRqbt7N2rX18ULkyVKliW+3a0LYttG9vW4cOhSzzLCKRokRdkt4779i+yLIXsJE8EQlO27bw7bcwYID9ZR01ytqtxFEnJuesVePChXDVVVZmn3C/OrZvh//+Fz7+GL7+2kYxcnLsXJUqNtu+QQN783TSSbZSc04ObNtm+7VrrZbwhRd+f80OHayAv39/OOYYKKcP60UixXmt5FCoLl26+BkzZgQdhpRRbi60bGmd4PLmjO7l1FNh5cq4ncgmknJycuDSS+0d9hVXwLPPWg17HPnlF1s4belS+yCgS5egIyrBunXw3nvw4Yc2OLFlC1SoAMcea8F37gydOkGbNtY+syTe26j7Tz/Zp5Iffwz/+Y/9wq1fH845B66/XutSiITJOTfTe1/obxIl6kVQop4cJkywtmr/+lchn6T/8ouNHN1yCzzySCDxiUghdu+GoUNhxAhLJN94w0Z448iKFbYo0qZNlqPGXU7622+WnI8da8l5bq5N3u3Txxac6t7dOu5Eyq+/wiefWBH/++/Djh1WUvinP0HfvuG9ARBJUUrU94MS9UoQjh8AAB0sSURBVORwyimQkQHZ2fYJ7l5eesk+v54xw0aURCS+vPceXHmllV08/jgMHhxXpTCZmZasp6VZFckhhwQcUG6u9ad/5RUbpdixwz5OHDQIBg6Eww+PzX+/devs9+uzz8Ly5fYG4b77rGWOEnaRfRSXqKuQTJLWvHk2kHTttYUk6QBvv211MZ06xTw2EQnDmWdaT8QTToBrrrH69bVrg45qj1at4N//tkqSnj2tGiQQWVlwzz3QrJmNmH/+uf3i++47ezfx4INwxBGxe5NTrx7cfTcsWmT17AceCJddZm8U3n3XSmdEJCxK1CVpjRkDlSrZgNw+1q61f8wGDYqrEToRKaBxYyupeOIJy4rbtrWR2l27go4MsPz3o49sqsupp8L69TF68Nat8Npr0K2bvWN4+GE48khLjFeuhCefhKOPDvb3W1qaTQz+7jurP3TO6tePPtra4opI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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Title = 'Distribution Plot of Predicted Value Using Training Data vs Training Data Distribution'\n",
"DistributionPlot(y_train, yhat_train, \"Actual Values (Train)\", \"Predicted Values (Train)\", Title)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figure 1: Plot of predicted values using the training data compared to the training data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So far the model seems to be doing well in learning from the training dataset. But what happens when the model encounters new data from the testing dataset? When the model generates new values from the test data, we see the distribution of the predicted values is much different from the actual target values. "
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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7ExgWDBSzK+ACUAm/iBSHUgqIiIikoR69OhBjx49qr5jDR111FFxa7u64jnqC865N/FhPHzao2F/O+A3sc4bTF8HnFjJPF0qmT6DPYdsFBERERGpt3RmUhERERGRekhBXURERESkHlJQF5Gae/ZZuPFG+PHHRFciIiKSchTURaT6nIO774af/xzuuw/69IH33090VSIiKSEjI4Pc3Fx69+7NueeeW3aCo5qYOnUqp512GgCvvfYaY8eOrfS+69ev55FHHqn2Mm6//fY9RkmZOnUqgwYNKjetpKSE9u3bRx2xJVJbte2cc85hyZIlHHXUUeTm5nLwwQfTrl07cnNzyc3NpaCgoFrtvfLKKyxYsKDs/2uvvTamsd5joaAuItVTWgpXXQW33gpjxsC0aZCZCSedBL/+NWzalOgKRUSSWmZmJnl5ecydO5fGjRvz6KOPlrvdOceuXbuq3e7pp5/OzTffXOntNQ3qkQwdOpSioqJyofe9996jd+/edOjQoVaWURPz5s2jtLSUQw45hM8//5y8vDzuvPNOzjvvPPLy8sjLy6NLly7VarNiUP/tb38b8WRNNaGgLiKx27YNzjsPHnnEd3mZMAGGDIGvvoLf/Q4efRQOPxw2b050pSIie+3aa+G442r3cu211athyJAhLF68mIKCAnr27Mmvf/1r+vfvT2FhIVOmTGHQoEH079+fc889l03BjpK3336b7OxsjjnmGF555ZWytiZMmMBVV10FwHfffcdZZ51FTk4OOTk5fPrpp9x88818++235ObmcsMNNwBw3333ccQRR9C3b19uu+22srb+9Kc/0aNHD0466SQWLly4R90NGjTg3HPP5YUXXiibNnHiREaPHg3A448/zhFHHEFOTg6jRo2K+KvBcccdR+jkk2vXri0L0KWlpdxwww1ldf3jH/8AYOXKlQwdOrTs14iPP/54jzafffZZzjjjjCq3+1tvvVW2bc877zw2B59rN9xwA7169aJv377cdNNNfPzxx7z55ptcd911ZXvju3XrxsqVK1mzZk2Vy6mKgrqIxG7MGHj5ZXjgAfjf/wUzPz0zE/76V3j9dVi0CJ54IrF1ioikgJKSEt566y369OkDwMKFCxkzZgxfffUVzZs35+677+a9995j1qxZDBgwgPvvv59t27bxy1/+ktdff52PP/6YVatWRWz76quv5thjj2X27NnMmjWLww47jLFjx9KtWzfy8vK47777mDJlCvn5+XzxxRfk5eUxc+ZMpk2bxsyZM5k4cSJfffUVr7zyCl9++WXEZYwePZqJEycCsH37dt58801GjRoFwNlnn82XX37J7Nmz6dmzJ09U43PjiSeeoFWrVnz55Zd8+eWXPP744yxdupTnnnuO4cOHk5eXx+zZs8nNzd1j3unTp3P44YdHbX/16tWMHTuW999/n1mzZtG3b18eeughvvvuO958803mzZvHnDlzuOWWWxgyZAinnnoqDzzwQLm98f369ePTTz+NeZ0qE9dx1EUkhfHpBSYAACAASURBVCxdCpMmwe9/X/kuoZEj4ZhjfGj/1a+gUaO6rVFEpBY9+GBilrt169aykDlkyBAuu+wyVqxYQefOnRk4cCAAn332Gd988w1HH300ADt27GDQoEEsWLCArl270r17dwB+/vOf89hjj+2xjA8++ICnnnoK8H3iW7VqxQ8//FDuPlOmTGHKlCn069cPgE2bNpGfn8/GjRs566yzaNasGeC71ERyxBFHsGnTJhYuXMj8+fMZOHAgbdq0AWDu3Ln84Q9/YP369WzatInhw4fHvH2mTJnCnDlzmDRpEgAbNmwgPz+fI444gksvvZSdO3dy5plnRgzqK1eupF27dlHb//TTT/nmm28YPHgw4LftMcccw7777kuDBg345S9/yciRI8v6/key//77s2LFipjXqTIK6iISmyee8HvQr7wy+v1uvhlOOw0mToQLL6yb2kREUkioj3pFzZs3L/vbOcfJJ5/M888/X+4+eXl5WOjXzr3knOOWW27hiiuuKDf9wQcfjHkZ559/PhMnTmT+/Pll3V4ALr74Yl599VVycnKYMGECU6dO3WPehg0blvXF37ZtW7m6/v73v0cM99OmTeM///kPF154ITfccANjxowpd3tmZma5tiJxzjFixAiefvrpPW6bMWMG7777LhMnTmTcuHFMmTIlYhvbtm0jMzMz6nJioa4vIlK1khIYPx5OOQUOOij6fU89FXr39l1janCwk4iIVG3gwIFMnz6dxYsXA7BlyxYWLVpEdnY2S5cu5dtvvwXYI8iHnHjiiYwbNw7wfb5//PFHWrZsycaNG8vuM3z4cMaPH1/W9724uJjVq1czdOhQJk+ezNatW9m4cSOvv/56pXWOHj2aZ555hg8++KDcnveNGzfSoUMHdu7cybPPPhtx3i5dujBz5kyAsr3nobrGjRvHzp07AVi0aBGbN29m2bJl7L///vzyl7/ksssuY9asWXu02bNnz7JtVpnBgwfz0UcfsWTJEgA2b95c9kvCjz/+yGmnncYDDzzAV199BbDHdgvV1Lt376jLiYWCuohU7T//gZUr4fLLq76vGdx0E8yb5+cTEZFa165dOyZMmMDo0aPp27cvAwcOZMGCBTRt2pTHHnuMkSNHcswxx9C5c+eI8z/00EN8+OGH9OnTh8MPP5x58+bRtm1bjj76aHr37s0NN9zAsGHD+NnPfsagQYPo06cP55xzDhs3biw7wDI3N5dRo0YxZMiQSuvs1asXzZo144QTTij3i8Bdd93FUUcdxcknn0x2dnbEea+//nrGjRvH4MGDWbt2bdn0X/ziF/Tq1Yv+/fvTu3dvrrjiCkpKSpg6dSq5ubn069ePl19+mWuuuWaPNkeOHBlx73249u3b88QTT3DeeeeRk5PD4MGDWbRoERs2bGDkyJHk5ORwwgkncP/99wP+y8if//znsoNJt2/fTkFBQVmXob1hzrm9biQVDRgwwIWONBZJeyNHQl4eLFsGDWPoMbdzJ3TvDh07wvTpuw86FRGp5+bPn0/Pnj0TXYbEydatWzn++OOZPn06GRkZcVnGSy+9xDfffFNulJyQSM8vM5vpnBsQqS3tUReR6JYvh7fegksvjS2kgz+I9Prr4b//hU8+iW99IiIiMcrMzOSOO+6guLg4bstwznHdddfVSlsK6iISXWjIrMsuq958l14K++3n+6qLiCQR9TZIbcOHD+fggw+OW/s//elP2WefffaYXpPnlYK6iFQudBDp8OFQzTO10awZXH2176cedsY2EZH6rGnTpqxbt05hXWqVc45169bRtGnTas2n4RlFpHJvvw1FRfC3v9Vs/ksvhT/+EV57DSo5WEhEpD7p1KkTRUVFtXJWSZFwTZs2pVOnTtWaRweTVkIHk4oAp58OX3wBhYU1P3lRbi60bg1VHGUvIiKSjnQwqYhU36ZN/iDSCy/cuzOMnnqqP6B0/fraq01ERCQNKKiLSGT//a/vo37SSXvXzsiRUFoK775bO3WJiIikCQV1EYnso48gIwMGD967do46Ctq00cmPREREqklBXUQimzYN+veHli33rp2GDf2oMW+9Bbt2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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Title='Distribution Plot of Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
"DistributionPlot(y_test,yhat_test,\"Actual Values (Test)\",\"Predicted Values (Test)\",Title)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figur 2: Plot of predicted value using the test data compared to the test data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Comparing Figure 1 and Figure 2; it is evident the distribution of the test data in Figure 1 is much better at fitting the data. This difference in Figure 2 is apparent where the ranges are from 5000 to 15 000. This is where the distribution shape is exceptionally different. Let's see if polynomial regression also exhibits a drop in the prediction accuracy when analysing the test dataset.</p>"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.preprocessing import PolynomialFeatures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h4>Overfitting</h4>\n",
"<p>Overfitting occurs when the model fits the noise, not the underlying process. Therefore when testing your model using the test-set, your model does not perform as well as it is modelling noise, not the underlying process that generated the relationship. Let's create a degree 5 polynomial model.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's use 55 percent of the data for testing and the rest for training:"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=0.45, random_state=0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will perform a degree 5 polynomial transformation on the feature <b>'horse power'</b>. "
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"PolynomialFeatures(degree=5, include_bias=True, interaction_only=False)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pr = PolynomialFeatures(degree=5)\n",
"x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
"x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
"pr"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's create a linear regression model \"poly\" and train it."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None,\n",
" normalize=False)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly = LinearRegression()\n",
"poly.fit(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see the output of our model using the method \"predict.\" then assign the values to \"yhat\"."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6728.65584216, 7307.98804276, 12213.78788015, 18893.2476361 ,\n",
" 19995.95145897])"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"yhat = poly.predict(x_test_pr)\n",
"yhat[0:5]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's take the first five predicted values and compare it to the actual targets. "
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted values: [ 6728.65584216 7307.98804276 12213.78788015 18893.2476361 ]\n",
"True values: [ 6295. 10698. 13860. 13499.]\n"
]
}
],
"source": [
"print(\"Predicted values:\", yhat[0:4])\n",
"print(\"True values:\", y_test[0:4].values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We will use the function \"PollyPlot\" that we defined at the beginning of the lab to display the training data, testing data, and the predicted function."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"image/png": "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6Ne//rV+8YtfaOXKlerXr59uuOGGSo997733asKECVq8eLGKi4t1+PBhzZkzRxs2bFB6erokadmyZcrMzNSaNWtkrdXVV1+tjz/+WG3bttXChQv11VdfqaioSHFxcRo1alSlrzN37ly99tprkqRHH31Ul112WbXvecuWLfrggw906NAhDRw4UHfeeae+/vprJSUl6bPPPlOXLl20f/9+derUSVdffbWuuuoqTZkypdwxjh49qltvvVUpKSkaMGCApk+frmeffVb333+/JKlLly768ssv9cwzz+jxxx/XCy+8UKO/j+owkg4AANDMHTlyRLGxsfJ4PIqMjNSMGTMkSVFRURozZowk6YsvvtCmTZs0btw4xcbGav78+crOztaWLVvUp08f9e/fX8YY3XTTTZW+xsqVK3XnnXdK8s+Bj4iIOGmbZcuWadmyZRo5cqTi4uK0ZcsWZWZm6pNPPtF1112n8PBwtW/fXldffXWV76XsdJdTBXRJuvLKK9WmTRt16dJF3bp10+7du7Vy5UpNmTJFXbp0kSR16tSp2mNs3bpVffr00YABAyRJt9xyiz7++OMTz19//fWSpFGjRikrK+uUPdUEI+kAAACNpKYj3vWtdE56RW3btj1x31qrSy65RK+//nq5bdLT02WMqZc+rLV66KGHdMcdd5Srz5s377Reo1WrVifm1B89erTcc23atDlxPzg4WEVFRbLW1ur1rLXVPl/6GqXHrw+MpAMAAEBjxozRZ599pm3btkmSCgoK9PXXX2vQoEH69ttvtX37dkk6KcSXio+P17PPPitJKi4u1sGDB9WuXTsdOnToxDaXXXaZXnrppRNz3b/77jvt2bNHF1xwgRYvXqwjR47o0KFDWrp0aa16j46OVlpamiTprbfeOuX28fHxWrRokfLy8iRJ+/fvl6ST+i01aNAgZWVlnfizefXVVzVhwoRa9VhbhHQAAACoa9eueuWVV3TjjTdq+PDhGjNmjLZs2aLQ0FAlJyfryiuv1Pjx4xUVFVXp/k8++aQ++OADxcTEaNSoUdq4caM6d+6scePGadiwYXrwwQd16aWX6mc/+5nGjh2rmJgYTZkyRYcOHVJcXJxuuOEGxcbG6ic/+YnOP//8WvU+e/Zs3XfffTr//PMVHBx8yu2HDh2qxMRETZgwQSNGjNCvfvUrSdK0adP02GOPaeTIkSc+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\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train, y_test, poly,pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figur 4 A polynomial regression model, red dots represent training data, green dots represent test data, and the blue line represents the model prediction. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the estimated function appears to track the data but around 200 horsepower, the function begins to diverge from the data points. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" R^2 of the training data:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5567716902126982"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly.score(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" R^2 of the test data:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"-29.871341600352796"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"poly.score(x_test_pr, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see the R^2 for the training data is 0.5567 while the R^2 on the test data was -29.87. The lower the R^2, the worse the model, a Negative R^2 is a sign of overfitting."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how the R^2 changes on the test data for different order polynomials and plot the results:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Text(3, 0.75, 'Maximum R^2 ')"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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94/KysqkyzDr8ubNm8eAAQPo2bMnBxxwACtWrKBHjx5s2bKFkSNHUl9fz6pVq9i9ezdFRUVUVlbSvXt33nrrLbZt20ZlZSXbtm1j+fLlHHnkkWzYsIGtW7dy2GGHUVtbiyS2b9/Ozp07qaysZP369dTX11NeXs6e/8fnzZvHcccdB8DGjRupq6ujsrKy1f0zLVq0iMGDB1NeXs727dtZtmwZY8aMAWD9+vXU1dUxbNiwd993xYoVjBgxgrKy911kmK1bt/Laa69xxBFH5PTfvyPNnTv37YioyDozIrrMY9y4cWFmuVdeXh4vv/xyfOxjH4tt27bFscceG08++WScf/75ERFRV1cXu3btioiIGTNmxEc/+tGIiGhsbIzTTjstHnzwwRg3blw888wzERFx7733xnXXXRcREVdddVVceumlsXv37nj44Yejd+/e8corr0RjY2Mcf/zxMW/evHdr2OPXv/51XHXVVW3qn+mMM86IOXPmRETEHXfcEbfeemu7/l2uu+66+OpXv9quvkkBaqKZz9SSXCZT+uJedwHFpE7C+UaT+V8kdWEzgBLgSKAiIjZIqiV1HHkj0BAR1bms1cza5phjjqG2tpZf/vKXfPCDH3zfvLq6Oq666iqWLFmCJHbtSl3RpKioiPvuu49jjjmGa6+9lgkTsl+A94ILLkASRx99NAMHDuToo48GYMyYMdTW1jJ27N7Pq2xP/yuvvJL6+noaGxt58cUX2/zv8fOf/5yamhpmzZrV5r75Kme/QSh1B667SV2tczRwuTIuVwwQEf8ZEWMjYiypewLMiogNGU3OTM93OJjloQsvvJAvfOELXH755e+b/uUvf5kzzzyT+fPn8/vf/57t298753DJkiX06tWLNWvWNPu+3bp1A1KBsuf5ntcNDal7FWWeLJ75/q3t39QvfvELVqxYwRVXXMF111231/VuaubMmXz961/nkUceed/yCl0uf6QeDyyN1JUmd5I6w/OivbS/HPhlDusxsw529dVX85WvfOXdb+h71NXVMWhQ6krn99133/um33DDDcyePZv169fzm9/8pt3LHjhwIAsXLmT37t089NBD7X6fTKWlpXzta1/jueeeY+HCha3qM2/ePK699loeeeQRBgwY0CF15ItcBsQgMq5sCaymmWvjS+pJ6lIHmafnB6nLAcyVNKW5hUiaotSNXmrW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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"Rsqu_test = []\n",
"\n",
"order = [1, 2, 3, 4]\n",
"for n in order:\n",
" pr = PolynomialFeatures(degree=n)\n",
" \n",
" x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
" \n",
" x_test_pr = pr.fit_transform(x_test[['horsepower']]) \n",
" \n",
" lr.fit(x_train_pr, y_train)\n",
" \n",
" Rsqu_test.append(lr.score(x_test_pr, y_test))\n",
"\n",
"plt.plot(order, Rsqu_test)\n",
"plt.xlabel('order')\n",
"plt.ylabel('R^2')\n",
"plt.title('R^2 Using Test Data')\n",
"plt.text(3, 0.75, 'Maximum R^2 ') "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see the R^2 gradually increases until an order three polynomial is used. Then the R^2 dramatically decreases at four."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following function will be used in the next section; please run the cell."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"def f(order, test_data):\n",
" x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, test_size=test_data, random_state=0)\n",
" pr = PolynomialFeatures(degree=order)\n",
" x_train_pr = pr.fit_transform(x_train[['horsepower']])\n",
" x_test_pr = pr.fit_transform(x_test[['horsepower']])\n",
" poly = LinearRegression()\n",
" poly.fit(x_train_pr,y_train)\n",
" PollyPlot(x_train[['horsepower']], x_test[['horsepower']], y_train,y_test, poly, pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following interface allows you to experiment with different polynomial orders and different amounts of data. "
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6b8494c9d8ab44dc9d34247ea1b1de5c",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(IntSlider(value=3, description='order', max=6), FloatSlider(value=0.45, description='tes…"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<function __main__.f(order, test_data)>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"interact(f, order=(0, 6, 1), test_data=(0.05, 0.95, 0.05))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4a):</h1>\n",
"\n",
"<b>We can perform polynomial transformations with more than one feature. Create a \"PolynomialFeatures\" object \"pr1\" of degree two?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"pr1=PolynomialFeatures(degree=2)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4b): </h1>\n",
"\n",
"<b> \n",
" Transform the training and testing samples for the features 'horsepower', 'curb-weight', 'engine-size' and 'highway-mpg'. Hint: use the method \"fit_transform\" \n",
"?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<!-- The answer is below:\n",
"\n",
"x_train_pr1=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"x_test_pr1=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']])\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4c): </h1>\n",
"<b> \n",
"How many dimensions does the new feature have? Hint: use the attribute \"shape\"\n",
"</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"There are now 15 features: x_train_pr1.shape \n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4d): </h1>\n",
"\n",
"<b> \n",
"Create a linear regression model \"poly1\" and train the object using the method \"fit\" using the polynomial features?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"poly1=linear_model.LinearRegression().fit(x_train_pr1,y_train)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" <div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4e): </h1>\n",
"<b>Use the method \"predict\" to predict an output on the polynomial features, then use the function \"DistributionPlot\" to display the distribution of the predicted output vs the test data?</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"yhat_test1=poly1.predict(x_test_pr1)\n",
"Title='Distribution Plot of Predicted Value Using Test Data vs Data Distribution of Test Data'\n",
"DistributionPlot(y_test, yhat_test1, \"Actual Values (Test)\", \"Predicted Values (Test)\", Title)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #4f): </h1>\n",
"\n",
"<b>Use the distribution plot to determine the two regions were the predicted prices are less accurate than the actual prices.</b>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"The predicted value is lower than actual value for cars where the price $ 10,000 range, conversely the predicted price is larger than the price cost in the $30, 000 to $40,000 range. As such the model is not as accurate in these ranges .\n",
" \n",
"-->\n",
"\n",
"<img src = \"https://ibm.box.com/shared/static/c35ipv9zeanu7ynsnppb8gjo2re5ugeg.png\" width = 700, align = \"center\">\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ref3\">Part 3: Ridge regression</h2> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" In this section, we will review Ridge Regression we will see how the parameter Alfa changes the model. Just a note here our test data will be used as validation data."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's perform a degree two polynomial transformation on our data. "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"pr=PolynomialFeatures(degree=2)\n",
"x_train_pr=pr.fit_transform(x_train[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])\n",
"x_test_pr=pr.fit_transform(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg','normalized-losses','symboling']])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Let's import <b>Ridge</b> from the module <b>linear models</b>."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import Ridge"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create a Ridge regression object, setting the regularization parameter to 0.1 "
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"RigeModel=Ridge(alpha=0.1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Like regular regression, you can fit the model using the method <b>fit</b>."
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/linear_model/ridge.py:125: LinAlgWarning: Ill-conditioned matrix (rcond=1.02972e-16): result may not be accurate.\n",
" overwrite_a=True).T\n"
]
},
{
"data": {
"text/plain": [
"Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RigeModel.fit(x_train_pr, y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Similarly, you can obtain a prediction: "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"yhat = RigeModel.predict(x_test_pr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's compare the first five predicted samples to our test set "
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"predicted: [ 6567.83081933 9597.971514 20836.22326844 19347.69543463]\n",
"test set : [ 6295. 10698. 13860. 13499.]\n"
]
}
],
"source": [
"print('predicted:', yhat[0:4])\n",
"print('test set :', y_test[0:4].values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We select the value of Alfa that minimizes the test error, for example, we can use a for loop. "
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Rsqu_test = []\n",
"Rsqu_train = []\n",
"dummy1 = []\n",
"ALFA = 10 * np.array(range(0,1000))\n",
"for alfa in ALFA:\n",
" RigeModel = Ridge(alpha=alfa) \n",
" RigeModel.fit(x_train_pr, y_train)\n",
" Rsqu_test.append(RigeModel.score(x_test_pr, y_test))\n",
" Rsqu_train.append(RigeModel.score(x_train_pr, y_train))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can plot out the value of R^2 for different Alphas "
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f631b30f4a8>"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtcAAAJNCAYAAAD6c1l4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde5RlZWHn/d/TdenqK91Agwi03Too0IBcKkSDoxCVoBPjJSbByyT6TiQSnWSyMgwkk8SoK++bd0UdddQY4jiTcUh8DYpilvcMihoc6UZULl64CS0KDQj0vau6nvePc0716aL6evbp6q7+fNY66+yzL6eew1b5uuups0utNQAAQO/mzPQAAABgthDXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0JDBmR5Ak44++ui6YsWKmR4GAACz2Jo1ax6qtS6bbtusiusVK1Zk9erVMz0MAABmsVLKj3a1zbQQAABoiLgGAICGiGsAAGjIrJpzDQAwk8bGxrJ27dps2bJlpodCA0ZGRnLCCSdkaGhor48R1wAADVm7dm0WLVqUFStWpJQy08OhB7XWPPzww1m7dm1Wrly518eZFgIA0JAtW7bkqKOOEtazQCklRx111D7/FkJcAwA0SFjPHvtzLsU1AMBhbOHChUmS+++/P6985Sun3ef888/f471E3v3ud2fTpk2Tr1/84hfn0UcfbW6gbZ3x7sqjjz6aD3zgA43/3L0lrgEAyJOf/ORcffXV+3381Lj+zGc+kyVLljQxtH0irgEAaMTll1++U1j++Z//ed75zndmw4YNef7zn5+zzz47p59+ej71qU894dh77rknp512WpJk8+bNufjii3PGGWfkN37jN7J58+bJ/S699NKMjo5m1apVectb3pIkee9735v7778/F1xwQS644IIkrTtnP/TQQ0mSd73rXTnttNNy2mmn5d3vfvfkzzvllFPyhje8IatWrcqFF16408/puPvuu/PsZz87P/dzP5c//dM/nVy/q890xRVX5M4778yZZ56Zyy67bK8+e6NqrbPmcc4551QAgJly2223zejPv+mmm+pzn/vcydennHJK/dGPflTHxsbqY489Vmutdd26dfVpT3tanZiYqLXWumDBglprrXfffXddtWpVrbXWd77znfX1r399rbXWb3/723VgYKDeeOONtdZaH3744VprrePj4/V5z3te/fa3v11rrfUpT3lKXbdu3eTP7rxevXp1Pe200+qGDRvq+vXr66mnnlpvuummevfdd9eBgYH6rW99q9Za66/92q/Vj3zkI0/4TC95yUvq3/3d39Vaa33f+943Od5dfabuz7G7/fbWdOc0yeq6ix71VXwAAH3w1k/fmtvuf7zR9zz1yYvzlpes2uX2s846Kw8++GDuv//+rFu3LkuXLs3y5cszNjaWP/7jP87111+fOXPm5Mc//nEeeOCBPOlJT5r2fa6//vr83u/9XpLkjDPOyBlnnDG57WMf+1iuvPLKjI+P5yc/+Uluu+22nbZP9bWvfS0vf/nLs2DBgiTJK17xinz1q1/Nr/zKr2TlypU588wzkyTnnHNO7rnnnicc//Wvfz0f//jHkyT/9t/+21x++eVJWheIp/tMU+1qv1199l6JawCAWeSVr3xlrr766vz0pz/NxRdfnCS56qqrsm7duqxZsyZDQ0NZsWLFHr9ibrpvyrj77rvzjne8IzfeeGOWLl2a173udXt8n9aF3unNnTt3cnlgYGDaaSG7Gsvefqb9+ey9ENcAAH2wuyvM/XTxxRfnDW94Qx566KF85StfSZI89thjOeaYYzI0NJTrrrsuP/rRj3b7Hs997nNz1VVX5YILLsgtt9yS73znO0mSxx9/PAsWLMgRRxyRBx54IJ/97Gdz/vnnJ0kWLVqU9evX5+ijj37Ce73uda/LFVdckVprrrnmmnzkIx/Z689z3nnn5aMf/Whe+9rX5qqrrppcv6vP1BnHnvbrF3ENADCLrFq1KuvXr8/xxx+f4447Lknymte8Ji95yUsyOjqaM888MyeffPJu3+PSSy/N61//+pxxxhk588wzc+655yZJnvnMZ+ass87KqlWr8tSnPjXnnXfe5DGXXHJJXvSiF+W4447LddddN7n+7LPPzute97rJ9/jt3/7tnHXWWdNOAZnOe97znrz61a/Oe97znvzqr/7q5Ppdfaajjjoq5513Xk477bS86EUvyuWXX75Pn71XZXeX6g81o6OjdU/fwQgA0C+33357TjnllJkeBg2a7pyWUtbUWken299X8QEAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXPdq8+bkwguTz3xmpkcCABzmHn300XzgAx/Yr2Nf/OIX59FHH93tPn/2Z3+WL33pS/v1/lOtWLEip59+ek4//fSceuqp+ZM/+ZNs3bp1t8f08vkOFHHdq/vuS774xeTlL289AwDMkN3F5/bt23d77Gc+85ksWbJkt/u87W1vywte8IL9Ht9U1113Xb773e/mm9/8Zu66665ccsklu91fXB8OOvemHxhIXvrSpH2bUQCAA+2KK67InXfemTPPPDOXXXZZvvzlL+eCCy7Iq1/96px++ulJkpe97GU555xzsmrVqlx55ZWTx65YsSIPPfRQ7rnnnpxyyil5wxvekFWrVuXCCy/M5s2bkySve93rcvXVV0/u/5a3vCVnn312Tj/99Hzve99Lkqxbty4vfOELc/bZZ+d3fud38pSnPCUPPfTQbse9cOHCfPCDH8wnP/nJPPLII9mwYUOe//znT773pz71qWk/3672m0niuledX1+8//3JypXJv/k3yb/8y8yOCQA4LP3lX/5lnva0p+Xmm2/OX/3VXyVJvvnNb+Yv/uIvcttttyVJPvzhD2fNmjVZvXp13vve9+bhhx9+wvv88Ic/zJve9KbceuutWbJkST7+8Y9P+/OOPvro3HTTTbn00kvzjne8I0ny1re+Nb/4i7+Ym266KS9/+ctz77337tXYFy9enJUrV+aHP/xhRkZGcs011+Smm27Kddddlz/8wz9MrfUJn29X+82kwRn96bNBJ65POCH50peS5z0v+aVfSv7rf01+67eSUmZ2fADAzPgP/yG5+eZm3/PMM5N3v3ufDjn33HOzcuXKydfvfe97c8011yRJ7rvvvvzwhz/MUUcdtdMxK1euzJlnnpkkOeecc3LPPfdM+96veMUrJvf5xCc+kST52te+Nvn+F110UZYuXbrXY+2Eca01f/zHf5zrr78+c+bMyY9//OM88MAD0+4/3X5PetKT9vpnNs2V6151poWMjCTHHZd8+cvJOeckr399a5pI+1ckAAAzYcGCBZPLX/7yl/OlL30pN9xwQ7797W/nrLPOypZOy3SZO3fu5PLAwEDGx8enfe/Oft377O+V4/Xr1+eee+7J05/+9Fx11VVZt25d1qxZk5tvvjnHHnvstOPc2/0OJFeue9W5ct35D+GTn5z88z8n73pX8ra3JatWJRdfnLzxjclznuNKNgAcLvbxCnMTFi1alPXr1+9y+2OPPZalS5dm/vz5+d73vpdvfOMbjY/hOc95Tj72sY/l8ssvzxe+8IX87Gc/2+MxGzZsyO/+7u/mZS97WZYuXZrHHnssxxxzTIaGhnLdddflRz/6UZInfr5d7TeTXLnuVfeV646BgeSyy5I770x+//eTf/qn5LnPTU45JfmjP0puuCHZw1/sAgDsq6OOOirnnXdeTjvttFx22WVP2H7RRRdlfHw8Z5xxRv70T/80z3rWsxofw1ve8pZ84QtfyNlnn53PfvazOe6447Jo0aJp973gggty2mmn5dxzz83y5cvzN3/zN0mS17zmNVm9enVGR0dz1VVX5eSTT5728+1qv5lUZnrSd5NGR0fr6tWrD+wP/fu/T17zmtb0j2c8Y/p9Nm5MPvax5CMfSa6/vhXWCxcmz3pWct55rWkkp57a+oPIOf7/DgAcqm6//faccsopMz2MGbV169YMDAxkcHAwN9xwQy699NLc3PTc8wNounNaSllTax2dbn/TQno1dVrIdBYsaM3Bfv3rk0cfTT7/+VZkf/3rydvfnkxMtPabN691dfsZz0ie8pRk+fIdz8uXJ4sWmVYCABzU7r333vz6r/96JiYmMjw8nL/927+d6SEdUOK6V9NNC9mdJUuS3/iN1iNJ1q9PbrklufXW5LbbWs/f+Ebyj/+YTP3jgZGR5JhjkmXLdn4cfXRyxBHJ4sWt5+7lzvOgUw0A9N9JJ52Ub33rWzM9jBmjuHq1N1eud2fRouTZz249um3fnvz0p8m99+54PPhg67FuXetx++2t502b9vxz5s1L5s/f8eh+vatt8+Ylw8Otx9y5O5ane72nfQYHW3PRXXkHAGYxcd2rfb1yvbcGBpLjj289pob3VJs3J48/njz22I7n7uXO8+bNrRDftGnH8saNyUMPPXF9+05MjRsYaIV25zH19dTHnrZP3WdgYMdjzpzWo7M89Xlv1/VjW+dRyvTPu9vWz+fOA4D9VmtN8b+ls8L+/G2iuO5Vr1eumzBvXutx7LHNvefEROuzbdu282Nv1k33evv21jSXXT32ZfuWLbvePjbWGnvnsX379M/dy7Poj3ob049439uw39Uj2bv9DvR7HezvNxNj6+zTve/u1jnGMQfqmANgZGQkDz/8cI466qgI7ENbrTUPP/xwRvbxAqq47tXWra0rprPtWz7mzNkR7bNdrbsO791F+f7u3x310z3vbtuh/rynfXb16JynfXns6j33572aHtuBej/giZqK+Omek5ywdGnWXn551j31qc2F/Uy/x0z//N2918KFrUefjIyM5IQTTtinY8R1r7ZsaX5KCAdWKTumksBsdCDDv7NP9767W+cYxxyKx0z33F4eSrLyBz9IfvCDvT92ynv09Dyb3mNv3us3fzN57WtzMBHXvdq6dWanhADsyQH+tTjA4WyWzWWYAeIaAIA2cd0r00IAAGgT171y5RoAgDZx3StXrgEAaBPXvXLlGgCAtr7GdSnlolLK90spd5RSrphm+xGllE+XUr5dSrm1lPL6rm33lFK+W0q5uZSyup/j7MmxxyYrVsz0KAAAOAj07av4SikDSd6f5IVJ1ia5sZRyba31tq7d3pTktlrrS0opy5J8v5RyVa11W3v7BbXWh/o1xkZ85CMzPQIAAA4S/bxyfW6SO2qtd7Vj+aNJXjpln5pkUWndH3RhkkeSjPdxTAAA0Df9jOvjk9zX9Xpte1239yU5Jcn9Sb6b5PdrrRPtbTXJF0opa0opl/RxnAAA0Ih+xvV0twOrU17/UpKbkzw5yZlJ3ldKWdzedl6t9ewkL0ryplLKc6f9IaVcUkpZXUpZvW7duoaGDgAA+66fcb02yYldr09I6wp1t9cn+URtuSPJ3UlOTpJa6/3t5weTXJPWNJMnqLVeWWsdrbWOLlu2rOGPAAAAe6+fcX1jkpNKKStLKcNJLk5y7ZR97k3y/CQppRyb5BlJ7iqlLCilLGqvX5DkwiS39HGsAADQs759W0itdbyU8uYkn08ykOTDtdZbSylvbG//YJK3J/kfpZTvpjWN5PJa60OllKcmuab1d44ZTPL3tdbP9WusAADQhFLr1GnQh67R0dG6evXB+5XYAAAc+kopa2qto9Ntc4dGAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaEhf47qUclEp5fullDtKKVdMs/2IUsqnSynfLqXcWkp5/d4eCwAAB5u+xXUpZSDJ+5O8KMmpSV5VSjl1ym5vSnJbrfWZSc5P8s5SyvBeHgsAAAeVfl65PjfJHbXWu2qt25J8NMlLp+xTkywqpZQkC5M8kmR8L48FAICDSj/j+vgk93W9Xtte1+19SU5Jcn+S7yb5/VrrxF4eCwAAB5V+xnWZZl2d8vqXktyc5MlJzkzyvlLK4r08tvVDSrmklLK6lLJ63bp1vYwXAAB60s+4XpvkxK7XJ6R1hbrb65N8orbckeTuJCfv5bFJklrrlbXW0Vrr6LJlyxobPAAA7Kt+xvWNSU4qpawspQwnuTjJtVP2uTfJ85OklHJskmckuWsvjwUAgIPKYL/euNY6Xkp5c5LPJxlI8uFa662llDe2t38wyduT/I9SynfTmgpyea31oSSZ7th+jRUAAJpQap12KvMhaXR0tK5evXqmhwEAwCxWSllTax2dbps7NAIAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBD+hrXpZSLSinfL6XcUUq5Yprtl5VSbm4/bimlbC+lHNnedk8p5bvtbav7OU4AAGjCYL/euJQykOT9SV6YZG2SG0sp19Zab+vsU2v9qyR/1d7/JUn+oNb6SNfbXFBrfahfYwQAgCb188r1uUnuqLXeVWvdluSjSV66m/1fleQf+jgeAADoq37G9fFJ7ut6vba97glKKfOTXJTk412ra5IvlFLWlFIu6dsoAQCgIX2bFpKkTLOu7mLflyT5+pQpIefVWu8vpRyT5IullO/VWq9/wg9phfclSbJ8+fJexwwAAPutn1eu1yY5sev1CUnu38W+F2fKlJBa6/3t5weTXJPWNJMnqLVeWWsdrbWOLlu2rOdBAwDA/upnXN+Y5KRSyspSynBaAX3t1J1KKUckeV6ST3WtW1BKWdRZTnJhklv6OFYAAOhZ36aF1FrHSylvTvL5JANJPlxrvbWU8sb29g+2d315ki/UWjd2HX5skmtKKZ0x/n2t9XP9GisAADSh1LqradCHntHR0bp6ta/EBgCgf0opa2qto9Ntc4dGAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaEhf47qUclEp5fullDtKKVdMs/2yUsrN7cctpZTtpZQj9+ZYAAA42PQtrkspA0nen+RFSU5N8qpSyqnd+9Ra/6rWemat9cwkf5TkK7XWR/bmWAAAONj088r1uUnuqLXeVWvdluSjSV66m/1fleQf9vNYAACYcf2M6+OT3Nf1em173ROUUuYnuSjJx/f1WAAAOFj0M67LNOvqLvZ9SZKv11of2ddjSymXlFJWl1JWr1u3bj+GCQAAzehnXK9NcmLX6xOS3L+LfS/Ojikh+3RsrfXKWutorXV02bJlPQwXAAB608+4vjHJSaWUlaWU4bQC+tqpO5VSjkjyvCSf2tdjAQDgYDLYrzeutY6XUt6c5PNJBpJ8uNZ6aynlje3tH2zv+vIkX6i1btzTsf0aKwAANKHUuqtp0Iee0dHRunr16pkeBgAAs1gpZU2tdXS6be7QCAAADRHXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0BBxDQAADRHXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0BBxDQAADRHXAADQEHENAAANEdcAANAQcQ0AAA0R1wAA0BBxDQAADRHXAADQEHENAAANEdcAANAQcQ0AAA3ZbVyXUgZKKb9TSnl7KeW8Kdv+pL9DAwCAQ8uerlz/TZLnJXk4yXtLKe/q2vaKvo0KAAAOQXuK63Nrra+utb47yc8nWVhK+UQpZW6S0v/hAQDAoWNPcT3cWai1jtdaL0lyc5L/nWRhPwcGAACHmj3F9epSykXdK2qtb0vy35Os6NegAADgULTbuK61vrbW+rlp1n+o1jrUv2EBAMChZ6++iq+UMtDvgQAAwKFuj3FdSlmU5FMHYCwAAHBI29P3XB+X5EtJrjwwwwEAgEPX4B62fzXJZbXWaw/EYAAA4FC2p2khP0ty/IEYCAAAHOr2FNfnJ3lRKeVNB2AsAABwSNvTV/FtTPIrSc46MMMBAIBD157mXKfWuj3Jbx+AsQAAwCFtr77neqpSykAp5TVNDwYAAA5le/oqvsWllD8qpbyvlHJhafn3Se5K8usHZogAAHBo2NO0kI+k9Y0hN6Q1NeSyJMNJXlprvbnPYwMAgEPKnuL6qbXW05OklPKhJA8lWV5rXd/3kQEAwCFmT3OuxzoL7T9svFtYAwDA9PZ05fqZpZTH28slybz265Kk1loX93V0AABwCNltXNdaBw7UQAAA4FC3X1/FBwAAPJG4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoSF/jupRyUSnl+6WUO0opV+xin/NLKTeXUm4tpXyla/09pZTvtret7uc4AQCgCbu9/XkvSikDSd6f5IVJ1ia5sZRyba31tq59liT5QJKLaq33llKOmfI2F9RaH+rXGAEAoEn9vHJ9bpI7aq131Vq3JflokpdO2efVST5Ra703SWqtD/ZxPAAA0Ff9jOvjk9zX9Xpte123pydZWkr5cillTSnlN7u21SRfaK+/pI/jBACARvRtWkiSMs26Os3PPyfJ85PMS3JDKeUbtdYfJDmv1np/e6rIF0sp36u1Xv+EH9IK70uSZPny5Y1+AAAA2Bf9vHK9NsmJXa9PSHL/NPt8rta6sT23+vokz0ySWuv97ecHk1yT1jSTJ6i1XllrHa21ji5btqzhjwAAAHuvn3F9Y5KTSikrSynDSS5Ocu2UfT6V5F+XUgZLKfOT/HyS20spC0opi5KklLIgyYVJbunjWAEAoGd9mxZSax0vpbw5yeeTDCT5cK311lLKG9vbP1hrvb2U8rkk30kykeRDtdZbSilPTXJNKaUzxr+vtX6uX2MFAIAmlFqnToM+dI2OjtbVq30lNgAA/VNKWVNrHZ1umzs0AgBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEP6GtellItKKd8vpdxRSrliF/ucX0q5uZRyaynlK/tyLAAAHEwG+/XGpZSBJO9P8sIka5PcWEq5ttZ6W9c+S5J8IMlFtdZ7SynH7O2xAABwsOnnletzk9xRa72r1rotyUeTvHTKPq9O8ola671JUmt9cB+OBQCAg0o/4/r4JPd1vV7bXtft6UmWllK+XEpZU0r5zX04FgAADip9mxaSpEyzrk7z889J8vwk85LcUEr5xl4e2/ohpVyS5JIkWb58+X4PFgAAetXPK9drk5zY9fqEJPdPs8/naq0ba60PJbk+yTP38tgkSa31ylrraK11dNmyZY0NHgAA9lU/4/rGJCeVUlaWUoaTXJzk2in7fCrJvy6lDJZS5if5+SS37+WxAABwUOnbtJBa63gp5c1JPp9kIMmHa623llLe2N7+wVrr7aWUzyX5TpKJJB+qtd6SJNMd26+xAgBAE0qt005lPiSNjo7W1atXz/QwAACYxUopa2qto9Ntc4dGAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGiGsAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGAICGDM70AAAAIElqrdm2fSJbxiaydWx7No9tz5axiWwZ2956jO9Y3jo2kVOfvDinHX/ETA97J+IaAIBp1VqzdTJo28/jU4J3bCJbx1vLm7d1B3Drees0+2/uBPL4zuu3jG9PrXs/vj94wdPFNQAAvRnf3grUze0ruJvbYbtjXQmn9VAAABiXSURBVHt5246Q3dK1Tyd2N++0bufI7cTvvsRut6GBkpGhgfZjTkYGdywvGhnM0QvnttYPDWReZ5/2/nMH50x77LzhOZnb9T5L5g83+w+2AeIaAKABtdaMba87x2xXvE6N4J33mdg5ijtXgbuu9G4e254t21pXjse273vxlpLMmwzZVpzOG269XjQymGWL5j4hckcG52TuLiJ3ZHCgvW3n/TvLA3NKH/4pH/zENQAw622fqNkytj2btu2I203bxne62tuJ2c3dQbttSgSPTUwGbnckd6ZDbJ/Y9+gdmFMmg7cTrfOGW6+XzB9uRfDQjnWT+w4NZGR4x1XfeU9YN9C1bk6GB+aklMMzeA8kcQ0AzLjtE3XHVd1t27NpbHzH8rYd8btp23g2j01k87bxndZv3k04b9rWmt6wrzrTGibDdrATrnNy1ILhjCzZOWa7r/rOmxK4I5Nx/MQIHhrw5W2zibgGAPaoE7+bto1ny7aJbBprxe2WdvxuGussj3ctb59+uTuc23G8P/E7f3hH+M4bGmi9Hh7I0QuHM394/k7rR9rPO5YHd1q/UwwPt6Y3DIpe9oO4BoBZovM1Zpu3bc/GbduzaWsrgDduG8+mra2Q7azbtG08G9uBu3Hr+OS2yXVTrvxu28f47czv7Q7XecODmTc0J8csGnlCEO9YHtyx3A7dnZcHJ68Qm+LAwUhcA8AB1ongTVt3ROzGzlXfKes2tyN4RxS3Y7mz/7btOx0zvg9zfocGSuYPD2ZBO3AXzG2F67JFc7N8eH7md676Dg9k/tBg1/LAlOXBzBues1MYzx0UvxyexDUA7MZEezrExq3j2dAO3A1bx3d6vakTv9Nc/W1dMW4/d4Xxvvzh264i+JhFI5NTHeYPD2bB3B3THRYMD7b3Hci8oem3DQ+a9gBNE9cAzCrbJ2prysPW7e34HW/H8Pau5fFs2NoJ4R3LG9qvN25txXRnusTefs/vbiP4KBEMhwNxDcCMGt8+kY3bdsRsZ3lHGHdtay9v2DbeCuOdArq1bfPY9r3+2fPbAbyg8zx3MMsWzs2KowazcO5g5g8PZuHcHdsWzG0F78K5g5k/t7WtFdMiGGgR1wDss1rr5PSI9Vt2TJFYv6X1vGHLWOt15yrxlinbu9bt7bdElJIsaF/1bQVxa/nJS0baV4N3xO7CKTHc2jaY+XMHJrfNHxrInMP0JhdA/4hrgMPI2PaJbJwmcte3nzdu3bG8YevYTkG8sWvfjVvHszdThocH52TR3MEsHGnF7cK5gznuiJHJwJ0M3eGBndZ1rih3B/G8oQF/IAcc9Poa16WUi5K8J8lAkg/VWv9yyvbzk3wqyd3tVZ+otb6tve2eJOuTbE8yXmsd7edYAQ5mExM167eOZ/2WsazfMp7HN7ee129tP2/pRPBYNm7dPrm8YcpV4725SlxKsnB4RxAvmDuYRSODedLiVhQvHBmcDOZOAC8aGczCuUNdy61tpkkAh5u+xXUpZSDJ+5O8MMnaJDeWUq6ttd42Zdev1lp/eRdvc0Gt9aF+jRHgQJiYqNmwrRPAYzs9P94dylumPo/n8fbyhq3je/w5wwNzdrpCvHBkMMcuGsnTlrUDuWv9TkE80ppO0Vk2XQJg//XzyvW5Se6otd6VJKWUjyZ5aZKpcQ1w0Kq1ZuO27TuF7+Obd0Tv1Ch+fJo43rB1fI/fNjE0ULJ4ZCiLRgazqP284uj5WTQy1LV+8An7LJ63Y9vcwYED8w8FgF3qZ1wfn+S+rtdrk/z8NPs9u5Ty7ST3J/mPtdZb2+trki+UUmqSv6m1XtnHsQKz2LbxiTy+ZSyPbR7L45vbz1vGJ18/vnmsa3t7fdf+e5pbPDin7By8I0NZfuT8rtfTxfDOweyGGwCzQz/jerp/S0z9V9RNSZ5Sa91QSnlxkk8mOam97bxa6/2llGOSfLGU8r1a6/VP+CGlXJLkkiRZvnx5c6MHDhqdq8ePbR7LY5vGpg3lx3d6vXMo7+mr2eYOzsnieUM5Yt5QFo8M5uiFw3nqsgXt10NZPK87hncEc+sq8pDbMAMwqZ9xvTbJiV2vT0jr6vSkWuvjXcufKaV8oJRydK31oVrr/e31D5ZSrklrmskT4rp9RfvKJBkdHd37210BB1QnkB/dtC2PbmrF76ObxvLo5tbrx7d0riI/8crx41vGd3s3u1KSRXMHuwJ5KE89emEWzxucfH3E/PbzvKH2fq39F48MZWTIdAoAmtHPuL4xyUmllJVJfpzk4iSv7t6hlPKkJA/UWmsp5dwkc5I8XEpZkGROrXV9e/nCJG/r41h7Nr59In/71btz4z2P5IwTjsjrfmFFlswfnulhQeMmJmrWbxmfjOJHN4/l0U3bdsRyO5gfm2bb+G4CeXhwzuSV4yPmDeXIBcNZefSCriDuCuXJQG49L5w7mAF/gAfAQaBvcV1rHS+lvDnJ59P6Kr4P11pvLaW8sb39g0lemeTSUsp4ks1JLm6H9rFJrmn/mnUwyd/XWj/Xr7E24QNfvjPv+uIPsuKo+bnu+w/mw1+7O//popPz6nOX+6t7Dkrj2yda0dsO38c6sdyO4sc2bZvc1v36sc1ju/3jvIVzWxG8ZH7rcfKTFueI+UNZ0lk3b7jr9XCWzG9FsqvHAMwGpe7pT9gPIaOjo3X16tUH/OduGdues9/+xZz/jGX5wGvOyfd++nje9unb8i93PpyfW7E0/88rTs+/OmbRAR8Xh4daazaPbc8jG1tx/MjGbfnZpm352cZteWRT68pxZ1vnavNjm8ayfjdf7VZKsnikE8NDOWL+cFccT3k9fyhHzNsRyUMDvtcYgNmtlLJmV/dgcYfGBvzLnQ9l07bt+Y2fa/1B5clPWpyrfvvnc/WatfmLz9yeF7/na/ndC56WS89/mq/KYrc685J/1gnkTWM7ljduyyM7rRubXLdtNzcGWTJ/KEvbV4iPWTSSpx+zqH3leLgrjttXkdvBvGhkyDQLANgP4roBN9z5cOYOzsmznnrk5LpSSn5t9MRccPIxedunb8u7v/TD/NN3fpK/fMXpGV1x5G7ejdmi1poNW8fzs41j+dmmVgS3riJ3BfOmbZPbO8vbtk8fyqUkS+YNZemC4SydP5zjl8zL6ccvztL5w+11Q13LwzlywXCOmCeSAeBAEtcNuGvdxqw8esG0V6WPXjg3733VWXn52cfnT665Ja/84A151bkn5s2/eFKOXzJvBkbL/qi15vEt4ztNsXikK5Af2bjz9ItOSI9tn37a1ZySnaJ4+ZHz88wTluyI5MlAbgfz/OEsFsoAcNAT1w24+6GNOfm43c+pvuAZx+QLf/DcvOuLP8j/vOGe/OPqtXnZWcfndb+wIqcdf8SBGShJdoTyz3YRxz+bfN4x/eLRTdt2+U0XA3NKO4BbUbzi6Pk5e8GSLJk/nCO7ryp3gnn+cBaNDPpDVwCYhcR1j8a2T+TeRzblRac/aY/7Lpg7mD/95VPz756zMldef1c+euO9uXrN2px2/OL86tkn5MJVT3I1ex/teyhv2+1Xwg0NlCyZv2OKxb86ZuHOUy7a0y2WzG99VdzSBcNZNHfQDUQAgCTiumcPPL4l4xM1Jy6dv9fHPHnJvPz5r6zKH7zg6fnkzT/OP3zz3rz107flrZ++Lacetzi/ePIx+bmVR+bs5UuyaGSoj6M/uGwbb301XOvR+m7kqaH8s42tKRd7E8qDc0qWLmhdKV4yf2gylDuvO3G8dPIKc+v7koUyALC/xHWPOneNGx7c968fO2L+UH7rF1bkt35hRe5ctyFfuu2BfPG2B/LXX7kz77vujswpydOPXZRnPKn9OHZRVhy9IE8+Yl7mDR983zpSa83W8Yms3zKejVvHJ++w17kbX+fRualIZ9vj7e9a3rRt17eo7oRy9xXlJV1zko9sR/JkPC8YckUZADjgxHWPOhdN5/QYcU9btjBPe97C/M7znpYNW8dz872P5pv3PJLvrH00N979SD518053js+RC4bz5CUjOWbRSPt7h3d8tdr84YEMD87J3MGBzB2ck7mDczI8OCcDc0p7vDUTNak1mah18nnr+PZsGZvI1vHt2To2kS1j27N1fCJbx1vLW8YmsnHreDZsG8+GLePZsLUV0eu7lnd3B74kGRlq3YVvybzWN1mceOT8HNG+017nc3Red+7SZ+oFAHCoENc9mmjfhKfJ7ls4dzDPOenoPOekoyfXPb5lLD98YH3ue2Rzfvzo5tzffjzw+Jb84IH1e7wpSK8G55TMHZyThSODWTB3MIvmDmbhyGCOWjA/C0d2vO7etnBu101H2repdhc+AGA2E9c9qpNx3d+rqotHhnLOU47MOU/Z9T5j7dtZb97WueK8PdvGJ7KtffV5+0RNKa2r7JPP7bHPKcnI0EDmDrWueI8M7Xzle9Bd9wAA9khc92jHtJCZHUeSDA3MydEL5870MAAADlsuR/aoNjTnGgCAQ5+47lFnzvXBcOUaAICZJa57NHGA5lwDAHDwE9c96kwLkdYAAIjrHplzDQBAh7ju0eSca/8kAQAOe5KwR+ZcAwDQIa57NGHONQAAbeK6R3Xyq/jkNQDA4U5c96h94VpcAwAgrns1MeEmMgAAtIjrHk3OuXblGgDgsCeue1Qnvy1khgcCAMCME9c9MucaAIAOcd2jyZvIaGsAgMOeuO6ROdcAAHSI6x5NmHMNAECbuO6Rm8gAANAhrnvUbmtzrgEAENe9mpiMa3UNAHC4E9c9MucaAIAOcd2jyZvIRF0DABzuxHWPJudc+ycJAHDYk4Q9MucaAIAOcd0jd2gEAKBDXPeoE9cx5xoA4LAnrnvke64BAOgQ1z2qcYdGAABaxHWPJiZaz+IaAABx3SM3kQEAoENc96gz51pcAwAgrntkzjUAAB3iukduIgMAQIe47pGbyAAA0CGuezThHjIAALSJ6x7Vas41AAAt4rpH1ZxrAADaxHWPzLkGAKBDXPdoYvJ7rtU1AMDhTlz3qLpDIwAAbeK6R+ZcAwDQIa57ZM41AAAdfY3rUspFpZTvl1LuKKVcMc3280spj5VSbm4//mxvjz1YuEMjAAAdg/1641LKQJL3J3lhkrVJbiylXFtrvW3Krl+ttf7yfh474zpXrgEAoJ9Xrs9Ncket9a5a67YkH03y0gNw7AHlJjIAAHT0M66PT3Jf1+u17XVTPbuU8u1SymdLKav28dgZt+MPGmd2HAAAzLy+TQtJMl1uTp1DcVOSp9RaN5RSXpzkk0lO2stjWz+klEuSXJIky5cv3//R7idzrgEA6Ojnleu1SU7sen1Ckvu7d6i1Pl5r3dBe/kySoVLK0XtzbNd7XFlrHa21ji5btqzJ8e+VCd9zDQBAWz/j+sYkJ5VSVpZShpNcnOTa7h1KKU8q7VsbllLObY/n4b059mCx4yYy6hoA4HDXt2khtdbxUsqbk3w+yUCSD9daby2lvLG9/YNJXpnk0lLKeJLNSS6urVqd9th+jbUXNeZbAwDQ0s85152pHp+Zsu6DXcvvS/K+vT32YDRRq/nWAAAkcYfGnk1Uf8wIAECLuO7RRK3Tf7cJAACHHXHdo1rNuQYAoEVc96iacw0AQJu47pE51wAAdIjrHk3U6gYyAAAkEdc98/eMAAB0iOse1Vozx180AgAQcd0zc64BAOgQ1z1q3aFxpkcBAMDBQFz3aKImZl0DAJCI6wa4cg0AQIu47tHEhDnXAAC0iOsemXMNAECHuO7RRE2KK9cAAERc96y6QyMAAG3iukc15lwDANAirntkzjUAAB3iukfu0AgAQIe47tFEre4hAwBAEnHdO1euAQBoE9c9MucaAIAOcd2jVlyrawAAxHXP3EQGAIAOcd2jWqu/ZwQAIIm47lmtyRz/FAEAiLjumTnXAAB0iOsemXMNAECHuO7RhDnXAAC0iesG+J5rAAAScd0zc64BAOgYnOkBHOqOO2JexrZPzPQwAAA4CIjrHr3j154500MAAOAgYVoIAAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANERcAwBAQ8Q1AAA0RFwDAEBDxDUAADREXAMAQEPENQAANKTUWmd6DI0ppaxL8qMZ+NFHJ3loBn4uB5bzfHhwng8PzvPs5xwfHmbqPD+l1rpsug2zKq5nSillda11dKbHQX85z4cH5/nw4DzPfs7x4eFgPM+mhQAAQEPENQAANERcN+PKmR4AB4TzfHhwng8PzvPs5xwfHg6682zONQAANMSVawAAaIi47kEp5aJSyvdLKXeUUq6Y6fGwb0opJ5ZSriul3F5KubWU8vvt9UeWUr5YSvlh+3lp1zF/1D7f3y+l/FLX+nNKKd9tb3tvKaXMxGdieqWUgVLKt0op/9R+7RzPQqWUJaWUq0sp32v/9/rZzvXsUkr5g/b/Xt9SSvmHUsqIczw7lFI+XEp5sJRyS9e6xs5tKWVuKeX/a6//P6WUFf36LOJ6P5VSBpK8P8mLkpya5FWllFNndlTso/Ekf1hrPSXJs5K8qX0Or0jyz7XWk5L8c/t12tsuTrIqyUVJPtD+z0GS/HWSS5Kc1H5cdCA/CHv0+0lu73rtHM9O70nyuVrryUmemdY5d65niVLK8Ul+L8lorfW0JANpnUPneHb4H3nieWjy3P67JD+rtf6rJP8lyf/brw8irvffuUnuqLXeVWvdluSjSV46w2NiH9Raf1Jrvam9vD6tfxEfn9Z5/Lv2bn+X5GXt5Zcm+WitdWut9e4kdyQ5t5RyXJLFtdYbauuPGP5n1zHMsFLKCUn+TZIPda12jmeZUsriJM9N8t+SpNa6rdb6aJzr2WYwybxSymCS+Unuj3M8K9Rar0/yyJTVTZ7b7ve6Osnz+/UbC3G9/45Pcl/X67XtdRyC2r8eOivJ/0lybK31J0krwJMc095tV+f8+Pby1PUcHN6d5D8lmeha5xzPPk9Nsi7Jf29PAfpQKWVBnOtZo9b64yTvSHJvkp8keazW+oU4x7NZk+d28pha63iSx5Ic1Y9Bi+v9N93/2/HVK4egUsrCJB9P8h9qrY/vbtdp1tXdrGeGlVJ+OcmDtdY1e3vINOuc40PDYJKzk/x1rfWsJBvT/hXyLjjXh5j2fNuXJlmZ5MlJFpRSXru7Q6ZZ5xzPDvtzbg/YeRfX+29tkhO7Xp+Q1q+nOISUUobSCuuraq2faK9+oP2rpbSfH2yv39U5X9tenrqemXdekl8ppdyT1tStXyyl/K84x7PR2iRra63/p/366rRi27mePV6Q5O5a67pa61iSTyT5hTjHs1mT53bymPa0oiPyxGkojRDX++/GJCeVUlaWUobTmlh/7QyPiX3Qnmv135LcXmt9V9ema5P8Vnv5t5J8qmv9xe2/OF6Z1h9KfLP9q6r1pZRntd/zN7uOYQbVWv+o1npCrXVFWv8d/d+11tfGOZ51aq0/TXJfKeUZ7VXPT3JbnOvZ5N4kzyqlzG+fm+en9bcyzvHs1eS57X6vV6b174P+/Mai1uqxn48kL07ygyR3JvnPMz0ej30+f89J61dC30lyc/vx4rTmYP1zkh+2n4/sOuY/t8/395O8qGv9aJJb2tvel/YNmjwOnkeS85P8U3vZOZ6FjyRnJlnd/u/0J5Msda5n1yPJW5N8r31+PpJkrnM8Ox5J/iGtufRjaV1l/ndNntskI0n+Ma0/fvxmkqf267O4QyMAADTEtBAAAGiIuAYAgIaIawAAaIi4BgCAhohrAABoiLgGmOVKKfeUUo7udR8A9kxcAwBAQ8Q1wCxSSvlkKWVNKeXWUsolU7atKKV8r5Tyd6WU75RSri6lzO/a5d+XUm4qpXy3lHJy+5hzSyn/Ukr5Vvv5GQFgl8Q1wOzyf9Vaz0nrLmW/V0o5asr2ZyS5stZ6RpLHk/xu17aHaq1nJ/nrJP+xve57SZ5baz0ryZ8l+b/7OnqAQ5y4Bphdfq+U8u0k30hyYpKTpmy/r9b69fby/0rynK5tn2g/r0myor18RJJ/LKXckuS/JFnVj0EDzBbiGmCWKKWcn+QFSZ5da31mkm8lGZmyW93N663t5+1JBtvLb09yXa31tCQvmeb9AOgirvn/27VDnAaAIAqgfwKepAcgHIMeBUVv04TzIDgAJOgaToDGYbeiq0hDKqZm854aMdmM/JkdYB13SX7GGL/zZvrxTM99VW1n/ZTk/YI3v2e9a5kSYGHCNcA63pLcVtUhp43z55meryTPs2eT0331f16S7KvqI8lN57AAK6ox/v4QArCiqnpI8jpPPAC4AptrAABoYnMNAABNbK4BAKCJcA0AAE2EawAAaCJcAwBAE+EaAACaCNcAANDkCDQv5L4ErKCBAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 864x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"width = 12\n",
"height = 10\n",
"plt.figure(figsize=(width, height))\n",
"\n",
"plt.plot(ALFA,Rsqu_test, label='validation data ')\n",
"plt.plot(ALFA,Rsqu_train, 'r', label='training Data ')\n",
"plt.xlabel('alpha')\n",
"plt.ylabel('R^2')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Figure 6:The blue line represents the R^2 of the test data, and the red line represents the R^2 of the training data. The x-axis represents the different values of Alfa "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The red line in figure 6 represents the R^2 of the test data, as Alpha increases the R^2 decreases; therefore as Alfa increases the model performs worse on the test data. The blue line represents the R^2 on the validation data, as the value for Alfa increases the R^2 decreases. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #5): </h1>\n",
"\n",
"Perform Ridge regression and calculate the R^2 using the polynomial features, use the training data to train the model and test data to test the model. The parameter alpha should be set to 10.\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.5418576440209404"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"RigeModel = Ridge(alpha=10) \n",
"RigeModel.fit(x_train_pr, y_train)\n",
"RigeModel.score(x_test_pr, y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"RigeModel = Ridge(alpha=0) \n",
"RigeModel.fit(x_train_pr, y_train)\n",
"RigeModel.score(x_test_pr, y_test)\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ref4\">Part 4: Grid Search</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The term Alfa is a hyperparameter, sklearn has the class <b>GridSearchCV</b> to make the process of finding the best hyperparameter simpler."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's import <b>GridSearchCV</b> from the module <b>model_selection</b>."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"from sklearn.model_selection import GridSearchCV"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a dictionary of parameter values:"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"parameters1= [{'alpha': [0.001,0.1,1, 10, 100, 1000, 10000, 100000, 100000]}]\n",
"parameters1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a ridge regions object:"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RR=Ridge()\n",
"RR"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a ridge grid search object "
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [],
"source": [
"Grid1 = GridSearchCV(RR, parameters1,cv=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fit the model "
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"GridSearchCV(cv=4, error_score='raise-deprecating',\n",
" estimator=Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001),\n",
" fit_params=None, iid='warn', n_jobs=None,\n",
" param_grid=[{'alpha': [0.001, 0.1, 1, 10, 100, 1000, 10000, 100000, 100000]}],\n",
" pre_dispatch='2*n_jobs', refit=True, return_train_score='warn',\n",
" scoring=None, verbose=0)"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Grid1.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The object finds the best parameter values on the validation data. We can obtain the estimator with the best parameters and assign it to the variable BestRR as follows:"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"Ridge(alpha=10000, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=False, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"BestRR=Grid1.best_estimator_\n",
"BestRR"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" We now test our model on the test data "
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"0.841164983103615"
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"BestRR.score(x_test[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']], y_test)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-danger alertdanger\" style=\"margin-top: 20px\">\n",
"<h1> Question #6): </h1>\n",
"Perform a grid search for the alpha parameter and the normalization parameter, then find the best values of the parameters\n",
"</div>"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jupyterlab/conda/envs/python/lib/python3.6/site-packages/sklearn/model_selection/_search.py:841: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"Ridge(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=None,\n",
" normalize=True, random_state=None, solver='auto', tol=0.001)"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Write your code below and press Shift+Enter to execute \n",
"parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
"Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
"Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
"Grid2.best_estimator_"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Double-click <b>here</b> for the solution.\n",
"\n",
"<!-- The answer is below:\n",
"\n",
"parameters2= [{'alpha': [0.001,0.1,1, 10, 100, 1000,10000,100000,100000],'normalize':[True,False]} ]\n",
"Grid2 = GridSearchCV(Ridge(), parameters2,cv=4)\n",
"Grid2.fit(x_data[['horsepower', 'curb-weight', 'engine-size', 'highway-mpg']],y_data)\n",
"Grid2.best_estimator_\n",
"\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Thank you for completing this notebook!</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"\n",
" <p><a href=\"https://cocl.us/corsera_da0101en_notebook_bottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/Images/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>About the Authors:</h3>\n",
"\n",
"This notebook was written by <a href=\"https://www.linkedin.com/in/mahdi-noorian-58219234/\" target=\"_blank\">Mahdi Noorian PhD</a>, <a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>, Bahare Talayian, Eric Xiao, Steven Dong, Parizad, Hima Vsudevan and <a href=\"https://www.linkedin.com/in/fiorellawever/\" target=\"_blank\">Fiorella Wenver</a> and <a href=\" https://www.linkedin.com/in/yi-leng-yao-84451275/ \" target=\"_blank\" >Yi Yao</a>.\n",
"\n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> is a Data Scientist at IBM, and holds a PhD in Electrical Engineering. His research focused on using Machine Learning, Signal Processing, and Computer Vision to determine how videos impact human cognition. Joseph has been working for IBM since he completed his PhD.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"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.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment