{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear and Polynomial Regression\n", "Aim: To practice Linear Regression and Polynomial Regression using Python code. The activity also helps in understanding the difference between Linear Regression and Polynomial Regression.\n", "\n", "Data: The dataset includes Annual Production-based Emissions of Carbon Dioxide (CO2) by China, measured in million tonnes per year, for the span 1902-2018.\n", "\n", "Data Source: Carbon Dioxide Information Analysis Center (CDIAC) and Global Carbon Project\n", "\n", "The code and the dataset are avaialable for download.\n", "Developed by TROP ICSU (https://tropicsu.org).\n", "\n", "The complete Lesson Plan is available here:https://tropicsu.org/lesson-plan-data-science-linear-and-polynomial-regression/" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "#Import necessary librarires of Python\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import math\n", "from sklearn import metrics\n", "import math\n", "import sklearn\n", "import statistics" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Annual production-based emissions of carbon dioxide (CO2) by China\n" ] } ], "source": [ "print(\"Annual production-based emissions of carbon dioxide (CO2) by China\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "First 10 entries from the dataset\n", " year co2\n", "0 1902 0.095\n", "1 1903 1.964\n", "2 1904 2.088\n", "3 1905 2.297\n", "4 1906 17.111\n", "5 1907 16.840\n", "6 1908 22.731\n", "7 1909 20.837\n", "8 1910 18.749\n", "9 1911 27.846\n", "(117, 2)\n", "['year' 'co2']\n", "\n", "RangeIndex: 117 entries, 0 to 116\n", "Data columns (total 2 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 year 117 non-null int64 \n", " 1 co2 117 non-null float64\n", "dtypes: float64(1), int64(1)\n", "memory usage: 2.0 KB\n" ] } ], "source": [ "#Read the Dataset\n", "df=pd.read_csv('F:\\Aparna\\Aparna-Data\\Aparna\\IISER\\Data_Sci-Internship\\Climate-Data-Science\\Lesson_Plan_Python_Codes\\Simple-and-Polynomial-Linear-Regression\\china-co2-csv.csv')\n", "#Know the basics of the dataset:\n", "print(\"First 10 entries from the dataset\")\n", "print (df.head(10)) # display first 10 entries\n", "print(df.shape) # display the dimensions of the dataset (rows and columns)\n", "print(df.columns.values) #display columns names\n", "df.info() # display data types and memory usage" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scatter Plot \n", "Let's try to plot the data points of yearly annual production-based CO2 emissions by China during 1902-2018 " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Scatter plot : Plot the scatter plot of yearly average_co2_concentrations variable \n", "\n", "df.plot.scatter(x=\"year\",y=\"co2\")\n", "plt.xlabel('Year') \n", "plt.ylabel('CO2 emissions (million tonnes)') \n", "plt.title ('Annual production-based CO2 emissions by China 1902-2018')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear Regression and Polynomial Regression\n", "We will try to apply Linear Regression and Polynomial Regression Methods to the dataset. The comparision wil help us to understand which methods describes the data better." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 1 : Linear Regression\n", "Let us try to fit a Line to the data. Equation of a line is y = b0 + b1*x, where b0 is Y-intercept and b1 is the slope." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Use NumPy library to convert the DataFrame to NumPy Array which would be used in the further steps. \n", "x=[]\n", "y=[]\n", "x=df['year'].to_numpy()\n", "y=df['co2'].to_numpy()\n", "n = np.size(x) # number of observations/points" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Function: Calculate Regression Coefficients : b0 is Y-intercept and b1 is slope for a Regression Line b0 + b1*x \n", "def estimate_coef(x, y): \n", " \n", " # mean of x and y vector \n", " m_x, m_y = np.mean(x), np.mean(y) \n", " \n", " # calculating cross-deviation and deviation about x \n", " SS_xy = np.sum(y*x) - n*m_y*m_x \n", " SS_xx = np.sum(x*x) - n*m_x*m_x \n", " \n", " \n", " b_1 = SS_xy / SS_xx \n", " b_0 = m_y - b_1*m_x \n", " \n", " return(b_0, b_1) \n", " \n", "# Function: Plot the scatter plot and Regression Line as per the predicted coefficients\n", "def plot_regression_line(x, y, b): \n", " # plotting the actual points as scatter plot \n", " plt.scatter(x, y, color = \"m\", \n", " marker = \"o\", s = 30) \n", " \n", " # predicted response vector \n", " y_pred = b[0] + b[1]*x \n", " \n", " # plot the regression line \n", " plt.plot(x, y_pred, color = \"g\") \n", " \n", " # prepare and render the plot \n", " plt.xlabel('Year') \n", " plt.ylabel('CO2 emissions (million tonnes)') \n", " plt.title ('Annual production-based CO2 emissions by China 1902-2018') \n", " plt.title ('Annual production-based CO2 emissions by China 1902-2018') \n", " plt.legend([\"Linear Regression\",\"Actual\"], loc =\"lower right\")\n", " plt.show() \n", "\n", "# Function: Calculate RMSE (Root Mean-Squared Error values) \n", "def rmse(b,y):\n", " predict=[]\n", " for i in range(0,n):\n", " predict.append(b[0]+b[1]*x[i])\n", " predict=np.array(predict) \n", " rmse_linear = np.sqrt(sklearn.metrics.mean_squared_error(y,predict))\n", " return(rmse_linear)\n", "\n", "# Function: Call the functions in a particular order\n", "def main(x,y): \n", " # Estimate Regression Coefficients \n", " b = estimate_coef(x, y) \n", " print(\"Estimated coefficients of the line y = b0 + b1*x are:\\nb0 = {} \\nb1 = {}\".format(b[0], b[1])) \n", " \n", " # Check the Root Mean Sqaured Error\n", " residual_error = rmse(b,y)\n", " print(\"RMSE Value by using Linear Regression is=\",residual_error)\n", " \n", " # Plot regression line \n", " plot_regression_line(x, y, b)\n", " " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated coefficients of the line y = b0 + b1*x are:\n", "b0 = -127261.4302050189 \n", "b1 = 65.84592892895174\n", "RMSE Value by using Linear Regression is= 1705.0661924295737\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Call the main function for Linear Regression \n", "if __name__ == \"__main__\": \n", " main(x,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part 2: Polynomial Regression\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Polynomial Regession is used to fit a non-linear model to the data. In Polynomial Regession, relationship between the independent variable x and the dependent variable y is modelled as an nth degree polynomial in x." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import chart_studio\n", "import chart_studio.plotly as py\n", "import plotly.express as px\n", "\n", "# Fitting Polynomial Regression to the dataset\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LinearRegression\n", "\n", "\n", "# Function: Visualizing the Polymonial Regression results\n", "# prepare and render the plot \n", "def viz_polymonial(X,Y, Y_poly,poly_degree):\n", " plt.scatter(X,Y, color='red')\n", " plt.plot(X,Y_poly, color='blue')\n", " plt.xlabel('Year') \n", " plt.ylabel('CO2 emissions (million tonnes)') \n", " plt.title ('Annual production-based CO2 emissions by China 1902-2018') \n", " plt.legend([\"Polynomial Regression degree \"+ str(poly_degree),\"Actual\"], loc =\"upper left\")\n", " plt.show()\n", " \n", " return\n", "\n", "# Function: Calculating the Polymonial Regression values\n", "def poly_regression(degree):\n", " X = df.iloc[:, 0:1].values # Consider the Year column as an array\n", " poly_reg = PolynomialFeatures(degree) # Get ready for a polynomial regression of given degree\n", " X_poly = poly_reg.fit_transform(X) # Compute number of output features, then Transform data to polynomial features\n", " lin_reg = LinearRegression() # \n", " lin_reg.fit(X_poly,y) # Fit a Linear Regression for Transformed data\n", " Y_poly = lin_reg.predict(X_poly) # Predict values \n", " \n", " # Check the Root Mean Sqaured Error\n", " rmse_poly = np.sqrt(sklearn.metrics.mean_squared_error(y,Y_poly))\n", " print(\"RMSE Value by using Polynomial Regression is=\",rmse_poly) \n", " \n", " # Visualize the results\n", " viz_polymonial(X,y,Y_poly,degree) \n", " \n", " return" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMSE Value by using Polynomial Regression is= 443.9556515605107\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#Call the function for Polynomial Regression for a particular degree \n", "poly_regression(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Changing the degree of the Polynomial\n", "One can try different values for the degree of the Polynomial and see the difference between the results visually and also by comparing it using the RMSE value." ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }