{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Uczenie maszynowe UMZ 2019/2020\n", "### 7 kwietnia 2020\n", "# 5. Regresja wielomianowa. Problem nadmiernego dopasowania" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.1. Regresja wielomianowa" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wprowadzenie: wybór cech" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Niech naszym zadaniem będzie przewidzieć cenę działki o kształcie prostokąta.\n", "\n", "Jakie cechy wybrać?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Możemy wybrać dwie cechy:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " * $x_1$ – szerokość działki, $x_2$ – długość działki:\n", "$$ h_{\\theta}(\\vec{x}) = \\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "...albo jedną:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " * $x_1$ – powierzchnia działki:\n", "$$ h_{\\theta}(\\vec{x}) = \\theta_0 + \\theta_1 x_1 $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Można też zauważyć, że cecha „powierzchnia działki” powstaje przez pomnożenie dwóch innych cech: długości działki i jej szerokości." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Wniosek:** możemy tworzyć nowe cechy na podstawie innych poprzez wykonywanie na nich różnych operacji matematycznych." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Regresja wielomianowa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "W regresji wielomianowej będziemy korzystać z cech, które utworzymy jako potęgi cech wyjściowych." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przydatne importy\n", "\n", "import ipywidgets as widgets\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas\n", "\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przydatne funkcje\n", "\n", "def cost(theta, X, y):\n", " \"\"\"Wersja macierzowa funkcji kosztu\"\"\"\n", " m = len(y)\n", " J = 1.0 / (2.0 * m) * ((X * theta - y).T * (X * theta - y))\n", " return J.item()\n", "\n", "def gradient(theta, X, y):\n", " \"\"\"Wersja macierzowa gradientu funkcji kosztu\"\"\"\n", " return 1.0 / len(y) * (X.T * (X * theta - y)) \n", "\n", "def gradient_descent(fJ, fdJ, theta, X, y, alpha=0.1, eps=10**-5):\n", " \"\"\"Algorytm gradientu prostego (wersja macierzowa)\"\"\"\n", " current_cost = fJ(theta, X, y)\n", " logs = [[current_cost, theta]]\n", " while True:\n", " theta = theta - alpha * fdJ(theta, X, y)\n", " current_cost, prev_cost = fJ(theta, X, y), current_cost\n", " if abs(prev_cost - current_cost) > 10**15:\n", " print('Algorithm does not converge!')\n", " break\n", " if abs(prev_cost - current_cost) <= eps:\n", " break\n", " logs.append([current_cost, theta]) \n", " return theta, logs\n", "\n", "def plot_data(X, y, xlabel, ylabel):\n", " \"\"\"Wykres danych (wersja macierzowa)\"\"\"\n", " fig = plt.figure(figsize=(16*.6, 9*.6))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", " ax.scatter([X[:, 1]], [y], c='r', s=50, label='Dane')\n", " \n", " ax.set_xlabel(xlabel)\n", " ax.set_ylabel(ylabel)\n", " ax.margins(.05, .05)\n", " plt.ylim(y.min() - 1, y.max() + 1)\n", " plt.xlim(np.min(X[:, 1]) - 1, np.max(X[:, 1]) + 1)\n", " return fig\n", "\n", "def plot_fun(fig, fun, X):\n", " \"\"\"Wykres funkcji `fun`\"\"\"\n", " ax = fig.axes[0]\n", " x0 = np.min(X[:, 1]) - 1.0\n", " x1 = np.max(X[:, 1]) + 1.0\n", " Arg = np.arange(x0, x1, 0.1)\n", " Val = fun(Arg)\n", " return ax.plot(Arg, Val, linewidth='2')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych (mieszkania) przy pomocy biblioteki pandas\n", "\n", "alldata = pandas.read_csv('data_flats.tsv', header=0, sep='\\t',\n", " usecols=['price', 'rooms', 'sqrMetres'])\n", "data = np.matrix(alldata[['sqrMetres', 'price']])\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn = data[:, 0:n]\n", "Xn /= np.amax(Xn, axis=0)\n", "Xn2 = np.power(Xn, 2) \n", "Xn2 /= np.amax(Xn2, axis=0)\n", "Xn3 = np.power(Xn, 3) \n", "Xn3 /= np.amax(Xn3, axis=0)\n", "\n", "X = np.matrix(np.concatenate((np.ones((m, 1)), Xn), axis=1)).reshape(m, n + 1)\n", "X2 = np.matrix(np.concatenate((np.ones((m, 1)), Xn, Xn2), axis=1)).reshape(m, 2 * n + 1)\n", "X3 = np.matrix(np.concatenate((np.ones((m, 1)), Xn, Xn2, Xn3), axis=1)).reshape(m, 3 * n + 1)\n", "y = np.matrix(data[:, -1]).reshape(m, 1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Postać ogólna regresji wielomianowej:\n", "\n", "$$ h_{\\theta}(x) = \\sum_{i=0}^{n} \\theta_i x^i $$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "# Funkcja regresji wielomianowej\n", "\n", "def h_poly(Theta, x):\n", " \"\"\"Funkcja wielomianowa\"\"\"\n", " return sum(theta * np.power(x, i) for i, theta in enumerate(Theta.tolist()))\n", "\n", "def polynomial_regression(theta):\n", " \"\"\"Funkcja regresji wielomianowej\"\"\"\n", " return lambda x: h_poly(theta, x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Najprostszym przypadkiem regresji wielomianowej jest funkcja kwadratowa:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Funkcja kwadratowa:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 $$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X2, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0]).reshape(3, 1)\n", "theta, logs = gradient_descent(cost, gradient, theta_start, X2, y)\n", "plot_fun(fig, polynomial_regression(theta), X)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Innym szczególnym przypadkiem regresji wielomianowej jest funkjca sześcienna:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Funkcja sześcienna:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^3 $$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 397521.34262209]\n", " [-841360.50134775]\n", " [2253766.75764159]\n", " [-244049.33104935]]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X3, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0, 0]).reshape(4, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X3, y)\n", "plot_fun(fig, polynomial_regression(theta), X)\n", "\n", "print(theta)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Regresję wielomianową można potraktować jako szczególny przypadek regresji liniowej wielu zmiennych:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^3 $$\n", "$$ x_1 = x, \\quad x_2 = x^2, \\quad x_3 = x^3, \\quad \\vec{x} = \\left[ \\begin{array}{ccc} x_0 \\\\ x_1 \\\\ x_2 \\end{array} \\right] $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "(W tym przypadku za kolejne cechy przyjmujemy kolejne potęgi zmiennej $x$)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Uwaga praktyczna: przyda się normalizacja cech, szczególnie skalowanie!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Do tworzenia cech „pochodnych” możemy używać nie tylko potęgowania, ale też innych operacji matematycznych, np.:\n", "\n", "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x + \\theta_2 \\sqrt{x} $$\n", "$$ x_1 = x, \\quad x_2 = \\sqrt{x}, \\quad \\vec{x} = \\left[ \\begin{array}{ccc} x_0 \\\\ x_1 \\end{array} \\right] $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Jakie zatem cechy wybrać? Najlepiej dopasować je do konkretnego problemu." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Wielomianowa regresja logistyczna\n", "\n", "Podobne modyfikacje cech możemy również stosować dla regresji logistycznej." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def powerme(x1,x2,n):\n", " \"\"\"Funkcja, która generuje n potęg dla zmiennych x1 i x2 oraz ich iloczynów\"\"\"\n", " X = []\n", " for m in range(n+1):\n", " for i in range(m+1):\n", " X.append(np.multiply(np.power(x1,i),np.power(x2,(m-i))))\n", " return np.hstack(X)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [ { "data": { "text/plain": [ "matrix([[ 1. , 0.36596696, -0.11214686],\n", " [ 0. , 0.4945305 , 0.47110656],\n", " [ 0. , 0.70290604, -0.92257983],\n", " [ 0. , 0.46658862, -0.62269739],\n", " [ 0. , 0.87939462, -0.11408015],\n", " [ 0. , -0.331185 , 0.84447667],\n", " [ 0. , -0.54351701, 0.8851383 ],\n", " [ 0. , 0.91979241, 0.41607012],\n", " [ 0. , 0.28011742, 0.61431157],\n", " [ 0. , 0.94754363, -0.78307311]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Wczytanie danych\n", "import pandas\n", "import numpy as np\n", "\n", "alldata = pandas.read_csv('polynomial_logistic.tsv', sep='\\t')\n", "data = np.matrix(alldata)\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn = data[:, 1:]\n", "\n", "Xpl = powerme(data[:, 1], data[:, 2], n)\n", "Ypl = np.matrix(data[:, 0]).reshape(m, 1)\n", "\n", "data[:10]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def plot_data_for_classification(X, Y, xlabel, ylabel):\n", " \"\"\"Wykres danych (wersja macierzowa)\"\"\"\n", " fig = plt.figure(figsize=(16*.6, 9*.6))\n", " ax = fig.add_subplot(111)\n", " fig.subplots_adjust(left=0.1, right=0.9, bottom=0.1, top=0.9)\n", " X = X.tolist()\n", " Y = Y.tolist()\n", " X1n = [x[1] for x, y in zip(X, Y) if y[0] == 0]\n", " X1p = [x[1] for x, y in zip(X, Y) if y[0] == 1]\n", " X2n = [x[2] for x, y in zip(X, Y) if y[0] == 0]\n", " X2p = [x[2] for x, y in zip(X, Y) if y[0] == 1]\n", " ax.scatter(X1n, X2n, c='r', marker='x', s=50, label='Dane')\n", " ax.scatter(X1p, X2p, c='g', marker='o', s=50, label='Dane')\n", " \n", " ax.set_xlabel(xlabel)\n", " ax.set_ylabel(ylabel)\n", " ax.margins(.05, .05)\n", " return fig" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Przyjmijmy, że mamy następujące dane i chcemy przeprowadzić klasyfikację dwuklasową dla następujących klas:\n", " * czerwone krzyżyki\n", " * zielone kółka" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Propozycja hipotezy:\n", "\n", "$$ h_\\theta(x) = g(\\theta^T x) = g(\\theta_0 + \\theta_1 x_1 + \\theta_2 x_2 + \\theta_3 x_3 + \\theta_4 x_4 + \\theta_5 x_5) \\; , $$\n", "\n", "gdzie $g$ – funkcja logistyczna, $x_3 = x_1^2$, $x_4 = x_2^2$, $x_5 = x_1 x_2$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def safeSigmoid(x, eps=0):\n", " \"\"\"Funkcja sigmoidalna zmodyfikowana w taki sposób, \n", " żeby wartości zawsz były odległe od asymptot o co najmniej eps\n", " \"\"\"\n", " y = 1.0/(1.0 + np.exp(-x))\n", " if eps > 0:\n", " y[y < eps] = eps\n", " y[y > 1 - eps] = 1 - eps\n", " return y\n", "\n", "def h(theta, X, eps=0.0):\n", " \"\"\"Funkcja hipotezy\"\"\"\n", " return safeSigmoid(X*theta, eps)\n", "\n", "def J(h,theta,X,y, lamb=0):\n", " \"\"\"Funkcja kosztu\"\"\"\n", " m = len(y)\n", " f = h(theta, X, eps=10**-7)\n", " j = -np.sum(np.multiply(y, np.log(f)) + \n", " np.multiply(1 - y, np.log(1 - f)), axis=0)/m\n", " if lamb > 0:\n", " j += lamb/(2*m) * np.sum(np.power(theta[1:],2))\n", " return j\n", "\n", "def dJ(h,theta,X,y,lamb=0):\n", " \"\"\"Pochodna funkcji kosztu\"\"\"\n", " g = 1.0/y.shape[0]*(X.T*(h(theta,X)-y))\n", " if lamb > 0:\n", " g[1:] += lamb/float(y.shape[0]) * theta[1:] \n", " return g\n", "\n", "def classifyBi(theta, X):\n", " \"\"\"Funkcja decyzji\"\"\"\n", " prob = h(theta, X)\n", " return prob" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def GD(h, fJ, fdJ, theta, X, y, alpha=0.01, eps=10**-3, maxSteps=10000):\n", " \"\"\"Metoda gradientu prostego dla regresji logistycznej\"\"\"\n", " errorCurr = fJ(h, theta, X, y)\n", " errors = [[errorCurr, theta]]\n", " while True:\n", " # oblicz nowe theta\n", " theta = theta - alpha * fdJ(h, theta, X, y)\n", " # raportuj poziom błędu\n", " errorCurr, errorPrev = fJ(h, theta, X, y), errorCurr\n", " # kryteria stopu\n", " if abs(errorPrev - errorCurr) <= eps:\n", " break\n", " if len(errors) > maxSteps:\n", " break\n", " errors.append([errorCurr, theta]) \n", " return theta, errors" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "theta = [[ 1.59558981]\n", " [ 0.12602307]\n", " [ 0.65718518]\n", " [-5.26367581]\n", " [ 1.96832544]\n", " [-6.97946065]]\n" ] } ], "source": [ "# Uruchomienie metody gradientu prostego dla regresji logistycznej\n", "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1],1)\n", "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", " alpha=0.1, eps=10**-7, maxSteps=10000)\n", "print(r'theta = {}'.format(theta))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def plot_decision_boundary(fig, theta, X):\n", " \"\"\"Wykres granicy klas\"\"\"\n", " ax = fig.axes[0]\n", " xx, yy = np.meshgrid(np.arange(-1.0, 1.0, 0.02),\n", " np.arange(-1.0, 1.0, 0.02))\n", " l = len(xx.ravel())\n", " C = powerme(xx.reshape(l, 1), yy.reshape(l, 1), n)\n", " z = classifyBi(theta, C).reshape(int(np.sqrt(l)), int(np.sqrt(l)))\n", "\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/pawel/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: UserWarning: The following kwargs were not used by contour: 'lw'\n", " # Remove the CWD from sys.path while we load stuff.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", "plot_decision_boundary(fig, theta, Xpl)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Wczytanie danych\n", "\n", "alldata = pandas.read_csv('polynomial_logistic.tsv', sep='\\t')\n", "data = np.matrix(alldata)\n", "\n", "m, n_plus_1 = data.shape\n", "Xn = data[:, 1:]\n", "\n", "n = 10\n", "Xpl = powerme(data[:, 1], data[:, 2], n)\n", "Ypl = np.matrix(data[:, 0]).reshape(m, 1)\n", "\n", "theta_start = np.matrix(np.zeros(Xpl.shape[1])).reshape(Xpl.shape[1],1)\n", "theta, errors = GD(h, J, dJ, theta_start, Xpl, Ypl, \n", " alpha=0.1, eps=10**-7, maxSteps=10000)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/pawel/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:10: UserWarning: The following kwargs were not used by contour: 'lw'\n", " # Remove the CWD from sys.path while we load stuff.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Przykład dla większej liczby cech\n", "fig = plot_data_for_classification(Xpl, Ypl, xlabel=r'$x_1$', ylabel=r'$x_2$')\n", "plot_decision_boundary(fig, theta, Xpl)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.2. Problem nadmiernego dopasowania" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Obciążenie a wariancja" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Dane do prostego przykładu\n", "\n", "data = np.matrix([\n", " [0.0, 0.0],\n", " [0.5, 1.8],\n", " [1.0, 4.8],\n", " [1.6, 7.2],\n", " [2.6, 8.8],\n", " [3.0, 9.0],\n", " ])\n", "\n", "m, n_plus_1 = data.shape\n", "n = n_plus_1 - 1\n", "Xn1 = data[:, 0:n]\n", "Xn1 /= np.amax(Xn1, axis=0)\n", "Xn2 = np.power(Xn1, 2) \n", "Xn2 /= np.amax(Xn2, axis=0)\n", "Xn3 = np.power(Xn1, 3) \n", "Xn3 /= np.amax(Xn3, axis=0)\n", "Xn4 = np.power(Xn1, 4) \n", "Xn4 /= np.amax(Xn4, axis=0)\n", "Xn5 = np.power(Xn1, 5) \n", "Xn5 /= np.amax(Xn5, axis=0)\n", "\n", "X1 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1), axis=1)).reshape(m, n + 1)\n", "X2 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1, Xn2), axis=1)).reshape(m, 2 * n + 1)\n", "X5 = np.matrix(np.concatenate((np.ones((m, 1)), Xn1, Xn2, Xn3, Xn4, Xn5), axis=1)).reshape(m, 5 * n + 1)\n", "y = np.matrix(data[:, -1]).reshape(m, 1)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X1, y, xlabel='x', ylabel='y')" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "scrolled": true, "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmAAAAFoCAYAAADw0EcgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dd3yW9b3/8fcnG5IQVtgbwh6JUkdFrVhH0YqKmPjoLqe257QHFOuqVq2jFheipz39cbrOOe0hEUVFxVFHq2gdaMIeCTuEEVZIApn39/fHHZVigCTkvq57vJ6PB4+Qe11vL6/cvHONz23OOQEAAMA7cX4HAAAAiDUUMAAAAI9RwAAAADxGAQMAAPAYBQwAAMBjFDAAAACPhayAmdkfzGyPma066rauZvZXMytu+tolVMsHAAAIV6HcA/YnSZcec9ttkt5wzmVJeqPpewAAgJhioRzEamaDJL3onBvb9P16SV9xzu00s96S/uacGxGyAAAAAGHI63PAejrndkpS09ceHi8fAADAdwl+BzgeM7te0vWSlJqaevrIkSN9TgQAaI2t+w7rUE29UpPiNTgzTeZ3ICAEPv74473OuczWPs/rArbbzHofdQhyz/Ee6JybL2m+JE2cONEtW7bMq4wAgFP0lw+26o5nV6lXSoJennWu+nXp6HckICTMbGtbnuf1IcjFkr7T9PfvSHre4+UDAEKsZE+l7ntxjSTpgavGUb6AZoRyDMUCSf+QNMLMSs1shqRfSbrIzIolXdT0PQAgStQ2NOrfFxSppj6gaaf10xUT+vgdCQhLITsE6Zy77jh3XRiqZQIA/PXQK+u1duchDezWUb+YOsbvOEDYYhI+AKBd/H1DuX6/dLMS4kzz8nKUlhy213kBvqOAAQBO2d6qWt301HJJ0o0XDVd2/84+JwLCGwUMAHBKnHO6eeFy7a2q1ZmDu+pH5w/1OxIQ9ihgAIBT8j//2Kq31pcro0Oi5uZmKz6OiV/AyVDAAABttm7XIT2wZK0k6cGrx6lP5w4+JwIiAwUMANAmNfWNmrWgSHUNAeVO7K8p43r7HQmIGBQwAECbPLhkrdbvrtSQ7qm66+uj/Y4DRBQKGACg1d5ct1v//Y+tSowPjpxIZeQE0CoUMABAq+yprNFPF66QJP304hEa1y/D50RA5KGAAQBaLBBwuump5dpfXadzhnXTD84d4nckICJRwAAALfaHdzfrneK96tIxUY9Oz1YcIyeANqGAAQBaZHVZhR56Zb0kac608eqVkeJzIiByUcAAACd1pK5RMxcUqq4xoG+cOUAXj+nldyQgolHAAAAndf9La7SxvFrDeqTpzssYOQGcKgoYAOCEXl29S3/5YJuS4uM0Ly9bHZLi/Y4ERDwKGADguHZV1OjWZ4IjJ265dITG9GHkBNAeKGAAgGYFAk6znyrSwcP1Om94pr5/zmC/IwFRgwIGAGjW/Hc26b2N+9QtNUmPTB/PyAmgHVHAAABfsKL0oB55NThy4uHp49UjnZETQHviw7sAAP+kurZBs/KL1BBw+s7ZAzV5ZM/Wv0hlpVRQIBUXS1lZUm6ulJ7e/mGBCEUBAwD8k3tfWKPNe6s1ome6bp8yqvUvsHSpNGWKFAhI1dVSaqo0e7a0ZIk0aVL7BwYiEIcgAQCfWbJypwqWbVdSQpzmXZetlMRWjpyorAyWr8rKYPmSgl8/vb2qqv1DAxGIAgYAkCSVHTyi25pGTtwxZZRG9urU+hcpKAju+WpOIBC8HwAFDAAgNQacbigo0qGaBk0e2UPfPntg216ouPjzPV/Hqq6WSkraHhKIIhQwAIB++/eN+nDzfnVPS9ZD14yXWRtHTmRlBc/5ak5qqjRsWNtDAlGEk/ABIBYddZViYf/RemxHd0nSo9dOUPe05La/bm5u8IT75sTFBe8HQAEDgJhz1FWKVfUBzfr+k2rMkGYMTtL5wzNP7bXT04NXOx57FWRcXPD2tLT2+W8AIhwFDABiydFXKUq6a8qN2pbRS6N2b9Itv71b+sa2Uy9JkyZJZWXBPWwlJcHDjrm5lC/gKBQwAIglR12l+Pyo87Ro3IVKqa/REy88rOSGuuD9M2ac+nLS0trndYAoRQEDgFjSdJXi9k49dOclP5Yk3fnm75W1b3vwfq5SBDzBVZAAEEuystSQlq4bv36TKpNTddGGf+gbRS8H7+MqRcAzFDAAiCW5ufqPL03Tsn5j1KNyn+a88qQ+GzjBVYqAZzgECQAx5OP99XrijGtkLqC5b/xGXY8c4ipFwAcUMACIEYdq6jUrv0gBST/88gCdM/wHUskFXKUI+IACBgAx4ufPrVLpgSMa27eTbrpsnJQwwe9IQMziHDAAiAHPFpbq+aIydUiM17y8HCUl8PYP+ImfQACIctv2HdbPn1stSbrnitEamsmhRsBvFDAAiGL1jQHNzC9UVW2Dvja2l66d2N/vSABEAQOAqPbEG8Uq2n5QvTNS9ODV42RmJ38SgJCjgAFAlPpg0z79+q0SmUlzc7PVuWOS35EANKGAAUAUqjhcrxsLihRw0r99ZajOGtLN70gAjkIBA4Ao45zTz55bqbKKGk3o31k3fHW435EAHIMCBgBRZuHHpXppxU6lJsVrXm62EuN5qwfCDT+VABBFNu+t1j2LgyMnfjF1rAZ1T/U5EYDmUMAAIErUNQQ0K79Qh+sa9fUJfTTttL5+RwJwHBQwAIgSc1/foBWlFerbuYPuv3IsIyeAMEYBA4Ao8N7Gvfrt3zcqzqTH87KV0SHR70gAToACBgAR7kB1nWYXLJdz0k8mZ+lLg7r6HQnASfhSwMzsRjNbbWarzGyBmaX4kQMAIp1zTrctWqFdh2p02oDOmjl5mN+RALSA5wXMzPpKmilponNurKR4SXle5wCAaJD/0Xa9unq30pMTNC8vRwmMnAAigl8/qQmSOphZgqSOksp8ygEAEatkT5V+8UJw5MT9V41V/64dfU4EoKU8L2DOuR2SHpG0TdJOSRXOudeOfZyZXW9my8xsWXl5udcxASCs1TY0alZ+oWrqA7oqp6+mZjNyAogkfhyC7CJpqqTBkvpISjWzbx77OOfcfOfcROfcxMzMTK9jAkBYe+TV9Vpddkj9u3bQvVPH+B0HQCv5cQjyq5I2O+fKnXP1khZJ+rIPOQAgIr1TXK7/emez4uNM8/JylJ7CyAkg0vhRwLZJOsvMOlpwSuCFktb6kAMAIs6+qlrNfmq5JOmGC7N02oAuPicC0BZ+nAP2gaSnJX0iaWVThvle5wCASOOc063PrFB5Za3OGNRV/3YBIyeASJXgx0Kdc3dLutuPZQNApPrz+1v1+to9Sk9J0Ny8bMXH8VFDQKRiYAwARIANuyt1/0vBszUevHqc+nbu4HMiAKeCAgYAYa6mvlEzFxSqtiGg6af30+Xj+/gdCcApooABQJib88o6rdtVqUHdOuqeKxg5AUQDChgAhLG31u/RH9/dooSmkROpyb6cugugnVHAACBMlVfW6uaFwZETsy8ergn9O/ucCEB7oYABQBhyzunmp5drb1Wdzh7STT88b6jfkQC0IwoYAIShP723RX9bX66MDol6LHcCIyeAKEMBA4Aws3bnIT24ZJ0kac60ceqdwcgJINpQwAAgjHw6cqKuMaDrzuivS8f29jsSgBCggAFAGHngpbUq3lOlIZmp+vnlo/2OAyBEKGAAECZeX7Nb//v+ViXGm57Iy1HHJEZOANGKAgYAYWDPoRrd8swKSdItl4zU2L4ZPicCEEoUMADwWSDgdNPC5dpfXadzs7prxqTBfkcCEGLs3wYQ2yorpYICqbhYysqScnOl9HRPI/x+6Wa9U7xXXVOT9Oj0CYpj5AQQ9ShgAGLX0qXSlClSICBVV0upqdLs2dKSJdKkSZ5EWLWjQg+9+unIifHq0SnFk+UC8BeHIAHEpsrKYPmqrAyWLyn49dPbq6pCHuFwXYNm5heqvtHpW2cN1EWje4Z8mQDCAwUMQGwqKAju+WpOIBC8P8Tue3GtNpVXK6tHmu64bFTIlwcgfFDAAMSm4uLP93wdq7paKikJ6eJfWbVLCz7cpqSEOD1xXY5SEuNDujwA4YUCBiA2ZWUFz/lqTmqqNGxYyBa9s+KIblsUHDlx26UjNap3p5AtC0B4ooABiE25uVLccd4C4+KC94dAY8BpdsFyHTxcr6+MyNT3zhkUkuUACG8UMACxKT09eLVjevrne8JSUz+/PS0tJIud//Ym/WPTPnVPS9LD10yQGSMngFjEGAoAsWvSJKmsLHjCfUlJ8LBjbm7Iytfy7Qf16GvrJUkPXzNBmenJIVkOgPBHAQMQ29LSpBkzQr6Y6toGzcovVEPA6btfHqQLRvYI+TIBhC8OQQKAB+5ZvFpb9h3WyF7puu1rI/2OA8BnFDAACLEXV5Rp4celSmbkBIAmFDAACKEdB4/o9kUrJUl3XjZKw3t6+zmTAMITBQwAQqQx4HRjfpEqaxr01VE99M2zBvodCUCYoIABQIj85q0SfbhlvzLTkzVn2nhGTgD4DAUMAELgk20H9PgbxZKkx66doG5pjJwA8DkKGAC0s8qaet2QX6TGgNMPzh2sc7My/Y4EIMxQwACgnd39/Gpt239Yo3t30k8vGeF3HABhiAIGAO3o+aIdWlS4QymJwZETyQmMnADwRRQwAGgn2/cf1p3PrpIk3f31MRrWIzQfaQQg8lHAAKAdNDQGdENBkSprG3TJmJ7K+1J/vyMBCGMUMABoB0++WaKPtx5Qr04p+tXVjJwAcGIUMAA4Rcu27NeTbxbLTHosd4K6pCb5HQlAmKOAAcApqDhSr1n5RQo46UfnD9WXh3b3OxKACEABA4A2cs7pzudWacfBIxrfL0M3fnW435EARAgKGAC00aJPduiF5WXqmBSveXk5SkrgLRVAy/BuAQBtsHVfte56Pjhy4p4rxmhw91SfEwGIJBQwAGil+saAZuYXqbquUZeN763pp/fzOxKACEMBA4BWmvd6sZZvP6g+GSn65ZXjGDkBoNUoYADQCu9v2qdf/61EcSbNzc1WRsdEvyMBiEAUMABooYrD9bqxoEjOST++YJjOHNLN70gAIhQFDABawDmn259doZ0VNcoZ0FkzL8zyOxKACEYBA4AWWLisVEtW7lJacoLm5eYoMZ63TwBtxzsIAJzEpvIq3b14tSTpvivHaEC3jj4nAhDpfClgZtbZzJ42s3VmttbMzvYjBwCcTF1DQLPyi3SkvlFTs/voqhxGTgA4dQk+LXeepFecc9eYWZIkfp0EEJYe/et6rdxRoX5dOui+K8f6HQdAlPC8gJlZJ0nnSfquJDnn6iTVeZ0DAE7m3ZK9mv/2JsXHmeblZatTCiMnALQPPw5BDpFULumPZlZoZr8zMz7DA0BYOVBdp9lPBUdOzJycpdMHdvU7EoAo4kcBS5B0mqT/dM7lSKqWdNuxDzKz681smZktKy8v9zojgBjmnNOtz6zQ7kO1mjiwi358wVC/IwGIMn4UsFJJpc65D5q+f1rBQvZPnHPznXMTnXMTMzMzPQ0IILb934fb9Nqa3UpPSdDjedlKYOQEgHbm+buKc26XpO1mNqLppgslrfE6BwA0p2RPpe57MfiW9MBV49SvC9cIAWh/fl0F+e+S/tJ0BeQmSd/zKQcAfKa2oVH/vqBINfUBTTutn66Y0MfvSACilC8FzDlXJGmiH8sGgON5+JX1WrvzkAZ266hfTB3jdxwAUYwTGwBA0tsbyvW7pZuVEGeal5ejtGS/DhAAiAUUMAAxb29VrWY/tVySdONFw5Xdv7PPiQBEOwoYgJjmnNMtT6/Q3qpanTm4q350PiMnAIQeBQxATPuff2zVm+v2KKNDoubmZis+zvyOBCAGUMAAxKz1uyr1wJK1kqQHrx6nPp07+JwIQKyggAGISTX1jZq5oFB1DQHlTuyvKeN6+x0JQAyhgAGISb96eZ3W767UkO6puuvro/2OAyDGUMAAxJw31+3Wn97bosT44MiJVEZOAPAYBQxATNlTWaObF66QJP304hEa1y/D50QAYhEFDEDMCAScfrpwhfZV1+mcYd30g3OH+B0JQIyigAGIGX98b4ve3lCuLh0T9ej0bMUxcgKATyhgAGLC6rIKzXl5nSRpzrTx6pWR4nMiALGMAgYg6h2pa9Ss/CLVNQb0jTMH6OIxvfyOBCDGUcAARL37X1qjkj1VGtYjTXdexsgJAP6jgAGIaq+t3qW/fLBNSfFxmpeXrQ5J8X5HAgAKGIDotftQjW59Jjhy4pZLR2hMH0ZOAAgPFDAAUSkQcJr9VJEOHK7XecMz9f1zBvsdCQA+QwEDEJX+651Nerdkn7qlJumR6eMZOQEgrFDAAESdlaUVeuS19ZKkh6ePV490Rk4ACC8UMABR5XBdg2blF6q+0ek7Zw/U5JE9/Y4EAF9AAQMQVe59YY027a3WiJ7pun3KKL/jAECzKGAAosbLK3cq/6PtSkqI0xPX5SglkZETAMITBQxAVCg7eES3LVopSbpjyiiN6JXucyIAOD4KGICI1xhwurGgSBVH6jV5ZA99++yBfkcCgBOigAGIeL/9+0Z9sHm/uqcl66FrxsuMkRMAwluC3wEAxJjKSqmgQCoulrKypNxcKb3thwuLth/U3L9ukCQ9eu0EdU9Lbq+kABAyFDAA3lm6VJoyRQoEpOpqKTVVmj1bWrJEmjSp1S9XVRscOdEQcJoxabDOH54ZgtAA0P44BAnAG5WVwfJVWRksX1Lw66e3V1W1+iXvfn61tu47rFG9O+mWS0e0c2AACB0KGABvFBQE93w1JxAI3t8Ki5eX6ZlPSpWSGKcn8rKVnMDICQCRgwIGwBvFxZ/v+TpWdbVUUtLilyo9cFh3PBscOXHnZaOV1ZOREwAiCwUMgDeysoLnfDUnNVUaNqxFL9PQGNAN+UWqrGnQRaN76htnDmjHkADgDQoYAG/k5kpxx3nLiYsL3t8Cv35ro5ZtPaAe6cmaM42REwAiEwUMgDfS04NXO6anf74nLDX189vT0k76Eh9v3a8n3iyWJD12bba6piaFMjEAhAxjKAB4Z9IkqawseMJ9SUnwsGNubovK16Gaes3KL1JjwOmH5w3RpKzuHgQGgNCggAHwVlqaNGNGq59213OrVHrgiMb27aSbLmbkBIDIxiFIAGHv2cJSPVdUpg6J8ZqXl6OkBN66AES2k76LmdlPzKyLF2EA4Fjb9h3Wz59bLUm6++ujNTTz5IcrASDcteTXyF6SPjKzp8zsUuOSIwAeqW8MaFZBoapqG/S1sb2U+6X+fkcCgHZx0gLmnLtTUpak30v6rqRiM/ulmQ0NcTYAMe7JN4pVuO2gemek6MGrxzFyAkDUaNGJFM45J2lX058GSV0kPW1mD4UwG4AY9uHm/fqPt0pkFhw50bkjIycARI+TXgVpZjMlfUfSXkm/k3Szc67ezOIkFUu6JbQRAcSaisP1uiG/UAEn/dtXhursod38jgQA7aolYyi6S7raObf16BudcwEzuzw0sQDEKuecfvbcSpVV1GhCvwzdeNFwvyMBQLs7aQFzzt11gvvWtm8cALHu6Y9L9dKKnUpNCo6cSIxn5ASA6MM7G4CwsXlvte5eHBw58YupYzWo+3E+vBsAIhwFDEBYqGsIaFZ+oQ7XNery8b017bS+fkcCgJChgAEIC3Nf36AVpRXq27mDHriKkRMAohsFDIDv3tu4V7/9+0bFmfR4XrYyOiT6HQkAQooCBsBXB6rrNLtguZyTfjI5S18a1NXvSAAQcr4VMDOLN7NCM3vRrwwA/OWc0+2LVmrXoRqdNqCzZk4e5nckAPCEn3vAZklijAUQw/I/2q5XVu9SWnKC5uXlKIGREwBihC/vdmbWT9JlCk7WBxCDSvZU6d4X1kiSHrhqrPp37ehzIgDwjl+/bj6u4EcYBY73ADO73syWmdmy8vJy75IBCLnahkbNyi/UkfpGXZXTV1OzGTkBILZ4XsCaPr5oj3Pu4xM9zjk33zk30Tk3MTMz06N0ALzw6GsbtLrskPp37aB7p47xOw4AeM6PPWDnSLrCzLZIypc02cz+7EMOAD54p7hc89/epPg407y8HKWnMHICQOzxvIA55253zvVzzg2SlCfpTefcN73OAcB7+6pqddNTyyVJN1yYpdMGdPE5EQD4g0uOAHjCOadbn1mhPZW1OmNQV/3bBYycABC7EvxcuHPub5L+5mcGAN748wfb9PraPUpPSdDcvGzFx/FRQwBiF3vAAITcht2Vuv/F4MiJB68ep76dO/icCAD8RQEDEFI19Y2auaBQtQ0BTT+9ny4f38fvSADgOwoYgJCa88o6rdtVqUHdOuqeKxg5AQASBQxACL21fo/++O4WJTSNnEhN9vW0UwAIGxQwACFRXlmrmxcGR07Mvni4JvTv7HMiAAgfFDAA7c45p5ufXq69VXU6e0g3/fC8oX5HAoCwQgED0O7+9N4W/W19uTI6JOqx3AmMnACAY1DAALSrtTsP6cEl6yRJc6aNU+8MRk4AwLEoYADazacjJ+oaA7rujP66dGxvvyMBQFiigAFoNw+8tFbFe6o0JDNVP798tN9xACBsUcAAtIvX1+zW/76/VYnxpifyctQxiZETAHA8FDAAp2zPoRrd8swKSdItl4zU2L4ZPicCgPBGAQNwSgIBp5sWLtf+6jqdm9VdMyYN9jsSAIQ9ChiAU/L7pZv1TvFedU1N0qPTJyiOkRMAcFIUMABttmpHhR569dORE+PVo1OKz4kAIDJQwAC0yeG6Bs3ML1R9o9O3zhqoi0b39DsSAEQMChiANrnvxbXaVF6trB5puuOyUX7HAYCIQgED0GqvrNqlBR9uU1JCnJ64LkcpifF+RwKAiEIBA9AqOyuO6LZFwZETt106UqN6d/I5EQBEHgoYgBZrDDjNLliug4fr9ZURmfreOYP8jgQAEYkCBqDF5r+9Sf/YtE/d05L08DUTZMbICQBoCwoYgBZZvv2gHn1tvSTp4WsmKDM92edEABC5KGAATqq6tkGz8gvVEHD67pcH6YKRPfyOBAARjQIG4KTuWbxaW/Yd1she6brtayP9jgMAEY8CBuCEXlxRpoUflyqZkRMA0G4oYACOa8fBI7p90UpJ0p2XjdLwnuk+JwKA6EABA9CsxoDTjflFqqxp0FdH9dA3zxrodyQAiBoUMADN+s1bJfpwy35lpidrzrTxjJwAgHZEAQPwBZ9sO6DH3yiWJD127QR1S2PkBAC0JwoYgH9SWVOvWfmFagw4/eDcwTo3K9PvSAAQdShgAP7J3c+v1vb9RzS6dyf99JIRfscBgKhEAQPwmeeLdmhR4Q6lJAZHTiQnMHICAEKBAgZAkrR9/2Hd+ewqSdJdl4/RsB5pPicCgOhFAQOghsaAZuUXqrK2QZeM6anrzujvdyQAiGoUMAB68s0SfbLtoHp1StGvrmbkBACEGgUMiHEfbdmvJ98slllw5ESX1CS/IwFA1KOAATGs4ki9bsgvUsBJPzxvqL48rLvfkQAgJlDAgBjlnNOdz63SjoNHNL5fhmZfNNzvSAAQMyhgQIxa9MkOvbC8TB2T4jUvL0dJCbwdAIBXeMcFYtCWvdW66/ngyIl7rhijwd1TfU4EALGFAgbEmPrGgGYVFKm6rlGXje+t6af38zsSAMQcChgQYx5/fYOWbz+oPhkp+uWV4xg5AQA+oIABMeT9Tfv0m79tVJxJj+flKKNjot+RACAmUcCAGFFxuF43FhTJOenHFwzTGYO7+h0JAGIWBQyIAc453f7sCu2sqFHOgM6aeWGW35EAIKZRwIAYsHBZqZas3KW05ATNy81RYjw/+gDgJ96FgSi3qbxKdy9eLUm678oxGtCto8+JAACeFzAz629mb5nZWjNbbWazvM4AxIq6hoBm5RfpSH2jpmb30VU5jJwAgHCQ4MMyGyTd5Jz7xMzSJX1sZn91zq3xIQsQ1R7963qt3FGhfl066L4rx/odBwDQxPM9YM65nc65T5r+XilpraS+XucAot27JXs1/+1Nio8zzcvLVqcURk4AQLjw9RwwMxskKUfSB37mAKLNgeo6zX4qOHJi5uQsnT6QkRMAEE58K2BmlibpGUk3OOcONXP/9Wa2zMyWlZeXex8QiFDOOd36zArtPlSriQO76McXDPU7EgDgGL4UMDNLVLB8/cU5t6i5xzjn5jvnJjrnJmZmZnobEIhg//fhNr22ZrfSUxL0eF62Ehg5AQBhx/OT8C34wXO/l7TWOfeY18sHolnJnkrd92LwepYHrhqnfl2OM3KislIqKJCKi6WsLCk3V0pP9zApAMQ2P66CPEfStyStNLOiptt+5pxb4kMWIGrUNjTq3xcUqaY+oGmn9dMVE/o0/8ClS6UpU6RAQKqullJTpdmzpSVLpEmTvA0NADHK8wLmnFsqybxeLhDtHn5lvdbuPKSB3TrqF1PHNP+gyspg+aqs/Py26urg1ylTpLIyKS0t9GEBIMZxcggQBd7eUK7fLd2shDjTvLwcpSUf53ergoLgnq/mBALB+wEAIUcBAyLc3qpazX5quSTpxouGK7t/5+M/uLj48z1ex6qulkpKQpAQAHAsChgQwZxzuvXpFdpbVaszB3fVj84/yciJrKzgOV/NSU2Vhg1r/5AAgC+ggAER7H/f36o31u1RRodEzc3NVnzcSU6vzM2V4o7zYx8XF7wfABByFDAgQq3fVan7X1orSXrw6nHq07nDyZ+Unh682jE9/fM9Yampn9/OCfgA4Ak/xlAAOEU19Y2auaBQdQ0B5U7srynjerf8yZMmBa92LCgInvM1bFhwzxflCwA8QwEDItCvXl6n9bsrNaR7qu76+ujWv0BamjRjRvsHAwC0CIcggQjz5rrd+tN7W5QYHxw5kXq8kRMAgLBFAQMiyJ7KGt28cIUk6acXj9C4fhk+JwIAtAUFDIgQgYDTzQtXaF91nc4Z1k0/OHeI35EAAG1EAQMixB/f26K/byhXl46JenR6tuJONnICABC2KGBABFhTdkhzXl4nSZozbbx6ZaT4nAgAcCooYECYO1LXqJn5haprDOgbZw7QxWN6+R0JAHCKKGBAmHtgyRqV7KnSsB5puvOyNiR05x8AAA2sSURBVIycAACEHQoYEMZeW71Lf35/m5Li4zQvL1sdkuL9jgQAaAcUMCBM7T5Uo1ufCY6cuOXSERrTh5ETABAtKGBAGAoEnGY/VaQDh+t13vBMff+cwX5HAgC0IwoYEIZ+t3ST3i3Zp26pSXpk+nhGTgBAlKGAAWFm1Y4KPfzqeknSw9PHq0c6IycAINpQwIAwcriuQTMXFKq+0ek7Zw/U5JE9/Y4EAAgBChgQRu59YY027a3WiJ7pun3KKL/jAABChAIGhImXV+5U/kfblZQQpyeuy1FKIiMnACBaUcCAMFB28IhuW7RSknTHlFEa0Svd50QAgFCigAE+a2waOVFxpF6TR/bQt88e6HckAECIUcAAn/327xv1/qb96p6WrIeuGS8zRk4AQLSjgAE+Ktp+UHP/ukGS9Oi1E9Q9LdnnRAAAL1DAAJ9U1TZoVn6hGgJOMyYN1vnDM/2OBADwCAUM8Mk9i1dr677DGtW7k265dITfcQAAHqKAAT54YXmZnv64VCmJcXoiL1vJCYycAIBYQgEDPFZ64LB+9mxw5MSdl41WVk9GTgBArKGAAR5qaAzohvwiVdY06KLRPfWNMwf4HQkA4AMKGOChX7+1Ucu2HlCP9GTNmcbICQCIVRQwwCMfb92vJ94slpk0NzdbXVOT/I4EAPAJBQzwwKGaes3KL1JjwOn6c4fonGHd/Y4EAPARBQzwwF3PrVLpgSMa27eTbrqYkRMAEOsoYECIPVtYqueKytQhMV7z8nKUlMCPHQDEOv4lAEJo277D+vlzqyVJ91wxWkMz03xOBAAIBxQwIETqGwOaVVCoqtoGfW1sL107sb/fkQAAYYICBoTIk28Uq3DbQfXOSNGDV49j5AQA4DMUMCAEPty8X//xVslnIyc6d2TkBADgcxQwoJ1VHK7XDfmFCjjpX88fqrOGdPM7EgAgzFDAgHbknNPPnlupsooaTeiXoRsvGu53JABAGKKAAe3o6Y9L9dKKnUpNCo6cSIznRwwA8EX86wC0k817q3X34uDIiV9MHatB3VN9TgQACFcUMKAd1DUENCu/UIfrGnX5+N6adlpfvyMBAMIYBQxoB3Nf36AVpRXq27mDHriKkRMAgBOjgAGn6L2Ne/Xbv29UnEmP52Uro0Oi35EAAGGOAgacggPVdZpdsFzOST+ZnKUvDerqdyQAQARI8GOhZnappHmS4iX9zjn3Kz9yAKfCOafbF63UrkM1Om1AZ82cPKx1L1BZKRUUSMXFUlaWlJsrpaeHJiwAIKx4XsDMLF7SryVdJKlU0kdmttg5t8brLMCpyP9ou15ZvUtpyQmal5ejhNaMnFi6VJoyRQoEpOpqKTVVmj1bWrJEmjQpdKEBAGHBj0OQZ0gqcc5tcs7VScqXNNWHHECbleyp0r0vBH9nuP/KserftWPLn1xZGSxflZXB8iUFv356e1VVCBIDAMKJHwWsr6TtR31f2nQbEBFqGxo1K79QR+obdVVOX12Z08rNt6AguOerOYFA8H4AQFTzo4A1d32++8KDzK43s2Vmtqy8vNyDWEDLPPraBq0uO6T+XTvo3qljWv8CxcWf7/k6VnW1VFJyagEBAGHPjwJWKqn/Ud/3k1R27IOcc/OdcxOdcxMzMzM9CwecyDvF5Zr/9ibFx5kez81RekobRk5kZQXP+WpOaqo0rJUn8wMAIo4fBewjSVlmNtjMkiTlSVrsQw6gVfZV1eqmp5ZLkmZdmKXTB3Zp2wvl5kpxx/nRi4sL3g8AiGqeFzDnXIOkn0h6VdJaSU8551Z7nQNoDeecbn1mhfZU1uqMQV314wtOYS9Venrwasf09M/3hKWmfn57Wlr7hAYAhC1f5oA555ZIWuLHsoG2+PMH2/T62j1KT0nQ3Lxsxced4kcNTZoklZUFT7gvKQkedszNpXwBQIzwpYABkWTD7krd/2Jw5MSDV49T384d2ueF09KkGTPa57UAABGFjyICTqCmvlEzFxSqtiGga07vp8vH9/E7EgAgClDAgBOY88o6rdtVqUHdOuqeK9owcgIAgGZQwIDjeGv9Hv3x3S1KiDPNy8tRWjJH7AEA7YMCBjSjvLJWNy8MjpyYffFwTejf2edEAIBoQgEDjuGc0y1PL9feqjqdNaSrfnjeUL8jAQCiDAUMOMZ/v7dFb60vV0aHRM3NbYeREwAAHIMCBhxl3a5D+uXL6yRJc6aNU++Mdho5AQDAUShgQJNPR07UNQR03Rn9denY3n5HAgBEKQoY0OSXS9Zqw+4qDclM1c8vH+13HABAFKOAAZLeWLtb//OPrUqMNz2Rl6OOSYycAACEDgUMMW/PoRrd/PQKSdLNl4zQ2L4ZPicCAEQ7ChhiWiDgdNPC5dpfXadJw7rrXyYN8TsSACAGUMAQ0/7w7ma9U7xXXTom6tFrJyiOkRMAAA9QwBCzVu2o0JxXgiMnHrpmgnp2SvE5EQAgVlDAEJOO1DVqVn6h6hudvnnWAF00uqffkQAAMYQChph030trtLG8Wlk90nTHFEZOAAC8RQFDzHll1S793wfblBQfpyeuy1GHpHi/IwEAYgwFDDFlV0WNblsUHDlx29dGalTvTj4nAgDEIgoYYkYg4DT7qSIdPFyv84dn6nvnDPI7EgAgRlHAEDPmv7NJ723cp+5pSXpk+gSZMXICAOAPChhiworSg3rk1fWSpIevmaDM9GSfEwEAYhkFDFGvurZBs/KL1BBw+u6XB+mCkT38jgQAiHHmnPM7w0mZWaWk9X7niCHdJe31O0QMYX17i/XtLda391jn3hrhnEtv7ZMSQpEkBNY75yb6HSJWmNky1rd3WN/eYn17i/XtPda5t8xsWVuexyFIAAAAj1HAAAAAPBYpBWy+3wFiDOvbW6xvb7G+vcX69h7r3FttWt8RcRI+AABANImUPWAAAABRIywLmJlNN7PVZhYws+NeyWFml5rZejMrMbPbvMwYTcysq5n91cyKm752Oc7jGs2sqOnPYq9zRrqTba9mlmxmBU33f2Bmg7xPGT1asL6/a2blR23T/+JHzmhhZn8wsz1mtuo495uZPdH0/2OFmZ3mdcZo0oL1/RUzqzhq+77L64zRxMz6m9lbZra2qZ/MauYxrdrGw7KASVol6WpJbx/vAWYWL+nXkr4mabSk68xstDfxos5tkt5wzmVJeqPp++Yccc5lN/25wrt4ka+F2+sMSQecc8MkzZU0x9uU0aMV7w8FR23Tv/M0ZPT5k6RLT3D/1yRlNf25XtJ/epApmv1JJ17fkvTOUdv3vR5kimYNkm5yzo2SdJakHzfzntKqbTwsC5hzbq1z7mSDV8+QVOKc2+Scq5OUL2lq6NNFpamS/rvp7/8t6Uofs0SrlmyvR/9/eFrShcYHVrYV7w8ec869LWn/CR4yVdL/uKD3JXU2s97epIs+LVjfaEfOuZ3OuU+a/l4paa2kvsc8rFXbeFgWsBbqK2n7Ud+X6osrAy3T0zm3UwpuZJKO91k9KWa2zMzeNzNKWuu0ZHv97DHOuQZJFZK6eZIu+rT0/WFa06GCp82svzfRYhbv2d4728yWm9nLZjbG7zDRoun0kBxJHxxzV6u2cd8m4ZvZ65J6NXPXHc6551vyEs3cxiWdx3Gi9d2KlxngnCszsyGS3jSzlc65je2TMOq1ZHtlm24/LVmXL0ha4JyrNbMfKbj3cXLIk8Uutm9vfSJpoHOuysymSHpOwUNjOAVmlibpGUk3OOcOHXt3M0857jbuWwFzzn31FF+iVNLRv7H2k1R2iq8ZtU60vs1st5n1ds7tbNpduuc4r1HW9HWTmf1Nwd8AKGAt05Lt9dPHlJpZgqQMcYihrU66vp1z+4769r/EOXehxnu2h44uB865JWb2GzPr7pzjMyLbyMwSFSxff3HOLWrmIa3axiP5EORHkrLMbLCZJUnKk8SVeW2zWNJ3mv7+HUlf2ANpZl3MLLnp790lnSNpjWcJI19Lttej/z9cI+lNx6C+tjrp+j7m3IwrFDynA6GzWNK3m64UO0tSxaenPqD9mVmvT88hNbMzFPz3ft+Jn4XjaVqXv5e01jn32HEe1qptPCw/jNvMrpL0pKRMSS+ZWZFz7hIz6yPpd865Kc65BjP7iaRXJcVL+oNzbrWPsSPZryQ9ZWYzJG2TNF2SLDgC5EfOuX+RNErS/zOzgII/yL9yzlHAWuh426uZ3StpmXNusYI/3P9rZiUK7vnK8y9xZGvh+p5pZlcoeHXTfknf9S1wFDCzBZK+Iqm7mZVKultSoiQ5534raYmkKZJKJB2W9D1/kkaHFqzvayT9q5k1SDoiKY9f6E7JOZK+JWmlmRU13fYzSQOktm3jTMIHAADwWCQfggQAAIhIFDAAAACPUcAAAAA8RgEDAADwGAUMAADAYxQwAAAAj1HAAAAAPEYBAxATzOxLTR+8nWJmqWa22szG+p0LQGxiECuAmGFm90tKkdRBUqlz7kGfIwGIURQwADGj6XMhP5JUI+nLzrlGnyMBiFEcggQQS7pKSpOUruCeMADwBXvAAMQMM1ssKV/SYEm9nXM/8TkSgBiV4HcAAPCCmX1bUoNz7v/MLF7Se2Y22Tn3pt/ZAMQe9oABAAB4jHPAAAAAPEYBAwAA8BgFDAAAwGMUMAAAAI9RwAAAADxGAQMAAPAYBQwAAMBjFDAAAACP/X8MljxkLybtgwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X1, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0]).reshape(2, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X1, y, eps=0.00001)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "Ten model ma duże **obciążenie** (**błąd systematyczny**, _bias_) – zachodzi **niedostateczne dopasowanie** (_underfitting_)." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X2, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0]).reshape(3, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X2, y, eps=0.000001)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Ten model jest odpowiednio dopasowany." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig = plot_data(X5, y, xlabel='x', ylabel='y')\n", "theta_start = np.matrix([0, 0, 0, 0, 0, 0]).reshape(6, 1)\n", "theta, _ = gradient_descent(cost, gradient, theta_start, X5, y, alpha=0.5, eps=10**-7)\n", "plot_fun(fig, polynomial_regression(theta), X1)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Ten model ma dużą **wariancję** (_variance_) – zachodzi **nadmierne dopasowanie** (_overfitting_)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "(Zwróć uwagę na dziwny kształt krzywej w lewej części wykresu – to m.in. efekt nadmiernego dopasowania)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Nadmierne dopasowanie występuje, gdy model ma zbyt dużo stopni swobody w stosunku do ilości danych wejściowych.\n", "\n", "Jest to zjawisko niepożądane.\n", "\n", "Możemy obrazowo powiedzieć, że nadmierne dopasowanie występuje, gdy model zaczyna modelować szum/zakłócenia w danych zamiast ich „głównego nurtu”. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "notes" } }, "source": [ "Zobacz też: https://pl.wikipedia.org/wiki/Nadmierne_dopasowanie" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Obciążenie (błąd systematyczny, _bias_)\n", "\n", "* Wynika z błędnych założeń co do algorytmu uczącego się.\n", "* Duże obciążenie powoduje niedostateczne dopasowanie." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Wariancja (_variance_)\n", "\n", "* Wynika z nadwrażliwości na niewielkie fluktuacje w zbiorze uczącym.\n", "* Wysoka wariancja może spowodować nadmierne dopasowanie (modelując szum zamiast sygnału)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.3. Regularyzacja" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def SGD(h, fJ, fdJ, theta, X, Y, \n", " alpha=0.001, maxEpochs=1.0, batchSize=100, \n", " adaGrad=False, logError=False, validate=0.0, valStep=100, lamb=0, trainsetsize=1.0):\n", " \"\"\"Stochastic Gradient Descent - stochastyczna wersja metody gradientu prostego\n", " (więcej na ten temat na wykładzie 11)\n", " \"\"\"\n", " errorsX, errorsY = [], []\n", " errorsVX, errorsVY = [], []\n", " \n", " XT, YT = X, Y\n", " \n", " m_end=int(trainsetsize*len(X))\n", " \n", " if validate > 0:\n", " mv = int(X.shape[0] * validate)\n", " XV, YV = X[:mv], Y[:mv] \n", " XT, YT = X[mv:m_end], Y[mv:m_end] \n", " m, n = XT.shape\n", "\n", " start, end = 0, batchSize\n", " maxSteps = (m * float(maxEpochs)) / batchSize\n", " \n", " if adaGrad:\n", " hgrad = np.matrix(np.zeros(n)).reshape(n,1)\n", " \n", " for i in range(int(maxSteps)):\n", " XBatch, YBatch = XT[start:end,:], YT[start:end,:]\n", "\n", " grad = fdJ(h, theta, XBatch, YBatch, lamb=lamb)\n", " if adaGrad:\n", " hgrad += np.multiply(grad, grad)\n", " Gt = 1.0 / (10**-7 + np.sqrt(hgrad))\n", " theta = theta - np.multiply(alpha * Gt, grad)\n", " else:\n", " theta = theta - alpha * grad\n", " \n", " if logError:\n", " errorsX.append(float(i*batchSize)/m)\n", " errorsY.append(fJ(h, theta, XBatch, YBatch).item())\n", " if validate > 0 and i % valStep == 0:\n", " errorsVX.append(float(i*batchSize)/m)\n", " errorsVY.append(fJ(h, theta, XV, YV).item())\n", " \n", " if start + batchSize < m:\n", " start += batchSize\n", " else:\n", " start = 0\n", " end = min(start + batchSize, m)\n", " return theta, (errorsX, errorsY, errorsVX, errorsVY)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "# Przygotowanie danych do przykładu regularyzacji\n", "\n", "n = 6\n", "\n", "data = np.matrix(np.loadtxt(\"ex2data2.txt\", delimiter=\",\"))\n", "np.random.shuffle(data)\n", "\n", "X = powerme(data[:,0], data[:,1], n)\n", "Y = data[:,2]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def draw_regularization_example(X, Y, lamb=0, alpha=1, adaGrad=True, maxEpochs=2500, validate=0.25):\n", " \"\"\"Rusuje przykład regularyzacji\"\"\"\n", " plt.figure(figsize=(16,8))\n", " plt.subplot(121)\n", " plt.scatter(X[:, 2].tolist(), X[:, 1].tolist(),\n", " c=Y.tolist(),\n", " s=100, cmap=plt.cm.get_cmap('prism'));\n", "\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=alpha, adaGrad=adaGrad, maxEpochs=maxEpochs, batchSize=100, \n", " logError=True, validate=validate, valStep=1, lamb=lamb)\n", "\n", " xx, yy = np.meshgrid(np.arange(-1.5, 1.5, 0.02),\n", " np.arange(-1.5, 1.5, 0.02))\n", " l = len(xx.ravel())\n", " C = powerme(xx.reshape(l, 1),yy.reshape(l, 1), n)\n", " z = classifyBi(thetaBest, C).reshape(int(np.sqrt(l)), int(np.sqrt(l)))\n", "\n", " plt.contour(xx, yy, z, levels=[0.5], lw=3);\n", " plt.ylim(-1,1.2);\n", " plt.xlim(-1,1.2);\n", " plt.legend();\n", " plt.subplot(122)\n", " plt.plot(err[0],err[1], lw=3, label=\"Training error\")\n", " if validate > 0:\n", " plt.plot(err[2],err[3], lw=3, label=\"Validation error\");\n", " plt.legend()\n", " plt.ylim(0.2,0.8);" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/pawel/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:19: UserWarning: The following kwargs were not used by contour: 'lw'\n", "No handles with labels found to put in legend.\n" ] }, { "data": { "image/png": "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JG0C65xb5px7d5Lh98BePzHtTVAbBtnUJ4FHnHORhG3vdp5u4OfAkuz+HJExZNo0MEtfLhz2mu/mgnNw003pOzlyDu68MzcxDbe6OnjySaithdIBjUYCASgv9zrQ+uAH8xOfiIiIyCiWbRPilcBF/vRFwO8HKfspBjQfTkh+De/+2bVZxiMydpx6KpSUpC8XDMLnPjfi4QCweXNmV3s7O+G+gXcTFJHFi2HdOrjiCu+RRWZe4rpiBTz/vNfMWERERESGXbYJ7PeAM81sI3Cm/xozW2xmP+stZGazgZnAXwasf6+ZvQG8AUwAbswyHpGxIxSC668f/H7MsjL48Ifh6KNzE1Nnp5cwZyKTR9EUsqlT4bvf9ZpCx2Le33PvvXCSngYmIiIiMlIy6AEmNefcfuCMJPNfBv4t4fVWYHqScqdns3+RMe/SS2HbNrj1Vu8ZsLHYoWVVVbBoUW6vdE6b5sWRiWOOGdlYcimTptwiIiIikrVsr8CKSD6Zwfe/D889B+efD5Mnw4QJXg+4Dzzg9fqbSY+5w2XcOFi2LH1CV1UFl1+em5hEREREZNTI6gqsiBSIRYu85quF4Dvf8RLnVE2ES0pg/nw488zcxiUiIiIiRU9XYEVkeJ14Iqxc6V1lHXj1t6oKFi70evEN6ONHRERERIZGV2BFZPidcQbs3Am//CXccw+0tXn3vP77v8Npp+meURERERE5IkpgRWRk1NTAZZd5g4iIiIjIMFAbPhERERERESkKSmBFRERERESkKCiBFRERERERkaKgBFZERERERESKghJYERERERERKQpKYEVERERERKQoKIEVERERERGRoqAEVkRERERERIqCElgREREREREpCkpgRUREREREpCgogRUREREREZGioARWREREREREioISWBERERERESkKSmBFRERERESkKCiBFRERERERkaKgBFZERERERESKghJYERERERERKQpKYEVERERERKQoKIEVERERERGRoqAEVkRERERERIqCElgREREREREpCkpgRUREREREpCgogRUREREREZGioARWREREREREioISWBERERERESkKSmBFRERERESkKCiBFRERERERkaKgBFZERERERESKghJYERERERERKQpKYEVERERERKQoKIEVERERERGRoqAEVkRERERERIqCElgREREREREpCkpgRURE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "draw_regularization_example(X, Y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Regularyzacja\n", "\n", "Regularyzacja jest metodą zapobiegania zjawisku nadmiernego dopasowania (*overfitting*) poprzez odpowiednie zmodyfikowanie funkcji kosztu.\n", "\n", "Do funkcji kosztu dodawane jest specjalne wyrażenie (**wyrazenie regularyzacyjne** – zaznaczone na czerwono w poniższych wzorach), będące „karą” za ekstremalne wartości parametrów $\\theta$.\n", "\n", "W ten sposób preferowane są wektory $\\theta$ z mniejszymi wartosciami parametrów – mają automatycznie niższy koszt.\n", "\n", "Jak silną regularyzację chcemy zastosować? Możemy o tym zadecydować, dobierajac odpowiednio **parametr regularyzacji** $\\lambda$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji liniowej – funkcja kosztu\n", "\n", "$$\n", "J(\\theta) \\, = \\, \\dfrac{1}{2m} \\left( \\displaystyle\\sum_{i=1}^{m} h_\\theta(x^{(i)}) - y^{(i)} \\color{red}{ + \\lambda \\displaystyle\\sum_{j=1}^{n} \\theta^2_j } \\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "* $\\lambda$ – parametr regularyzacji\n", "* jeżeli $\\lambda$ jest zbyt mały, skutkuje to nadmiernym dopasowaniem\n", "* jeżeli $\\lambda$ jest zbyt duży, skutkuje to niedostatecznym dopasowaniem" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji liniowej – gradient\n", "\n", "$$\\small\n", "\\begin{array}{llll}\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_0} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_0 & \\textrm{dla $j = 0$ }\\\\\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_j} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_j \\color{red}{+ \\dfrac{\\lambda}{m}\\theta_j} & \\textrm{dla $j = 1, 2, \\ldots, n $} \\\\\n", "\\end{array} \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji logistycznej – funkcja kosztu\n", "\n", "$$\n", "\\begin{array}{rtl}\n", "J(\\theta) & = & -\\dfrac{1}{m} \\left( \\displaystyle\\sum_{i=1}^{m} y^{(i)} \\log h_\\theta(x^{(i)}) + \\left( 1-y^{(i)} \\right) \\log \\left( 1-h_\\theta(x^{(i)}) \\right) \\right) \\\\\n", "& & \\color{red}{ + \\dfrac{\\lambda}{2m} \\displaystyle\\sum_{j=1}^{n} \\theta^2_j } \\\\\n", "\\end{array}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Regularyzacja dla regresji logistycznej – gradient\n", "\n", "$$\\small\n", "\\begin{array}{llll}\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_0} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_0 & \\textrm{dla $j = 0$ }\\\\\n", "\\dfrac{\\partial J(\\theta)}{\\partial \\theta_j} &=& \\dfrac{1}{m}\\displaystyle\\sum_{i=1}^m \\left( h_{\\theta}(x^{(i)})-y^{(i)} \\right) x^{(i)}_j \\color{red}{+ \\dfrac{\\lambda}{m}\\theta_j} & \\textrm{dla $j = 1, 2, \\ldots, n $} \\\\\n", "\\end{array} \n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Implementacja metody regularyzacji" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "def J_(h,theta,X,y,lamb=0):\n", " \"\"\"Funkcja kosztu z regularyzacją\"\"\"\n", " m = float(len(y))\n", " f = h(theta, X, eps=10**-7)\n", " j = 1.0/m \\\n", " * -np.sum(np.multiply(y, np.log(f)) + \n", " np.multiply(1 - y, np.log(1 - f)), axis=0) \\\n", " + lamb/(2*m) * np.sum(np.power(theta[1:] ,2))\n", " return j\n", "\n", "def dJ_(h,theta,X,y,lamb=0):\n", " \"\"\"Gradient funkcji kosztu z regularyzacją\"\"\"\n", " m = float(y.shape[0])\n", " g = 1.0/y.shape[0]*(X.T*(h(theta,X)-y))\n", " g[1:] += lamb/m * theta[1:]\n", " return g" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "slider_lambda = widgets.FloatSlider(min=0.0, max=0.5, step=0.005, value=0.01, description=r'$\\lambda$', width=300)\n", "\n", "def slide_regularization_example_2(lamb):\n", " draw_regularization_example(X, Y, lamb=lamb)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "e0246912b4c349958ea4f5391b3ae44f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=0.01, description='$\\\\lambda$', max=0.5, step=0.005), Button(descripti…" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "widgets.interact_manual(slide_regularization_example_2, lamb=slider_lambda)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def cost_lambda_fun(lamb):\n", " \"\"\"Koszt w zależności od parametru regularyzacji lambda\"\"\"\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=1, adaGrad=True, maxEpochs=2500, batchSize=100, \n", " logError=True, validate=0.25, valStep=1, lamb=lamb)\n", " return err[1][-1], err[3][-1]\n", "\n", "def plot_cost_lambda():\n", " \"\"\"Wykres kosztu w zależności od parametru regularyzacji lambda\"\"\"\n", " plt.figure(figsize=(16,8))\n", " ax = plt.subplot(111)\n", " Lambda = np.arange(0.0, 1.0, 0.01)\n", " Costs = [cost_lambda_fun(lamb) for lamb in Lambda]\n", " CostTrain = [cost[0] for cost in Costs]\n", " CostCV = [cost[1] for cost in Costs]\n", " plt.plot(Lambda, CostTrain, lw=3, label='training error')\n", " plt.plot(Lambda, CostCV, lw=3, label='validation error')\n", " ax.set_xlabel(r'$\\lambda$')\n", " ax.set_ylabel(u'cost')\n", " plt.legend()\n", " plt.ylim(0.2,0.8)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAHmCAYAAABK9WIBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXhc9WHv/89Xo200Gu3yJsm2bAw2toUxwphAWUIhhNtAQwKBNAvtLbRpc2nTW5rl99yQctvnSdMkTbhJmkKewG1KSAkJDbclCXHLHhNsgzHG+25ZtvZ9JI1m5vv745xZJMuyJM+MdOT363nmOefMnJn5CidYb75nMdZaAQAAAAAw2+XM9AAAAAAAAJgMAhYAAAAA4AkELAAAAADAEwhYAAAAAIAnELAAAAAAAE8gYAEAAAAAnpDRgDXG3GyM2WuMOWCM+dw4ry82xrxgjHnLGLPDGHNLJscDAAAAAPAuk6n7wBpjfJL2SbpRUpOkLZLuttbuStnnEUlvWWv/0RhzsaTnrLVLMzIgAAAAAICnZXIGdoOkA9baQ9basKQfSbptzD5WUom7XiqpOYPjAQAAAAB4WG4GP7tG0vGU7SZJV4zZ50uSnjfG/A9JAUm/ncHxAAAAAAA8LJMBa8Z5buzxyndLetxa+zVjzJWSfmCMWWOtjY36IGPuk3SfJAUCgctWrlyZkQEDAAAAAGbWtm3b2q211eO9lsmAbZJUl7Jdq9MPEf7vkm6WJGvtZmNMoaQqSa2pO1lrH5H0iCQ1NjbarVu3ZmrMAAAAAIAZZIw5eqbXMnkO7BZJK4wx9caYfEl3SXp2zD7HJN0gScaYVZIKJbVlcEwAAAAAAI/KWMBaayOSPi3pl5J2S3rKWvuuMeYhY8yt7m7/U9K9xpi3JT0p6R6bqcsiAwAAAAA8LZOHEMta+5yk58Y898WU9V2SrsrkGAAAAAAAc0NGAxYAAAAAMmVkZERNTU0aGhqa6aFgGgoLC1VbW6u8vLxJv4eABQAAAOBJTU1NCgaDWrp0qYwZ7yYomK2stero6FBTU5Pq6+sn/b5MXsQJAAAAADJmaGhIlZWVxKsHGWNUWVk55dlzAhYAAACAZxGv3jWdPzsCFgAAAACmobu7W9/5znem9d5bbrlF3d3dE+7zxS9+UZs2bZrW589VBCwAAAAATMNEARuNRid873PPPaeysrIJ93nooYf027/929Me31SNHXMkEpnU+ya7XzoQsAAAAAAwDZ/73Od08OBBrVu3Tg888IBefPFFXX/99froRz+qtWvXSpJ+93d/V5dddplWr16tRx55JPHepUuXqr29XUeOHNGqVat07733avXq1brppps0ODgoSbrnnnv09NNPJ/Z/8MEHtX79eq1du1Z79uyRJLW1tenGG2/U+vXr9Ud/9EdasmSJ2tvbTxvr888/ryuvvFLr16/XHXfcof7+/sTnPvTQQ7r66qv14x//WNddd52+8IUv6Nprr9U3v/lNHT16VDfccIMaGhp0ww036NixY4mx/cVf/IWuv/56ffazn83cP+QxuAoxAAAAAM9b+rn/yNhnH/nyfxv3+S9/+cvauXOntm/fLkl68cUX9cYbb2jnzp2JK+t+//vfV0VFhQYHB3X55ZfrQx/6kCorK0d9zv79+/Xkk0/q0Ucf1Z133qmf/OQn+tjHPnba91VVVenNN9/Ud77zHX31q1/V9773Pf31X/+13vve9+rzn/+8fvGLX4yK5Lj29nb9zd/8jTZt2qRAIKC/+7u/09e//nV98YtflOTczubVV1+VJH33u99Vd3e3XnrpJUnSBz7wAX3iE5/QJz/5SX3/+9/X/fffr3/7t3+TJO3bt0+bNm2Sz+ebzj/WaSFgAQAAACBNNmzYMOq2MA8//LCeeeYZSdLx48e1f//+0wK2vr5e69atkyRddtllOnLkyLifffvttyf2+elPfypJevXVVxOff/PNN6u8vPy0973++uvatWuXrrrqKklSOBzWlVdemXj9Ix/5yKj9U7c3b96c+K6Pf/zj+qu/+qvEa3fccUdW41UiYAEAAAAgbQKBQGL9xRdf1KZNm7R582YVFRXpuuuuG/e2MQUFBYl1n8+XOIT4TPv5fL7EeafW2rOOyVqrG2+8UU8++eRZxzzedqrUKwdPtF+mELAAAAAAPO9Mh/lmUjAYVF9f3xlf7+npUXl5uYqKirRnzx69/vrraR/D1Vdfraeeekqf/exn9fzzz6urq+u0fTZu3Kg//dM/1YEDB3TBBRcoFAqpqalJF1544Vk//z3veY9+9KMf6eMf/7ieeOIJXX311Wn/GaaCizgBAAAAwDRUVlbqqquu0po1a/TAAw+c9vrNN9+sSCSihoYG/a//9b+0cePGtI/hwQcf1PPPP6/169fr5z//uRYuXKhgMDhqn+rqaj3++OO6++671dDQoI0bNyYuAnU2Dz/8sB577DE1NDToBz/4gb75zW+m/WeYCjOZKefZpLGx0W7dunWmhwEAAABghu3evVurVq2a6WHMqOHhYfl8PuXm5mrz5s361Kc+lbiolBeM92dojNlmrW0cb38OIQYAAAAAjzp27JjuvPNOxWIx5efn69FHH53pIWUUAQsAAAAAHrVixQq99dZbMz2MrOEcWAAAAACAJxCwAAAAAABPIGABAAAAAJ5AwAIAAAAAPIGABQAAAIAsKS4uliQ1Nzfrwx/+8Lj7XHfddTrbrUO/8Y1vKBQKJbZvueUWdXd3p2+gsxQBCwAAAABZtmjRIj399NPTfv/YgH3uuedUVlaWjqGdVSQSmXD7TKLR6Dl/NwELAAAAANPw2c9+Vt/5zncS21/60pf0ta99Tf39/brhhhu0fv16rV27Vj/72c9Oe++RI0e0Zs0aSdLg4KDuuusuNTQ06CMf+YgGBwcT+33qU59SY2OjVq9erQcffFCS9PDDD6u5uVnXX3+9rr/+eknS0qVL1d7eLkn6+te/rjVr1mjNmjX6xje+kfi+VatW6d5779Xq1at10003jfqeuLa2Nn3oQx/S5Zdfrssvv1yvvfZa4me77777dNNNN+kTn/iEHn/8cd1xxx36wAc+oJtuuknWWj3wwANas2aN1q5dq3/913+VJL344ou6/vrr9dGPflRr164953/m3AcWAAAAgPd9qTSDn90z7tN33XWX/vzP/1x/8id/Ikl66qmn9Itf/EKFhYV65plnVFJSovb2dm3cuFG33nqrjDHjfs4//uM/qqioSDt27NCOHTu0fv36xGt/+7d/q4qKCkWjUd1www3asWOH7r//fn3961/XCy+8oKqqqlGftW3bNj322GP6zW9+I2utrrjiCl177bUqLy/X/v379eSTT+rRRx/VnXfeqZ/85Cf62Mc+Nur9f/Znf6bPfOYzuvrqq3Xs2DG9733v0+7duxOf/eqrr8rv9+vxxx/X5s2btWPHDlVUVOgnP/mJtm/frrffflvt7e26/PLLdc0110iS3njjDe3cuVP19fXT++efgoAFAAAAgGm49NJL1draqubmZrW1tam8vFyLFy/WyMiIvvCFL+jll19WTk6OTpw4oZaWFi1YsGDc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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cost_lambda()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## 5.4. Krzywa uczenia się" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* Krzywa uczenia pozwala sprawdzić, czy uczenie przebiega poprawnie.\n", "* Krzywa uczenia to wykres zależności między wielkością zbioru treningowego a wartością funkcji kosztu.\n", "* Wraz ze wzrostem wielkości zbioru treningowego wartość funkcji kosztu na zbiorze treningowym rośnie.\n", "* Wraz ze wzrostem wielkości zbioru treningowego wartość funkcji kosztu na zbiorze walidacyjnym maleje." ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "def cost_trainsetsize_fun(m):\n", " \"\"\"Koszt w zależności od wielkości zbioru uczącego\"\"\"\n", " theta = np.matrix(np.zeros(X.shape[1])).reshape(X.shape[1],1)\n", " thetaBest, err = SGD(h, J, dJ, theta, X, Y, alpha=1, adaGrad=True, maxEpochs=2500, batchSize=100, \n", " logError=True, validate=0.25, valStep=1, lamb=0.01, trainsetsize=m)\n", " return err[1][-1], err[3][-1]\n", "\n", "def plot_learning_curve():\n", " \"\"\"Wykres krzywej uczenia się\"\"\"\n", " plt.figure(figsize=(16,8))\n", " ax = plt.subplot(111)\n", " M = np.arange(0.3, 1.0, 0.05)\n", " Costs = [cost_trainsetsize_fun(m) for m in M]\n", " CostTrain = [cost[0] for cost in Costs]\n", " CostCV = [cost[1] for cost in Costs]\n", " plt.plot(M, CostTrain, lw=3, label='training error')\n", " plt.plot(M, CostCV, lw=3, label='validation error')\n", " ax.set_xlabel(u'trainset size')\n", " ax.set_ylabel(u'cost')\n", " plt.legend()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Krzywa uczenia a obciążenie i wariancja\n", "\n", "Wykreślenie krzywej uczenia pomaga diagnozować nadmierne i niedostateczne dopasowanie:\n", "\n", "\n", "\n", "Źródło: http://www.ritchieng.com/machinelearning-learning-curve" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7AAAAHgCAYAAACcrIEcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeXyU5b3///eVyb4ACQTZSQBRBIKs4lJWF7RH675VLV2kte3xtP3Vanu+rT329PdtrcdWT2s96lHOsVZrXVpP64psoqAsKgdBMOxhTSAJgewz1/ePe5KZLJOEMDP3LK/n4zGPXPcyM58EE/POtRlrrQAAAAAAiHUpbhcAAAAAAEBPEGABAAAAAHGBAAsAAAAAiAsEWAAAAABAXCDAAgAAAADiAgEWAAAAABAXUt0u4GQNGDDAFhUVuV0GAAAAACAC1q9fX2GtLezsWtwF2KKiIq1bt87tMgAAAAAAEWCM2R3qGkOIAQAAAABxgQALAAAAAIgLBFgAAAAAQFyIuzmwAAAAACBJTU1NKisrU319vduloBcyMzM1bNgwpaWl9fg5BFgAAAAAcamsrEx5eXkqKiqSMcbtcnASrLU6cuSIysrKVFxc3OPnMYQYAAAAQFyqr69X//79Ca9xyBij/v37n3TvOQEWAAAAQNwivMav3vzbEWABAAAAoBeqqqr0yCOP9Oq5l112maqqqrq85yc/+YmWLFnSq9dPVARYAAAAAOiFrgKs1+vt8rmvvvqq+vXr1+U99913ny688MJe13ey2tfc3Nzco+f19L5wIMACAAAAQC/cc8892r59u84++2zdddddWr58uebOnaubb75ZEydOlCRdeeWVmjp1qsaPH6/HHnus9blFRUWqqKjQrl27NG7cON1+++0aP368Lr74YtXV1UmSFi5cqBdeeKH1/nvvvVdTpkzRxIkT9emnn0qSysvLddFFF2nKlCn6+te/rpEjR6qioqJDrW+++abOPfdcTZkyRdddd52OHz/e+rr33XefLrjgAv35z3/WnDlz9KMf/UizZ8/WQw89pN27d2v+/PkqKSnR/PnztWfPntbavve972nu3Lm6++67I/dFbodViAEAAADEvaJ7/h6x1971i893ev4Xv/iFNm3apI8++kiStHz5cn3wwQfatGlT68q6Tz75pAoKClRXV6fp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ypUrdeedd0qSSkpKVFJS0nrt+eef12OPPabm5mYdOHBAmzdvbnO9vVWrVumqq65STk6OJOnqq6/WO++8oyuuuELFxcU6++yzJUlTp07Vrl27Ojx/yZIl2rx5c+vxsWPHVFNTI0m64oorlJWV1XrtoosuUkFBQev73nTTTfJ4PDrttNM0e/ZsrV27Vn369NGMGTPCEl6lCAZYa+1NPbjnV5J+FakaXDNqjmRSJOuT9m2Qao9K2QVuVwUAAAAgzK699lq98MILOnjwoG688UZJ0jPPPKPy8nKtX79eaWlpKioqUn19fZev01nv7M6dO/XAAw9o7dq1ys/P18KFC7t9HWttyGsZGRmtbY/H0+kQYp/Pp9WrV7cJqi1aQnFnx129b/vnnQo3hxAnrqx8aehUqWytJCvtWCZNuMbtqgAAAIDEFWKYb6TdeOONuv3221VRUaEVK1ZIkqqrqzVw4EClpaVp2bJl2r17d5evMWvWLD3zzDOaO3euNm3apI0bN0pyej9zcnLUt29fHTp0SK+99prmzJkjScrLy1NNTU2HIcSzZs3SwoULdc8998haq5dffllPP/10jz+fiy++WL/97W911113SZI++uij1l7b7j6H//iP/9CXvvQlHT16VCtXrtSvfvUrffrppz1+755wcxGnxNZmO52l7tUBAAAAIGLGjx+vmpoaDR06VIMHD5YkffGLX9S6des0bdo0PfPMMzrzzDO7fI077rhDx48fV0lJie6//37NmDFDkjRp0iRNnjxZ48eP11e+8hWdf/75rc9ZtGiRLr300tZFnFpMmTJFCxcu1IwZM3TOOefoa1/7miZPntzjz+fhhx/WunXrVFJSorPOOkuPPvpoj5531VVXqaSkRJMmTdK8efN0//33hxwyfSpMV129sWjatGm2uz2RYsLeD6T/vMhp5w2WvrfFWeAJAAAAQFhs2bJF48aNc7sMnILO/g2NMeuttdM6u58e2EgZMkXK9K+EVnNAOrzF3XoAAAAAIM4RYCPFk+os5tRi+9tuVQIAAAAACYEAG0lt5sESYAEAAADgVBBgI2lMUIDd/Z7UWOteLQAAAEACirc1fRDQm387Amwk9R0mDTjDaXsbnBALAAAAICwyMzN15MgRQmwcstbqyJEjyszMPKnnsQ9spI2ZL1Vsddrb35ZOv9DdegAAAIAEMWzYMJWVlam8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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_learning_curve()" ] } ], "metadata": { "celltoolbar": "Slideshow", "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" }, "livereveal": { "start_slideshow_at": "selected", "theme": "amu" } }, "nbformat": 4, "nbformat_minor": 4 }