{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Regresja wielomianowa" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "slideshow": { "slide_type": "notes" } }, "outputs": [], "source": [ "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": 82, "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**-7):\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": 83, "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']])" ] }, { "cell_type": "code", "execution_count": 84, "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 get_poly_data(data, deg):\n", " m, n_plus_1 = data.shape\n", " n = n_plus_1 - 1\n", "\n", " X1 = data[:, 0:n]\n", " X1 /= np.amax(X1, axis=0)\n", "\n", " Xs = [np.ones((m, 1)), X1]\n", "\n", " for i in range(2, deg+1):\n", " Xn = np.power(X1, i)\n", " Xn /= np.amax(Xn, axis=0)\n", " Xs.append(Xn)\n", "\n", " X = np.matrix(np.concatenate(Xs, axis=1)).reshape(m, deg * n + 1)\n", "\n", " y = np.matrix(data[:, -1]).reshape(m, 1)\n", "\n", " return X, y\n", "\n", "\n", "def polynomial_regression(theta, X, y, n):\n", " \"\"\"Funkcja regresji wielomianowej\"\"\"\n", " theta_start = np.matrix([0] * (n+1)).reshape(n+1, 1)\n", " theta, logs = gradient_descent(cost, gradient, theta_start, X, y)\n", " return lambda x: h_poly(theta, x)" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[]" ] }, "metadata": {}, "execution_count": 85 }, { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2022-06-12T17:44:07.060976\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.4, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "n = 2\n", "x, y = get_poly_data(data, n)\n", "fig = plot_data(x, y, xlabel='x', ylabel='y')\n", "plot_fun(fig, polynomial_regression(theta, x, y, n), x)" ] } ], "metadata": { "author": "Paweł Skórzewski", "celltoolbar": "Slideshow", "email": "pawel.skorzewski@amu.edu.pl", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "lang": "pl", "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.8-final" }, "livereveal": { "start_slideshow_at": "selected", "theme": "white" }, "subtitle": "5.Regresja wielomianowa. Problem nadmiernego dopasowania[wykład]", "title": "Uczenie maszynowe", "year": "2021" }, "nbformat": 4, "nbformat_minor": 4 }