From 69bf34a6b8fd7dc9899d721525cedb344758c03f Mon Sep 17 00:00:00 2001
From: Mikolaj Rybinski <mikolaj.rybinski@id.ethz.ch>
Date: Fri, 28 Dec 2018 20:48:13 +0100
Subject: [PATCH] in-detail review of 01_introduction script

---
 .gitignore                     |   2 +-
 01_introduction.ipynb          | 474 ++++++++++++++++++++++-----------
 classification-svc-2d-poly.png | Bin 0 -> 26460 bytes
 classifier_examples.ipynb      | 123 ++++++++-
 data_split.png                 | Bin 0 -> 6755 bytes
 regression-lin-1d.png          | Bin 0 -> 15438 bytes
 6 files changed, 444 insertions(+), 155 deletions(-)
 create mode 100644 classification-svc-2d-poly.png
 create mode 100644 data_split.png
 create mode 100644 regression-lin-1d.png

diff --git a/.gitignore b/.gitignore
index 60815f0..3c7da3c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,2 @@
 .ipynb_checkpoints/
-venv*
+.*venv*
diff --git a/01_introduction.ipynb b/01_introduction.ipynb
index 6c7a651..98806b8 100644
--- a/01_introduction.ipynb
+++ b/01_introduction.ipynb
@@ -21,7 +21,7 @@
     "   1. Where will my car at given velocity stop when I break now ?\n",
     "   2. Where on the night sky will I see the moon tonight ?\n",
     "   2. Is the email I received spam ? \n",
-    "   4. What article X should I recommend to my customers Y ?\n",
+    "   4. Which article X should I recommend to a customer Y ?\n",
     "   \n",
     "- The first two questions can be answered based on existing physical models (formulas). \n",
     "\n",
@@ -38,13 +38,17 @@
     "\n",
     "E.g. for the spamming example:\n",
     "\n",
-    "- We have no explicit formula for such a task\n",
-    "- We have a vague understanding of the problem domeani, because we know that some words are specific for spam emails, other words are specific for my personal and job emails.\n",
+    "- We have no explicit formula for such a task (and devising one would boil down to lots of trial with different statistics or scores and possibly weighting of them).\n",
+    "- We have a vague understanding of the problem domain, because we know that some words are specific for spam emails, other words are specific for my personal and job emails.\n",
     "- My mailbox is full with examples for spam vs non-spam.\n",
     "\n",
     "\n",
     "**In such cases machine learning offers approaches to build models based on example data.**\n",
     "\n",
+    "<div class=\"alert alert-block alert-info\">\n",
+    "<i class=\"fa fa-info-circle\"></i>\n",
+    "The closely-related concept of <b>data mining</b> usually means use of predictive machine learning models to explicitly discover previously unknown knowledge from a specific data set, such as, for instance, association rules between customer and article types in the Problem 4 above.\n",
+    "</div>\n",
     "\n",
     "\n",
     "\n",
@@ -69,16 +73,19 @@
     "\n",
     "Some parts of ML are older than you might think. This is a rough time line with a few selected achievements from this field:\n",
     "\n",
-    " \n",
-    "    1812: Bayes Theorem\n",
+    "    1805: Least squares regression\n",
+    "    1812: Bayes' rule\n",
     "    1913: Markov Chains\n",
+    "\n",
     "    1951: First neural network\n",
-    "    1959: first use or term \"machine learning\" AI pioneer Arthur Samuel\n",
+    "    1957-65: \"k-means\" clustering algorithm\n",
+    "    1959: Term \"machine learning\" is coined by Arthur Samuel, an AI pioneer\n",
     "    1969: Book \"Perceptrons\": Limitations of Neural Networks\n",
-    "    1986: Backpropagation to learn neural networks\n",
-    "    1995: Randomized Forests and Support Vector Machines\n",
-    "    1998: Public appearance of ML: naive Bayes Classifier for Spam detection\n",
-    "    2000+: Deep learning\n",
+    "    1984: Book \"Classification And Regression Trees\"\n",
+    "    1974-86: Neural networks learning breakthrough: backpropagation method\n",
+    "    1995: Randomized Forests and Support Vector Machines methods\n",
+    "    1998: Public appearance: first ML implementations of spam filtering methods; naive Bayes Classifier method\n",
+    "    2006-12: Neural networks learning breakthrough: deep learning\n",
     "    \n",
     "So the field is not as new as one might think, but due to \n",
     "\n",
@@ -111,7 +118,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "## ML terms: What are \"features\" ?\n",
+    "## ML lingo: What are \"features\" ?\n",
     "\n",
     "A typical and very common situation is that our data is presented as a table, as in the following example:"
    ]
