{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Regressions\n", "\n", "$X = (0,1)$\n", "\n", "$Y = sin(2\\pi X)$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "![name](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAkAAAAEgCAIAAADT5FumAABLrklEQVR4nOzdB3hT5foA8Dd7NknTNt1NW0YLpZVNywYFRIELCCIgQ1FwsQQHV0XkqlfF+5d78TpAryCyRAQEFBAQQfZqKdBS6N4zHdnr/J/00FBCWjqSnCR9f08enpyRc9720LznO+c778ckCAIQQgghT8OkOgCEnE6pVAqFwsZzTCYTg8Fwwa7t7ujgwYNHjx4VCASrVq1yQQwIeSs61QEg5CwlJSUzZswYP3780qVLx48fHxcXl5ycTC4aMmTIggULnB1Abm6uWCzev3+/zfxHH300KChox44dNvMPHz48depUHo83ePDgxx57LKnezJkzL1265OxQEfJEmMCQ15o1a1bnzp337du3YcOGffv2zZw5s7q6mlz0wgsvTJ061dkBBAUFLV++vFevXi1cf/To0S+//LJWq33//fd//fXXM2fOHDp0KDAwcMCAAe+++27znz1w4IDRaHRE1Ah5DLyEiLwTQRAnTpyYOXOmdc706dPZbDb5fvbs2U19ikajtXD7969pM5PD4dx/kZBch06n2739TH7cuhGRSPR///d/RqPx/ffff/TRR5OSkuwGo9PpnnvuuZycHCYT/6JRB4ItMOSdaDRaVFTUypUrT5w4Qc6JiooKDQ0FgCNHjowbN27x4sUAcOvWraeeemrixImvv/56jx49+Hw+mXLOnz8/YcKEl19+GQCys7OXLl0aHx+v0WgA4Mcffxw4cODcuXOHDx++b98+MietXbv20UcfJWd+/vnn5B4///zz3r177927l5zMyMgYNWrU448//uyzz/744492MyWZ1Wxy2+rVq81m8/fffw8ACoVi6NCh06dPHzly5Pjx41UqVWlp6dy5c0tKSmbNmvXJJ58AwPr160eNGjVr1qz4+PiNGzc6/5eNEEUIhLzUoUOHyL4bcXFx//rXv+rq6qyL5s2b97e//Y18v2rVqoSEBK1WazabV61aRafTlUolQRAvvPDCuHHjyHX++usvsjOIwWDg8/kXL14kCCIrK+uXX34hCGLr1q1hYWHkp8rLyyUSyU8//UR+0M/P77vvviMIQq/XR0ZGrlq1ipz/6aefxsbG3h/z8ePHAeD48eM288PCwkaMGEEQRFlZ2RdffEEQhMFgEAgE3377LUEQR44cAQCtVmvdOBnMF198IRKJnPCrRcgtYAsMea3Ro0enpaW98847arV62bJl8fHxhYWFdtdks9kcDodGo02cONFsNldUVDS1TbPZbDKZdu3aZTQao6Kixo8fDwDffvvtmDFjBAIBAPj7+48ZM+a7776z+eChQ4dycnLa3HNEKpUqFAoACAgIePHFFwGAyWRGRkaWlZXdv/KyZcvIYLp06VJbW6vVatu2U4TcHCYw5M3CwsJWr16dmZm5cePGoqKif/zjH82v/8B7SGw2+9NPP/3Pf/4jl8tXrFihVqsBICcnRyaTWdcJDg7Oycmx+WBWVhaXyw0MDGzbD1JUVNS5c2cAUKvVK1eunD9//vLly0tKSuxehzx79uzzzz+/ePHi9evXt213CHkEvOWLvBNBEOnp6d26dSPvh82ZM+f3339PT09v/5ZfeeWVGTNmbNmy5b333svNzd26datAINDpdNYVdDqdv7+/zacEAoHZbG5hDxEbWVlZFRUVffr0IbufSCSSDRs20Gi0Q4cO2V152LBhFy9ejI+PP3r06M6dO9u2U4TcH7bAkHcymUwffPBB4zl0Or1Tp04t3wKLxaqtrbWZqdFoUlJSpFLpwoULV69eff78eQB46KGHbt++bV0nLS0tPj7e5oOxsbF6vf7atWtt+FlWr14dERGxaNEiADh37lzv3r3t5iSz2QwAV65codPpcXFxTXUJQchrYAsMea09e/asW7duypQpfn5++/bt++23306dOnX/auTdYOt767/x8fFfffXVhg0bZDLZn3/+Sc4nb6dt27aNzWafOnVq2LBhALBixYphw4YdOXJk+PDhu3fvzszM3Lx5s81eEhMTH3744eeff37NmjUmk+ns2bN284pKpQKA9PR0iURCo9EyMjI2bdpUVla2b98+Pp9PJsIffvihe/fuubm5CoWC3EjXrl0BYNu2bQkJCTExMTqdbs2aNQMGDLB2gETIKzGwmA3ySnQ6feDAgTdu3NizZ8/+/fvNZvOGDRvkcjkAbN68Wa/XBwYG3rp1SyQSpaamdurUqaysLCIi4ocffkhKSsrMzBw4cGCvXr04HE5KSgqfz588ebJUKr1x48aQIUMUCsX27dsPHjzYp0+fd955h8ViBQQETJkyZe/evdu3b+fz+R9//HFERER1dfW6desSEhLIZlx0dPSECRMYDMaBAwdqa2snTZokEAgUCkX37t2tMR8+fPivv/4id3H16tUbN25wOJwJEyasXr06KCiIXGfYsGH5+fnXr18n63SUlpYGBwdHR0f7+PhcuHCBTqc/9thjsbGx586dq6ure+GFF4RCYXp6+oABA6g7FAg5Cw0vLyCEEPJEeA8MIYSQR8IEhhBCyCNhAkMIIeSRMIGh5pSVwZUr0HRhCoQQogx2o0f2EQR8/jns22d5Q6PBxInw0ktUx4QQQo1gAvNsly7B2bPAYMDQodCoP7YD7NkDv/xy5z1BwO7dEBEB48Y5chcIIdQeeAnRg23cCG++ack0u3bB4sV3841D/PHHg+cghCiXn59/7NixEydO5ObmWgc11Wq1V65cccHeCwsL8/LybGYWFxe///778fHxZ8+edere3SWBqVSqV155xe6iW7duuTwcD1BUBFu33jNn/XpQKh22/fqyRPdw+Hi/eGS9FR5Z1zAajTNmzFi0aFFWVlZqauq8efOmT59OLtq4cWPv3r3Ly8sduLuqejYz582bN2PGDJuZwcHBr7322rVr18jKMs7jLpcQCYJoatAH8/1fpQjg5k2weQZdp4PMTHjoIcdsPynJsovGBg1yzJat8Mh6KzyyrrFhw4br16+npKSQk/Pnz583bx75fubMmTExMQEBAQ7cnd2qF+vWrTM6/Ny2xdwlgaHW8vVt6cy2mTYNbt+G+nEcLYYPhylTHLZxhFD73bp1S6VSmUwmBoNBlp/+5z//SVayNplMvXr1IgiCRqPV1NQQBCESiTQazfXr1yMjI2UyGUEQNTU1ACASieh0em1trdls5vF4HA6HHLv12rVrAoEgMjLSx8eH3J1Wq83IyJDJZF27dmWxWOQcmUxG7p1EEERubm5hYaFjc2dT3OUSImqthASwKa3erx9ERDhs+0wmvPsufPEFvPkmfPklvPUW0PE/C0LuZMCAAZmZmWPHjj1z5gw5JzQ0FABqamo+/fRTX1/foqIiANi6dauvr++rr746e/bsGTNmREdHp6am6nS6f//7376+vvn5+QBw8ODB7t27r127lhzQoF+/fidOnPjll1/GNXTc2rFjx6hRo06fPr19+/a4uLjTp08DQEZGxlNPPTVixAhynfLy8hEjRixevDglJWXHjh2u+BVQPST0HXV1dfPmzbO7KD093eXheIaqKuK994ixY4lx44g1awiViuqAWgmPrLfC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)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "// deno-lint-ignore-file\n", "\n", "import { display } from \"https://deno.land/x/display@v0.1.1/mod.ts\";\n", "import pl from \"npm:nodejs-polars\";\n", "import plot from \"../plot/mod.ts\";\n", "\n", "const data = await Deno.readTextFile(\"assets/X_Y_Sinusoid_Data.csv\");\n", "const df = pl.readCSV(data, { sep: \",\" });\n", "\n", "const real = pl.DataFrame({ x: new Array(100).fill(0).map((_, i) => i / 100)}).select(\n", " pl.col('x'),\n", " pl.col('x').mul(2).mul(3.14).sin().alias('y')\n", ");\n", "\n", "const draw = (x, y, title = \"Sinusoid Data\") => \n", " plot.DrawPlot(\n", " { \n", " title,\n", " width: 6,\n", " height: 3,\n", " XLabel: \"X\", \n", " YLabel: \"Y\", \n", " }, \n", " { type: \"line\", data: [real.x, real.y], legend: \"Sinusoid\", lineDashes: [3, 4], lineColor: \"#ff8888\", lineWidth: 1 },\n", " { type: \"scatter\", data: [x, y], legend: \"Data\", lineDashes: [3, 4], lineWidth: 2, glyphColor: \"#4444ff\", glyphShape: \"circle\" },\n", " { type: \"trend\", data: [x, y], legend: \"Trend\", lineDashes: [4, 2], lineColor: '#aacccc', lineWidth: .5 },\n", " );\n", "\n", "\n", "draw(df.x, df.y);" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "![name](data:image/png;base64,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)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import { polynomialTransform } from '../encoding.ts';\n", "import { trainTestSplit } from \"../split.ts\";\n", "import regr from '../regr/mod.ts';\n", "\n", "const polyDf = df.select('x').hstack(\n", " polynomialTransform(df.drop('y'), 36, false, false)\n", ").hstack(df.select('y'));\n", "\n", "const [trainX, trainY] = [polyDf.drop('y'), polyDf.select('y')]\n", "const linreg = regr.Linear();\n", "linreg.fit(trainX.rows(), trainY.rows());\n", "const predY = linreg.predict(trainX.rows());\n", "\n", "\n", "plot.DrawPlot(\n", " { \n", " width: 7,\n", " height: 4,\n", " XLabel: \"X\", \n", " YLabel: \"Y\", \n", " }, \n", " { type: \"line\", data: [real.x, real.y], legend: \"Sinusoid\", lineDashes: [3, 4], lineColor: \"#ff8888\", lineWidth: 1 },\n", " { type: \"linePoints\", data: [trainX.x, df.y], legend: \"Test Data\", lineDashes: [3, 4], lineColor: \"#8888ff\", glyphColor: \"#4444ff\", glyphShape: \"circle\" },\n", " { type: \"linePoints\", data: [trainX.x, predY], lineWidth: .5, legend: \"Predicted\", glyphColor: '#f00', glyphShape: \"pyramid\" },\n", ");\n" ] } ], "metadata": { "kernelspec": { "display_name": "Deno", "language": "typescript", "name": "deno" }, "language_info": { "codemirror_mode": "typescript", "file_extension": ".ts", "mimetype": "text/x.typescript", "name": "typescript", "nbconvert_exporter": "script", "pygments_lexer": "typescript", "version": "5.6.2" } }, "nbformat": 4, "nbformat_minor": 2 }