diff --git a/doc/pub/week38/ipynb/w38KHBiasVariance.ipynb b/doc/pub/week38/ipynb/w38KHBiasVariance.ipynb new file mode 100644 index 000000000..63c009986 --- /dev/null +++ b/doc/pub/week38/ipynb/w38KHBiasVariance.ipynb @@ -0,0 +1,196 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 277, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.utils import resample\n", + "from sklearn.metrics import mean_squared_error" + ] + }, + { + "cell_type": "code", + "execution_count": 286, + "metadata": {}, + "outputs": [], + "source": [ + "n = 50 # increase, var goes down\n", + "x = np.random.rand(n) * 10\n", + "y = 5 + x**2 + np.random.randn(n) * 3 # decrease,\n", + "poly = PolynomialFeatures(10) # increase, var goes up" + ] + }, + { + "cell_type": "code", + "execution_count": 287, + "metadata": {}, + "outputs": [], + "source": [ + "X = poly.fit_transform(x.reshape(n, 1))\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n", + "x_test = X_test[:, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 288, + "metadata": {}, + "outputs": [], + "source": [ + "models = []\n", + "for i in range(10):\n", + " X_sample, y_sample = resample(X_train, y_train)\n", + " mdl = LinearRegression().fit(X_sample, y_sample)\n", + " models.append(mdl)" + ] + }, + { + "cell_type": "code", + "execution_count": 289, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10.627818012261505\n", + "10.627818012261503\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 289, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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snez5E9PPfUUGzdu5OTJkwAcOnSIrVu38vzzz9u5ZXI/muKRB7JarXTr1o3q1atTqlQpezdH/rRs2TL279/Pnj177N0U+YszZ84wbdo0evTowUcffcSePXvo2rUrzs7OtG7d2t7Ny/D69u1LeHg4xYsXx9HRkYSEBIYPH07Lli3t3TS5DwUUeaBOnTpx5MgRtm7dau+myJ+CgoL44IMPWL9+Pa6urvZujvyF1WqlUqVKjBgxAoDy5ctz5MgRpk+froCSCqxYsYLFixezZMkSSpYsycGDB+nWrRt+fn7680mFFFDkvjp37sx3333Hli1byJs3r72bI3/at28fV65coUKFConXEhIS2LJlC5MnTyYmJgZHR0c7tjBj8/X1JSAgINm1EiVK8NVXX9mpRXK33r1707dvX5o1awZA6dKlOXfuHCNHjlRASYUUUCQZm81Gly5dWLVqFb/88gv+/v72bpLcpU6dOvz222/JrrVt25bixYvz4YcfKpzYWfXq1e/Zln/y5EkKFChgpxbJ3aKionBwSL700tHREavVaqcWyd9RQJFkOnXqxJIlS1i9ejXu7u4EBwcD4OnpiZubm51bJ+7u7vesB8qSJQs5cuTQOqFUoHv37jz11FOMGDGCpk2bsnv3bmbOnMnMmTPt3TQBGjVqxPDhw8mfPz8lS5bkwIEDjB07lnbt2tm7aXIf2mYsyVgslvtenzt3Lm3atHm8jZF/pVatWtpmnIp899139OvXj1OnTuHv70+PHj1o3769vZslQEREBAMGDGDVqlVcuXIFPz8/mjdvzsCBA3F2drZ38+QvFFBEREQk1VEdFBEREUl1FFBEREQk1VFAERERkVRHAUVERERSHQUUERERSXUUUERERCTVUUARERGRVEcBRURERFIdBRQRERFJdRRQREREJNVRQBEREZFU538hwih8KmNvfgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def sort_both(x, y):\n", + " sort_inds = np.argsort(x)\n", + " return x[sort_inds], y[sort_inds]\n", + "\n", + "\n", + "preds = np.zeros((10, y_test.size))\n", + "for i in range(10):\n", + " y_pred = models[i].predict(X_test)\n", + " preds[i, :] = y_pred\n", + "\n", + "means = np.mean(preds, axis=0)\n", + "vars = np.var(preds, axis=0)\n", + "\n", + "bias = np.mean((y_test - means) ** 2)\n", + "variance = np.mean(vars)\n", + "mse = np.mean((preds - y_test) ** 2)\n", + "print(bias + variance)\n", + "print(mse)\n", + "\n", + "for i in range(10):\n", + " y_pred = models[i].predict(X_test)\n", + " plt.plot(*sort_both(x_test, y_pred), lw=0.5, color=\"red\")\n", + "plt.scatter(*sort_both(X_test[:, 1], y_test))\n", + "# plt.scatter(*sort_both(X_train[:, 1], y_train))\n", + "sort_inds = np.argsort(x_test)\n", + "plt.errorbar(*sort_both(x_test, means), yerr=vars[sort_inds])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 222, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.208056770498683\n" + ] + } + ], + "source": [ + "print(bias)" + ] + }, + { + "cell_type": "code", + "execution_count": 223, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.04148845722129501\n" + ] + } + ], + "source": [ + "print(variance)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}