@@ -219,12 +226,16 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "\n",
-    "**Definitions**:\n",
-    "- every row of such a matrix is called a **sample** or **feature vector**. \n",
-    "\n",
-    "- the cells in a row are **feature values**.\n",
-    "- every column name is called a **feature name** or **attribute**."
+    "<div class=\"alert alert-block alert-warning\">\n",
+    "<i class=\"fa fa-warning\"></i>&nbsp;<strong>Definitions</strong>\n",
+    "<ul>\n",
+    "    <li>every row of such a matrix is called a <strong>sample</strong> or <strong>feature vector</strong>;</li>\n",
+    "    <li>the cells in a row are <strong>feature values</strong>;</li>\n",
+    "    <li>every column name is called a <strong>feature name</strong> or <strong>attribute</strong>.</li>\n",
+    "</ul>\n",
+    "\n",
+    "Features are also commonly called <strong>variables</strong>.\n",
+    "</div>"
    ]
   },
   {
@@ -233,18 +244,14 @@
    "source": [
     "This table shown holds five samples.\n",
     "\n",
-    "The feature names are `alcohol_content`, `bitterness`, `darkness`, `fruitiness` and `is_yummy`."
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "(Almost) all machine learning algorithms require that your data is numerical and/or categorial. In some applications it is not obvious how to transform data to a numerical presentation.\n",
-    "\n",
-    "**Definition**:\n",
+    "The feature names are `alcohol_content`, `bitterness`, `darkness`, `fruitiness` and `is_yummy`.\n",
     "\n",
-    "*Categorical data*: data which has only a limited set of allowed values. A `taste` feature could only allow values `sour`, `bitter`, `sweet`, `salty`."
+    "<div class=\"alert alert-block alert-warning\">\n",
+    "<i class=\"fa fa-warning\"></i>&nbsp;<strong>More definitions</strong>\n",
+    "<ul>\n",
+    "    <li>The first four features have continuous numerical values within some ranges - these are called <strong>numerical features</strong>,</li>\n",
+    "    <li>the <code>is_yummy</code> feature has only a finite set of values (\"categories\"): <code>0</code> (\"no\") and <code>1</code> (\"yes\") - this is called a <strong>categorical feature</strong>.</li>\n",
+    "</ul>\n"
    ]
   },
   {
@@ -253,14 +260,25 @@
    "source": [
     "A straight-forward application for machine-learning on the previos beer dataset is: **\"can we predict `is_yummy` from the other features\"** ?\n",
     "\n",
-    "In this case we would call the features `alcohol_content`, `bitterness`, `darkness`, `fruitiness` our **input features** and `is_yummy` our **target value**."
+    "<div class=\"alert alert-block alert-warning\">\n",
+    "<i class=\"fa fa-warning\"></i>&nbsp;<strong>Even more definitions</strong>\n",
+    "\n",
+    "In context of the question above we call:\n",
+    "<ul>\n",
+    "    <li>the <code>alcohol_content</code>, <code>bitterness</code>, <code>darkness</code>, <code>fruitiness</code> features our <strong>input features</strong>, and</li>\n",
+    "    <li>the <code>is_yummy</code> feature our <strong>target/output feature</strong> or a <strong>label</strong> of our data samples.\n",
+    "        <ul>\n",
+    "            <li>Values of categorical labels, such as <code>0</code> (\"no\") and <code>1</code> (\"yes\") here, are often called <strong>classes</strong>.</li>\n",
+    "        </ul>\n",
+    "    </li>\n",
+    "</ul>"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### How to represent images as  feature vectors ?\n",
+    "### How to represent images as feature vectors?\n",
     "\n",
     "To simplify our explanations we consider gray images only here. Computers represent images as matrices. Every cell in the matrix represents one pixel, and the numerical value in the matrix cell its gray value.\n",
     "\n",
@@ -273,7 +291,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
@@ -284,30 +302,41 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 3,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "['DESCR', 'data', 'images', 'target', 'target_names']\n"
+     ]
+    }
+   ],
    "source": [
-    "dd = load_digits()"
+    "dd = load_digits()\n",
+    "print(dir(dd))"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Next we plot the first nine digits from this data set:"
+    "Let's plot the first ten digits from this data set:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 76,
-   "metadata": {},
+   "execution_count": 4,
+   "metadata": {
+    "scrolled": true
+   },
    "outputs": [
     {
      "data": {
-      "image/png": "iVBORw0KGgoAAAANSUhEUgAABAsAAACBCAYAAACmXjMaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAEttJREFUeJzt3V9o3ed9x/HPd/YCWRN8FNYs4IQcO2kGvbEyicLomOXOHt0fJl3MIQ0bOrmxbzpkCCzeleU7+SKzdjGGRdfIsI6AulUqo7SzmJXRmxK5PiaL3YZEHJOYjTREUsICMYmfXVhZ8/Ps6Pf1zqNznq/eLyiN1S+Pnp/fOr9z+uRIspSSAAAAAAAAPvUrvd4AAAAAAADoLxwWAAAAAACACg4LAAAAAABABYcFAAAAAACggsMCAAAAAABQwWEBAAAAAACo4LAAAAAAAABUcFgAAAAAAAAqOCwAAAAAAAAVO3MsamYpx7qfGhgYcM3v3r279uz777/vWvvatWuu+U8++cQ175VSsm6sk7uh1xNPPFF7dudO35e1t+H6+rpr/i68m1L6YjcW6reO9913X+3Zxx9/3LX2hx9+6Jp//fXXXfN3oZiODz30kGvec0/96KOPXGtfuXLFNc899e7s2LGj9myz2XSt/eabbzp3k10xj0XPc50kXb9+vfZsp9Nx7qbvFNPRK+drnMuXL3u3k1sxHR988EHXvOe+6v3/Mvfee69r3vvc+Oqrr9aevXHjhm7cuFHEc+Mjjzzimm80GrVn3333Xdfa77zzjms+9+sb1XwsZjksyO3gwYOu+ampqdqzi4uLrrWPHz/uml9dXXXN46aZmZnas54HuiSdOHHCNb+wsOCavwtXc3+CXhkeHq49Oz8/71q73W675kdGRlzzd6GYjuPj4655zz11ZWXFtbbna0Tinnq37r///tqzL7zwgmvtsbEx73ZyK+ax6Hmuk3wHAK1Wy7eZ/lNMR6+cr3EGBwe928mtmI7PPPOMa97Txnuf3Ldvn2ve+y+2PIfCH3zwgWvtXnruuedc854us7OzrrWnp6dd82tra675u1Drsci3IQAAAAAAgIpahwVm9nUz+7mZvWFmvn+Vjr5Bx/LRMAY6xkDH8tEwBjrGQMcY6BjLpocFZrZD0t9K+gNJX5b0DTP7cu6NobvoWD4axkDHGOhYPhrGQMcY6BgDHeOp886Cr0h6I6W0klK6LuklSaN5t4UM6Fg+GsZAxxjoWD4axkDHGOgYAx2DqXNYsFvSW5/589sbH6swsyNmtmxmy93aHLpq04407Hs8FmOgYwzcU8vHYzEGOsZAxxh4bgyma78NIaU0I2lG6r9fSYN6aBgDHWOgY/loGAMdY6BjDHQsHw3LUuedBdckffaXVD688TGUhY7lo2EMdIyBjuWjYQx0jIGOMdAxmDqHBa9I+pKZ7TGzeyQ9Len7ebeFDOhYPhrGQMcY6Fg+GsZAxxjoGAMdg9n02xBSSh+b2Tcl/UjSDknfTim9ln1n6Co6lo+GMdAxBjqWj4Yx0DEGOsZAx3hq/cyClNIPJP0g816QGR3LR8MY6BgDHctHwxjoGAMdY6BjLF37AYdbaWpqyjW/d+/e2rMDAwOutd977z3X/FNPPeWan5ubc81Htba2Vnt2//79rrUPHDjgml9YWHDNRzY4OOiaP3/+fO3Z9fV119rNZtM1H5n3Hnn48GHX/NGjR2vPnjlzxrX20NCQa35xcdE1j5tarVbt2Xa7nW8jqPDexzzPd+Pj4661r1696prnHvxLo6O+3xTn6Xjy5EnvdrBFPK9Vjx075lrbO99oNFzznr2XxPs61cPzPCpJIyMjWedzqfMzCwAAAAAAwDbCYQEAAAAAAKjgsAAAAAAAAFRwWAAAAAAAACo4LAAAAAAAABUcFgAAAAAAgAoOCwAAAAAAQAWHBQAAAAAAoILDAgAAAAAAUMFhAQAAAAAAqOCwAAAAAAAAVOzs9QYkaWhoyDW/d+9e1/xjjz1We3ZlZcW19rlz51zz3mudm5tzzZdicHDQNT8yMpJnI5La7Xa2taMbGxtzzV+6dKn27Pz8vGvtEydOuOYjm5mZcc2fOnXKNb+8vFx71ntPXVxcdM3jpkaj4ZpvtVq1Z6enp11rN5tN17xXp9PJun4vra2tueYfffTR2rPr6+uutZeWllzz3q9B77WW5OTJk9nW9j434u55730ek5OTrnnvfTXn6+aSeF/je55fPM+jkv+e523ovWfXxTsLAAAAAABAxaaHBWb2iJmdN7PLZvaamU1sxcbQXXQsHw1joGMMdCwfDWOgYwx0jIGO8dT5NoSPJT2XUvqpmd0v6YKZnUspXc68N3QXHctHwxjoGAMdy0fDGOgYAx1joGMwm76zIKX0nymln2788weSrkjanXtj6C46lo+GMdAxBjqWj4Yx0DEGOsZAx3hcP7PAzJqSnpT0kxybwdagY/loGAMdY6Bj+WgYAx1joGMMdIyh9m9DMLP7JP2TpGMppfdv878fkXSki3tDBp/XkYZl4LEYAx1j4J5aPh6LMdAxBjrGwHNjHLUOC8zsV3Uz+HdSSv98u5mU0oykmY351LUdoms260jD/sdjMQY6xsA9tXw8FmOgYwx0jIHnxljq/DYEk/T3kq6klP46/5aQAx3LR8MY6BgDHctHwxjoGAMdY6BjPHV+ZsFXJf25pK+ZWXvjP3+YeV/oPjqWj4Yx0DEGOpaPhjHQMQY6xkDHYDb9NoSU0o8l2RbsBRnRsXw0jIGOMdCxfDSMgY4x0DEGOsbj+m0IAAAAAAAgvtq/DSGngYEB1/yFCxdc8ysrK655D+9eojp27JhrfnJy0jW/a9cu17zH0tJStrWjm56eds13Op1say8sLLjmI/Pe8/bu3ZttfnFx0bW29/lgdXXVNR9Vq9VyzTebzdqzs7OzrrW9j921tTXXvPf5oySee6Qk7du3r/as93m03W675r0dI2s0Gq75S5cu1Z71dsEvjYyMZJ338L5u9hobG3PNe+/zpfBe18WLF2vPep5HJf890vt8kAvvLAAAAAAAABUcFgAAAAAAgAoOCwAAAAAAQAWHBQAAAAAAoILDAgAAAAAAUMFhAQAAAAAAqOCwAAAAAAAAVHBYAAAAAAAAKjgsAAAAAAAAFRwWAAAAAACAip293oAkDQwMuOYXFxcz7cTPu/fV1dVMO+mt6elp1/zs7KxrPuffW6PRyLZ2abx/F8eOHXPNj42NueY9Wq1WtrWjW1lZcc0/8MADtWfPnTvnWts7f+jQIdd8Kffg0dFR1/zp06dd82fPnnXNe0xMTLjmn3322Uw7KY/3HjkyMlJ7dnBw0LW292vKy/u6oSTe59JOp1N71vu8Oz8/n20vpfFem/cx43k8ennvDUtLS3k2Upicr/H379/vmt+zZ49rvl8ei7yzAAAAAAAAVHBYAAAAAAAAKmofFpjZDjO7aGb/knNDyIeGMdAxBjrGQMfy0TAGOsZAx/LRMBbPOwsmJF3JtRFsCRrGQMcY6BgDHctHwxjoGAMdy0fDQGodFpjZw5L+SNK38m4HudAwBjrGQMcY6Fg+GsZAxxjoWD4axlP3nQXTkv5S0o07DZjZETNbNrPlruwM3UbDGOgYAx1j+NyONCwCj8UY6BgDHctHw2A2PSwwsz+W9E5K6cLnzaWUZlJKwyml4a7tDl1BwxjoGAMdY6jTkYb9jcdiDHSMgY7lo2FMdd5Z8FVJf2JmHUkvSfqamf1D1l2h22gYAx1joGMMdCwfDWOgYwx0LB8NA9r0sCCl9FcppYdTSk1JT0v6t5TSn2XfGbqGhjHQMQY6xkDH8tEwBjrGQMfy0TAmz29DAAAAAAAA28BOz3BKaUnSUpadYEvQMAY6xkDHGOhYPhrGQMcY6Fg+GsbhOizIZXV11TU/NDSUaSfSwMCAa967l7m5Odc88hscHHTNt9vtTDvpvcnJSdf8xMREno1IGhsbc82vra1l2glu5blnHzp0yLX2mTNnXPPPP/+8a/748eOu+V5ZX1/POj8+Pl571nuP9Jqfn8+6fmRLS0u93sL/ajabvd5C3+h0Oq75/fv3155tNBqutU+fPu2af/LJJ13zJb0m8nbxvg5JKWVbu58e673kfT46f/68a/7kyZO1Z733PO9znfdrxPv1XRffhgAAAAAAACo4LAAAAAAAABUcFgAAAAAAgAoOCwAAAAAAQAWHBQAAAAAAoILDAgAAAAAAUMFhAQAAAAAAqOCwAAAAAAAAVHBYAAAAAAAAKjgsAAAAAAAAFRwWAAAAAACAip293oAkraysuOaHhoZc84cPH84yezdOnTqVdX3g/2N2dtY1PzIy4prft29f7dn5+XnX2gsLC675F198Mev6JZmamnLNLy4u1p4dGBhwrX3w4EHX/NzcnGu+FEtLS675RqPhmh8cHMy2l7Nnz7rm19bWXPORjY6OuubX19drz05OTjp34+O9Z0fmfS49ffp07dlOp+Nau9lsuubHxsZc8+122zVfkunpade85/H48ssve7cD+b/+PU0kX3PvY+vixYuu+Var5ZrPdY/nnQUAAAAAAKCCwwIAAAAAAFBR67DAzBpm9l0z+5mZXTGz3869MXQfHctHwxjoGAMdy0fDGOgYAx1joGMsdX9mwd9I+mFK6U/N7B5Jv5ZxT8iHjuWjYQx0jIGO5aNhDHSMgY4x0DGQTQ8LzGyXpN+V1JKklNJ1SdfzbgvdRsfy0TAGOsZAx/LRMAY6xkDHGOgYT51vQ9gj6ReSXjSzi2b2LTP7wq1DZnbEzJbNbLnru0Q3bNqRhn2Px2IMdIyBe2r5eCzGQMcY6BgDz43B1Dks2CnptyT9XUrpSUn/Len4rUMppZmU0nBKabjLe0R3bNqRhn2Px2IMdIyBe2r5eCzGQMcY6BgDz43B1DkseFvS2ymln2z8+bu6+UWAstCxfDSMgY4x0LF8NIyBjjHQMQY6BrPpYUFK6b8kvWVmv7nxod+TdDnrrtB1dCwfDWOgYwx0LB8NY6BjDHSMgY7x1P1tCH8h6TsbP9FyRdKz+baEjOhYPhrGQMcY6Fg+GsZAxxjoGAMdA6l1WJBSakvi+0oKR8fy0TAGOsZAx/LRMAY6xkDHGOgYS913FmS1srLimj9+/P/8vJPPNTU1VXv2woULrrWHh3ks3I21tTXX/MLCQu3Z0dFR19ojIyOu+dnZWdd8Sdrttmt+cHAw2/zk5KRrbW/3Tqfjmvd8DZZmdXXVNX/mzJlMO5Hm5uZc80ePHs20k9g89+Bdu3a51o58j8ztwIEDrvmJiYlMO5HOnj3rml9aWsqzkQJ5HwPNZrP2bKvVcq3t7TI/P++aj8z7+nB8fLz2rPd1MG7y/r15v/49r4fW19dda3tfR05PT7vmc6nzAw4BAAAAAMA2wmEBAAAAAACo4LAAAAAAAABUcFgAAAAAAAAqOCwAAAAAAAAVHBYAAAAAAIAKDgsAAAAAAEAFhwUAAAAAAKCCwwIAAAAAAFDBYQEAAAAAAKjgsAAAAAAAAFRYSqn7i5r9QtLVWz7865Le7fon61+9uN5HU0pf7MZCd2goba+OvbpWOnYXHWPgnhoDHcvHPTWGqB23U0OJe2oEff1YzHJYcNtPZLacUhrekk/WB6Jeb9Trup3I1xr52m4V+VojX9utol5r1Ou6k6jXG/W6bifytUa+tltFvdao13UnUa836nXdTr9fK9+GAAAAAAAAKjgsAAAAAAAAFVt5WDCzhZ+rH0S93qjXdTuRrzXytd0q8rVGvrZbRb3WqNd1J1GvN+p13U7ka418bbeKeq1Rr+tOol5v1Ou6nb6+1i37mQUAAAAAAKAMfBsCAAAAAACo2JLDAjP7upn93MzeMLPjW/E5e8XMOmb2qpm1zWy51/vpJjqWbzs1lOgYQdSGEh2joGP5tlNDiY4RRG0o0bHfZP82BDPbIel1SYckvS3pFUnfSCldzvqJe8TMOpKGU0qhfjcoHcu33RpKdIwgYkOJjlHQsXzbraFExwgiNpTo2I+24p0FX5H0RkppJaV0XdJLkka34POiu+hYPhrGQMcY6BgDHctHwxjoGAMd+8xWHBbslvTWZ/789sbHokqS/tXMLpjZkV5vpovoWL7t1lCiYwQRG0p0jIKO5dtuDSU6RhCxoUTHvrOz1xsI6HdSStfM7EFJ58zsZymlf+/1puBGxxjoWD4axkDHGOgYAx3LR8MY+r7jVryz4JqkRz7z54c3PhZSSunaxn+/I+l7uvl2mgjoWL5t1VCiYwRBG0p0pGOBgnbcVg0lOkYQtKFEx77ruBWHBa9I+pKZ7TGzeyQ9Len7W/B5t5yZfcHM7v/0nyX9vqT/6O2uuoaO5ds2DSU6RhC4oURHOhYmcMdt01CiYwSBG0p07LuO2b8NIaX0sZl9U9KPJO2Q9O2U0mu5P2+P/Iak75mZdPPv9h9TSj/s7Za6g47ld9xmDSU6RhCyoURHOhYpZMdt1lCiYwQhG0p07MeO2X91IgAAAAAAKMtWfBsCAAAAAAAoCIcFAAAAAACggsMCAAAAAABQwWEBAAAAAACo4LAAAAAAAABUcFgAAAAAAAAqOCwAAAAAAAAVHBYAAAAAAICK/wHIF1w8ycQXMQAAAABJRU5ErkJggg==\n",
+      "image/png": "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\n",
       "text/plain": [
-       "<Figure size 1296x360 with 9 Axes>"
+       "<Figure size 1440x360 with 10 Axes>"
       ]
      },
      "metadata": {
@@ -317,12 +346,12 @@
     }
    ],
    "source": [
-    "N = 9\n",
+    "N = 10\n",
     "\n",
     "plt.figure(figsize=(2 * N, 5))\n",
     "\n",
     "for i, image in enumerate(dd.images[:N]):\n",
-    "    plt.subplot(1, N, i + 1)\n",
+    "    plt.subplot(1, N, i + 1).set_title(dd.target[i])\n",
     "    plt.imshow(image, cmap=\"gray\")"
    ]
   },
@@ -330,53 +359,86 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "And this is the first image from the data set, it is a 8 x 8 matrix with values 0 to 15. The range 0 to 15 is fixed for this specific data set. Other formats allow e.g. values 0..255 or floating point values in the range 0 to 1."
+    "The data is a set of 8 x 8 matrices with values 0 to 15. The range 0 to 15 is fixed for this specific data set. Other formats allow e.g. values 0..255 or floating point values in the range 0 to 1."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 5,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "(8, 8)\n",
-      "[[ 0.  0.  5. 13.  9.  1.  0.  0.]\n",
+      "images.ndim: 3\n",
+      "images[0].shape: (8, 8)\n",
+      "images[0]:\n",
+      " [[ 0.  0.  5. 13.  9.  1.  0.  0.]\n",
       " [ 0.  0. 13. 15. 10. 15.  5.  0.]\n",
       " [ 0.  3. 15.  2.  0. 11.  8.  0.]\n",
       " [ 0.  4. 12.  0.  0.  8.  8.  0.]\n",
       " [ 0.  5.  8.  0.  0.  9.  8.  0.]\n",
       " [ 0.  4. 11.  0.  1. 12.  7.  0.]\n",
       " [ 0.  2. 14.  5. 10. 12.  0.  0.]\n",
-      " [ 0.  0.  6. 13. 10.  0.  0.  0.]]\n"
+      " [ 0.  0.  6. 13. 10.  0.  0.  0.]]\n",
+      "images.shape: (1797, 8, 8)\n",
+      "images.size: 115008\n",
+      "images.dtype: float64\n",
+      "images.itemsize: 8\n",
+      "target.size: 1797\n",
+      "target_names: [0 1 2 3 4 5 6 7 8 9]\n",
+      "DESCR:\n",
+      " Optical Recognition of Handwritten Digits Data Set\n",
+      "===================================================\n",
+      "\n",
+      "Notes\n",
+      "-----\n",
+      "Data Set Characteristics:\n",
+      "    :Number of Instances: 5620\n",
+      "    :Number of Attributes: 64\n",
+      "    :Attribute Information: 8x8 image of integer pixels in the range 0..16.\n",
+      "    :Missing Attribute Values: None\n",
+      "    :Creator: E. Alpaydin (alpaydin '@' boun.edu.tr)\n",
+      "    :Date: July; 1998\n",
+      "\n",
+      "This is a copy of the test set of the UCI ML hand-written digits datasets\n",
+      "http://archive.ics.uci.edu/ml/datas \n",
+      "[...]\n"
      ]
     }
    ],
    "source": [
-    "print(dd.images[0].shape)\n",
-    "print(dd.images[0])"
+    "print(\"images.ndim:\", dd.images.ndim) # number of dimensions of the array\n",
+    "print(\"images[0].shape:\", dd.images[0].shape) # dimensions of a first sample array\n",
+    "print(\"images[0]:\\n\", dd.images[0]) # first sample array\n",
+    "print(\"images.shape:\", dd.images.shape) # dimensions of the array of all samples\n",
+    "print(\"images.size:\", dd.images.size) # total number of elements of the array\n",
+    "print(\"images.dtype:\", dd.images.dtype) # type of the elements in the array\n",
+    "print(\"images.itemsize:\", dd.images.itemsize) # size in bytes of each element of the array\n",
+    "print(\"target.size:\", dd.target.size) # size of the target feature vector (labels of samples)\n",
+    "print(\"target_names:\", dd.target_names) # classes vector\n",
+    "print(\"DESCR:\\n\", dd.DESCR[:500], \"\\n[...]\") # description of the dataset"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "To transform such an image to a feature vector we just have to concatenate the rows to one single vector of size 64:"
+    "To transform such an image to a feature vector we just have to flatten the matrix by concatenating the rows to one single vector of size 64:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 6,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "(64,)\n",
-      "[ 0.  0.  5. 13.  9.  1.  0.  0.  0.  0. 13. 15. 10. 15.  5.  0.  0.  3.\n",
+      "image_vector.shape: (64,)\n",
+      "image_vector: [ 0.  0.  5. 13.  9.  1.  0.  0.  0.  0. 13. 15. 10. 15.  5.  0.  0.  3.\n",
       " 15.  2.  0. 11.  8.  0.  0.  4. 12.  0.  0.  8.  8.  0.  0.  5.  8.  0.\n",
       "  0.  9.  8.  0.  0.  4. 11.  0.  1. 12.  7.  0.  0.  2. 14.  5. 10. 12.\n",
       "  0.  0.  0.  0.  6. 13. 10.  0.  0.  0.]\n"
@@ -384,9 +446,9 @@
     }
    ],
    "source": [
-    "vector = dd.images[0].flatten()\n",
-    "print(vector.shape)\n",
-    "print(vector)"
+    "image_vector = dd.images[0].flatten()\n",
+    "print(\"image_vector.shape:\", image_vector.shape)\n",
+    "print(\"image_vector:\", image_vector)"
    ]
   },
   {
@@ -400,7 +462,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "If we start a machine learning project for texts, we first have to choose and fix an enumerated dictionary or words for this project. The final representation of texts as feature vectors depends on this dictionary. \n",
+    "If we start a machine learning project for texts, we first have to choose a dictionary - set of words for this project. The final representation of a text as a feature vector depends on this dictionary.\n",
     "\n",
     "Such a dictionary can be very large, but for the sake of simplicity we use a very small enumerated dictionary to explain the overall procedure:\n",
     "\n",
@@ -414,7 +476,7 @@
     "| beer     | 4     |\n",
     "| pizza    | 5     |\n",
     "\n",
-    "To \"vectorize\" a given text we count the words in the text which also exist in the vocabulary and put the counts at the given position `Index`.\n",
+    "To \"vectorize\" a given text we count the words in the text which also exist in the vocabulary and put the counts at the given `Index`.\n",
     "\n",
     "E.g. `\"I dislike american pizza, but american beer is nice\"`:\n",
     "\n",
@@ -427,11 +489,11 @@
     "| beer     | 4     | 1     |\n",
     "| pizza    | 5     | 1     |\n",
     "\n",
-    "The according feature vector is the `Count` column, which is:\n",
+    "The respective feature vector is the `Count` column, which is:\n",
     "\n",
     "`[0, 1, 2, 0, 1, 1]`\n",
     "\n",
-    "In real case scenarios the dictionary is much bigger, this results then in vectors with only few non-zero entries (so called sparse vectors)."
+    "In real case scenarios the dictionary is much bigger, which often results in vectors with only few non-zero entries (so called **sparse vectors**)."
    ]
   },
   {
@@ -443,7 +505,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 77,
+   "execution_count": 7,
    "metadata": {},
    "outputs": [
     {
@@ -458,15 +520,57 @@
     "from sklearn.feature_extraction.text import CountVectorizer\n",
     "from itertools import count\n",
     "\n",
-    "vocabulary = {\"like\": 0, \"dislike\": 1, \"american\": 2, \"italian\": 3, \"beer\": 4, \"pizza\": 5}\n",
+    "vocabulary = {\n",
+    "    \"like\": 0,\n",
+    "    \"dislike\": 1,\n",
+    "    \"american\": 2,\n",
+    "    \"italian\": 3,\n",
+    "    \"beer\": 4,\n",
+    "    \"pizza\": 5,\n",
+    "}\n",
     "\n",
     "vectorizer = CountVectorizer(vocabulary=vocabulary)\n",
     "\n",
     "# create count vector for a pice of text:\n",
-    "vector = vectorizer.fit_transform([\"I dislike american pizza. But american beer is nice\"]).toarray().flatten()\n",
+    "vector = vectorizer.fit_transform([\n",
+    "    \"I dislike american pizza. But american beer is nice\"\n",
+    "]).toarray().flatten()\n",
     "print(vector)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## ML lingo: What are the different types of datasets?\n",
+    "\n",
+    "<div class=\"alert alert-block alert-warning\">\n",
+    "<i class=\"fa fa-warning\"></i>&nbsp;<strong>Definitions</strong>\n",
+    "\n",
+    "Subset of data used for:\n",
+    "<ul>\n",
+    "    <li>learning (training) a model is called a <strong>training set</strong>;</li>\n",
+    "    <li>improving ML method performance by adjusting its parameters is called <strong>validation set</strong>;</li>\n",
+    "    <li>assesing final performance is called <strong>test set</strong>.</li>\n",
+    "</ul>\n",
+    "</div>\n",
+    "\n",
+    "<table>\n",
+    "    <tr>\n",
+    "        <td><img src=\"./data_split.png\" width=300px></td>\n",
+    "    </tr>\n",
+    "    <tr>\n",
+    "        <td style=\"font-size:75%\"><center>Img source: https://dziganto.github.io</center></td>\n",
+    "    </tr>\n",
+    "</table>\n",
+    "\n",
+    "\n",
+    "You will learn more on how to select wisely subsets of your data and about related issues later in the course. For now just remember that:\n",
+    "1. the training and validation datasets must be disjunct during each iteration of the method improvement, and\n",
+    "1. the test dataset must be independent from the model (hence, from the other datasets), i.e. it is indeed used only for the final assesment of the method's performance (think: locked in the safe until you're done with model tweaking).\n",
+    "\n"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -487,11 +591,24 @@
     "\n",
     "Examples for supervised learning:\n",
     "\n",
-    "- Classification: Predict the class `is_yummy`  based on the attributes `alcohol_content`,\t`bitterness`, \t`darkness` and `fruitiness`. (two class problem).\n",
+    "- Classification: predict the class `is_yummy`  based on the attributes `alcohol_content`,\t`bitterness`, \t`darkness` and `fruitiness` (a standard two class problem).\n",
+    "\n",
+    "- Classification: predict the digit-shown based on a 8 x 8 pixel image (a multi-class problem).\n",
+    "\n",
+    "- Regression: predict temperature based on how long sun was shining in the last 10 minutes.\n",
     "\n",
-    "- Classification: predict the digit-shown based on a 8 x 8 pixel image (this is a multi-class problem).\n",
     "\n",
-    "- Regression: Predict the length of a salmon based on its age and weight."
+    "\n",
+    "<table>\n",
+    "    <tr>\n",
+    "    <td><img src=\"./classification-svc-2d-poly.png\" width=400px></td>\n",
+    "    <td><img src=\"./regression-lin-1d.png\" width=400px></td>\n",
+    "    </tr>\n",
+    "    <tr>\n",
+    "        <td><center>Classification</center></td>\n",
+    "        <td><center>Linear regression</center></td>\n",
+    "    </tr>\n",
+    "</table>\n"
    ]
   },
   {
@@ -508,13 +625,13 @@
     "\n",
     "Examples for unsupervised learning:\n",
     "\n",
-    "- Can we split up our beer data set into sub groups of similar beers ?\n",
-    "- Can we reduce our data set because groups of features are somehow correlated ?\n",
+    "- Can we split up our beer data set into sub groups of similar beers?\n",
+    "- Can we reduce our data set because groups of features are somehow correlated?\n",
     "\n",
     "<table>\n",
     "    <tr>\n",
-    "    <td><img src=\"./cluster-image.png/\" width=60%></td>\n",
-    "    <td><img src=\"./nonlin-pca.png/\" width=60%></td>\n",
+    "    <td><img src=\"./cluster-image.png/\" width=400px></td>\n",
+    "    <td><img src=\"./nonlin-pca.png/\" width=400px></td>\n",
     "    </tr>\n",
     "    <tr>\n",
     "        <td><center>Clustering</center></td>\n",
@@ -550,6 +667,15 @@
     "# Exercise section 1"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "<div class=\"alert alert-block alert-danger\">\n",
+    "<strong>TODO:</strong> prepare set of actual small exercises out of it (currently it's just more of a tutorial/example).\n",
+    "</div>"
+   ]
+  },
   {
    "cell_type": "markdown",
    "metadata": {},
@@ -559,7 +685,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 126,
+   "execution_count": 8,
    "metadata": {},
    "outputs": [
     {
@@ -644,7 +770,7 @@
        "4         4.148710    0.570586  1.461568    0.260218         0"
       ]
      },
-     "execution_count": 126,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -659,7 +785,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 159,
+   "execution_count": 9,
    "metadata": {},
    "outputs": [
     {
@@ -680,7 +806,7 @@
     "for_plot = beer_data.copy()\n",
     "\n",
     "def translate_label(value):\n",
-    "    return \"yummy\" if value == 1 else \"not yummy\"\n",
+    "    return \"not yummy\" if value == 0 else \"yummy\"\n",
     "\n",
     "for_plot[\"is_yummy\"] = for_plot[\"is_yummy\"].apply(translate_label)\n",
     "\n",
@@ -696,26 +822,34 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 157,
-   "metadata": {},
+   "execution_count": 10,
+   "metadata": {
+    "scrolled": true
+   },
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
+      "# INPUT FEATURES\n",
       "   alcohol_content  bitterness  darkness  fruitiness\n",
       "0         3.739295    0.422503  0.989463    0.215791\n",
       "1         4.207849    0.841668  0.928626    0.380420\n",
       "2         4.709494    0.322037  5.374682    0.145231\n",
       "3         4.684743    0.434315  4.072805    0.191321\n",
       "4         4.148710    0.570586  1.461568    0.260218\n",
+      "...\n",
+      "(225, 4)\n",
       "\n",
+      "# LABELS\n",
       "0    0\n",
       "1    0\n",
       "2    1\n",
       "3    1\n",
       "4    0\n",
-      "Name: is_yummy, dtype: int64\n"
+      "Name: is_yummy, dtype: int64\n",
+      "...\n",
+      "(225,)\n"
      ]
     }
    ],
@@ -726,92 +860,111 @@
     "# only the last column:\n",
     "labels = beer_data.iloc[:, -1]\n",
     "\n",
+    "print('# INPUT FEATURES')\n",
     "print(input_features.head(5))\n",
+    "print('...')\n",
+    "print(input_features.shape)\n",
     "print()\n",
-    "print(labels.head(5))"
+    "print('# LABELS')\n",
+    "print(labels.head(5))\n",
+    "print('...')\n",
+    "print(labels.shape)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "We experiment now the so called `LogisticRegression` classifier. The name is misleading: logistic regression internally uses a kind of regression algorithm for probabilities with the final goal to classify data. So even if the name contains \"regression\" it still is a classifier."
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 81,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "from sklearn.linear_model import LogisticRegression"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 144,
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "classifier = LogisticRegression(C=1)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "metadata": {},
-   "source": [
-    "In `scikit-learn` all classifiers have a `fit` method to learn from data:"
+    "Let's start learning with the so called `LogisticRegression` classifier.\n",
+    "\n",
+    "<div class=\"alert alert-block alert-info\">\n",
+    "<i class=\"fa fa-info-circle\"></i>\n",
+    "In logistic regression the linear regression is used internally and then transformed (using logistic function) to probability of belonging to one of the two classes. Even so the name contains \"regression\", it is still a classifier.\n",
+    "</div>"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 145,
-   "metadata": {},
+   "execution_count": 11,
+   "metadata": {
+    "scrolled": true
+   },
    "outputs": [
     {
      "data": {
       "text/plain": [
-       "LogisticRegression(C=1, class_weight=None, dual=False, fit_intercept=True,\n",
+       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
        "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
        "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
        "          verbose=0, warm_start=False)"
       ]
      },
-     "execution_count": 145,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
    ],
    "source": [
-    "classifier.fit(input_features, labels)"
+    "from sklearn.linear_model import LogisticRegression\n",
+    "classifier = LogisticRegression()\n",
+    "classifier"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Also `scikit-learn` classifiers have a `predict` method for predicting classes for input features. Here we just re-classify our learning data:"
+    "<div class=\"alert alert-block alert-warning\">\n",
+    "<i class=\"fa fa-warning\"></i>&nbsp;<strong>`scikit-learn` API</strong>\n",
+    "\n",
+    "In <code>scikit-learn</code> all classifiers have:\n",
+    "<ul>\n",
+    "    <li>a <strong><code>fit()</code></strong> method to learn from data, and</li>\n",
+    "    <li>and a subsequent <strong><code>predict()</code></strong> method for predicting classes from input features.</li>\n",
+    "</ul>\n",
+    "</div>"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 47,
+   "execution_count": 12,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "train first..\n",
+      "(225,)\n"
+     ]
+    }
+   ],
    "source": [
-    "predicted_labels = classifier.predict(input_features)"
+    "# Sanity check: can't predict if not fitted (trained)\n",
+    "from sklearn.exceptions import NotFittedError\n",
+    "try:\n",
+    "    classifier.predict(input_features)\n",
+    "except NotFittedError:\n",
+    "    print(\"train first..\")\n",
+    "\n",
+    "# Fit\n",
+    "classifier.fit(input_features, labels)\n",
+    "\n",
+    "# Predict\n",
+    "predicted_labels = classifier.predict(input_features)\n",
+    "print(predicted_labels.shape)"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Lets check our result with a few examples:"
+    "Here we've just re-classified our training data. Lets check our result with a few examples:"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 48,
+   "execution_count": 13,
    "metadata": {},
    "outputs": [
     {
@@ -842,7 +995,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 140,
+   "execution_count": 14,
    "metadata": {},
    "outputs": [
     {
@@ -850,7 +1003,7 @@
      "output_type": "stream",
      "text": [
       "225 examples\n",
-      "191 labeled correctly\n"
+      "187 labeled correctly\n"
      ]
     }
    ],
@@ -863,7 +1016,11 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Comment: `predicted_labels == labels` evaluates as a vector of values `True` or `False`. Python handles `True` as `1` and `False` as `0` when used as numbers. So the `sum(...)` just counts the correct results.\n"
+    "<div class=\"alert alert-block alert-info\">\n",
+    "<i class=\"fa fa-info-circle\"></i>\n",
+    "<code>predicted_labels == labels</code> evaluates to a vector of <code>True</code> or <code>False</code> Boolean values. When used as numbers, Python handles <code>True</code> as <code>1</code> and <code>False</code> as <code>0</code>. So, <code>sum(...)</code> simply counts the correctly predicted labels.\n",
+    "</div>\n",
+    "\n"
    ]
   },
   {
@@ -890,76 +1047,94 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Now we play with a different ML algorithm, the so called `Support Vector Classifier` (which belongs to a class of algorithms named `SVM`s (`Support Vector Machines`).\n",
-    "\n",
-    "**we will discuss available ML algorithms in a following script**\n"
+    "# Exercise section 2"
    ]
   },
   {
-   "cell_type": "code",
-   "execution_count": 154,
+   "cell_type": "markdown",
    "metadata": {},
-   "outputs": [],
    "source": [
-    "from sklearn.svm import SVC\n",
-    "\n",
-    "classifier = SVC(C=1)\n",
-    "classifier.fit(features, labels)\n",
-    "\n",
-    "predicted_labels = classifier.predict(features)"
+    "<div class=\"alert alert-block alert-danger\">\n",
+    "<strong>TODO:</strong> I propose to start excercise session 2 here, and ask to do re-classification with SVM, and only then play w/ regularization param.\n",
+    "</div>"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "Lets evaluate the performance again:"
+    "Now, train a different `scikit-learn` classifier - the so called **Support Vector Classifier** `SVC`, and evaluate its \"re-classification\" performance again.\n",
+    "\n",
+    "<div class=\"alert alert-block alert-info\">\n",
+    "<i class=\"fa fa-info-circle\"></i>\n",
+    "<code>SVC</code>  belongs to a class of algorithms named \"Support Vector Machines\" (SVMs). We will discuss available ML algorithms in more detail in the following scripts.\n",
+    "</div>"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 155,
+   "execution_count": 15,
    "metadata": {},
    "outputs": [
     {
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "(225,)\n",
-      "(225,)\n",
-      "205\n"
+      "225 examples\n",
+      "205 labeled correctly\n"
      ]
     }
    ],
    "source": [
-    "print(predicted_labels.shape)\n",
-    "print(labels.shape)\n",
-    "print(sum(predicted_labels == labels))"
+    "from sklearn.svm import SVC\n",
+    "# ...\n",
+    "# REMOVE the following lines in the target script\n",
+    "classifier = SVC()\n",
+    "classifier.fit(input_features, labels)\n",
+    "\n",
+    "predicted_labels = classifier.predict(input_features)\n",
+    "\n",
+    "assert(predicted_labels.shape == labels.shape)\n",
+    "print(len(labels), \"examples\")\n",
+    "print(sum(predicted_labels == labels), \"labeled correctly\")"
    ]
   },
   {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "This is a better result ! **But this does not indicate that `SVC` is always superior to `LogisticRegression`.**\n",
+    "Better?\n",
     "\n",
-    "Here `SVC` just seems to fit better to our current machine learning task.\n",
+    "<div class=\"alert alert-block alert-info\">\n",
+    "<i class=\"fa fa-info-circle\"></i>\n",
+    "Better re-classification does not indicate here that <code>SVC</code> is better than <code>LogisticRegression</code>. At most it seems to fit better to our training data. We will learn later that this may actually not necessarily be a good thing.\n",
+    "</div>\n",
     "\n",
-    "### Instructions:\n",
-    "\n",
-    "- Play with parameter `C` for `LogisticRegresseion` and `SVC`.\n"
+    "Note that both `LogisticRegression` and `SVC` classifiers have a parameter `C` which allows to enforce simplification (know also as regularization) of the resulting model. Test the beers data \"re-classification\" with different values of this parameter."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 75,
+   "execution_count": 16,
    "metadata": {},
+   "outputs": [],
+   "source": [
+    "?LogisticRegression\n",
+    "# ..."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 17,
+   "metadata": {
+    "collapsed": true
+   },
    "outputs": [
     {
      "name": "stderr",
      "output_type": "stream",
      "text": [
-      "/Users/uweschmitt/Projects/machinelearning-introduction-workshop/venv3.6/lib/python3.6/site-packages/ipykernel_launcher.py:9: UserWarning: get_ipython_dir has moved to the IPython.paths module since IPython 4.0.\n",
+      "/Users/mikolajr/Workspace/SSDM/machinelearning-introduction-workshop/.venv/lib/python3.7/site-packages/ipykernel_launcher.py:9: UserWarning: get_ipython_dir has moved to the IPython.paths module since IPython 4.0.\n",
       "  if __name__ == '__main__':\n"
      ]
     },
@@ -1058,7 +1233,7 @@
        "<IPython.core.display.HTML object>"
       ]
      },
-     "execution_count": 75,
+     "execution_count": 17,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -1164,13 +1339,6 @@
     "css_styling()\n",
     "#REMOVEEND"
    ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "metadata": {},
-   "outputs": [],
-   "source": []
   }
  ],
  "metadata": {
@@ -1189,7 +1357,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.6"
+   "version": "3.7.1"
   }
  },
  "nbformat": 4,
