{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "93c2f0ba",
   "metadata": {},
   "source": [
    "# Classification with DNN and Pen&Paper\n",
    "\n",
    "In this task we will explore the analytic solution of DNN classifications.\n",
    "\n",
    "## Introduction\n",
    "We will create data from two Gaussian distributions and train a classification between them.\n",
    "In parallel we will take pen and paper to calculate the solution of the classification.\n",
    "Then we will compare the results of our network training and our pen&paper calculation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "20329dfd",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df4f97e5",
   "metadata": {},
   "source": [
    "## Creating and plotting the data\n",
    "First we fix the parametrisation of our Gaussian distributions (A and B) and create the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "6c92b864",
   "metadata": {},
   "outputs": [],
   "source": [
    "# parametrisation of the underlying probability distributions\n",
    "loc_a, scale_a = 0, 1.5\n",
    "loc_b, scale_b = 1, 1.2\n",
    "\n",
    "# creating the data\n",
    "a = np.random.normal(loc=loc_a, scale=scale_a, size=(100000,))\n",
    "b = np.random.normal(loc=loc_b, scale=scale_b, size=(100000,))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2890ec5b",
   "metadata": {},
   "source": [
    "We bin the data in histograms with equidistant bins, plot the histograms and plot (parts of) the raw data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "f687f21b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f9211e57c70>"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEGCAYAAACtqQjWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAnTUlEQVR4nO3dfXTdVZ3v8fc3OTknJzl5btKmSUsKFKS0UiRCHVBRlMEHLHJVCgzgjHNdODI+MNdLGdbScV1ZMEuWehkcZ1V0CjNYwPrEOKBWnrkCbcAi1AJWCG36kLRp0zw/nOR7/zi/hEObJqftLz05zee1VlbO2b/9279v2p58+9t7//Y2d0dERCQMedkOQEREjh9KKiIiEholFRERCY2SioiIhEZJRUREQhPJdgDH2qxZs7yhoSHbYYiI5JTnnntuj7tXT1ZvxiWVhoYGmpqash2GiEhOMbM3Mqmn7i8REQmNkoqIiIRGSUVEREIz48ZUxjM0NERLSwv9/f3ZDkXGUVhYSH19PQUFBdkORUQmoaQCtLS0UFJSQkNDA2aW7XAkjbvT3t5OS0sLCxYsyHY4IjIJJRWgv79fCWWaMjOqqqrYvXt3tkOZOR695ejbeN+NR9+G5CSNqQSUUKYv/d2I5A4lFRERCY26v8bx7XWvhtrelz94yqR18vPzWbJkCUNDQ0QiEa655hq+9KUvkZeXR1NTE3fffTe33377uOc2Nzfzu9/9jiuuuGLc4zt27OALX/gCa9euZfXq1TQ1NXHHHXdkHP/q1au58MILmTt3LgB/+7d/y/XXX8+iRYsybmMiy5cvp62tjaeffjqU9kQke3SnMk3E43E2btzIpk2bWLduHQ8++CBf//rXAWhsbDxkQoFUUvnRj3407rFkMsncuXNZu3btEce2evVqduzYMfb+zjvvDC2hdHR08Pzzz9PR0cHrr78eSpsikj1KKtNQTU0Nq1at4o477sDdeeyxx/joRz8KwOOPP87SpUtZunQpZ555Jl1dXaxcuZInn3ySpUuX8u1vf5vVq1fzyU9+kosvvpgLL7yQ5uZmFi9ePNb+tm3buOiiizj11FPHEteBdW677Tb+6Z/+ibVr19LU1MSVV17J0qVL6evr4/zzzx9b6mbNmjUsWbKExYsXc8MNN4ydn0gkuOmmmzjjjDNYtmwZra2t4/6sP/nJT7j44otZsWIF9957b+h/liJybCmpTFMnnngiIyMjtLW1vaX8tttu47vf/S4bN27kySefJB6Pc+utt/Lud7+bjRs38uUvfxmAp59+mrvuuotHHnnkoLbXr1/PPffcw8aNG/nxj3884Vpon/jEJ2hsbByrH4/Hx47t2LGDG264gUceeYSNGzeyYcMGfv7znwPQ09PDsmXLeOGFF3jPe97D97///XHbX7NmDZdffjmXX345a9asOdw/JhGZZjSmMo25+0Fl5557Ltdffz1XXnkll156KfX19eOe+8EPfpDKyspDHquqqgLg0ksv5amnnuKSSy457Pg2bNjA+eefT3V1auHSK6+8kieeeIJLLrmEaDQ6dnd11llnsW7duoPOb21tZcuWLZx33nmYGZFIhJdeeuktd0ySo452WrKmJOcsJZVp6rXXXiM/P5+amho2b948Vr5y5Uo+8pGP8OCDD7Js2TJ++9vfjnt+cXHxIds+cIru6C/0kZGRsbJMVhcYL+mNKigoGLtOfn4+yWTyoDr33Xcf+/btG3uosbOzk3vvvZdvfOMbk15bDiGMZ0xEjoK6v6ah3bt3c+2113LdddcdlAD+/Oc/s2TJEm644QYaGxt5+eWXKSkpoaurK+P2161bx969e+nr6+PnP/855557LrNnz6atrY329nYGBgb45S9/OVb/UO2fc845PP744+zZs4fh4WHWrFnDe9/73ozjWLNmDb/61a9obm6mubmZ5557TuMqIjluyu5UzOyHwEeBNndfHJR9E7gYGAT+DPy1u3cEx24EPgMMA19w918H5WcBq4E48CDwRXd3M4sBdwNnAe3AZe7eHEbsmUwBDltfXx9Lly4dm1J81VVXcf311x9U7zvf+Q6PPvoo+fn5LFq0iA996EPk5eURiUQ444wz+PSnP01FRcWE1zrvvPO46qqr2LJlC1dccQWNjY0AfPWrX+Wcc85hwYIFvO1tbxur/+lPf5prr72WeDz+lmm/tbW13HLLLbzvfe/D3fnwhz/M8uXLM/p5m5ub2bp1K8uWLRsrW7BgAaWlpTz77LOcc845GbUjItOLTdSFcVQNm70H6AbuTksqFwKPuHvSzP4ZwN1vMLNFwBrgbGAu8FvgFHcfNrP1wBeBZ0glldvd/SEz+zvg7e5+rZmtAD7u7pdNFldjY6MfODC9efNmTjvttJB+cpkK+jvK0PHS/aUx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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# creating the figure\n",
    "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex='col', gridspec_kw={'height_ratios': [2, 1], \"hspace\": 0})\n",
    "\n",
    "# plot histograms\n",
    "hist_a, bins_a, _ = ax1.hist(a, bins=np.arange(-4, 4.4, 0.4), alpha=0.5, label=\"Distribution A\")\n",
    "hist_b, bins_b, _ = ax1.hist(b, bins=bins_a, alpha=0.5, label=\"Distribution B\")\n",
    "\n",
    "# plot 1000 example points\n",
    "ax2.plot(a[:1000], np.zeros_like(a)[:1000], linestyle=\"None\", marker=\"|\", alpha=0.1)\n",
    "ax2.plot(b[:1000], np.zeros_like(b)[:1000], linestyle=\"None\", marker=\"|\", alpha=0.1)\n",
    "\n",
    "# styling plot\n",
    "ax2.axes.get_yaxis().set_visible(False)\n",
    "ax2.set_xlabel(\"x\")\n",
    "ax1.set_ylabel(\"Counts [#]\")\n",
    "ax2.set_xlim([-4, 4])\n",
    "ax1.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77dfd868",
   "metadata": {},
   "source": [
    "## Task\n",
    "Now it is your turn. The two data distributions is everything you will get to solve this task. Train a classification between the two distributions and compare the output of your network with the pen&paper calculation you performed before. Describe your observation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a7e53779",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}