Files
004_comission/Man1130/jupyter/Man1130-python-comission/course_materials/Note/CH8A_LR.ipynb
louiscklaw fc6f79b133 update,
2025-01-31 20:57:47 +08:00

718 lines
148 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Linear Regression - Scikit-Learn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Data Simulation\n",
"> Sample size is $n=10000$. \n",
"> $x=N(0,1)$, $u=N(0,1)$, $y=2x-1+u$. \n",
"> $y$ and $x$ are positively correlated. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(10000,)"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"import numpy as np\n",
"rng = np.random.RandomState(42)\n",
"\n",
"x = rng.randn(10000) \n",
"x.shape"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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a/Xee+9598PD//+SZs+erXfeeUcbNmyQw+FQZmamJk6cqA8//FCS1NDQoNTUVMXFxWnnzp06ceKEpk6dqvbt22vx4sUtPhYAABB6LA874eHhiouLO6+9qqpKL730ktatW6fbbrtNkpSXl6eBAwdq165dGjFihN599119/vnneu+99xQbG6sbbrhBzzzzjObOnatf/OIXioiIaOnhAACAEGP5mp1Dhw4pPj5eV155pSZPnqzS0lJJUnFxserr65WcnOztO2DAAPXu3VtFRUWSpKKiIg0ePFixsbHePikpKXK73Tp48OBFz1lbWyu32+2zAQAAM1kadoYPH678/Hxt2bJFq1ev1uHDh3XLLbeourpaLpdLERERioqK8vmZ2NhYuVwuSZLL5fIJOueOnzt2MTk5OXI4HN4tISEhsAMDAAAhw9LLWOPGjfP+93XXXafhw4erT58+eu2119SxY8egnTc7O1tZWVnefbfbTeABAMBQll/G+ntRUVG6+uqr9dVXXykuLk51dXU6deqUT5/y8nLvGp+4uLjz7s46t3+hdUDnREZGym63+2wAAMBMIRV2Tp8+ra+//lo9e/bUkCFD1L59exUWFnqPl5SUqLS0VE6nU5LkdDp14MABVVRUePsUFBTIbrcrKSmpxesHAAChx9LLWHPmzNGdd96pPn36qKysTAsXLlS7du30wAMPyOFwKD09XVlZWYqOjpbdbteMGTPkdDo1YsQISdLYsWOVlJSkKVOmaOnSpXK5XJo/f74yMjIUGRlp5dAA4KL6znvnkn2OLEltgUqAtsHSsHPs2DE98MAD+vbbb9WjRw+NGjVKu3btUo8ePSRJy5cvV1hYmCZNmqTa2lqlpKRo1apV3p9v166dNm3apOnTp8vpdKpz585KS0vTokWLrBoSAAAIMTaPx+Oxugirud1uORwOVVVVsX4HCICmzFzghzGzA1xaU7+/Q2rNDgAAQKARdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaJa+CBRA68N7rwC0NszsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAabz0H4MUbzQGYiJkdAABgNMIOAAAw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Fd18881q37691eUEVVVVlaKjo60uAz+grq5OxcXFSk5O9raFhYUpOTlZRUVFFlaG5qqqqpIko/8MNjQ0aP369aqpqTHytUcZGRlKTU31+fMZbISdIPB4PHrooYf02GOPaejQoVaXE1Rz585V586d1b17d5WWlurNN9+0uqSg+uqrr/TCCy/oX/7lX6wuBT/gr3/9qxoaGs57inpsbKxcLpdFVaG5GhsbNWvWLI0cOVKDBg2yupyAO3DggLp06aLIyEg99thj2rhxo5KSkqwuK6DWr1+vjz/+WDk5OS16XsLOZZg3b55sNtsPbl988YVeeOEFVVdXKzs72+qSL1tTx3jOE088oX379undd99Vu3btNHXqVHlawUO5L3ecknT8+HHdfvvtuueee/Too49aVHnT+TNGIJRlZGTos88+0/r1660uJSiuueYa7d+/X7t379b06dOVlpamzz//3OqyAubo0aOaOXOmXnnlFXXo0KFFz83rIi7DyZMn9e233/5gnyuvvFL33nuv3n77bdlsNm97Q0OD2rVrp8mTJ2vt2rXBLtVvTR1jRETEee3Hjh1TQkKCdu7cGfJTr5c7zrKyMt16660aMWKE8vPzFRYW+v9O8OfXMj8/X7NmzdKpU6eCXF1w1dXVqVOnTvqf//kfTZgwwduelpamU6dOGTkDabPZtHHjRp/xmiQzM1NvvvmmduzYocTERKvLaRHJycnq16+f1qxZY3UpAfHGG2/orrvuUrt27bxtDQ0NstlsCgsLU21trc+xQDLiRaAtpUePHurRo8cl+61cuVLPPvusd7+srEwpKSl69dVXNXz48GCW2GxNHeOFNDY2Svr+dvtQdznjPH78uEaPHq0hQ4YoLy+vVQQdqXm/lq1dRESEhgwZosLCQu+Xf2NjowoLC5WZmWltcbgsHo9HM2bM0MaNG/XBBx+0maAjff97tjX8fdpUY8aM0YEDB3zaHn74YQ0YMEBz584NWtCRCDtB0bt3b5/9Ll26SJL69eunXr16WVFSwO3evVt79uzRqFGj1K1bN3399dd66qmn1K9fv5Cf1bkcx48f16233qo+ffroV7/6lU6ePOk9FhcXZ2FlgVVaWqrKykqVlpaqoaHB+0yoq666yvv7t7XJyspSWlqahg4dqmHDhmnFihWqqanRww8/bHVpAXP69Gl99dVX3v3Dhw9r//79io6OPu/vodYqIyND69at05tvvqmuXbt611w5HA517NjR4uoCJzs7W+PGjVPv3r1VXV2tdevW6YMPPtDWrVutLi1gunbtet5aq3NrPoO+Bivo93vBc/jwYeNuPf/00089o0eP9kRHR3siIyM9ffv29Tz22GOeY8eOWV1aQOXl5XkkXXAzSVpa2gXHuG3bNqtLa5YXXnjB07t3b09ERIRn2LBhnl27dlldUkBt27btgr9uaWlpVpcWMBf785eXl2d1aQH1yCOPePr06eOJiIjw9OjRwzNmzBjPu+++a3VZQddSt56zZgcAABitdSw+AAAA8BNhBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABG+/8A+n48/CvqpWUAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"pd.Series(x).plot.hist(bins=50);"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y = 2 * x - 1 + rng.randn(10000)\n",
"plt.scatter(x, y);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sckikit Learn\n",
"> The Python module **sklearn.linear_model** contains a function **LinearRegression**. \n",
"> Including intercept **fit_intercept=True** is default. \n",
"> Steps:\n",
"> 0. Import **sklearn.linear_model** module. \n",
"> 1. Regressors $X$ needs to have 2 dimensions; $y$ can be 1 dimension. \n",
"> 2. Initialize a model using ```model=LinearRegression()```. \n",
"> 3. Estimate the model using **model.fit(x,y)**. \n",
"> 4. Slope and intercept can be called out using **model.coef_** and **model.intercept_**. \n",
"> 5. Calculate fitted values using **model.predict(newdata)**. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearRegression</label><div class=\"sk-toggleable__content\"><pre>LinearRegression()</pre></div></div></div></div></div>"
],
"text/plain": [
"LinearRegression()"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Model Specification\n",
"\n",
"model = LinearRegression(fit_intercept=True)\n",
"model"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[ 0.49671415],\n",
" [-0.1382643 ],\n",
" [ 0.64768854],\n",
" ...,\n",
" [-0.70531672],\n",
" [ 0.49576557],\n",
" [ 0.64438845]])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Modify X data structure (to matrix) to fit into sklearn\n",
"\n",
"X = x[:, np.newaxis]\n",
"X.shape\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-3 {color: black;background-color: white;}#sk-container-id-3 pre{padding: 0;}#sk-container-id-3 div.sk-toggleable {background-color: white;}#sk-container-id-3 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-3 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-3 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-3 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-3 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-3 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-3 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-3 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-3 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-3 div.sk-item {position: relative;z-index: 1;}#sk-container-id-3 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-3 div.sk-item::before, #sk-container-id-3 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-3 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-3 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-3 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-3 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-3 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-3 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-3 div.sk-label-container {text-align: center;}#sk-container-id-3 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-3 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LinearRegression</label><div class=\"sk-toggleable__content\"><pre>LinearRegression()</pre></div></div></div></div></div>"
],
"text/plain": [
"LinearRegression()"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Estimation (Note: X followed by y)\n",
"\n",
"model.fit(X, y)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"-0.9865\n",
"1.9914674619045198\n"
]
}
],
"source": [
"# Results are stored in model\n",
"print(round(model.intercept_,4))\n",
"print(model.coef_[0])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"# Generate the fitted line using the estimates\n",
"\n",
"xfit = np.linspace(-4, 4, 100)\n",
"Xfit = xfit[:, np.newaxis]\n",
"yfit = model.predict(Xfit)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Data Visualization\n",
"\n",
"plt.scatter(x, y)\n",
"plt.plot(xfit, yfit, color='red');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training/ Testing Sample\n",
"> Python module: **sklearn.model_selection**. \n",
"> Method: **train_test_split**. \n",
"> **train_test_split(x,y,random_state=seed)** splits data $n$ into $75%$ and $25%$ group by default following the random rule ```random_state=seed```. \n",
"> Different split can be specified as **train_size=size**. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(7500, 1)\n",
"(2500, 1)\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, random_state=2)\n",
"\n",
"print(Xtrain.shape)\n",
"print(Xtest.shape)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(8000, 1)\n",
"(2000, 1)\n"
]
}
],
"source": [
"Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, \n",
" train_size=8000, test_size= 2000, \n",
" random_state=2)\n",
"print(Xtrain.shape)\n",
"print(Xtest.shape)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(8000, 1)\n",
"(2000, 1)\n"
]
}
],
"source": [
"Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, \n",
" train_size=0.8, test_size= 0.2, \n",
" random_state=2)\n",
"print(Xtrain.shape)\n",
"print(Xtest.shape)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, random_state=2019)\n",
"\n",
"ypred = model.predict(Xtest)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"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>Actual</th>\n",
" <th>Predicted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-2.499761</td>\n",
" <td>-2.934668</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1.859734</td>\n",
" <td>0.452245</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-1.051919</td>\n",
" <td>-0.960591</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-1.133199</td>\n",
" <td>-0.510032</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-0.322499</td>\n",
" <td>-1.830669</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Actual Predicted\n",
"0 -2.499761 -2.934668\n",
"1 1.859734 0.452245\n",
"2 -1.051919 -0.960591\n",
"3 -1.133199 -0.510032\n",
"4 -0.322499 -1.830669"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.DataFrame({'Actual': ytest, 'Predicted': ypred})\n",
"\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Data Visualization\n",
"\n",
"plt.scatter(Xtest, ytest, color='gray')\n",
"plt.plot(Xtest, ypred, color='red', lw=2);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaluation\n",
"> Python module: **sklearn.metrics**. \n",
"> Methods: **r2_score**, **mean_absolute_error** and **mean_squared_error**. \n",
"> **accuracy_score(ytest, ypred)** where ```ytest``` is the actual testing data; ```ypred``` is the model fitted values. "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.7994\n"
]
}
],
"source": [
"r_sq = model.score(X,y)\n",
"print(round(r_sq,4))"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.7992\n"
]
}
],
"source": [
"# Training Samples\n",
"from sklearn.metrics import r2_score\n",
"\n",
"yfit = model.predict(Xtrain)\n",
"print(round(r2_score(ytrain,yfit),4))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.8002\n",
"0.7976\n",
"0.9925\n"
]
}
],
"source": [
"# Testing Samples \n",
"from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error\n",
"\n",
"print(round(r2_score(ytest,ypred),4))\n",
"print(round(mean_absolute_error(ytest,ypred),4))\n",
"print(round(mean_squared_error(ytest,ypred),4))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Activity 1\n",
"> Load the data 'wage1.csv'. \n",
"> Split the data into training (train_size=400) and (test_size=126). \n",
"> Carry out the linear regression of $wage$ against $educ$, $exper$, $nonwhite$ and $female$. \n",
"> Report the coefficients (intercept and slope), and R2. \n",
"> Put them into a pd.DataFrame and print it out. "
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"ename": "ImportError",
"evalue": "Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/compat/_optional.py:141\u001b[0m, in \u001b[0;36mimport_optional_dependency\u001b[0;34m(name, extra, errors, min_version)\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 141\u001b[0m module \u001b[38;5;241m=\u001b[39m \u001b[43mimportlib\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mimport_module\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n",
"File \u001b[0;32m/usr/lib64/python3.11/importlib/__init__.py:126\u001b[0m, in \u001b[0;36mimport_module\u001b[0;34m(name, package)\u001b[0m\n\u001b[1;32m 125\u001b[0m level \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m--> 126\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_bootstrap\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_gcd_import\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m[\u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m:\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpackage\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlevel\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m<frozen importlib._bootstrap>:1206\u001b[0m, in \u001b[0;36m_gcd_import\u001b[0;34m(name, package, level)\u001b[0m\n",
"File \u001b[0;32m<frozen importlib._bootstrap>:1178\u001b[0m, in \u001b[0;36m_find_and_load\u001b[0;34m(name, import_)\u001b[0m\n",
"File \u001b[0;32m<frozen importlib._bootstrap>:1142\u001b[0m, in \u001b[0;36m_find_and_load_unlocked\u001b[0;34m(name, import_)\u001b[0m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'xlrd'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn [23], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mpandas\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mnumpy\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[0;32m----> 4\u001b[0m df \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_excel\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mwage1.xls\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m df\u001b[38;5;241m.\u001b[39mhead()\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/util/_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 210\u001b[0m kwargs[new_arg_name] \u001b[38;5;241m=\u001b[39m new_arg_value\n\u001b[0;32m--> 211\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/util/_decorators.py:331\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 325\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[1;32m 326\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[1;32m 327\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[1;32m 328\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[1;32m 329\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[1;32m 330\u001b[0m )\n\u001b[0;32m--> 331\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/excel/_base.py:482\u001b[0m, in \u001b[0;36mread_excel\u001b[0;34m(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, decimal, comment, skipfooter, convert_float, mangle_dupe_cols, storage_options)\u001b[0m\n\u001b[1;32m 480\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(io, ExcelFile):\n\u001b[1;32m 481\u001b[0m should_close \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 482\u001b[0m io \u001b[38;5;241m=\u001b[39m \u001b[43mExcelFile\u001b[49m\u001b[43m(\u001b[49m\u001b[43mio\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstorage_options\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mengine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 483\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m engine \u001b[38;5;129;01mand\u001b[39;00m engine \u001b[38;5;241m!=\u001b[39m io\u001b[38;5;241m.\u001b[39mengine:\n\u001b[1;32m 484\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[1;32m 485\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mEngine should not be specified when passing \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 486\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124man ExcelFile - ExcelFile already has the engine set\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 487\u001b[0m )\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/excel/_base.py:1695\u001b[0m, in \u001b[0;36mExcelFile.__init__\u001b[0;34m(self, path_or_buffer, engine, storage_options)\u001b[0m\n\u001b[1;32m 1692\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mengine \u001b[38;5;241m=\u001b[39m engine\n\u001b[1;32m 1693\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstorage_options \u001b[38;5;241m=\u001b[39m storage_options\n\u001b[0;32m-> 1695\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_reader \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engines\u001b[49m\u001b[43m[\u001b[49m\u001b[43mengine\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_io\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstorage_options\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/excel/_xlrd.py:34\u001b[0m, in \u001b[0;36mXlrdReader.__init__\u001b[0;34m(self, filepath_or_buffer, storage_options)\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;124;03mReader using xlrd engine.\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[38;5;124;03m{storage_options}\u001b[39;00m\n\u001b[1;32m 32\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 33\u001b[0m err_msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mInstall xlrd >= 1.0.0 for Excel support\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m---> 34\u001b[0m \u001b[43mimport_optional_dependency\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mxlrd\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mextra\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merr_msg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28msuper\u001b[39m()\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__init__\u001b[39m(filepath_or_buffer, storage_options\u001b[38;5;241m=\u001b[39mstorage_options)\n",
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/compat/_optional.py:144\u001b[0m, in \u001b[0;36mimport_optional_dependency\u001b[0;34m(name, extra, errors, min_version)\u001b[0m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m errors \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mraise\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m--> 144\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m(msg)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 146\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n",
"\u001b[0;31mImportError\u001b[0m: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd."
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"df = pd.read_excel('wage1.xls')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"y = df['wage']\n",
"X = df[['educ','exper','nonwhite','female']]"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split\n",
"Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, \n",
" train_size=400, test_size=126,\n",
" random_state=2019)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"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>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>intercept</th>\n",
" <td>-1.3259</td>\n",
" </tr>\n",
" <tr>\n",
" <th>educ</th>\n",
" <td>0.5703</td>\n",
" </tr>\n",
" <tr>\n",
" <th>exper</th>\n",
" <td>0.0568</td>\n",
" </tr>\n",
" <tr>\n",
" <th>nonwhite</th>\n",
" <td>-0.1196</td>\n",
" </tr>\n",
" <tr>\n",
" <th>female</th>\n",
" <td>-2.0190</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rsq</th>\n",
" <td>0.2802</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value\n",
"intercept -1.3259\n",
"educ 0.5703\n",
"exper 0.0568\n",
"nonwhite -0.1196\n",
"female -2.0190\n",
"Rsq 0.2802"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"model = LinearRegression(fit_intercept=True).fit(Xtrain,ytrain)\n",
"\n",
"out = np.hstack([model.intercept_,model.coef_,model.score(Xtrain,ytrain)]).round(decimals=4)\n",
"tab = pd.DataFrame(out, columns = ['value'],\n",
" index=['intercept','educ','exper','nonwhite','female','Rsq'])\n",
"tab"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.11.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}