{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Polynomial regression and its restrictions\n", "Developed by Elias Anderssen Dalan ✉️, supported by Centre for Computing in Science Education and Hylleraas Centre for Quantum Molecular Sciences." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Things you might need before tackling this notebook:\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most students are familiar with, or atleast have been introduced to, the concept of polynomial regression. Polynomial regression is a form of data analysis where the relationship between an independent variable x and the dependant variable y is modeled using some sort of n-th order polynomial. You are most likely fammiliar with linear regression. One example is shown below:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "x = [0, 1, 2, 3, 4] \n", "y = [-.3, 1.2, 2.04, 2.89, 3.98] #Datapoints measured\n", "\n", "a, b = np.polyfit(x, y, 1)\n", "x_ = np.linspace(0, 4, 100)\n", "y_ = a * x_ + b\n", "\n", "plt.title(f\"Model function: {round(a,3)}x - {abs(round(b,3))}\")\n", "plt.scatter(x, y, label=\"Datapoints\", color=\"red\")\n", "plt.plot(x_, y_, label=\"Fitted function\")\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.legend()\n", "plt.grid()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When trying to model more complex functions, such as a titration curve or a phase diagram, regression using polynomials usually fails because of their underlying restrictions. Every model carries something called an inductive bias, which are restrictions which follow from the assumptions made when choosing a model. I. ex: If you choose a linear regression model, you assume that the relationship between x and y is linear, which restricts you to only model linear relationships.\n", "\n", "As an example we have tried to model $f(x)=e^{-(x-1)^2}+e^{-(x+1)^2}$ using polynomials of different orders:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fx = lambda x: np.exp(-(x-1)**2) + np.exp(-(x+1)**2)\n", "\n", "x = np.linspace(-5, 5, 50)\n", "y = fx(x)\n", "\n", "a, b = np.polyfit(x, y, 1) #linear regression\n", "f1 = a * x + b\n", "\n", "a, b, c, d = np.polyfit(x, y, 3) #cubic\n", "f3 = a*x**3 + b*x**2 + c*x + d\n", "\n", "a, b, c, d, e, f = np.polyfit(x, y, 5)\n", "f5 = a*x**5 + b*x**4 + c*x**3 + d*x**2 + e*x + f\n", "\n", "n = 10\n", "f_n = 0\n", "\n", "coeff = np.polyfit(x, y, n)\n", "for i, coe in enumerate(coeff):\n", " f_n += coe * x**(n-i)\n", "\n", "plt.plot(x, f1, label=\"Polynomial, degree 1\")\n", "plt.plot(x, f3, label=\"Polynomial, degree 3\")\n", "plt.plot(x, f5, label=\"Polynomial, degree 5\")\n", "plt.plot(x, f_n, label=f\"Polynomial, degree {n}\")\n", "\n", "x = np.linspace(-5, 5, 100)\n", "plt.plot(x, fx(x), label=\"Model function\")\n", "plt.grid()\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can probably imagine, polynomial regression is not great when trying to model a non-polynomial function. Alot of functions that we encounter in the real world are not easily constructed as a combination of \"normal\" functions (sine, cosine, polynomials, exponentials and such), so often one needs to use different methods." ] } ], "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.3" } }, "nbformat": 4, "nbformat_minor": 4 }