511 lines
97 KiB
Plaintext
511 lines
97 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "873577f7",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Polynomial Regression\n",
|
|
"\n",
|
|
"In fact, the polynomial regression does not differ too much from the multiple regression, in the sense that the model we will build is again a *linear* one: we wish to fit a polynomal of some degree to the data. The model looks like this:\n",
|
|
"$$ y(w, x) = w_0 + w_1 x + w_2 x^2 + \\cdots + w_p x^p, $$\n",
|
|
"for a polynomial of degree $p$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "65561dbe",
|
|
"metadata": {},
|
|
"source": [
|
|
"\n",
|
|
"Thus, having a set $\\left\\{ (x_i, y_i): i = 1,\\ldots,n \\right\\}$ of $n$ samples (dataset), the $n \\times (p+1)$ *design* matrix can be constructed as\n",
|
|
"$$\n",
|
|
"X = \\begin{bmatrix}\n",
|
|
"1 & x_1 & x_1^2 & \\cdots & x_1^p \\\\\n",
|
|
"1 & x_2 & x_2^2 & \\cdots & x_2^p \\\\\n",
|
|
"\\vdots & \\vdots & \\vdots & \\ddots & \\vdots \\\\\n",
|
|
"1 & x_n & x_n^2 & \\cdots & x_n^p \\\\\n",
|
|
"\\end{bmatrix},\n",
|
|
"$$\n",
|
|
"which is also called a **Vandermonde matrix**, so that $y(w, x) = X w$.\n",
|
|
"Since the model constructed is linear, we may simply use the linear least squares to fit the coefficients (as well as the intercept) of the model to the data."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "764c0148",
|
|
"metadata": {},
|
|
"source": [
|
|
"Therefore, for the given data $\\left\\{ (x_i, y_i): i = 1,\\ldots,n \\right\\}$, we require\n",
|
|
"$$\n",
|
|
" X w = y, \\qquad y = [y_1, \\ldots, y_n]^\\top.\n",
|
|
"$$\n",
|
|
"to be solved for $w$. Surely, this problem is to be solved by means of *least-squares*:\n",
|
|
"$$\n",
|
|
" \\text{minimise } \\tfrac{1}{2} \\Vert X w - y \\Vert^2.\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "01fd52f7",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Least-Squares Solution\n",
|
|
"\n",
|
|
"Indeed, this problem has also analytically represented solution: the *first-order optimality condition* requires that we solve\n",
|
|
"$$\n",
|
|
" X^\\top X w = X^\\top y.\n",
|
|
"$$\n",
|
|
"which is known to be the so-called *normal equations*."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ca13436d",
|
|
"metadata": {},
|
|
"source": [
|
|
"Under the assumption that $X^\\top X$ is *non-singular* (that depends on the data, and is in general very *ill-conditioned*), the solution to the *curve-fitting* problem by means of the *least-squares* sense is\n",
|
|
"$$\n",
|
|
" w = (X^\\top X)^{-1} X^\\top y.\n",
|
|
"$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a464f110",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Data Generation**\n",
|
|
"\n",
|
|
"In most cases, it will be nice to apply the methodology to our generated artificial data. So, let us generate some data from a polynomial in this part.\n",
|
|
"\n",
|
|
"In order to be able use polynomials as beneficial as possible, although this library `numethods` does not depend on [NumPy](), nevertheless, we will use NumPy's **polynomial** module:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "1adfc002",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from numpy.polynomial import Polynomial"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "475679f9",
|
|
"metadata": {},
|
|
"source": [
|
|
"In order to be able to use our definitions later, let us construct first the model polynomial (**true** relation): let the model be\n",
|
|
"$$ y(x) = 1 + 2x - 3x^2 + 4x^3. $$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "cbc8e75b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def poly_relation(w, x):\n",
|
|
" p = Polynomial(w) # check help(Polynomial)\n",
|
|
" return p(x)\n",
|
|
"\n",
|
|
"def true_poly_relation(x):\n",
|
|
" w = [1, 2, -3, 4]\n",
|
|
" return poly_relation(w, x)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "28b792fe",
|
|
"metadata": {},
|
|
"source": [
|
|
"> **IMPORTANT**.\n",
|
|
"> Even further, one can write those functions without the use of NumPy! This would be another extension of the library `numethods`, as polynomials are represented by just *vectors*."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f8b133e0",
|
|
"metadata": {},
|
|
"source": [
|
|
"Indeed, the above definitions of the models may be simplified a lot!\n",
|
|
"Anyway, using these functions, we may now generate our data, by using NumPy's random number generation."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "3afcf40c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"np.random.seed(42)\n",
|
|
"\n",
|
|
"n_samples = 20\n",
|
|
"x = np.linspace(-3, 3, n_samples)\n",
|
|
"# generate data with random noice N(0, 144)\n",
|
|
"y = true_poly_relation(x) + 12*np.random.randn(n_samples)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cdafa99c",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let's see if the data produced is looking good (as we might possibly guess)."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "6bb8f3be",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from matplotlib import pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "58e5ea93",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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Bg0apJ07d2r06NHas2ePLr30Uud0CAAAcGrPfbtJuw4c0Zdr6+/anbNFeT0H3ZMiFGsLVE21y6LKVQe6J0U0WKYffvhB69at03XXXSdJWr58uSoqKvT888+rZ8+eatOmjfbs2VPtMf7+/icsZfXbb78pLy9PTz31lPr27at27drV6mItSbLZbGrVqpXi4+Nltf7+cUNycrIqKiq0dOlS57H9+/dr8+bNat++/dl+yyfNL0lNmzbViBEjNHv2bL344ot64403zvo1AADwFquzDuqdJTslSf8akqJAP9eaOkB5PQdWH4vGDU6WpBMKbNXtcYOTZfWpeVTxXJSWlionJ0e7d+/WypUrNXnyZF199dW68sordeutt0qSWrZsqYqKCr3yyivavn273nnnHb322mvVnicxMVGHDh3S999/r7y8PBUXFyshIUH+/v7Ox33xxRd68sknzylv69atdfXVV2vkyJFatGiR1qxZo6FDh6pZs2a6+uqrz/p5ExMTtXTpUu3YsUN5eXlyOBx64okn9Pnnn2vr1q3asGGDvvzyy3MqyAAAeIMKu0OPfrJOhiFdc34zXdjK9S52pryeo4EpsZo2NFUxtupTA2JsgZo2NLVe13mdO3euYmNjlZiYqIEDB2rBggV6+eWX9fnnnztHPLt06aIXXnhBTz/9tFJSUvTuu+9qypQp1Z6nd+/euuuuu3TjjTeqadOmeuaZZ9S0aVPNnDlTH330kZKTk/XUU0/pueeeO+fMM2bMUNeuXXXllVeqV69eMgxDX3/99QlTA87Egw8+KKvVquTkZDVt2lSZmZny9/fX2LFj1alTJ1100UWyWq16//33zzk/AACebObiHUrPLpQtyE+PXeGagz4Wo6aJiB6ksLBQNptNBQUFCgsLq3ZfSUmJMjIylJSUpMDAs5+bancYSsvIV25RiaJCK6cK1NeIK+peXf09AADAXe0+eET9X1io4jK7plzbUX/untCgr3+qvnYslsqqI1YfS4MuhwUAAFCXxn+xQcVldnVr0Vg3dos3O06NmDYAAADg5eZtyNH89L3y9bFo8rUd5ePCnx5TXgEAALzYodIKjftigyRp5EXnqU106GkeYS7KKwAAgBf79/zNyi4oUXxEkO77Q2uz45wW5RUAAMBLrd9doBm/ZEiSJl6doiB/11rT9WQorwAAAF7I7jD02Kfr5DCkKzrFql/bKLMj1QrlFQAAwAu9u3Sn1uwqUGiAr8ZdmWx2nFqjvAIAAHiZvYUlembuJknSwwPbKirMfdY4p7zC5f3444+yWCw6ePBgrR+TmJioF198sd4yAQDgzibOSdeh0gp1jg/XzT1amB3njFBe3ZDFYjnl14gRIxosy4gRI2SxWHTXXXedcN/dd9/d4HkAAMCpLdiUq6/WZcvqY9Hka1LcbkdQyqsbys7Odn69+OKLCgsLq3bspZdeqnZ+eXl5veaJj4/X+++/ryNHjjiPlZSU6L///a8SEhp2azkAAFCzI2V2Pf7ZeknSbb0T1SHOZnKiM0d5dUMxMTHOL5vNJovF4rxdUlKi8PBwffjhh7rkkksUGBio2bNna/z48erSpUu153nxxReVmJhY7diMGTPUvn17BQYGql27dpo6depp86SmpiohIUGffPKJ89gnn3yi+Ph4nX/++dXOLS0t1X333aeoqCgFBgaqT58+WrZsWbVzvv76a7Vp00ZBQUHq16+fduzYccJrLl68WBdddJGCgoIUHx+v++67T4cPHz5tVgAAvNlL32/RrgNHFGcL1P3925gd56xQXo9jGIaKyypM+TIMo86+j0ceeUT33XefNm7cqMsuu6xWj/nPf/6jxx57TJMmTdLGjRs1efJkPf7445o1a9ZpH3vbbbdpxowZzttvvfWWbr/99hPOe/jhh/Xxxx9r1qxZWrlypVq1aqXLLrtM+fn5kqSsrCxde+21uvzyy7V69Wrdeeed+sc//lHtOdatW6fLLrtM1157rdauXasPPvhAixYt0r333lur7xMAAG+0KadIb/68XZI04eoUhQT4mpzo7Lhn6np0pNyu5Ce+NeW10ydepmD/uvkjGT16tK699tozesyTTz6p559/3vm4pKQkpaen6/XXX9fw4cNP+dhhw4Zp7Nix2rFjhywWi3755Re9//77+vHHH53nHD58WNOmTdPMmTM1aNAgSZWFef78+Zo+fboeeughTZs2Teedd57+/e9/y2KxqG3btlq3bp2efvpp5/M8++yzuvnmmzV69GhJUuvWrfXyyy/r4osv1rRp0xQY6D5XTAIA0BAcDkOPfrpOFQ5DA5Kj1T852uxIZ43y6qG6det2Rufv27dPWVlZuuOOOzRy5Ejn8YqKCtlsp58PExkZqSuuuEKzZs2SYRi64oorFBkZWe2c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8X766ScNHjxYcXFxslgs+uyzz8yO5PGmTJmiCy64QKGhoYqKitKQIUO0adMms2N5vGnTpqlTp07OXbV69eqlb775xuxY1VBe61m/fv304YcfatOmTfr444+1bds2XX/99WbH8mi//fabHA6HXn/9dW3YsEH//ve/9dprr+nRRx81O5rHKysr0w033KBRo0aZHcVjffDBBxo9erQee+wxrVq1Sn379tWgQYOUmZlpdjSPdvjwYXXu3Fn/93//Z3YUr7Fw4ULdc889WrJkiebPn6+KigoNGDBAhw8fNjuaR2vevLmeeuopLV++XMuXL9cf/vAHXX311dqwYYPZ0ZxY57WBffHFFxoyZIhKS0vl5+dndhyv8eyzz2ratGnavn272VG8wsyZMzV69GgdPHjQ7Cgep0ePHkpNTdW0adOcx9q3b68hQ4ZoypQpJibzHhaLRZ9++qmGDBlidhSvsm/fPkVFRWnhwoW66KKLzI7jVSIiIvTss8/qjjvuMDuKJEZeG1R+fr7effdd9e7dm+LawAoKChQREWF2DOCclJWVacWKFRowYEC14wMGDNDixYtNSgU0jIKCAkniv+UNyG636/3339fhw4fVq1cvs+M4UV4bwCOPPKKQkBA1adJEmZmZ+vzzz82O5FW2bdumV155RXfddZfZUYBzkpeXJ7vdrujo6GrHo6OjlZOTY1IqoP4ZhqExY8aoT58+SklJMTuOx1u3bp0aNWqkgIAA3XXXXfr000+VnJxsdiwnyutZGD9+vCwWyym/li9f7jz/oYce0qpVqzRv3jxZrVbdeuutYrbGmTvT912S9uzZo4EDB+qGG27QnXfeaVJy93Y27zvql8ViqXbbMIwTjgGe5N5779XatWv13//+1+woXqFt27ZavXq1lixZolGjRmn48OFKT083O5aTr9kB3NG9996rm2666ZTnJCYmOn8fGRmpyMhItWnTRu3bt1d8fLyWLFniUkPw7uBM3/c9e/aoX79+6tWrl9544416Tue5zvR9R/2JjIyU1Wo9YZQ1Nzf3hNFYwFP87W9/0xdffKGffvpJzZs3NzuOV/D391erVq0kSd26ddOyZcv00ksv6fXXXzc5WSXK61moKqNno2rEtbS0tC4jeYUzed93796tfv36qWvXrpoxY4Z8fPiQ4Wydy9931C1/f3917dpV8+fP1zXXXOM8Pn/+fF199dUmJgPqnmEY+tvf/qZPP/1UP/74o5KSksyO5LUMw3Cp3kJ5rUdpaWlKS0tTnz591LhxY23fvl1PPPGEWrZsyahrPdqzZ48uueQSJSQk6LnnntO+ffuc98XExJiYzPNlZmYqPz9fmZmZstvtWr16tSSpVatWatSokbnhPMSYMWM0bNgwdevWzfmpQmZmJnO669mhQ4e0detW5+2MjAytXr1aERERSkhIMDGZ57rnnnv03nvv6fPPP1doaKjzEwebzaagoCCT03muRx99VIMGDVJ8fLyKior0/vvv68cff9TcuXPNjvY7A/Vm7dq1Rr9+/YyIiAgjICDASExMNO666y5j165dZkfzaDNmzDAknfQL9Wv48OEnfd8XLFhgdjSP8uqrrxotWrQw/P39jdTUVGPhwoVmR/J4CxYsOOnf7eHDh5sdzWPV9N/xGTNmmB3No91+++3O/740bdrUuPTSS4158+aZHasa1nkFAACA22AiIAAAANwG5RUAAABug/IKAAAAt0F5BQAAgNugvAIAAMBtUF4BAADgNiivAAAAcBuUVwAAALgNyisAAADcBuUVAAAAboPyCgAAALfx/8hVTL+k5EbRAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.style.use('default')\n",
|
|
"plt.figure(figsize=(8,6))\n",
|
|
"# fig, ax = plt.subplots(figsize=(8,6))\n",
|
|
"\n",
|
|
"plt.scatter(x, y, label='Data Points')\n",
|
|
"plt.plot(x, true_poly_relation(x), label='True Model')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "be97ec65",
|
|
"metadata": {},
|
|
"source": [
|
|
"To sum up, our data suitable for this library is (renamed to `xx` and `yy`):"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "baac1cc3",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import sys\n",
|
|
"sys.path.append('../')\n",
|
|
"from numethods import *"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "217dcbde",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(Vector([-3.0, -2.6842105263157894, -2.3684210526315788, -2.0526315789473686, -1.736842105263158, -1.4210526315789473, -1.105263157894737, -0.7894736842105265, -0.47368421052631593, -0.1578947368421053, 0.1578947368421053, 0.4736842105263155, 0.7894736842105261, 1.1052631578947363, 1.421052631578947, 1.7368421052631575, 2.052631578947368, 2.3684210526315788, 2.6842105263157894, 3.0]),\n",
|
|
" Vector([-134.0394301638652, -105.00134977413586, -65.93469190931741, -32.06217503699786, -35.29096019342883, -22.18856169304172, 8.674420238924386, 4.792246345985944, -6.679326105486812, 7.104393070050092, -4.304269348302689, -3.889383956387331, 5.580905474275715, -18.012869277925944, -11.43643927080956, 9.633946354167364, 14.904781476529255, 45.82141266237815, 51.21597235632019, 71.0523555839765]))"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"xx, yy = Vector(x.tolist()), Vector(y.tolist())\n",
|
|
"xx, yy"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c48d505d",
|
|
"metadata": {},
|
|
"source": [
|
|
"We now should construct our design matrix $X$ as an object of `Matrix` class, defined in this library `numethods`.\n",
|
|
"\n",
|
|
"As noticed in the definition of the `Matrix` class in `linalg.py`, we can initialise a *zero* matrix as follows:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"id": "460789c1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Matrix([[0.0, 0.0, 0.0], [0.0, 0.0, 0.0]])\n",
|
|
"Matrix([[0.0, 0.0, 0.0], [0.0, 0.0, 1.0]])\n",
|
|
"Matrix([[0.0, 0.0], [0.0, 0.0], [0.0, 1.0]])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"A = Matrix.zeros(2, 3) # rows - columns\n",
|
|
"print(A) # each row is a vector of length 3\n",
|
|
"A[1, 2] = 1.0\n",
|
|
"print(A)\n",
|
|
"print(A.transpose())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e3ae5319",
|
|
"metadata": {},
|
|
"source": [
|
|
"However, in order to decide the dimensions of our design matrix, we need the *degree* of the polynomial that is going to be used in the model."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b9ecaec8",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Polynomial Regression: the Design Matrix**\n",
|
|
"\n",
|
|
"The design matrix for polynomial regression is not difficult to build. A quick-and-dirty one can be written as follows:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"id": "6c467a7a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def design_matrix_for_poly(x_data, degree):\n",
|
|
" n_samples, n_features = len(x_data), degree + 1\n",
|
|
" X = Matrix.zeros(n_samples, n_features) # `Matrix.ones` is needed\n",
|
|
" for row in range(n_samples):\n",
|
|
" for col in range(n_features):\n",
|
|
" X[row, col] = x_data[row] ** col\n",
|
|
"\n",
|
|
" return X"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "ed38f395",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Matrix([[1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0], [1.0, 2.0, 4.0, 8.0], [1.0, 3.0, 9.0, 27.0], [1.0, 4.0, 16.0, 64.0]])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# quick testing:\n",
|
|
"xx_test = range(5) # 5 observation / samples\n",
|
|
"XX_design_test = design_matrix_for_poly(xx_test, 3) # for degree = 3\n",
|
|
"print(XX_design_test)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c76df359",
|
|
"metadata": {},
|
|
"source": [
|
|
"Now that we succesfully construct the design matrix, we may supply it to fit the model. \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fb05a363",
|
|
"metadata": {},
|
|
"source": [
|
|
"Let our model (of guess) is of degree 3:\n",
|
|
"$$ y(w, x) = w_0 + w_1 x + w_2 x^2 + w_3 x^3. $$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "8b454683",
|
|
"metadata": {},
|
|
"source": [
|
|
"The solution to the linear least-squares problem can be done using the library's `LeastSquaresSolver` in `orthogonal.py`; this is also given within the `demo.py` file."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "20c7bb17",
|
|
"metadata": {},
|
|
"source": [
|
|
"First our desing matrix:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "f666b2e7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"degree = 3\n",
|
|
"X_design = design_matrix_for_poly(xx, degree)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1a50a7bd",
|
|
"metadata": {},
|
|
"source": [
|
|
"Then, our least-squares solution from the library `numethods`:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "6d55d7b3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Least squares solution: Vector([-0.3219651332560268, -5.144868030256671, -3.221249753601149, 4.5650870901051475])\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"w_ls = LeastSquaresSolver(X_design, yy).solve()\n",
|
|
"print(\"Least squares solution:\", w_ls)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "03df44e8",
|
|
"metadata": {},
|
|
"source": [
|
|
"> **CAUTION**.\n",
|
|
"> Seemingly, the library's functions are not working correctly! It must be checked in detail!\n",
|
|
" A quick check in `orthogonal.py`, the class `QRHouseholder` is at the end modifying the contructed matrix `Q` with `self.Q = self.Q.transpose()`, which is possibly wrong, I guess!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4efb0ef5",
|
|
"metadata": {},
|
|
"source": [
|
|
"In order to see if the `solve` method of the `LeastSquaresSolver` class works as it should, we use NumPy to check by solving the *normal equation*:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "4186c3eb",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([-0.32196513, -5.14486803, -3.22124975, 4.56508709])"
|
|
]
|
|
},
|
|
"execution_count": 13,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"X = np.array(X_design.data)\n",
|
|
"y = np.array(yy.data)\n",
|
|
"\n",
|
|
"w = np.linalg.solve(X.T @ X, X.T @ y)\n",
|
|
"w"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6827dbc0",
|
|
"metadata": {},
|
|
"source": [
|
|
"In order to visualise, let us plot the regression (polynomial curve):"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "e34a6d3f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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7CqV6qUzKnTo0IHbt28zevRo7t+/T6tWrQzdIYQQQgiRvq/2XuXukxh2nM+5sTtZJcnrK6jvUQwXWzPSSrtUJM46UN+jWK7F9Oeff3LhwgXefvttAE6fPk1CQgLz58+nYcOGVKxYkfv37yc7xsTEJMVUVleuXOHRo0d8+eWXNGvWjMqVK2dosBaAra0t5cuXx83NDY3mv9sNnp6eJCQkcOLECcO2x48fc+3aNapUqZLVl5xq/ADFixdn4MCBrF27lkWLFrFs2bIsn0MIIYQoKnwDn7Lm+G0AZnSthplx/uo6IMnrK9CoVUzu5AmQIoFNej65kycadc6sLR4XF0dwcDD37t3j7NmzzJo1iy5duvDmm2/Sv39/AMqVK0dCQgLffvstN2/eZM2aNfzwww/J6nF3dycyMpI//viDR48eER0dTenSpTExMTEct23bNqZPn/5K8VaoUIEuXbowbNgwjhw5wr///kvfvn0pWbIkXbp0yXK97u7unDhxglu3bvHo0SP0ej1ffPEFv//+Ozdu3ODSpUvs2LHjlRJkIYQQoihI0On5bPMFFAXeql2SJuXz32BnSV5fUftqLizp64WzbfKuAc62Zizp65Wj87zu2bMHFxcX3N3dad++PX/99RfffPMNv//+u6HFs1atWixYsIA5c+ZQrVo11q1bx+zZs5PV07hxY/73v//Rq1cvihcvzty5cylevDg+Pj789ttveHp68uWXX/LVV1+9cswrV66kTp06vPnmmzRq1AhFUdi1a1eKrgGZMW7cODQaDZ6enhQvXpw7d+5gYmLChAkTqFGjBq+99hoajYZff/31leMXQgghCjOff25xOSgcW3NjJr6RPxt9VEpaHRELkfDwcGxtbQkLC8PGxibZvtjYWAICAvDw8MDMLOt9U3V6hZMBoYRExOJkndhVIKdaXIUQIqOy62+cEKLwu/c0hjYLDhGt1TG7W3XerV86V8+fXr72PJkqK5to1KpcnQ5LCCGEECI7Tdl2iWitjrpl7OlV1y2vw0mTdBsQQgghhCji9l0KZv/lBxipVczqVh11Pr57LMmrEEIIIUQRFhmXwORtlwAY9lpZKpawfskReUuSVyGEEEKIImzh/msEhcXiVsycka9XyOtwXkqSVyGEEEKIIurivTBWHg0AYFqXapib5K85XVMjyasQQgghRBGk0ytM3HIBvQJv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5fOysrK46qqr3LtqpaSk8Pbbb5sdqwqV11qWmprKK6+8wu7du3nttdfYu3cvd955p9mxfNquXbsoLy/n2WefZefOnTz55JPMnz+fjIwMs6P5PKfTyYABAxg1apTZUXzWsmXLGDduHI888ghbt27l+uuvp0+fPjgcDrOj+bTjx49z9dVX8/TTT5sdpd5Yu3YtY8aMYcOGDaxevZrTp0/Tq1cvjh8/bnY0nxYfH8/s2bPZvHkzmzdv5sYbb+S2225j586dZkdz031e69iKFSvo378/ZWVlNGjQwOw49cYTTzxBVlYWX3/9tdlR6oXFixczbtw4jh49anYUn3PdddfRoUMHsrKy3Mfatm1L//79mTVrlonJ6g+LxcLy5cvp37+/2VHqlW+//ZYmTZqwdu1abrjhBrPj1CtRUVE88cQTjBgxwuwogGZe61RRURFLly6lS5cuKq51rLi4mKioKLNjiPwsTqeTLVu20KtXryrHe/Xqxfr1601KJVI3iouLAfSzvA65XC5efvlljh8/TkpKitlx3FRe68CECRMICQmhUaNGOBwO3nzzTbMj1St79+5l3rx5jBw50uwoIj/L4cOHcblcREdHVzkeHR1NQUGBSalEap9hGKSnp9OtWzfat29vdhyft337dkJDQ7HZbIwcOZLly5fTrl07s2O5qbxegqlTp2KxWC742Lx5s/v8hx9+mK1bt7Jq1Sr8/f0ZOnQoWq1x8S523AHy8/Pp3bs3AwYM4J577jEpuXe7lHGX2mWxWKo8NwzjrGMivmTs2LFs27aNl156yewo9ULr1q3Jyclhw4YNjBo1imHDhvH555+bHcstwOwA3mjs2LEMHDjwguckJia6v7bb7djtdi6//HLatm1LQkICGzZs8KgpeG9wseOen59PamoqKSkpLFiwoJbT+a6LHXepPXa7HX9//7NmWQsLC8+ajRXxFQ888AArVqzgww8/JD4+3uw49YLVaqVly5YAJCcns2nTJp566imeffZZk5NVUHm9BJVl9FJUzriWlZXVZKR64WLG/cCBA6SmptKxY0cWLVqEn58+ZLhUP+fvu9Qsq9VKx44dWb16Nb/+9a/dx1evXs1tt91mYjKRmmcYBg888ADLly9nzZo1JCUlmR2p3jIMw6N6i8prLdq4cSMbN26kW7duREZG8vXXXzN58mRatGihWddalJ+fT48ePWjWrBlz5szh22+/db8WExNjYjLf53A4KCoqwuFw4HK5yMnJAaBly5aEhoaaG85HpKenM2TIEJKTk92fKjgcDq3prmXHjh3jq6++cj/ft28fOTk5REVF0axZMxOT+a4xY8bw4osv8uabb9KwYUP3Jw7h4eEEBQWZnM53ZWRk0KdPHxISEigtLeXll19mzZo1vPPOO2ZH+x9Das22bduM1NRUIyoqyrDZbEZiYqIxcuRIIy8vz+xoPm3RokUGcM6H1K5hw4adc9yzs7PNjuZTnnnmGaN58+aG1Wo1OnToYKxdu9bsSD4vOzv7nH+3hw0bZnY0n3W+n+OLFi0yO5pPGz58uPvnS+PGjY2bbrrJWLVqldmxqtB9XkVERETEa2ghoIiIiIh4DZVXEREREfEaKq8iIiIi4jVUXkVERETEa6i8ioiIiIjXUHkVEREREa+h8ioiIiIiXkPlVURERES8hsqriIiIiHgNlVcRERER8RoqryIiIiLiNf4fb56vPgH31aAAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 800x600 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.style.use('default')\n",
|
|
"plt.figure(figsize=(8,6))\n",
|
|
"# fig, ax = plt.subplots(figsize=(8,6))\n",
|
|
"\n",
|
|
"plt.scatter(xx.data, yy.data, label='Data Points')\n",
|
|
"plt.plot(xx.data, true_poly_relation(xx.data), label='True Model')\n",
|
|
"plt.plot(xx.data, poly_relation(w_ls.data, xx.data), \n",
|
|
" color='red', marker='o', label=\"Polynomial Regression (`numethods`)\")\n",
|
|
"plt.plot(xx.data, poly_relation(w, xx.data), \n",
|
|
" color='black', marker='o', label=\"Polynomial Regression (`NumPy`)\")\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.13.7"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|