diff --git a/classification-svc-2d-poly.png b/classification-svc-2d-poly.png
new file mode 100644
index 0000000000000000000000000000000000000000..1f26ad59d3beecd513f298abea94bd4a34f078ca
GIT binary patch
literal 26460
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

literal 0
HcmV?d00001

diff --git a/classifier_examples.ipynb b/classifier_examples.ipynb
index b33e955..24acd18 100644
--- a/classifier_examples.ipynb
+++ b/classifier_examples.ipynb
@@ -662,6 +662,127 @@
     "plt.scatter(xv, yv, color=colors)"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "## SVC 2D plots"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import pandas as pd\n",
+    "beer_data = pd.read_csv(\"beers.csv\")\n",
+    "input_features = beer_data.iloc[:, :-1]\n",
+    "labels = beer_data.iloc[:, -1]\n",
+    "# pick 2 features from `input_features.columns`\n",
+    "input_features_names = [\"bitterness\", \"darkness\"]\n",
+    "X = input_features[input_features_names]\n",
+    "y = labels\n",
+    "\n",
+    "'''Source: https://scikit-learn.org/stable/auto_examples/svm/plot_iris.html#sphx-glr-auto-examples-svm-plot-iris-py\n",
+    "'''\n",
+    "import matplotlib.pyplot as plt\n",
+    "import numpy as np\n",
+    "\n",
+    "def make_meshgrid(x, y, h=.02):\n",
+    "    \"\"\"Create a mesh of points to plot in\n",
+    "\n",
+    "    Parameters\n",
+    "    ----------\n",
+    "    x: data to base x-axis meshgrid on\n",
+    "    y: data to base y-axis meshgrid on\n",
+    "    h: stepsize for meshgrid, optional\n",
+    "\n",
+    "    Returns\n",
+    "    -------\n",
+    "    xx, yy : ndarray\n",
+    "    \"\"\"\n",
+    "    x_min, x_max = x.min() - 1, x.max() + 1\n",
+    "    y_min, y_max = y.min() - 1, y.max() + 1\n",
+    "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
+    "                         np.arange(y_min, y_max, h))\n",
+    "    return xx, yy\n",
+    "\n",
+    "\n",
+    "def plot_contours(ax, clf, xx, yy, **params):\n",
+    "    \"\"\"Plot the decision boundaries for a classifier.\n",
+    "\n",
+    "    Parameters\n",
+    "    ----------\n",
+    "    ax: matplotlib axes object\n",
+    "    clf: a classifier\n",
+    "    xx: meshgrid ndarray\n",
+    "    yy: meshgrid ndarray\n",
+    "    params: dictionary of params to pass to contourf, optional\n",
+    "    \"\"\"\n",
+    "    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n",
+    "    Z = Z.reshape(xx.shape)\n",
+    "    out = ax.contourf(xx, yy, Z, **params)\n",
+    "    return out\n",
+    "\n",
+    "\n",
+    "\n",
+    "from sklearn import svm\n",
+    "\n",
+    "# we create an instance of SVM and fit out data. We do not scale our\n",
+    "# data since we want to plot the support vectors\n",
+    "C = 1.0  # SVM regularization parameter\n",
+    "models = (\n",
+    "    svm.SVC(kernel='linear', C=C),\n",
+    "    svm.LinearSVC(C=C),\n",
+    "    svm.SVC(kernel='rbf', gamma=0.7, C=C),\n",
+    "    svm.SVC(kernel='poly', degree=3, C=C),\n",
+    ")\n",
+    "models = [clf.fit(X, y) for clf in models]\n",
+    "\n",
+    "# title for the plots\n",
+    "titles = (\n",
+    "    'SVC with linear kernel',\n",
+    "    'LinearSVC (linear kernel)',\n",
+    "    'SVC with RBF kernel',\n",
+    "    'SVC with polynomial (degree 3) kernel',\n",
+    ")\n",
+    "\n",
+    "models = models[-1:]\n",
+    "titles = ('Is the beer yummy (blue) or not (red)?',)\n",
+    "\n",
+    "# Set-up 2x2 grid for plotting.\n",
+    "#fig, sub = plt.subplots(2, 2)\n",
+    "fig, sub = plt.subplots(1, 1)\n",
+    "plt.subplots_adjust(wspace=0.4, hspace=0.4)\n",
+    "\n",
+    "X0, X1 = X.iloc[:, 0], X.iloc[:, 1]\n",
+    "xx, yy = make_meshgrid(X0, X1)\n",
+    "\n",
+    "for clf, title, ax in zip(models, titles, sub.flatten() if hasattr(sub, 'flatten') else [sub]):\n",
+    "    plot_contours(ax, clf, xx, yy,\n",
+    "                  cmap=plt.cm.coolwarm, alpha=0.8)\n",
+    "    ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors='k')\n",
+    "    ax.set_xlim(xx.min(), xx.max())\n",
+    "    ax.set_ylim(yy.min(), yy.max())\n",
+    "    ax.set_xlabel(input_features_names[0])\n",
+    "    ax.set_ylabel(input_features_names[1])\n",
+    "    ax.set_xticks(())\n",
+    "    ax.set_yticks(())\n",
+    "    ax.set_title(title)"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -686,7 +807,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.6"
+   "version": "3.7.1"
   }
  },
  "nbformat": 4,
