diff --git a/wyk/02_Regresja_liniowa.ipynb b/wyk/02_Regresja_liniowa.ipynb
deleted file mode 100644
index 2e6b05f..0000000
--- a/wyk/02_Regresja_liniowa.ipynb
+++ /dev/null
@@ -1,1596 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "slide"
- }
- },
- "source": [
- "### Uczenie maszynowe\n",
- "# 2. Regresja liniowa – część 1"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "slide"
- }
- },
- "source": [
- "## 2.1. Funkcja kosztu"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "subslide"
- }
- },
- "source": [
- "### Zadanie\n",
- "Znając $x$ – ludność miasta, należy przewidzieć $y$ – dochód firmy transportowej.\n",
- "\n",
- "(Dane pochodzą z kursu „Machine Learning”, Andrew Ng, Coursera)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "**Uwaga**: Ponieważ ten przykład ma być tak prosty, jak to tylko możliwe, ludność miasta podana jest w dziesiątkach tysięcy mieszkańców, a dochód firmy w dziesiątkach tysięcy dolarów. Dzięki temu funkcja kosztu obliczona w dalszej części wykładu będzie osiągać wartości, które łatwo przedstawić na wykresie."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "outputs": [],
- "source": [
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "import ipywidgets as widgets\n",
- "\n",
- "%matplotlib inline\n",
- "%config InlineBackend.figure_format = \"svg\"\n",
- "\n",
- "from IPython.display import display, Math, Latex"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "slide"
- }
- },
- "source": [
- "### Dane"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "slideshow": {
- "slide_type": "fragment"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " x y\n",
- "0 6.1101 17.59200\n",
- "1 5.5277 9.13020\n",
- "2 8.5186 13.66200\n",
- "3 7.0032 11.85400\n",
- "4 5.8598 6.82330\n",
- ".. ... ...\n",
- "75 6.5479 0.29678\n",
- "76 7.5386 3.88450\n",
- "77 5.0365 5.70140\n",
- "78 10.2740 6.75260\n",
- "79 5.1077 2.05760\n",
- "\n",
- "[80 rows x 2 columns]\n"
- ]
- }
- ],
- "source": [
- "import pandas as pd\n",
- "\n",
- "data = pd.read_csv(\"data1_train.csv\", names=[\"x\", \"y\"])\n",
- "print(data)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "outputs": [],
- "source": [
- "x = data[\"x\"].to_numpy()\n",
- "y = data[\"y\"].to_numpy()\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "slide"
- }
- },
- "source": [
- "### Hipoteza i parametry modelu"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "Jak przewidzieć $y$ na podstawie danego $x$? W celu odpowiedzi na to pytanie będziemy starać się znaleźć taką funkcję $h(x)$, która będzie najlepiej obrazować zależność między $x$ a $y$, tj. $y \\sim h(x)$.\n",
- "\n",
- "Zacznijmy od najprostszego przypadku, kiedy $h(x)$ jest po prostu funkcją liniową. Ogólny wzór funkcji liniowej to"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "fragment"
- }
- },
- "source": [
- "$$ h(x) = a \\, x + b $$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "Pamiętajmy jednak, że współczynniki $a$ i $b$ nie są w tej chwili dane z góry – naszym zadaniem właśnie będzie znalezienie takich ich wartości, żeby $h(x)$ było „możliwie jak najbliżej” $y$ (co właściwie oznacza to sformułowanie, wyjaśnię potem)."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "fragment"
- }
- },
- "source": [
- "Poszukiwaną funkcję $h$ będziemy nazywać **funkcją hipotezy**, a jej współczynniki – **parametrami modelu**."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "W teorii uczenia maszynowego parametry modelu oznacza się na ogół grecką literą $\\theta$ z odpowiednimi indeksami, dlatego powyższy wzór opisujący liniową funkcję hipotezy zapiszemy jako\n",
- "$$ h(x) = \\theta_0 + \\theta_1 x $$\n",
- "\n",
- "**Parametry modelu** tworzą wektor, który oznaczymy po prostu przez $\\theta$:"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "subslide"
- }
- },
- "source": [
- "$$ \\theta = \\left[\\begin{array}{c}\\theta_0\\\\ \\theta_1\\end{array}\\right] $$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "Żeby podkreślić fakt, że funkcja hipotezy zależy od parametrów modelu, będziemy pisać $h_\\theta$ zamiast $h$:"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "fragment"
- }
- },
- "source": [
- "$$ h_{\\theta}(x) = \\theta_0 + \\theta_1 x $$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "Przyjrzyjmy się teraz, jak wyglądają dane, które mamy modelować:"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "source": [
- "Na poniższym wykresie możesz spróbować ręcznie dopasować parametry modelu $\\theta_0$ i $\\theta_1$ tak, aby jak najlepiej modelowały zależność między $x$ a $y$:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {
- "slideshow": {
- "slide_type": "notes"
- }
- },
- "outputs": [],
- "source": [
- "# Funkcje rysujące wykres kropkowy oraz prostą regresyjną\n",
- "\n",
- "\n",
- "def regdots(x, y):\n",
- " fig = plt.figure(figsize=(16 * 0.6, 9 * 0.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, y, c=\"r\", label=\"Dane\")\n",
- "\n",
- " ax.set_xlabel(\"Wielkość miejscowości\")\n",
- " ax.set_ylabel(\"Dochód firmy\")\n",
- " ax.margins(0.05, 0.05)\n",
- " plt.ylim(min(y) - 1, max(y) + 1)\n",
- " plt.xlim(min(x) - 1, max(x) + 1)\n",
- " return fig\n",
- "\n",
- "\n",
- "def regline(fig, fun, theta, x):\n",
- " ax = fig.axes[0]\n",
- " x0, x1 = min(x), max(x)\n",
- " X = [x0, x1]\n",
- " Y = [fun(theta, x) for x in X]\n",
- " ax.plot(\n",
- " X,\n",
- " Y,\n",
- " linewidth=\"2\",\n",
- " label=(\n",
- " r\"$y={theta0}{op}{theta1}x$\".format(\n",
- " theta0=theta[0],\n",
- " theta1=(theta[1] if theta[1] >= 0 else -theta[1]),\n",
- " op=\"+\" if theta[1] >= 0 else \"-\",\n",
- " )\n",
- " ),\n",
- " )\n",
- "\n",
- "\n",
- "def legend(fig):\n",
- " ax = fig.axes[0]\n",
- " handles, labels = ax.get_legend_handles_labels()\n",
- " # try-except block is a fix for a bug in Poly3DCollection\n",
- " try:\n",
- " fig.legend(handles, labels, fontsize=\"15\", loc=\"lower right\")\n",
- " except AttributeError:\n",
- " pass\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "slideshow": {
- "slide_type": "subslide"
- }
- },
- "outputs": [
- {
- "data": {
- "image/svg+xml": "\n\n\n",
- "text/plain": [
- "