{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multiple Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's grab a data set of of car values:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PriceMileageMakeModelTrimTypeCylinderLiterDoorsCruiseSoundLeather
017314.1031298221BuickCenturySedan 4DSedan63.14111
117542.0360839135BuickCenturySedan 4DSedan63.14110
216218.84786213196BuickCenturySedan 4DSedan63.14110
316336.91314016342BuickCenturySedan 4DSedan63.14100
416339.17032419832BuickCenturySedan 4DSedan63.14101
\n", "
" ], "text/plain": [ " Price Mileage Make Model Trim Type Cylinder Liter \\\n", "0 17314.103129 8221 Buick Century Sedan 4D Sedan 6 3.1 \n", "1 17542.036083 9135 Buick Century Sedan 4D Sedan 6 3.1 \n", "2 16218.847862 13196 Buick Century Sedan 4D Sedan 6 3.1 \n", "3 16336.913140 16342 Buick Century Sedan 4D Sedan 6 3.1 \n", "4 16339.170324 19832 Buick Century Sedan 4D Sedan 6 3.1 \n", "\n", " Doors Cruise Sound Leather \n", "0 4 1 1 1 \n", "1 4 1 1 0 \n", "2 4 1 1 0 \n", "3 4 1 0 0 \n", "4 4 1 0 1 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "df = pd.read_excel('https://admintuts.tech/wp-content/downloads/xls/cars.xls')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Mileage Price\n", "Mileage \n", "(0, 10000] 5588.629630 24096.714451\n", "(10000, 20000] 15898.496183 21955.979607\n", "(20000, 30000] 24114.407104 20278.606252\n", "(30000, 40000] 33610.338710 19463.670267\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "\n", "df1 = df[['Mileage','Price']]\n", "bins = np.arange(0,50000,10000)\n", "groups = df1.groupby(pd.cut(df1['Mileage'],bins)).mean()\n", "\n", "print(groups.head())\n", "groups['Price'].plot.line()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use pandas to split up this matrix into the feature vectors we're interested in, and the value we're trying to predict.\n", "\n", "Note how we are avoiding the make and model; regressions don't work well with ordinal values, unless you can convert them into some numerical order that makes sense somehow.\n", "\n", "Let's scale our feature data into the same range so we can easily compare the coefficients we end up with." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Mileage Cylinder Doors\n", "0 -1.417485 0.527410 0.556279\n", "1 -1.305902 0.527410 0.556279\n", "2 -0.810128 0.527410 0.556279\n", "3 -0.426058 0.527410 0.556279\n", "4 0.000008 0.527410 0.556279\n", "5 0.293493 0.527410 0.556279\n", "6 0.335001 0.527410 0.556279\n", "7 0.382369 0.527410 0.556279\n", "8 0.511409 0.527410 0.556279\n", "9 0.914768 0.527410 0.556279\n", "10 -1.171368 0.527410 0.556279\n", "11 -0.581834 0.527410 0.556279\n", "12 -0.390532 0.527410 0.556279\n", "13 -0.003899 0.527410 0.556279\n", "14 0.430591 0.527410 0.556279\n", "15 0.480156 0.527410 0.556279\n", "16 0.509822 0.527410 0.556279\n", "17 0.757160 0.527410 0.556279\n", "18 1.594886 0.527410 0.556279\n", "19 1.810849 0.527410 0.556279\n", "20 -1.326046 0.527410 0.556279\n", "21 -1.129860 0.527410 0.556279\n", "22 -0.667658 0.527410 0.556279\n", "23 -0.405792 0.527410 0.556279\n", "24 -0.112796 0.527410 0.556279\n", "25 -0.044552 0.527410 0.556279\n", "26 0.190700 0.527410 0.556279\n", "27 0.337442 0.527410 0.556279\n", "28 0.566102 0.527410 0.556279\n", "29 0.660837 0.527410 0.556279\n", ".. ... ... ...\n", "774 -0.161262 -0.914896 0.556279\n", "775 -0.089234 -0.914896 0.556279\n", "776 -0.040523 -0.914896 0.556279\n", "777 0.002572 -0.914896 0.556279\n", "778 0.236603 -0.914896 0.556279\n", "779 0.249666 -0.914896 0.556279\n", "780 0.357220 -0.914896 0.556279\n", "781 0.365521 -0.914896 0.556279\n", "782 0.434131 -0.914896 0.556279\n", "783 0.517269 -0.914896 0.556279\n", "784 0.589908 -0.914896 0.556279\n", "785 0.599186 -0.914896 0.556279\n", "786 0.793052 -0.914896 0.556279\n", "787 1.033554 -0.914896 0.556279\n", "788 1.045762 -0.914896 0.556279\n", "789 1.205567 -0.914896 0.556279\n", "790 1.541414 -0.914896 0.556279\n", "791 1.561070 -0.914896 0.556279\n", "792 1.725026 -0.914896 0.556279\n", "793 1.851502 -0.914896 0.556279\n", "794 -1.709871 0.527410 0.556279\n", "795 -1.474375 0.527410 0.556279\n", "796 -1.187849 0.527410 0.556279\n", "797 -1.079929 0.527410 0.556279\n", "798 -0.682430 0.527410 0.556279\n", "799 -0.439853 0.527410 0.556279\n", "800 -0.089966 0.527410 0.556279\n", "801 0.079605 0.527410 0.556279\n", "802 0.750446 0.527410 0.556279\n", "803 1.932565 0.527410 0.556279\n", "\n", "[804 rows x 3 columns]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/nikolas/Desktop/venv/lib/python3.6/site-packages/ipykernel_launcher.py:8: FutureWarning: Method .as_matrix will be removed in a future version. Use .values instead.\n", " \n", "/home/nikolas/Desktop/venv/lib/python3.6/site-packages/sklearn/utils/validation.py:595: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n", " warnings.warn(msg, DataConversionWarning)\n", "/home/nikolas/Desktop/venv/lib/python3.6/site-packages/sklearn/utils/validation.py:595: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n", " warnings.warn(msg, DataConversionWarning)\n", "/home/nikolas/Desktop/venv/lib/python3.6/site-packages/ipykernel_launcher.py:8: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " \n", "/home/nikolas/Desktop/venv/lib/python3.6/site-packages/pandas/core/indexing.py:543: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", " self.obj[item] = s\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: Price R-squared (uncentered): 0.064
Model: OLS Adj. R-squared (uncentered): 0.060
Method: Least Squares F-statistic: 18.11
Date: Sun, 01 Sep 2019 Prob (F-statistic): 2.23e-11
Time: 03:30:21 Log-Likelihood: -9207.1
No. Observations: 804 AIC: 1.842e+04
Df Residuals: 801 BIC: 1.843e+04
Df Model: 3
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Mileage -1272.3412 804.623 -1.581 0.114 -2851.759 307.077
Cylinder 5587.4472 804.509 6.945 0.000 4008.252 7166.642
Doors -1404.5513 804.275 -1.746 0.081 -2983.288 174.185
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 157.913 Durbin-Watson: 0.008
Prob(Omnibus): 0.000 Jarque-Bera (JB): 257.529
Skew: 1.278 Prob(JB): 1.20e-56
Kurtosis: 4.074 Cond. No. 1.03


Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "=======================================================================================\n", "Dep. Variable: Price R-squared (uncentered): 0.064\n", "Model: OLS Adj. R-squared (uncentered): 0.060\n", "Method: Least Squares F-statistic: 18.11\n", "Date: Sun, 01 Sep 2019 Prob (F-statistic): 2.23e-11\n", "Time: 03:30:21 Log-Likelihood: -9207.1\n", "No. Observations: 804 AIC: 1.842e+04\n", "Df Residuals: 801 BIC: 1.843e+04\n", "Df Model: 3 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Mileage -1272.3412 804.623 -1.581 0.114 -2851.759 307.077\n", "Cylinder 5587.4472 804.509 6.945 0.000 4008.252 7166.642\n", "Doors -1404.5513 804.275 -1.746 0.081 -2983.288 174.185\n", "==============================================================================\n", "Omnibus: 157.913 Durbin-Watson: 0.008\n", "Prob(Omnibus): 0.000 Jarque-Bera (JB): 257.529\n", "Skew: 1.278 Prob(JB): 1.20e-56\n", "Kurtosis: 4.074 Cond. No. 1.03\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.api as sm\n", "from sklearn.preprocessing import StandardScaler\n", "scale = StandardScaler()\n", "\n", "X = df[['Mileage', 'Cylinder', 'Doors']]\n", "y = df['Price']\n", "\n", "X[['Mileage', 'Cylinder', 'Doors']] = scale.fit_transform(X[['Mileage', 'Cylinder', 'Doors']].as_matrix())\n", "\n", "print (X)\n", "\n", "est = sm.OLS(y, X).fit()\n", "\n", "est.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The table of coefficients above gives us the values to plug into an equation of form:\n", " B0 + B1 * Mileage + B2 * cylinders + B3 * doors\n", " \n", "In this example, it's pretty clear that the number of cylinders is more important than anything based on the coefficients.\n", "\n", "Could we have figured that out earlier?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Doors\n", "2 23807.135520\n", "4 20580.670749\n", "Name: Price, dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.groupby(df.Doors).mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Surprisingly, more doors does not mean a higher price! (Maybe it implies a sport car in some cases?) So it's not surprising that it's pretty useless as a predictor here. This is a very small data set however, so we can't really read much meaning into it." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.02051781 1.96971667 0.55627894]]\n", "[10198.25991671]\n" ] } ], "source": [ "scaled = scale.transform([[20000, 8, 4]])\n", "print(scaled)\n", "predicted = est.predict(scaled[0])\n", "print(predicted)" ] } ], "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.8" } }, "nbformat": 4, "nbformat_minor": 1 }