"
],
"text/plain": [
" MODELYEAR MAKE MODEL VEHICLECLASS ENGINESIZE CYLINDERS \\\n",
"0 2014 ACURA ILX COMPACT 2.0 4 \n",
"1 2014 ACURA ILX COMPACT 2.4 4 \n",
"2 2014 ACURA ILX HYBRID COMPACT 1.5 4 \n",
"3 2014 ACURA MDX 4WD SUV - SMALL 3.5 6 \n",
"4 2014 ACURA RDX AWD SUV - SMALL 3.5 6 \n",
"\n",
" TRANSMISSION FUELTYPE FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n",
"0 AS5 Z 9.9 6.7 \n",
"1 M6 Z 11.2 7.7 \n",
"2 AV7 Z 6.0 5.8 \n",
"3 AS6 Z 12.7 9.1 \n",
"4 AS6 Z 12.1 8.7 \n",
"\n",
" FUELCONSUMPTION_COMB FUELCONSUMPTION_COMB_MPG CO2EMISSIONS \n",
"0 8.5 33 196 \n",
"1 9.6 29 221 \n",
"2 5.9 48 136 \n",
"3 11.1 25 255 \n",
"4 10.6 27 244 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv(\"FuelConsumption.csv\")\n",
"\n",
"# take a look at the dataset\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets select some features that we want to use for regression."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
ENGINESIZE
\n",
"
CYLINDERS
\n",
"
FUELCONSUMPTION_CITY
\n",
"
FUELCONSUMPTION_HWY
\n",
"
FUELCONSUMPTION_COMB
\n",
"
CO2EMISSIONS
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
2.0
\n",
"
4
\n",
"
9.9
\n",
"
6.7
\n",
"
8.5
\n",
"
196
\n",
"
\n",
"
\n",
"
1
\n",
"
2.4
\n",
"
4
\n",
"
11.2
\n",
"
7.7
\n",
"
9.6
\n",
"
221
\n",
"
\n",
"
\n",
"
2
\n",
"
1.5
\n",
"
4
\n",
"
6.0
\n",
"
5.8
\n",
"
5.9
\n",
"
136
\n",
"
\n",
"
\n",
"
3
\n",
"
3.5
\n",
"
6
\n",
"
12.7
\n",
"
9.1
\n",
"
11.1
\n",
"
255
\n",
"
\n",
"
\n",
"
4
\n",
"
3.5
\n",
"
6
\n",
"
12.1
\n",
"
8.7
\n",
"
10.6
\n",
"
244
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ENGINESIZE CYLINDERS FUELCONSUMPTION_CITY FUELCONSUMPTION_HWY \\\n",
"0 2.0 4 9.9 6.7 \n",
"1 2.4 4 11.2 7.7 \n",
"2 1.5 4 6.0 5.8 \n",
"3 3.5 6 12.7 9.1 \n",
"4 3.5 6 12.1 8.7 \n",
"\n",
" FUELCONSUMPTION_COMB CO2EMISSIONS \n",
"0 8.5 196 \n",
"1 9.6 221 \n",
"2 5.9 136 \n",
"3 11.1 255 \n",
"4 10.6 244 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n",
"cdf.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets plot Emission values with respect to Engine size:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
},
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(cdf.ENGINESIZE, cdf.CO2EMISSIONS, color='blue')\n",
"plt.xlabel(\"Engine size\")\n",
"plt.ylabel(\"Emission\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Creating train and test dataset\n",
"Train/Test Split involves splitting the dataset into training and testing sets respectively, which are mutually exclusive. After which, you train with the training set and test with the testing set. \n",
"This will provide a more accurate evaluation on out-of-sample accuracy because the testing dataset is not part of the dataset that have been used to train the data. It is more realistic for real world problems.\n",
"\n",
"This means that we know the outcome of each data point in this dataset, making it great to test with! And since this data has not been used to train the model, the model has no knowledge of the outcome of these data points. So, in essence, it’s truly an out-of-sample testing.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [],
"source": [
"msk = np.random.rand(len(df)) < 0.8\n",
"train = cdf[msk]\n",
"test = cdf[~msk]"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"#### Train data distribution"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
"plt.xlabel(\"Engine size\")\n",
"plt.ylabel(\"Emission\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"source": [
"
Multiple Regression Model
\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In reality, there are multiple variables that predict the Co2emission. When more than one independent variable is present, the process is called multiple linear regression. For example, predicting co2emission using FUELCONSUMPTION_COMB, EngineSize and Cylinders of cars. The good thing here is that Multiple linear regression is the extension of simple linear regression model."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[10.25500279 7.51834242 9.85516977]]\n"
]
}
],
"source": [
"regr = linear_model.LinearRegression()\n",
"x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
"regr.fit (x, y)\n",
"# The coefficients\n",
"print('Coefficients: ', regr.coef_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As mentioned before, __Coefficient__ and __Intercept__ , are the parameters of the fit line. \n",
"Given that it is a multiple linear regression, with 3 parameters, and knowing that the parameters are the intercept and coefficients of hyperplane, sklearn can estimate them from our data. Scikit-learn uses plain Ordinary Least Squares method to solve this problem.\n",
"\n",
"#### Ordinary Least Squares (OLS)\n",
"OLS is a method for estimating the unknown parameters in a linear regression model. OLS chooses the parameters of a linear function of a set of explanatory variables by minimizing the sum of the squares of the differences between the target dependent variable and those predicted by the linear function. In other words, it tries to minimizes the sum of squared errors (SSE) or mean squared error (MSE) between the target variable (y) and our predicted output ($\\hat{y}$) over all samples in the dataset.\n",
"\n",
"OLS can find the best parameters using of the following methods:\n",
" - Solving the model parameters analytically using closed-form equations\n",
" - Using an optimization algorithm (Gradient Descent, Stochastic Gradient Descent, Newton’s Method, etc.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
Prediction
"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"button": false,
"new_sheet": false,
"run_control": {
"read_only": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Residual sum of squares: 519.68\n",
"Variance score: 0.87\n"
]
}
],
"source": [
"y_hat= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
"x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB']])\n",
"y = np.asanyarray(test[['CO2EMISSIONS']])\n",
"print(\"Residual sum of squares: %.2f\"\n",
" % np.mean((y_hat - y) ** 2))\n",
"\n",
"# Explained variance score: 1 is perfect prediction\n",
"print('Variance score: %.2f' % regr.score(x, y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__explained variance regression score:__ \n",
"If $\\hat{y}$ is the estimated target output, y the corresponding (correct) target output, and Var is Variance, the square of the standard deviation, then the explained variance is estimated as follow:\n",
"\n",
"$\\texttt{explainedVariance}(y, \\hat{y}) = 1 - \\frac{Var\\{ y - \\hat{y}\\}}{Var\\{y\\}}$ \n",
"The best possible score is 1.0, lower values are worse."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using a multiple linear regression with the same dataset but this time use __FUEL CONSUMPTION in CITY__ and \n",
"__FUEL CONSUMPTION in HWY__ instead of FUELCONSUMPTION_COMB. Does it result in better accuracy?"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficients: [[10.31310675 7.16009027 6.37709027 3.17835551]]\n",
"Residual sum of squares: 521.28\n",
"Variance score: 0.87\n"
]
}
],
"source": [
"regr = linear_model.LinearRegression()\n",
"x = np.asanyarray(train[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
"y = np.asanyarray(train[['CO2EMISSIONS']])\n",
"regr.fit (x, y)\n",
"print ('Coefficients: ', regr.coef_)\n",
"y_= regr.predict(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
"x = np.asanyarray(test[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY']])\n",
"y = np.asanyarray(test[['CO2EMISSIONS']])\n",
"print(\"Residual sum of squares: %.2f\"% np.mean((y_ - y) ** 2))\n",
"print('Variance score: %.2f' % regr.score(x, y))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Thanks for reading :)\n",
"Created by [Saeed Aghabozorgi](https://www.linkedin.com/in/saeedaghabozorgi/) and modified by [Tarun Kamboj](https://www.linkedin.com/in/kambojtarun/)."
]
}
],
"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.7.6"
},
"widgets": {
"state": {},
"version": "1.1.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}