562 lines
68 KiB
Plaintext
562 lines
68 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<p style=\"text-align:center\">\n",
|
||
" <a href=\"https://skills.network\" target=\"_blank\">\n",
|
||
" <img src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/assets/logos/SN_web_lightmode.png\" width=\"200\" alt=\"Skills Network Logo\">\n",
|
||
" </a>\n",
|
||
"</p>\n",
|
||
"\n",
|
||
"\n",
|
||
"# Polynomial Regression\n",
|
||
"\n",
|
||
"\n",
|
||
"Estimated time needed: **15** minutes\n",
|
||
" \n",
|
||
"\n",
|
||
"## Objectives\n",
|
||
"\n",
|
||
"After completing this lab you will be able to:\n",
|
||
"\n",
|
||
"* Use scikit-learn to implement Polynomial Regression\n",
|
||
"* Create a model, train it, test it and use the model\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h1>Table of contents</h1>\n",
|
||
"\n",
|
||
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
|
||
" <ol>\n",
|
||
" <li><a href=\"#download_data\">Downloading Data</a></li>\n",
|
||
" <li><a href=\"#polynomial_regression\">Polynomial regression</a></li>\n",
|
||
" <li><a href=\"#evaluation\">Evaluation</a></li>\n",
|
||
" <li><a href=\"#practice\">Practice</a></li>\n",
|
||
" </ol>\n",
|
||
"</div>\n",
|
||
"<br>\n",
|
||
"<hr>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Importing Needed packages\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import pandas as pd\n",
|
||
"import pylab as pl\n",
|
||
"import numpy as np\n",
|
||
"%matplotlib inline\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"download_data\">Downloading Data</h2>\n",
|
||
"To download the data, we will use !wget to download it from IBM Object Storage.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"!wget -O FuelConsumption.csv https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork/labs/Module%202/data/FuelConsumptionCo2.csv"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"__Did you know?__ When it comes to Machine Learning, you will likely be working with large datasets. As a business, where can you host your data? IBM is offering a unique opportunity for businesses, with 10 Tb of IBM Cloud Object Storage: [Sign up now for free](https://www.ibm.com/us-en/cloud/object-storage?utm_source=skills_network&utm_content=in_lab_content_link&utm_id=Lab-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork)\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"\n",
|
||
"## Understanding the Data\n",
|
||
"\n",
|
||
"### `FuelConsumption.csv`:\n",
|
||
"We have downloaded a fuel consumption dataset, **`FuelConsumption.csv`**, which contains model-specific fuel consumption ratings and estimated carbon dioxide emissions for new light-duty vehicles for retail sale in Canada. [Dataset source](http://open.canada.ca/data/en/dataset/98f1a129-f628-4ce4-b24d-6f16bf24dd64)\n",
|
||
"\n",
|
||
"- **MODELYEAR** e.g. 2014\n",
|
||
"- **MAKE** e.g. Acura\n",
|
||
"- **MODEL** e.g. ILX\n",
|
||
"- **VEHICLE CLASS** e.g. SUV\n",
|
||
"- **ENGINE SIZE** e.g. 4.7\n",
|
||
"- **CYLINDERS** e.g 6\n",
|
||
"- **TRANSMISSION** e.g. A6\n",
|
||
"- **FUEL CONSUMPTION in CITY(L/100 km)** e.g. 9.9\n",
|
||
"- **FUEL CONSUMPTION in HWY (L/100 km)** e.g. 8.9\n",
|
||
"- **FUEL CONSUMPTION COMB (L/100 km)** e.g. 9.2\n",
|
||
"- **CO2 EMISSIONS (g/km)** e.g. 182 --> low --> 0\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Reading the data in\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df = pd.read_csv(\"FuelConsumption.csv\")\n",
|
||
"\n",
|
||
"# take a look at the dataset\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's select some features that we want to use for regression.\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"cdf = df[['ENGINESIZE','CYLINDERS','FUELCONSUMPTION_COMB','CO2EMISSIONS']]\n",
|
||
"cdf.head(9)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Let's plot Emission values with respect to Engine size:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"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": {},
|
||
"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"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"msk = np.random.rand(len(df)) < 0.8\n",
|
||
"train = cdf[msk]\n",
|
||
"test = cdf[~msk]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"polynomial_regression\">Polynomial regression</h2>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Sometimes, the trend of data is not really linear, and looks curvy. In this case we can use Polynomial regression methods. In fact, many different regressions exist that can be used to fit whatever the dataset looks like, such as quadratic, cubic, and so on, and it can go on and on to infinite degrees.\n",
|
||
"\n",
|
||
"In essence, we can call all of these, polynomial regression, where the relationship between the independent variable x and the dependent variable y is modeled as an nth degree polynomial in x. Lets say you want to have a polynomial regression (let's make 2 degree polynomial):\n",
|
||
"\n",
|
||
"\n",
|
||
"$$y = b + \\theta_1 x + \\theta_2 x^2$$\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"Now, the question is: how we can fit our data on this equation while we have only x values, such as __Engine Size__? \n",
|
||
"Well, we can create a few additional features: 1, $x$, and $x^2$.\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"__PolynomialFeatures()__ function in Scikit-learn library, drives a new feature sets from the original feature set. That is, a matrix will be generated consisting of all polynomial combinations of the features with degree less than or equal to the specified degree. For example, lets say the original feature set has only one feature, _ENGINESIZE_. Now, if we select the degree of the polynomial to be 2, then it generates 3 features, degree=0, degree=1 and degree=2: \n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.preprocessing import PolynomialFeatures\n",
|
||
"from sklearn import linear_model\n",
|
||
"train_x = np.asanyarray(train[['ENGINESIZE']])\n",
|
||
"train_y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"\n",
|
||
"test_x = np.asanyarray(test[['ENGINESIZE']])\n",
|
||
"test_y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"\n",
|
||
"\n",
|
||
"poly = PolynomialFeatures(degree=2)\n",
|
||
"train_x_poly = poly.fit_transform(train_x)\n",
|
||
"train_x_poly"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"**fit_transform** takes our x values, and output a list of our data raised from power of 0 to power of 2 (since we set the degree of our polynomial to 2). \n",
|
||
"\n",
|
||
"The equation and the sample example is displayed below. \n",
|
||
"\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{bmatrix}\n",
|
||
" v_1\\\\\\\\\\\\\n",
|
||
" v_2\\\\\\\\\n",
|
||
" \\vdots\\\\\\\\\n",
|
||
" v_n\n",
|
||
"\\end{bmatrix}\\longrightarrow \\begin{bmatrix}\n",
|
||
" [ 1 & v_1 & v_1^2]\\\\\\\\\n",
|
||
" [ 1 & v_2 & v_2^2]\\\\\\\\\n",
|
||
" \\vdots & \\vdots & \\vdots\\\\\\\\\n",
|
||
" [ 1 & v_n & v_n^2]\n",
|
||
"\\end{bmatrix}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"$$\n",
|
||
"\\begin{bmatrix}\n",
|
||
" 2.\\\\\\\\\n",
|
||
" 2.4\\\\\\\\\n",
|
||
" 1.5\\\\\\\\\n",
|
||
" \\vdots\n",
|
||
"\\end{bmatrix} \\longrightarrow \\begin{bmatrix}\n",
|
||
" [ 1 & 2. & 4.]\\\\\\\\\n",
|
||
" [ 1 & 2.4 & 5.76]\\\\\\\\\n",
|
||
" [ 1 & 1.5 & 2.25]\\\\\\\\\n",
|
||
" \\vdots & \\vdots & \\vdots\\\\\\\\\n",
|
||
"\\end{bmatrix}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"It looks like feature sets for multiple linear regression analysis, right? Yes. It Does. \n",
|
||
"Indeed, Polynomial regression is a special case of linear regression, with the main idea of how do you select your features. Just consider replacing the $x$ with $x_1$, $x_1^2$ with $x_2$, and so on. Then the 2nd degree equation would be turn into:\n",
|
||
"\n",
|
||
"$$y = b + \\theta_1 x_1 + \\theta_2 x_2$$\n",
|
||
"\n",
|
||
"Now, we can deal with it as a 'linear regression' problem. Therefore, this polynomial regression is considered to be a special case of traditional multiple linear regression. So, you can use the same mechanism as linear regression to solve such problems. \n",
|
||
"\n",
|
||
"\n",
|
||
"\n",
|
||
"so we can use __LinearRegression()__ function to solve it:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"clf = linear_model.LinearRegression()\n",
|
||
"train_y_ = clf.fit(train_x_poly, train_y)\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', clf.coef_)\n",
|
||
"print ('Intercept: ',clf.intercept_)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"As mentioned before, __Coefficient__ and __Intercept__ , are the parameters of the fit curvy line. \n",
|
||
"Given that it is a typical multiple linear regression, with 3 parameters, and knowing that the parameters are the intercept and coefficients of hyperplane, sklearn has estimated them from our new set of feature sets. Lets plot it:\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
|
||
"XX = np.arange(0.0, 10.0, 0.1)\n",
|
||
"yy = clf.intercept_[0]+ clf.coef_[0][1]*XX+ clf.coef_[0][2]*np.power(XX, 2)\n",
|
||
"plt.plot(XX, yy, '-r' )\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"evaluation\">Evaluation</h2>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from sklearn.metrics import r2_score\n",
|
||
"\n",
|
||
"test_x_poly = poly.transform(test_x)\n",
|
||
"test_y_ = clf.predict(test_x_poly)\n",
|
||
"\n",
|
||
"print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_ - test_y)))\n",
|
||
"print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y_ - test_y) ** 2))\n",
|
||
"print(\"R2-score: %.2f\" % r2_score(test_y,test_y_ ) )"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2 id=\"practice\">Practice</h2>\n",
|
||
"Try to use a polynomial regression with the dataset but this time with degree three (cubic). Does it result in better accuracy?\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"tags": []
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Coefficients: [[ 0. 29.92154206 3.7724906 -0.41363227]]\n",
|
||
"Intercept: [131.29858492]\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Mean absolute error: 23.82\n",
|
||
"Residual sum of squares (MSE): 950.52\n",
|
||
"R2-score: 0.77\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from sklearn import linear_model\n",
|
||
"from sklearn.preprocessing import PolynomialFeatures\n",
|
||
"from sklearn.metrics import r2_score\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"df = pd.read_csv(\"FuelConsumptionCo2.csv\")\n",
|
||
"cdf = df[['ENGINESIZE', 'CO2EMISSIONS']]\n",
|
||
"\n",
|
||
"train, test = train_test_split(cdf, test_size=0.2, random_state=42)\n",
|
||
"train_x = np.asanyarray(train[['ENGINESIZE']])\n",
|
||
"train_y = np.asanyarray(train[['CO2EMISSIONS']])\n",
|
||
"test_x = np.asanyarray(test[['ENGINESIZE']])\n",
|
||
"test_y = np.asanyarray(test[['CO2EMISSIONS']])\n",
|
||
"\n",
|
||
"poly3 = PolynomialFeatures(degree=3)\n",
|
||
"train_x_poly3 = poly3.fit_transform(train_x)\n",
|
||
"\n",
|
||
"clf3 = linear_model.LinearRegression()\n",
|
||
"clf3.fit(train_x_poly3, train_y)\n",
|
||
"\n",
|
||
"print(\"Coefficients: \", clf3.coef_)\n",
|
||
"print(\"Intercept: \", clf3.intercept_)\n",
|
||
"\n",
|
||
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
|
||
"XX = np.arange(0.0, 10.0, 0.1)\n",
|
||
"YY = (clf3.intercept_[0]\n",
|
||
" + clf3.coef_[0][1]*XX\n",
|
||
" + clf3.coef_[0][2]*np.power(XX, 2)\n",
|
||
" + clf3.coef_[0][3]*np.power(XX, 3))\n",
|
||
"plt.plot(XX, YY, '-r')\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"plt.title(\"Polynomial Regression (Degree 3)\")\n",
|
||
"plt.show()\n",
|
||
"\n",
|
||
"test_x_poly3 = poly3.transform(test_x)\n",
|
||
"test_y3_ = clf3.predict(test_x_poly3)\n",
|
||
"\n",
|
||
"print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y3_ - test_y)))\n",
|
||
"print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y3_ - test_y) ** 2))\n",
|
||
"print(\"R2-score: %.2f\" % r2_score(test_y, test_y3_))\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<details><summary>Click here for the solution</summary>\n",
|
||
"\n",
|
||
"```python \n",
|
||
"poly3 = PolynomialFeatures(degree=3)\n",
|
||
"train_x_poly3 = poly3.fit_transform(train_x)\n",
|
||
"clf3 = linear_model.LinearRegression()\n",
|
||
"train_y3_ = clf3.fit(train_x_poly3, train_y)\n",
|
||
"\n",
|
||
"# The coefficients\n",
|
||
"print ('Coefficients: ', clf3.coef_)\n",
|
||
"print ('Intercept: ',clf3.intercept_)\n",
|
||
"plt.scatter(train.ENGINESIZE, train.CO2EMISSIONS, color='blue')\n",
|
||
"XX = np.arange(0.0, 10.0, 0.1)\n",
|
||
"yy = clf3.intercept_[0]+ clf3.coef_[0][1]*XX + clf3.coef_[0][2]*np.power(XX, 2) + clf3.coef_[0][3]*np.power(XX, 3)\n",
|
||
"plt.plot(XX, yy, '-r' )\n",
|
||
"plt.xlabel(\"Engine size\")\n",
|
||
"plt.ylabel(\"Emission\")\n",
|
||
"test_x_poly3 = poly3.transform(test_x)\n",
|
||
"test_y3_ = clf3.predict(test_x_poly3)\n",
|
||
"print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y3_ - test_y)))\n",
|
||
"print(\"Residual sum of squares (MSE): %.2f\" % np.mean((test_y3_ - test_y) ** 2))\n",
|
||
"print(\"R2-score: %.2f\" % r2_score(test_y,test_y3_ ) )\n",
|
||
"\n",
|
||
"```\n",
|
||
"\n",
|
||
"</details>\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"<h2>Want to learn more?</h2>\n",
|
||
"\n",
|
||
"IBM SPSS Modeler is a comprehensive analytics platform that has many machine learning algorithms. It has been designed to bring predictive intelligence to decisions made by individuals, by groups, by systems – by your enterprise as a whole. A free trial is available through this course, available here: <a href=\"https://www.ibm.com/analytics/spss-statistics-software?utm_source=skills_network&utm_content=in_lab_content_link&utm_id=Lab-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork\">SPSS Modeler</a>\n",
|
||
"\n",
|
||
"Also, you can use Watson Studio to run these notebooks faster with bigger datasets. Watson Studio is IBM's leading cloud solution for data scientists, built by data scientists. With Jupyter notebooks, RStudio, Apache Spark and popular libraries pre-packaged in the cloud, Watson Studio enables data scientists to collaborate on their projects without having to install anything. Join the fast-growing community of Watson Studio users today with a free account at <a href=\"https://www.ibm.com/cloud/watson-studio?utm_source=skills_network&utm_content=in_lab_content_link&utm_id=Lab-IBMDeveloperSkillsNetwork-ML0101EN-SkillsNetwork\">Watson Studio</a>\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Thank you for completing this lab!\n",
|
||
"\n",
|
||
"\n",
|
||
"## Author\n",
|
||
"\n",
|
||
"Saeed Aghabozorgi\n",
|
||
"\n",
|
||
"\n",
|
||
"### Other Contributors\n",
|
||
"\n",
|
||
"<a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a>\n",
|
||
"\n",
|
||
"\n",
|
||
"## <h3 align=\"center\"> © IBM Corporation 2020. All rights reserved. <h3/>\n",
|
||
"\n",
|
||
"\n",
|
||
"<!--## Change Log\n",
|
||
"\n",
|
||
"\n",
|
||
"| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n",
|
||
"|---|---|---|---|\n",
|
||
"| 2021-01-11 | 2.3 | Lakshmi | Changed R2-score calculation in polynomial regression |\n",
|
||
"| 2020-11-04 | 2.2 | Lakshmi | Made changes in markdown of equations |\n",
|
||
"| 2020-11-03 | 2.1 | Lakshmi | Made changes in URL |\n",
|
||
"| 2020-08-27 | 2.0 | Lavanya | Moved lab to course repo in GitLab |\n",
|
||
"| | | | |\n",
|
||
"| | | | | --!>\n",
|
||
"\n",
|
||
"\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python",
|
||
"language": "python",
|
||
"name": "conda-env-python-py"
|
||
},
|
||
"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.12"
|
||
},
|
||
"prev_pub_hash": "4dc110debac287dfd374a575573c16e62a80a935b3bbe2b2f6d5a0598e6e33f6"
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|