diff --git a/data_split.png b/data_split.png
new file mode 100644
index 0000000000000000000000000000000000000000..c368e5cc652ee4df68d4d752182aa6a64fa4fa43
GIT binary patch
literal 6755
zcmZ`;byQSqyB`%5LE->{0tzSsq5=XEN_Tfkj5Gtn(A|xc5(mj4q)SR_0F_Wl0g>)f
z8tJ|d-}=tI=d5+^{4t9?duG4&Jij7TNkNhTj}i}oKoCeviK!qE=Q!Z+LfrH4{>F3k
zJ_13>EG;Ii<}$pT;;u`od2re-CsKXmBHbS$7q1c6_4_HMr@4rV2j0H_-SVMYMbUPa
z&O=MRqROKCFDdl1%uP&+oc<6N|48*tEB4~n!bP#?7d-B@sXq_2k*1|j*suSyFGb#8
zr82~qZ%y!bqU(G|hij_6z(TTISMoblq67kAew{u5fe=bSAbi-*A!4r}5KN?qAf6Yv
z=X}yp2UAVKhNW*Zm~P%o`QwfRF3x!_DhpgDQWtq+Q&S0XalJYx`P;8^ha<wn{rvm{
z_Gd{iU%njDixB;=mM|=*sW~uQX}LDh*l0T=@iIe1R5bp9cA5P`S8Z+W(m)A@$2KEB
z|7H7}e!W|NQ`3b{kG~mR7qZkYH;t&NarN}%m+$jF9GM^%sdHK}j1+MFZQL4u1D6gT
zA3vlYaY4~XpUB$UIy*c2yzhs$HjAC*p_-bSZkdGWXuGxX`uGNAnw&n)vEJV3KmRl}
zH4P$WW?_-Q9U2+oxFQiroe&!<7HzDjr|0U*8#^p?zRkl*G)^@~q5sDZ4Gj&ioguSx
z=gw(eua{O-^j@F*C_9lG)px~DN=C-c!J)a1=fdjhYCcL%PEJ=>msrHa#6-y=P0orL
z5xupsaRnd$aAyR)(e$Qj+)b8=Od*M@C?jL~gYN}tX=$X_z6tzHRaN!*^E4$U2OFD^
zs3=L?(3a`6G+G@U9SVy0@88t|zBL6C9UmXxq^8y=)an@?&UZUN&%dp%cIkNYXnua)
z!YN%Tgt)AtBH)wXT7oF%o@(~noE(liv+mRsUV8@lKKKqddi*WQ?QmyhYHAABX<%R=
z8A<*6t1)am5fPClb6j9xpwZ{ZEYuTrc6NIDfb3t<(IlFhnt>uy%gf1eapHXr@KREG
zwfM_(Vc}~GBW}7$`=8qa#%Q!4s+XRr?A#@<$33`Yc!3QK0;^lAV|C73KYO;e9L&tj
zV7!|*Z}Ri=69$uBySBaAEy&2gpkL=yR9}BHito;yJA%hseK$BvN2_f!D=I3|)29@O
z$i%bWzI`|JVt%WE!)E`tNx-*cUi<IMC={xtrG-&3HGti(r;y8TbG|c_lu?F0I!`r+
zfsrwa^0CF&=(`rE_ts;z22Gc0bZ?Q92R*!X>(>7MJ|Q8Y;L*B&N{XJUDrs=jqeX++
zFRy!gdStSG^K!gOPVShp8FyW{`Pf}dthrFT+|S=XJ^a%3pB%{3s!)6i7HUB+Y+71c
zb+uNWnuM4bZGgbZp3#vihcGdjI9&h<2}y5XpVf;O>n_*m$Zp*DI<qmpW-#3x3dN0^
zK2&a|qpf|7f?{o?ij|Wymbaeh$<wEOy}k2YDVD~@&DZaed_7!ij3Snim+$ZC@r^!j
zVu3Fk&(h!D|Cp1Ln%jC*QSjIp7H?=M68*NW?x`>_l$`hJ;Y8Joq2E7r&{jib;t$AK
zkqsUvNBdB+BI&Q%=UQ7@>ia}>b(6(z+d4TpIXd!t?7fSMBEocQGLb1OE9275Z^<Wd
z@!w~>apML_s92>D)_G0e+&nikbEYMXVuOw9`t#?6uUZ|`<>lp}v*@MYS5^|x2<UF-
zYCV{@;kk6_l1g4|(-a(2vOW@tX`jnyP+d7b$Sx?j&&2ezH%nGB>XsE6U6P;Q*3m)D
z^<wa&|K+jK(KIokgbz!uzd2F8Z=uS_!yX$p;{rPH^7HWW3fr84Pws_o)BlB^f1;6#
z>*C^~ii!#?q3DG@e)|w1<?rtdnu3UE1UwJ6`f?OSh0?ll^aXFf4rwuzPkB<Ao6Gd*
zk?lCvwWz3wm|TfrefUdfr(U&9dR3LPgTq#(<$#>L{K&`%qud)d(~dU;R9xSG{16Fw
z&WV3@^uzX#A{}TWe&<!{;HLepKE-%eq&4(v;{3+UXV}8h(o!xiE&vB%Vc~bW0EIuj
z7nhb~Wn{|A%kAy$(c@T@mDS4HTBFOxbVE*RyKz}zVd3oTEYuV18WB-c)r8kbQ&UrG
ztHkyg8Q^WMXdkCAv7FgpZ?DRTD0GgMm6fBTBMc=i9a>ymTwh;bS63%VbVoAMqlZde
zO>GvMdv<oT!BdBx<OUVh$nfy+(9ji}^MH#-C{t4|*jlDox(vC*Y)cCZvD?akP5?LV
z?q^jFaGa3IDIY^0s@d>dztl|Q_9t=%s(eXzopr}`I);eFS_u~l%ywa>MP2=-Kian>
z&9qsGtpDi^5ve@2X}$c*ezatG7q^k-iLF=GL-7L7=givG;0Q})sl3bx4-fC?=(t{~
zrL8TW%+u4=wR-pMpz~{Wb@k&V<SA5}+<hfY&D}Nc)4HM}d8i(GX+K(+yw(G9Vd5uG
zp5O?-;-B<>LU)Qk-XeL$??XxWw3QqhUzqp-IX))K;-hWriW)jIzkZjiAuK<IUb+&0
zy5P~3cNC3ZCI{k8_&#YqFV(8%EWJn<uo)GBBkbVln3bJftWy=)KKD#Z3pY@Nii*m}
zXvSB=R9042Utb>%P+Iy5iykQ{DcrHNv=qQ}&)IdSJf$EZ`Lq{)b8jwGH3}VGkbhzn
zjAU}kS61bJ*{yQFF=us}M7@$@Azy=`^~>^(LXa%}8v8X(N2&ok>_@{=n@R@U^Q=`_
zBmN8(KUDJ6SmI;ozs}j+d-*8>zpt5XC2X<S0>5QYor?W2zIDs@2l-aI=*(wL!|pmo
z4^5wWRPH?6p00NF)To=N+t$>n4a}>;3%t$G@7Wf6PbIJ7{rmS76>9V(zkdE4JfYy`
z<_5x;&}CdPi5(gmN=QvjO-xLTkJr@GTlwK15kb)K$OCoGXFTfCNx#1oeOqVewNNp1
z!+v&r{J_&S?9BXp>y|oeNk@TZiP!1zZbCu=6r8WGFF=igf<m=70x`+^T8h33uoW0w
zMI~D6!OrgPM78Z5eUrn$I9EWskPuw1q<YuQ`9OS%lP+7(HgC$x$~errsQFyJjg5H@
z6zjz>Dta9>`HV|t^#aJ$)z+FC8-K7ELaa0YTwdmL+se($`<2S??ndJ&gOOGy3u}2+
z@8<a8#e<_cHUw5BKR=(3pI@_BcfXT+B6k?W{<I`JyLDiIo0%EU_zI$gQdYJdMvRP%
zr0_bAgZS{_0>|*b0m+9Cn+3=RNr{PuhKB0}L_Y87;$-mg@M`Po9t#%evT!pnwEp<9
z!>vk~!Q44#CwTDl&aJ53_J+lPw3MgLA{Q@Sx;Q>Q-pz5r+D82se8SFqs*VXwBB!9B
zK%>zFyHk4`Gq8=f$fhF0!i>f>`i)^ytK;>S28QfEM&)8QwSU{2gsB}QkI^canwiXT
zDd&DwI2Kga{+cP7uTY8^rWBWuuyA=SBP-i?BxlH?kL6)1tA%~7b6z{x@7SM?*-lLE
z77QrryvOX7t~$zqCx}njYn-!_s_?*dORE38q7Ood^qk50Gx>&4V)&1mL;T+*B25l)
zc8O@iIlKG!%QMk;cJ~Z*;qKor|0W6liOK&q#MzhspCSGl@n44c?}%s9{_haa%|ESL
zwY9YkV_nOG7V3(N6*f6SQRe2?$+SD$+C*@(jE%|2uc7P&WW9<#dQ`3BkCC%O#_~>!
zPD7`8N#@s_R!6T`U1MWf-`UB=_<vN-a$X(%I(ww)IWI}$89;1-MhE*1h`d!n0RlKX
zSIwKn0dqDt^C`9ot7X;bvUEKRN<&dH-$j^HuH)eTHLJg*@n8G!x4k`ExJ!Rqcu2@A
znJi+8hi~7$Z5|lV++_4tCEMN}K*Bp;=v@+NF|h!#+dVcpWOywgm#*QpaKvc?qgW2G
z<Yo^`xVzWo<m9O20iq_3C%l>k>ePAmER}I%u00+-R%-$@J*7}Ov^+RC2t9F{@O|8@
zATLiCx8?KaKA#^xNsB%{KDINhC@<@<u&~eJH#U<)Y53imXEvB#_S)pYPk{B*H}l5L
z@NoQqri=9IcGjnwzQvedc=+%kG%Nrnzy17G5hg)FWD|$Sd`E(K7&*V0A)qA(M>!R@
zwRyEFDA+LahqrO36FeER%gTBIbUHg%<~x(VWnEQ&tMV&dG}wi294OS*(sS~IFQ_0(
zyVMrLN0@Hbd-q&VR3mTkAAmNtEK>zOpd}uyv6t)*NsW8P5`Vfk6E)KsVQ**m#BTOW
zrestaGf_gRrGi3N5CK(qL<Fc|n2361erD$8Ts+dkv}?l+-}`8W2D$YBA3qFK4Junz
zCX0lQjGR2%^fclz0n<yUp_gG{vWkie8!iF@0)UPl0uzISdxDI+4h{6uCuUl5CuYw(
z3`>bcaD*rI`U%Lx0u>D&Sd4T8CF*Sxzn@7myi?vei<4tqCaFvoljdz;?aS?Tg-Lkw
z<T9Ggz<9dwK+o?+dG1g@OV*!4+kR?97UUk<FEifosi~{~T3U*ak3XHEIsNkG%k`&D
zFNB1Iq@=$5?8)p;j+V(1NoV8X*&B17c+AH3d|N1*KB<#IIvTc$YOo7PWNJEtQM#<4
z0484&75wT27uA9WFfc)&h_7Ir%-!)cCcL$2t1Oj$fE~xBADxMhmq1Q>_e4j3H3p7=
z<J2uT?F5;m#t}89yiHi=f1fI;^W<1zirp|dgGq)Z-UwbZ+44!CqsHB_$Jm01Z=8A{
z_g}xZUHVZ3sAE^7TgZ8}7)R@vr`ko+(LawrT--{>(Y(k)lfQXXe7h`P!UI2=-u6$Y
z<-rZ8avd$LH%UoQvQKz;K-SgN)g>h))c=e*I6684bNK0#$ZM%Bm@eq!`FYa^?(?J+
zjD3iy<wx?-i|?O>Wty5L(zWI$3Kf+$spHYKP*odFiSET7?yeo~?O``ssW?EZahMTe
zy4RY9KmuL6uc2FG*V5CYJmjy-^0|qL+8*mm9Nj)wt<NqVCCkjlwjRdXVB_GRR=@nK
zFK2gk>~Qkq1&=?ndyO8kMSq|I#jzJdFAYA0JWO3ns~XHrz58y%R?`CfrH6G<?!VW1
zQ+;iHlkEXrA*XH$tl~X-LcpYrtiN5q+Q#5aBd(3FG~HVkLFY(Cdw@#}rtvyE(c?ub
zQ<@2m;HyZFjX;&W!s6nt_I6N+2S=OT6fC;thKAF#vlS-o<ggz}7aBnvI!|~GG&dXf
zzLhS}D0&$lE+;GNzCI}|D(XKkxN*pjt#DS!bAT1#ru+GwZ{5ogJic-o<ZHtA^Nc_p
zeiDl?F){`}S{<n(qH_Q{pgBd>`-$}#nfTn?+{$37(f3?sFhm0-$TdBD(7n6MLq^ut
ztG|BTprFuHRlR^zLWa!F8jFfH9UXaOUkYoP{<!)bRI*fbM`vdiijpWF^bxYB{uS52
ztr}gg`Hma+?-u|zR903#+Ue+k$+iQp7YN)urypBg&7-K;otQ|es@eyTlRl+(w%V^T
zz`Fnp=*Su`qIdas7gtx$^v2B03_RJDPv67i==WTEd0APuB8ITh>7<L%c;<5yhTr{t
zYO21P+V@u*?O(rs?dvNCpTWYi+8;!ehH?Xw4^2cz_i=ErIwRx!`Ce9!ll=t`0YO$)
zG!yT3eB)8e=qN~s<GAsQ2OX!Srk#mk@J-Cj8u#auh$FnFz^-_CdF>^vyrSdg9)Kfa
zjsv67@F}4}$^H6SmH`I#m5Jc=<RmdUIahNsrJ&c5`&#|3jLDVLRETZxu)GBSPMpU=
z&z>cwUA}PP0(f2QF|6M#YoY?xS8DV*)y*7iGHCo^ZI0yRWUw`F#z5NR;NawDeeLW7
zWwEMiG&nqb&`O2o+ir`Ci#xNhL6T?AAA*kNW-&!YB27AmZqIelLzCPy2flQCk6#Rx
znSilvOekz<XvoT%%L@h_p^hZ&XLf>ZvYV4Jbp|{S4GpzG+1c57czC2zik50UAjVB~
zn*)Dx5ug0(OI(bgx7WeeuWn3g_kwIzuUAc_Mz|>)%FfD2mDR|5B7wcMyu5pCY)VXI
z(BjRXKi>&ZNO|ITeBc=H&F><<p^;IFJ2<Ttd>scTr}?=#tBD4FdU|6JiC~wiBUo8k
zcel4ItEwP=Ai8>Wd3l-IP*|td0cByqtUsAqTKY&((7Pu?9O=0o2hL52Nw>;6Wik0F
zL(u0a8fPb`_f=J98ZN5%d&h^n14TN!-QFi0Y;3PWZJeE*U0kYTVqyvkz-Sz3dKj)v
zyVUb}?0uV<nE3e7pylN?cph##v^UHf_BJRuxR0~``A0v%Ay(FsvNHCc9GHS`KJa{)
zZb6$#A#iX9+e_fm;$%z=45pxkP>JK!wniXI<@+F-i3$lxV_Jld0h7{D&uEE3m+RNq
z1-8$TlaYNfX7~0!ee>pemI|-IrvNbZ%4FLB3v>YhIYIgeem*`>cT#;@kgaK!=zGHc
zxw{|k>^LRJfv<B|=(?HR-TVj((y!WfCcmJ-gncOSv84?rkK86p#dWSNuEu^rhMt7s
z)5v=(oibzT|Ku$xDJf(91)7*=)Fq|eYD{EZU0vGR+MM!|l9HD%UIY)evF{No27Jv6
z4i#z)qMdaYY*0{;*Nuzj?WDApmP<gP+FDv-;^Lm`A1_0xOn4m@4ZF>fi5DRoQ)zK&
zXfOu{ZvCR*oMIT{r)_w^d6$%wurf2V1JrJB-^Dc?t949l{I=d+`eKM3``tuEr5C!o
z9*eaet$v-7awZ4>62=Q^kXRSn{(N;HdB_w-s?eV$Dt%(;^GZs(P0I<cUVTFfCalWn
zGa>Y!z5V9)(g5bEbMe~rbr&dVDoV=L(VBAaQ?ER=#OUZx3!CzCavDX?92dXmL7Y`n
zU45OBk_6}DoZX?x*gY%dc{rtwR!}6|F9vDj+c8i2C^adtAqwcH{&EaW_Z!#>0tlpm
zo>=s1)gXV<*B7v#?^s@b0d?{F_wOpVpD7J>bvj5S@}Z&UW$M2E{+8t2l9CC?X`F4Z
z@_}8aCj6Wm{Q8chgrp=X&T9;YhJ-{#O^ws__w0Sm;t%CR@#jjGgNS9Mq<CD`C)?ug
zZ|rT(6`P{bNHFEPy5Wt6sFMj(EH&S)?v|FhnJ7X1GUF@K(Rq1!P&i}n4EzfUEa4>A
zyvY*;Jl(*8$uWrH9)now#;ab;_q&cpuaPn;OgffAE6%N~6rs}Jm6wa+cBb+_<>YjL
zO#z8^`!y3iJt$J=)01P%f#S}tE)Bg0tGk(wXy1qb43HW|Eq_7C1996?6U|8)G}Pjv
zg_TuNW+sQ)<q9CDTK8QRkuTldtRP-;FkZK%p`={lu~3Vu^2<w0K>5EWCqK+=6c!a>
zuGt`w6B!v9P_WrqSyP<uJImU&4tXFFpx^-x;n=cJw%_{tp8hkY+S%FRlz;l<$!`}d
zbSU5QE~JVM4p@)<vZA7uHEbqV!$k)2Fkb3Nu&Qdzb2dC3)mwo)o(GVozEjD2fkJ7Q
z8n!?;RMI)HClqF8HZ?axya^65=Y;>Y979a|TvHH%dyh|5RTZqyj)$6{gik_3BHwit
zK*>E$NoiilnL#G&tXnuZI5;^ud3dfHp7&vY><7hKRapt0VwFp1a_-F4G>R0MRd920
z{TUxWgJMAhY-vl;M?;iTs&%!^V-9fPU~jJ@frF8UM~jv?ncsa!``)2_Bzu4ZanM#l
zNdv^mSMl-7D=LoGn}{%vTbI3aD(q`_FsDam)Fz499PI2@2?!wnL2gr<;QmU({{`R&
za(zSWQ)DEeuaM2ur$Ap@8QH@Q*r+4cM|%r1;I^kHK6hgT1sxaFART}o%t-ei^Ge<j
zc`_(6JUSY_z(p4TPi57uW&?aWXD9QNYVYMsJVr)F2tlw1_GV^`*0ca9z}bLU^W7Ls
zZ0z?&`&hcS{w#0pYWSd*1_ya)X(uN?`tMC>UuwNq<i(|<rWOl54(bDZFAy8J6rCz-
z(53ivYFb)MF<&7sm589+UY`;*)nH5uq_Z+Nul71V0G$DMfIC1SUHWkEq58ZT#`8U-
z4G?ExsfdZ$j9SAF4h~>`N6`WzQnbV!N!&!Sd7X6NRl?y&8yf}3Bch_BLPIxx|E5Ib
zRBXAMdU_s%5wR(tk8h_D^a7T{*4MWfZUA>vP*OtTG~C<U``3D?3C%u7-rVCy1t>W>
zZi70%+<NcfF)~Ipn6L=+<q-(h)`)__!mZ6s9jwbEVPY4N_W+K0c_^Un(=O$pSA?~%
z4)*u2k&z8Ts|^l9o^4Yz8W4a3uH>AJOhKa==y8Y)rz^47Gj&<kR#$K3vx<sJA^jj_
z0lfh%u<3$5XOCyPaL$L}{8Hz?Id~u6h11Ij#ObLzEw6@qXkr@t^9Ug=t{_${^4#x#
E0K(W85C8xG

literal 0
HcmV?d00001

diff --git a/regression-lin-1d.png b/regression-lin-1d.png
new file mode 100644
index 0000000000000000000000000000000000000000..aea25afb7a18cdd8effb27010b5a4b56714b071b
GIT binary patch
literal 15438
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
aBiZGu%8RV3_dxA0NJ&8*TK2*$<o^T3FT5-O

literal 0
HcmV?d00001

-- 
GitLab