Created
April 29, 2018 16:29
-
-
Save ravila4/fffef7966cc9533f421e91d54f57e993 to your computer and use it in GitHub Desktop.
Linear regression example with sklearn and statsmodels
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Linear Regression with Python" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"from matplotlib import pyplot as plt\n", | |
"import pandas\n", | |
"from pandas import DataFrame, Series\n", | |
"import statsmodels.formula.api as sm\n", | |
"from sklearn.linear_model import LinearRegression\n", | |
"import scipy, scipy.stats" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Formatting the data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[['Region', 'Alcohol', 'Tobacco'],\n", | |
" ['North', '6.47', '4.03'],\n", | |
" ['Yorkshire', '6.13', '3.76'],\n", | |
" ['Northeast', '6.19', '3.77'],\n", | |
" ['East_Midlands', '4.89', '3.34'],\n", | |
" ['West_Midlands', '5.63', '3.47'],\n", | |
" ['East_Anglia', '4.52', '2.92'],\n", | |
" ['Southeast', '5.89', '3.20'],\n", | |
" ['Southwest', '4.79', '2.71'],\n", | |
" ['Wales', '5.27', '3.53'],\n", | |
" ['Scotland', '6.08', '4.51'],\n", | |
" ['Northern_Ireland', '4.02', '4.56']]" | |
] | |
}, | |
"execution_count": 2, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"data_str = '''Region Alcohol Tobacco\n", | |
"North 6.47 4.03\n", | |
"Yorkshire 6.13 3.76\n", | |
"Northeast 6.19 3.77\n", | |
"East_Midlands 4.89 3.34\n", | |
"West_Midlands 5.63 3.47\n", | |
"East_Anglia 4.52 2.92\n", | |
"Southeast 5.89 3.20\n", | |
"Southwest 4.79 2.71\n", | |
"Wales 5.27 3.53\n", | |
"Scotland 6.08 4.51\n", | |
"Northern_Ireland 4.02 4.56'''\n", | |
"\n", | |
"d = data_str.split('\\n')\n", | |
"d = [i.split(' ') for i in d]\n", | |
"\n", | |
"d" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style>\n", | |
" .dataframe thead tr:only-child th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: left;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>Region</th>\n", | |
" <th>Alcohol</th>\n", | |
" <th>Tobacco</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>North</td>\n", | |
" <td>6.47</td>\n", | |
" <td>4.03</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>Yorkshire</td>\n", | |
" <td>6.13</td>\n", | |
" <td>3.76</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>Northeast</td>\n", | |
" <td>6.19</td>\n", | |
" <td>3.77</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>East_Midlands</td>\n", | |
" <td>4.89</td>\n", | |
" <td>3.34</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>West_Midlands</td>\n", | |
" <td>5.63</td>\n", | |
" <td>3.47</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" Region Alcohol Tobacco\n", | |
"0 North 6.47 4.03\n", | |
"1 Yorkshire 6.13 3.76\n", | |
"2 Northeast 6.19 3.77\n", | |
"3 East_Midlands 4.89 3.34\n", | |
"4 West_Midlands 5.63 3.47" | |
] | |
}, | |
"execution_count": 3, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Convert any numbers to floating point\n", | |
"for i in range(len(d)):\n", | |
" for j in range(len(d[0])):\n", | |
" try:\n", | |
" d[i][j] = float(d[i][j])\n", | |
" except:\n", | |
" pass\n", | |
"\n", | |
"# Wrap data in a pandas DataFrame\n", | |
"df = DataFrame( d[1:], columns=d[0] )\n", | |
"df.head(5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Plotting the data" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fcf1066b3c8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"df.plot.scatter(x='Tobacco', y='Alcohol', marker='o', edgecolor='b',\n", | |
" facecolor='none', alpha=0.5)\n", | |
"plt.title('Sales in Severak UK Regions')\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Regression using Statsmodels" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/ravila/Software/miniconda/lib/python3.6/site-packages/scipy/stats/stats.py:1334: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=10\n", | |
" \"anyway, n=%i\" % int(n))\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<table class=\"simpletable\">\n", | |
"<caption>OLS Regression Results</caption>\n", | |
"<tr>\n", | |
" <th>Dep. Variable:</th> <td>Alcohol</td> <th> R-squared: </th> <td> 0.615</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Model:</th> <td>OLS</td> <th> Adj. R-squared: </th> <td> 0.567</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 12.78</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Date:</th> <td>Mon, 04 Sep 2017</td> <th> Prob (F-statistic):</th> <td>0.00723</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Time:</th> <td>20:10:22</td> <th> Log-Likelihood: </th> <td> -4.9998</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>No. Observations:</th> <td> 10</td> <th> AIC: </th> <td> 14.00</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Df Residuals:</th> <td> 8</td> <th> BIC: </th> <td> 14.60</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", | |
"</tr>\n", | |
"</table>\n", | |
"<table class=\"simpletable\">\n", | |
"<tr>\n", | |
" <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[0.025</th> <th>0.975]</th> \n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Tobacco</th> <td> 1.0059</td> <td> 0.281</td> <td> 3.576</td> <td> 0.007</td> <td> 0.357</td> <td> 1.655</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Eins</th> <td> 2.0412</td> <td> 1.001</td> <td> 2.038</td> <td> 0.076</td> <td> -0.268</td> <td> 4.350</td>\n", | |
"</tr>\n", | |
"</table>\n", | |
"<table class=\"simpletable\">\n", | |
"<tr>\n", | |
" <th>Omnibus:</th> <td> 2.542</td> <th> Durbin-Watson: </th> <td> 1.975</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Prob(Omnibus):</th> <td> 0.281</td> <th> Jarque-Bera (JB): </th> <td> 0.904</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Skew:</th> <td>-0.014</td> <th> Prob(JB): </th> <td> 0.636</td>\n", | |
"</tr>\n", | |
"<tr>\n", | |
" <th>Kurtosis:</th> <td> 1.527</td> <th> Cond. No. </th> <td> 27.2</td>\n", | |
"</tr>\n", | |
"</table>" | |
], | |
"text/plain": [ | |
"<class 'statsmodels.iolib.summary.Summary'>\n", | |
"\"\"\"\n", | |
" OLS Regression Results \n", | |
"==============================================================================\n", | |
"Dep. Variable: Alcohol R-squared: 0.615\n", | |
"Model: OLS Adj. R-squared: 0.567\n", | |
"Method: Least Squares F-statistic: 12.78\n", | |
"Date: Mon, 04 Sep 2017 Prob (F-statistic): 0.00723\n", | |
"Time: 20:10:22 Log-Likelihood: -4.9998\n", | |
"No. Observations: 10 AIC: 14.00\n", | |
"Df Residuals: 8 BIC: 14.60\n", | |
"Df Model: 1 \n", | |
"Covariance Type: nonrobust \n", | |
"==============================================================================\n", | |
" coef std err t P>|t| [0.025 0.975]\n", | |
"------------------------------------------------------------------------------\n", | |
"Tobacco 1.0059 0.281 3.576 0.007 0.357 1.655\n", | |
"Eins 2.0412 1.001 2.038 0.076 -0.268 4.350\n", | |
"==============================================================================\n", | |
"Omnibus: 2.542 Durbin-Watson: 1.975\n", | |
"Prob(Omnibus): 0.281 Jarque-Bera (JB): 0.904\n", | |
"Skew: -0.014 Prob(JB): 0.636\n", | |
"Kurtosis: 1.527 Cond. No. 27.2\n", | |
"==============================================================================\n", | |
"\n", | |
"Warnings:\n", | |
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", | |
"\"\"\"" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Add an extra vector of ones to calculate the intercept term\n", | |
"df['Eins'] = np.ones((len(df)))\n", | |
"# Dependent variable\n", | |
"Y = df.Alcohol[:-1]\n", | |
"# Independent variable\n", | |
"X = df[['Tobacco','Eins']][:-1]\n", | |
"result = sm.OLS( Y, X ).fit()\n", | |
"result.summary()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Regression using Sklearn" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Sklearn requires data in the form of vertical vectors. Whenever one slices a column from a NumPy array, NumPy stops wprryng about whether it is vertical or horizontal. Thus we have to convert it to a NumPy matrix data structure." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Cast DataFrame numpy array as a numpy matrix\n", | |
"# so that the vector stays vertical\n", | |
"data = np.matrix(df)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Creating the regression objects, and fitting the data to them. The 'clean' data contains all the data points except Northern Ireland, which is an outlier." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Clean score: 0.615\n", | |
"Original score: 0.050\n" | |
] | |
} | |
], | |
"source": [ | |
"# Clean data\n", | |
"cln = LinearRegression()\n", | |
"# Original data\n", | |
"org = LinearRegression()\n", | |
" \n", | |
"X, Y = data[:, 2], data[:, 1]\n", | |
"cln.fit(X[:-1], Y[:-1])\n", | |
"org.fit(X, Y)\n", | |
" \n", | |
"clean_score = '{0:.3f}'.format(cln.score( X[:-1], Y[:-1] ))\n", | |
"original_score = '{0:.3f}'.format(org.score(X, Y))\n", | |
"\n", | |
"print('Clean score:', clean_score)\n", | |
"print('Original score:', original_score)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7fcf0d82a048>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"test = np.arange(2.5, 4.85, 0.1)\n", | |
"test = np.array(np.matrix(test).T)\n", | |
"\n", | |
"plt.plot(test, cln.predict(test))\n", | |
"plt.plot(test, org.predict(test), '--')\n", | |
"\n", | |
"\n", | |
"plt.scatter(df.Tobacco[-1:], df.Alcohol[-1:], marker='x', color='r',\n", | |
" label='North Ireland (outlier), R^2: ' + original_score)\n", | |
"plt.scatter(df.Tobacco[:-1], df.Alcohol[:-1],\n", | |
" marker='o', facecolors='none', edgecolors='b', s=20,\n", | |
" label='All other regions, R^2: ' + clean_score)\n", | |
"\n", | |
"plt.title('Regression of Alcohol from Tobacco')\n", | |
"plt.xlabel('Tobacco')\n", | |
"plt.xlim(2.5,4.75)\n", | |
"plt.ylabel('Alcohol')\n", | |
"plt.ylim(2.75,7.0)\n", | |
"plt.legend(loc='lower center')\n", | |
"plt.grid(linestyle='dashed')\n", | |
"plt.show()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment