{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multivariate Logistic Regression Demo\n", "\n", "_Source: 🤖[Homemade Machine Learning](https://github.com/trekhleb/homemade-machine-learning) repository_\n", "\n", "> ☝Before moving on with this demo you might want to take a look at:\n", "> - 📗[Math behind the Logistic Regression](https://github.com/trekhleb/homemade-machine-learning/tree/master/homemade/logistic_regression)\n", "> - ⚙️[Logistic Regression Source Code](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py)\n", "\n", "**Logistic regression** is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, the logistic regression is a predictive analysis. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables.\n", "\n", "Logistic Regression is used when the dependent variable (target) is categorical.\n", "\n", "For example:\n", "\n", "- To predict whether an email is spam (`1`) or (`0`).\n", "- Whether online transaction is fraudulent (`1`) or not (`0`).\n", "- Whether the tumor is malignant (`1`) or not (`0`).\n", "\n", "> **Demo Project:** In this example we will train handwritten digits (0-9) classifier." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# To make debugging of logistic_regression module easier we enable imported modules autoreloading feature.\n", "# By doing this you may change the code of logistic_regression library and all these changes will be available here.\n", "%load_ext autoreload\n", "%autoreload 2\n", "\n", "# Add project root folder to module loading paths.\n", "import sys\n", "sys.path.append('../..')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Import Dependencies\n", "\n", "- [pandas](https://pandas.pydata.org/) - library that we will use for loading and displaying the data in a table\n", "- [numpy](http://www.numpy.org/) - library that we will use for linear algebra operations\n", "- [matplotlib](https://matplotlib.org/) - library that we will use for plotting the data\n", "- [math](https://docs.python.org/3/library/math.html) - math library that we will use to calculate sqaure roots etc.\n", "- [logistic_regression](https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py) - custom implementation of logistic regression" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Import 3rd party dependencies.\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "import math\n", "\n", "# Import custom logistic regression implementation.\n", "from homemade.logistic_regression import LogisticRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the Data\n", "\n", "In this demo we will be using a sample of [MNIST dataset in a CSV format](https://www.kaggle.com/oddrationale/mnist-in-csv/home). Instead of using full dataset with 60000 training examples we will use cut dataset of just 10000 examples that we will also split into training and testing sets.\n", "\n", "Each row in the dataset consists of 785 values: the first value is the label (a number from 0 to 9) and the remaining 784 values (28x28 pixels image) are the pixel values (a number from 0 to 255)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
label1x11x21x31x41x51x61x71x81x9...28x1928x2028x2128x2228x2328x2428x2528x2628x2728x28
05000000000...0000000000
10000000000...0000000000
24000000000...0000000000
31000000000...0000000000
49000000000...0000000000
52000000000...0000000000
61000000000...0000000000
73000000000...0000000000
81000000000...0000000000
94000000000...0000000000
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " label 1x1 1x2 1x3 1x4 1x5 1x6 1x7 1x8 1x9 ... 28x19 28x20 \\\n", "0 5 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "1 0 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "2 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "3 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "4 9 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "5 2 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "6 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "7 3 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "8 1 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "9 4 0 0 0 0 0 0 0 0 0 ... 0 0 \n", "\n", " 28x21 28x22 28x23 28x24 28x25 28x26 28x27 28x28 \n", "0 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 0 \n", "5 0 0 0 0 0 0 0 0 \n", "6 0 0 0 0 0 0 0 0 \n", "7 0 0 0 0 0 0 0 0 \n", "8 0 0 0 0 0 0 0 0 \n", "9 0 0 0 0 0 0 0 0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data.\n", "data = pd.read_csv('../../data/mnist-demo.csv')\n", "\n", "# Print the data table.\n", "data.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot the Data\n", "\n", "Let's peek first 25 rows of the dataset and display them as an images to have an example of digits we will be working with." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkEAAAJBCAYAAABBBGGtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvDW2N/gAAIABJREFUeJzs3Xm8leP+//H3pVKaJCUybVNCSJL5cAwNMicyz1RCZsdx0ODLMYVCxkJmJ47wM5wiMpe5UkQhSpuUojRcvz9296drae323muvte619v16Ph49vM+11/A53a29r31d93VdznsvAACApFkj7gIAAADiQCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhF3wlyzr3unFvknFuw4s+UuGtCdjjnmjrnnnHOLXTOzXDOHRd3Tcgu59xWKz6/I+KuBdnjnOvjnBvvnFvsnBsedz3ILufcNs65Mc65ec65r5xzR8RdU6aKvhO0Qh/vfcMVf7aOuxhkzR2S/pTUQtLxku5yzm0Xb0nIsjskfRB3Eci6HyQNlPRA3IUgu5xztSX9V9LzkppKOkvSCOdcq1gLy1BN6QShhnHONZDUTdK/vPcLvPfjJD0n6cR4K0O2OOd6SPpV0ui4a0F2ee9Heu+flfRz3LUg61pLailpkPd+mfd+jKS3VKTfm2tKJ+g651ypc+4t59y+cReDrGglaan3fmrQ9okkRoJqAOdcY0n9JV0Ydy0Aqs1JahN3EZmoCZ2gyyRtLmlDSfdIGuWc2yLekpAFDSXN/0vbPEmNYqgF2TdA0v3e++/jLgRAlUyR9JOkS5xzdZxzHSXtI6l+vGVlpug7Qd7797z3v3nvF3vvH1TZsNxBcdeFalsgqfFf2hpL+i2GWpBFzrm2kg6QNCjuWgBUjfd+iaTDJXWVNEvSRZKelFSUv9DUjruAHPAqG5pDcZsqqbZzbivv/Zcr2naUNDHGmpAd+0oqkfStc04qG/Wr5Zzb1nvfLsa6AFSC9/5TlY3+SJKcc29LejC+ijJX1CNBzrkmzrlOzrl6zrnazrnjJf1N0ktx14bq8d4vlDRSUn/nXAPn3J6SDpP0cLyVIQvukbSFpLYr/gyV9IKkTnEWhexZ8f24nqRaKuvg1luxqgg1gHNuhxXXtL5z7mJJG0gaHnNZGSnqTpCkOipbhjlHUqmkcyUd/pebaVG8ektaS2Xzz49J6uW9ZySoyHnvf/fez4r+qGzqc5H3fk7ctSFrrpT0h6TLJZ2wIl8Za0XIphMl/aiy7837SzrQe7843pIy47z3cdcAAACQd8U+EgQAAJAROkEAACCR6AQBAIBEohMEAAASiU4QAABIpCrt29CsWTNfUlKSo1JqpunTp6u0tLTgN2/k2mZmwoQJpd775nHXURGub2aK4fpybTNTDNdW4vpmqrLXt0qdoJKSEo0fPz7zqhKoffv2cZdQKVzbzDjnZsRdQ2VwfTNTDNeXa5uZYri2Etc3U5W9vkyHAQCARKITBAAAEolOEAAASCQ6QQAAIJHoBAEAgESiEwQAABKJThAAAEgkOkEAACCRqrRZIhC37777zvJtt90mSRo0aJC1XXDBBZbPP/98yxtvvHEeqgMAFBNGggAAQCLRCQIAAIlUdNNhy5cvt7x48eIKH//ggw9KkhYuXGhtkyZNsnzrrbdavuKKKyRJQ4YMsba11lrL8s0332y5V69eVSkb1TBz5kzLO+20k+Vff/1VkuTcyvNpw+sZXXtJmjNnTi5LRMwmT54sSTrggAOs7eOPP7bcvHnBn5OZePfee6/lnj17Wo6+50+ZMsXaWrVqlb/CUKMxEgQAABKJThAAAEikgpgOmzdvnuVly5ZZ/uSTTyy/8sorklZOgUjSPffck9H7lZSUWL7oooss33///ZKktdde29r23ntvy/vtt19G74eqmzFjhuV9993X8ty5cy1H02Dh9apbt67ln376yfLXX38tSdp0002trVatWtkruAb58ssvLYd/3x06dIijnEp57733JEn7779/zJWgKkaPHm35wgsvtLzGGqv+fh5OewPZwkgQAABIpNhGgr7//nvLbdu2tRz+5plN4W8W0YiPlHrj8+mnny5JWm+99aytYcOGlrm5MjeWLFkiKXX0p3PnzpbDvYHSCf/9XHvttZb32msvy1tttZWk1NHD6HojVfjb+RdffGG50EaCvPeWo9GrqVOnxlUOMhBer0WLFsVYCVZn+vTplocPH275pZdesvzBBx+s8rxHHnnEcrhX26uvvmr5lFNOkZQ6Q5NPjAQBAIBEohMEAAASKbbpsHXXXddyixYtLGc6HdaxY8e0rz1y5EhJqTfMhjfaIn6XXHKJpNT9mapi7NixlsP9oI444gjL0b+Djz76KKP3SJLbb7/dcvi5KjQLFiywfN1110lKPSqF6evCFe3Vds0116T9ert27SxHi2IaNGiQ87qQ6q233pIkHX300dY2e/Zsy+GU9JFHHmk5uoXhhBNOSPu64fOiPdzuuOOOLFRcdYwEAQCARKITBAAAEim26bBwVVZ4t/nTTz9teffdd7fcrVu3VV4jXP3z3//+1/Kaa65pedasWZJWnjiOwhCu+BoxYoSk1CHSUDitFf47iIZaw1UH22yzjeXLLrvMcvTvqrz3wErhXl2FLDxaIRJefxSWr776yvJBBx0kSfrll1/SPvb666+3HO4DhtwIj6MKV4J17dpVUurU8+GHH2554MCBlqMVuNLK7yGnnXaatT3++ONp33uPPfbIsOrsYCQIAAAkEp0gAACQSAVxbMYuu+xieYcddrAcTmtdeumlkqQbbrjB2gYMGJD2saH1119f0srVI4hPVU6DP/744y2Hp0tHq0rC9h49elhb/fr1Lbds2dJytFnmww8/bG2XX3655XBKLYl++OEHy+F1KmTpplIOPPDAGCpBZdx3332W022AGq4u+vvf/56XmlDmtddes9ypU6dVvn7MMcdYfuCBByyHq65D48aNk1T+FFi4MWJ4u0McGAkCAACJRCcIAAAkUkFMh4XKG15bZ511VmkLN3ULT3vntOHCUVpaavnf//635XBTzGizzM0228zaevXqZTmc6gzPCQtzZf3++++Wb7zxRsvhv6Ukijakk1L/jgpNuBnmZ599tsrXw41SEb/yPm/R9HR4vcLbG5B74fe8Cy64wHL48/Oqq66SlLrStryf0aG+ffuu9utPPPGE5fAWhjgwEgQAABKp4EaCyhP1LN9//31re+aZZyxPnDjRcps2bfJXGFaxdOlSyxdffLHlaD8gKXXvj5dfflmStOWWW1pbdLJ8Ln3zzTc5f49i8fnnn6dtz2S0LZf++c9/Wg5v5o4WVJS3QAL5Ey10kKTDDjtstY8Nj81o3bp1rkrCCkOHDrUcjv6EozvhQpN//OMfkqQ6deqkfb3we/0nn3xi+csvv5SUui9bOPLUvn37KteeK4wEAQCARKITBAAAEqlopsOiYe577rnH2kaPHm05HHYNt/Xec889JaXuRcCN07n17bffWg6nwELvvvuu5VatWq3y9fBYFcRn1113zev7LV682PKE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UlKi8ePHZ15VArVv3z7uEiqFa5sZ59yMuGuoDK5vZorh+nJtM1MM11bi+maqsteX6TAAAJBIdIIAAEAi0QkCAACJRCcIAAAkEp0gAACQSHSCAABAItEJAgAAiUQnCAAAJBKdIAAAkEhV2jEayKUBAwZYvuqqqyx36NDB8iuvvGJ57bXXzk9hAIC86d69u2XvveWnn3466+/FSBAAAEgkOkEAACCRauR02OLFiy0vWbJEkjRu3DhrmzlzpuWTTz7Zcu3aNfKvo+D9+uuvkqTbb7/d2tZYY2X/fMKECZa//fZby9tvv30eqkN1lZaWSpKWLl1qbe+//77lww47zHJ43avi1FNPlSTdfffd1larVq2MXgtVt2zZMsvTpk2z3LdvX8svvvhiXmtCcbn22mstv/DCC5YvuOCCnL4vI0EAACCR6AQBAIBEKur5n2gaRZJuvvlmy2PGjLH83nvvrfY1wqmxcEUS8qd+/fqSpEMPPdTahg8fHlM1yNSsWbMsP/TQQ5bvueceSdLy5cutLZzWDKfAnHMZvXf072WdddaxtoEDB1quW7duRq+LyglvQWjdurXljTbayPKCBQssN2zYMD+FoeBFP7vD6bA111zTcteuXXP6/owEAQCARCqakaA5c+ZIkm677TZrC/Mff/xhOdxXYLPNNpMkrbvuutYW3mgb3kjZq1cvSVLz5s2zVTYqIer1R9cKxenyyy+3PGLEiFhqGDRokOWePXta3mKLLeIoJ/G+//57y/PmzbPMSBAi0aKlP//809oOOeQQy3vssUdO35+RIAAAkEh0ggAAQCIV3HTYokWLLIc3Nt51112SUodUyxPuHzN27FhJqXuUtGjRwvLs2bMtR6/NdFh+Rdf8o48+irkSVEc4hJ1uOqxly5aWL774YsvhDdPp9gl68803LT/zzDPVrhP5E96agOL15ZdfWg4XED3wwAOW11prrUq/XviZfvvttyVJ2267rbWF09q5xkgQAABIJDpBAAAgkQpuOuytt96yfP3111f6eeFQ2htvvGG5cePGkqSff/45C9UhF6KjTSZNmlThY999913Lm2yyiSROky8URxxxhOVffvllla+HU11VWR109tlnW95mm20sh3sNRU477TTLm266aaXfA7kR7vsU7iWE4hKe6v7ZZ59ZHjBggOUtt9yy0q934YUXWv7pp58kSaNGjbK2cOo81xgJAgAAiUQnCAAAJFLBTYdVdFxCq1atLO+3336Wwy23oymw0IwZM6pfHHKiUaNGklJPC442rvyrsD3aAPPII4/MYXWorHC6K91nMFMffvih5ehE+vJEU6SSVLt2wX17S7SPP/7Y8uabbx5jJaiq8PMcTnGGGxxWJDyiKlxtFn3fiGu6lJEgAACQSHSCAABAIhXcePGdd95peffdd7fcuXNnSakbHTZo0KDSrxvdgY7CddZZZ1kubzoMyRGdKRSeEfj777+v9jmXXHJJTmtCeuFU6DrrrGN57ty5lidPnpzXmlB9gwcPliS988471rbTTjtZLikpWe3zw+my6667zvKCBQssd+rUSVLuzwgrDyNBAAAgkQpuJCi6SVaSevfunbXXHTNmTNZeC7lX0VEKqDnCfb0uuugiyxMnTpRUuZsv9957b0n8W4lLvXr1LIfHpzz00ENxlINqmD9/vuVor746depY2yOPPGK5fv36q32tfv36WR46dKjlcAHDiy++mHmxWcB3DAAAkEh0ggAAQCIV3HRYVTz99NOWwyG88OTiaE+DCRMmpH2Nrl27WmbvisIRTmuE+1KgcP3666+Wn3zyScsVDXeH2+VXdK2bNGliOZxq2WuvvSSlDtsDqJwff/zR8gEHHGB59uzZklKntcK9+soTTZnddNNNab9+++23Z1RnLjASBAAAEolOEAAASKSCng6LTheXpB9++EGSdNVVV1nbiBEj0j6vopVFG2+8seVhw4at9rEAyhcOo++7776Wp02blpP3C1ceHXTQQTl5D+RGRUeeIPfCn42vvfaa5Y4dO6Z9TPQzcezYsda2/vrrWz755JMtL1q0yHJ0/FV4a0p4LNLBBx+cUf25wE99AACQSHSCAABAIhXEdNiyZcssf//995bD4fXvvvtOUurmTOG0VpcuXSw/9thjlsPtuSNLly61/MILL1g+7rjjJEm1atWqUv0AUoe+w1yRqmyMGa4IO//88y23bdu20u+HeDz44IOWBw0aFGMlyfXmm29ajo6rkFJXZYafwe22205S6mbDYX7iiScshyfDRz+vw6mzG2+8sVq15wojQQAAIJHoBAEAgESKbTosnAL7+OOPLe+6665pHx+dLr///vtb2xZbbGH5jz/+sPzpp59afu+991Z5rVmzZlk+9dRTLUebJYY11K5dEDOGiVOZKZJXX31VknTkkUfmpSasaoMNNrD8wQcfWH7qqacsRytP1lxzzSq99v333y9Juvrqq6tTIvKsc+fOljk7rDC89dZbklI3Qgw/j02bNrX8v//9z3J0lmffvn2t7ZlnnrEcTo2l26Q42mxRkjbbbDPL4ebF4XvHgZEgAACQSHkf5ohGgG677TZru/TSS9M+NrpRWZJOOukkSamnFf/++++Ww30H3n33Xct169aVlHpTVjjyFO4TtM8++0iSjj76aGsL9yVq2LBh2jo32mijtO3IXGWOzbj33nslSddcc421tWjRIqd1oXxrr7225TPOOKParxedKM9IUHEJf+MP/fnnn5bnzZsnKfXfDHInuhF9yy23tLbw6IoDDzxwtc8fMmSI5XDW5aWXXlrt88LRocMPP9xy3KM/IUaCAABAItEJAgAAiZSX6bDwJtdbb71VknTZZZdZW3TzlbRyu20pdR+DaBpsxowZ1nbmmWdafuONNyxvv/32lh9//HFJUuvWra1t8eLFls8991zLDzzwgKTU/SzC07BD4YnzU6dOTfsYZO7KK6+0fO211672sdG02F+fh+L24Ycfxl0CMlDePmvh1Eh4JBJy75hjjpGU+jO1cePGlX7+/PnzLb/zzjtpHxPuQRQuWoo0adKk0u+XT4wEAQCARKITBAAAEikv02HPP/+85WgaLFxpNWrUKMs777yz5SlTplgeOnSopNST48O71MO718NVZemG/KIVY5K0ww47WI6m6rp162Zt4VRLiG3fcyu8LigM0crOzz77zNqibfUlqU6dOtV+j2jvJ0nq3r17tV8P+de+fXvL4XEm4arcaGVS//7981dYgmX6WYpOhn/kkUes7ddff7W87bbbWt5jjz0yrC5ejAQBAIBEohMEAAASKS/TYb17916lLTzJ/Z///KflaBMtSfr8889X+7p33XWX5dNPP91yRSdRV2TvvfdOm5E/4ZTkNttsY3nSpEmrPPZf//qX5fDfWiFtyFWswpOho00pw5Ojf/nlF8tVmQ4Lp7Lff/99yz169LC8YMGCVZ5Xv359y+HGqShM4ZE233zzjeVwE1oUrkcffVSSNHDgQGsLj8qJjuMoZowEAQCARMrLSFBJSYnl6PDS6IYrqfze5AknnGA52ta7S5cu1hbuO1Dd0R8Urg4dOliePHnyKl/n2ufOKaecYjndYcThAoGq7DsS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WB1Qc9x2222WL7vssoxe49FHH612HRdccIHl9u3bS5LOPPNMa+vWrZvlJk2aVPv9kB3z58+3PGLEiAofX1JSIolbEwpddJTJCy+8YG3htX777bctd+7cOX+FZREjQQAAIJEKeiQovFHu7rvvliQde+yx1hbuR7H55ptb/vrrr1d5rV9++cXyqFGjLDMSlAzRzbzhDcBPPvmk5YEDB6Z9XrS/1E033ZTD6uIX3ahaGeutt57lvffeu9LP22abbSyHCxl++ukny2+++abl999/P+W/krTzzjtbbtu2baXfG7kR3RDdpUsXa4tupv2r9957z3I0yofCVqdOHUmp1yu8GXrmzJl5rynbGAkCAACJRCcIAAAkUkFPh4UOOeQQSdKOO+5obeFNWc2aNbOcbjos1LNnzyxXh0IxadIky48//rjlaO+ouXPnWlu0df/qjB49OovVFa5x48ZZDoe70+3Vs+aaa1qOFixUx+LFiy1vt912ltN9jp966inLTIfF77HHHpMkTZs2zdpOOOEEy0OGDLHcqFGj/BWGrLrkkkssjxw50vLnn38eRzlZxUgQAABIJDpBAAAgkYpmOixy8803Ww63Z4+29K+MJUuWZLUmxCPaz+bDDz+0toqmr9Zee23L5557ruVwldPf//53y7VrF91HJCNNmzZNm/MhXDWUbgqsXr16ls8666y81ITyhSvB3njjDUlSq1atrO2WW26xzBRYzRCu7AwNHTrU8oABAyxnY5o8XxgJAgAAiUQnCAAAJFLRjfXvtttull966SXLBxxwgOVweD2dK6+80vI999yTxeqQC3/88Yfl/v37W77xxhslSc2bN7e2fffd1/J1111nOdpMM1zZFE6NIfeWLVtm+eqrr7Y8aNCg1T5v6tSplqtyOj2yZ/z48ZbDk+GjFZZnnHGGtUUb7KFmCjfDDFd2vv7665YPPvjgfJZULYwEAQCARKITBAAAEqnopsOi1QhS6rRXeL5QRcLT6VH4whWBN9xwg+V+/fpJSj31PJzuQmH44osvJEn333+/tYXXNBROpfznP/+RJK2//vo5rA7lWbRokeWKVl2Gm9U2bty40u8Rbn5Z3ia34ecb8Stvk9lwaqyYMBIEAAASqaBHgubMmWO5Y8eOklK36V66dGlGrxu9FgpDtG9TeJP67bffbvnRRx+13LlzZ8vRsQlJ2cunmMyYMcPy9ttvLyn1xujyrLHGyt/LopugK3O8CbIv/HsPR9qXL19uObpe4T5b5YmO2AhfO7xB/quvvkr7vMsvv1ySNH/+fGtj/yFkCyNBAAAgkegEAQCARCroeYRvvvnGcnRzZaZTYKFwqiUcjkU8opOmw2NQevXqZXnHHXe0zNRXcXj88cctV2YaLBLeXNmuXTtJqceYHHPMMZYPOeQQyxtssEFGdaJ8kyZNsvzf//7XcjhlucUWW0gq/2bomTNnWg5vrh4+fPgqjw2nuKJ9vSTpk08+kSR1797d2p544gnL7PeF6mAkCAAAJBKdIAAAkEgFPbfQoUMHyw8//LAk6aSTTrK28DiFqgiHaBG/Cy+8UFLqapRTTz3VMlNgxSecuohWdP7vf/+zttmzZ1f6tV577bW0uXfv3pavvfZaSVKfPn2srUGDBlWoGFLqdGR5+/ZsvPHGls877zxJ0rrrrmttpaWllv/9739bHjZsmOUWLVpISv13cskll1j+/fffLUcnmP/000+V/H+BXAqPzagJKzcZCQIAAIlEJwgAACRS0cwzHHXUUZKkrbbaytrCzbNC4WqUI444QpL066+/5rA6VMcBBxwgSRozZoy1hcPko0aNsrzddtvlrzBkLFzdE01lz5s3z9rCz+4vv/xiOdxQ78Ybb5SUOvweCjft+8c//iEpdVO/p59+2nJNGLbPh2gVrpS6Ei8UbV4oST179pQkLVy40NrCVZ4jRoywHK7iOuussyRJV155pbWF02jhe0fPO/TQQ9O+FvKrpn2WGAkCAACJRCcIAAAkUtFMh0XCjfPKEw6fDxw4UFLqqpFx48ZZDofoGWLNvunTp1sOV5XUqlXL8nPPPScpdfXIueeea3mvvfayPGXKFMvrrbdeVmtFboWfrzCH/y7Cz/dBBx0kaeVnWEpdYZbOM888YzmahpNSV5WifB9//HGFj4mmwELh9PUrr7yS9nnvvvuu5VatWklKXYEWtf1VtPKP0+QLW3RGYLFhJAgAACRS0Y0EVUZ4Y3Q4AhSpW7eu5Zp2k1ecFixYIEnq2rWrtYUjN+FW9/vss4/ltdZaS5J0yimnWFs4EhTeRBu9h8RIUE33t7/9TZL00ksvWVu3bt0sh0c5pDN58uTcFFaD/fzzz5bDEfVw365QtOfaxIkT0z7v0UcftRyO9EQ3QXfp0qXC55V3gzYKy/rrrx93CRlhJAgAACQSnSAAAJBINXI67JZbblnt18N9LMo7/RhV17p1a0mpezI99NBDlsMpsHTuu+++tO1HH3205Q033LA6JaIIhaeW77rrrpYrmg5r06ZNzmpKgvBWgYpuGwivUfjY8ePHW472cpJWHnkUXqPwseEtC0AuMRIEAAASiU4QAABIpLxPh0XDoL169bK20047zXK0IqSqwlVD11133WofG+0/guzq37+/pJUnS0srjztZnWhIPDptXJK23HJLyzfccINlhskLS/i5C49I2GGHHSzvscce1XqP8HiMDz/8cLWPrV175be0Dh06VOt9k+jwww+3fOmll1oO9/AKp7WiVWHhfmuhQYMGWQ5Xf0WnyEdHo0hSo0aNMi0bBWDp0qVxl5ARRoIAAEAi0QkCAACJlPfpsGjr8wcffNDawq3an3zyScvNmjWz3LRpU0nSd999Z23hkQzhEG26E+Ovv/56ywy75kY0rRlOWb333nuWw1O9Q3PmzJEknXDCCdZ28803W1533XWzWieqJ5wCO/DAAy2H1/r333+v9vtEJ5Pfdddd1lbev6HIzjvvbHmrrbaqdg1JU6dOHcsNGza0HF7z8O+1KpvNpjtFvm3bthnVicLz2muvWQ43NS10jAQBAIBEyvtIUN++fSVJX375pbWF2+JvvfXWlsPfOKL9QUaNGmVt5d2MF/52Ev2mccEFF1hbePMksu/4449Pm2+//fY4ykGWhQdZhqM/ofD4heh4k3CUIbRkyRLL4V5RV1xxhaTyP+fhjbbRKEM4woyqCw+zff311y1Hh5hK0siRI1f7GhdeeKHlcGRup512slzeYakoTA0aNLAcXtMJEybEUU5WMRIEAAASiU4QAABIpLzPC22++eaSUo9QCPcMOuywwyyHU2Zhrkh4I21F+4oAqJqDDz7YcnjTciicVtl7770lSc2bN0/72OjGeEl68803K11HeKPtO++8I4lplmwKb1p+6qmnYqwEcatVq5bl8hYWhbeqcGM0AABAgaMTBAAAEim2ZVKXX3655XC77fDU8dD7778vSRoyZEjar6+zzjqWmQIDcmf33Xe3fM4551i+44470j6+KlNc6YSrOcNVSt27d7dcUlJSrfcAUDnhcTThCsJwL6liwkgQAABIJDpBAAAgkQpi18BwuPvEE09M+5ioffDgwXmpCUB6TZo0sRye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C/fhi0bgpZX7RElSaWmp5WjG5v3337e2TTfd1PKzzz5rmZEgAACAGNAJAgAAiZT36bBrr71WUuo+IqGuXbtaDm+YrMo02KJFiyxHw3HPPfdche/HzZXFJRqKXbhwYdqvs2V/fMIb4ps0abLK17/77jvL4b5c4bB7dBJ1eOzGgQcemNU6UXUPPvig5WhRQjhFEgqPRwhvqI32bYsWvEjSo48+ajncOw7xefvttyWlngp/zTXXWA4/r6+99toqzx83bpzlQt1/j5EgAACQSHSCAABAIuV9Oqxv376SUo83CPf+GD58uOXyttOvSDisetZZZ63y9fAk6kceeaTa74d4zJ07V5L0ySefpP16ly5dVvv88MT5GTNmWA6HcKNh+fL2oULFwuMyquKEE06QlHqKPFOc8bvhhhssv/HGG5JSpz+jU8ElqVevXpajPYUkaaeddpIkjR8/3to6duxo+Z133rG8ww47ZKNsZGCDDTaQJM2bN8/axowZYznd9LW08mfpZpttlusSq42RIAAAkEh0ggAAQCLlfTps1113lSSNHTs2q68bbsTWp0+fVb4enjh++eWXW2YKrPCFG3KFp1V//PHHq31eNJ0iSXvuuaeklasdJOnHH3+0/M0331gON3D74osvJEk333xzVctOtOXLl1t+9dVXJaUOnZfnxBNPtByuQkK8Zs2aZTn8PEYblobCjWmPOeYYy+lWB0WfSyl1FWB4rEq4sR7yK5quDL8/Rqe+S6nXL3T66adLklq0aJHD6rKDkSAAAJBIdIIAAEAixXaKfLaFK77Cu9Qj//nPfywfdNBBeakJ0pIlSyyHq7GiaSZJevPNNyWtPB/ur3777TfL4SnxFQnPrZkzZ84qX7/44osth5tmhiuQ0m30h4qFq4Luu+8+Sek/l39Vmccg/6KVmH8VngcVadmypeUrrrii0u/Rs2fPtK+B+IWrvMINLsvzj3/8I5flZBUjQQAAIJGKeiRo0KBBlsMbMddYY9W+XThShNyIRn1uu+02awv3bKroRuZQOAITjsyE+5GEN2hGLrvsMsu9e/e2vPHGG1f6vVF54SjdE088Yfnee++1HI3u7LPPPtYWfh5vuukmy+H+YSh84SKCSN26dTN6LUZdi8NXX31luaKfu8WgOKsGAACoJjpBAAAgkYpuOizckj3ccj0cigtvrnz66aclSc2aNctD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 25\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the first numbers in a training set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit = data[plot_index:plot_index + 1].values\n", " digit_label = digit[0][0]\n", " digit_pixels = digit[0][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(digit_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split the Data Into Training and Test Sets\n", "\n", "In this step we will split our dataset into _training_ and _testing_ subsets (in proportion 80/20%).\n", "\n", "Training data set will be used for training of our model. Testing dataset will be used for validating of the model. All data from testing dataset will be new to model and we may check how accurate are model predictions." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Split data set on training and test sets with proportions 80/20.\n", "# Function sample() returns a random sample of items.\n", "pd_train_data = data.sample(frac=0.8)\n", "pd_test_data = data.drop(pd_train_data.index)\n", "\n", "# Convert training and testing data from Pandas to NumPy format.\n", "train_data = pd_train_data.values\n", "test_data = pd_test_data.values\n", "\n", "# Extract training/test labels and features.\n", "num_training_examples = 6000\n", "x_train = train_data[:num_training_examples, 1:]\n", "y_train = train_data[:num_training_examples, [0]]\n", "\n", "x_test = test_data[:, 1:]\n", "y_test = test_data[:, [0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Init and Train Logistic Regression Model\n", "\n", "> ☝🏻This is the place where you might want to play with model configuration.\n", "\n", "- `polynomial_degree` - this parameter will allow you to add additional polynomial features of certain degree. More features - more curved the line will be.\n", "- `max_iterations` - this is the maximum number of iterations that gradient descent algorithm will use to find the minimum of a cost function. Low numbers may prevent gradient descent from reaching the minimum. High numbers will make the algorithm work longer without improving its accuracy.\n", "- `regularization_param` - parameter that will fight overfitting. The higher the parameter, the simplier is the model will be.\n", "- `polynomial_degree` - the degree of additional polynomial features (`x1^2 * x2, x1^2 * x2^2, ...`). This will allow you to curve the predictions.\n", "- `sinusoid_degree` - the degree of sinusoid parameter multipliers of additional features (`sin(x), sin(2*x), ...`). This will allow you to curve the predictions by adding sinusoidal component to the prediction curve.\n", "- `normalize_data` - boolean flag that indicates whether data normalization is needed or not." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Set up linear regression parameters.\n", "max_iterations = 10000 # Max number of gradient descent iterations.\n", "regularization_param = 10 # Helps to fight model overfitting.\n", "polynomial_degree = 0 # The degree of additional polynomial features.\n", "sinusoid_degree = 0 # The degree of sinusoid parameter multipliers of additional features.\n", "normalize_data = True # Whether we need to normalize data to make it more unifrom or not. \n", "\n", "# Init logistic regression instance.\n", "logistic_regression = LogisticRegression(x_train, y_train, polynomial_degree, sinusoid_degree, normalize_data)\n", "\n", "# Train logistic regression.\n", "(thetas, costs) = logistic_regression.train(regularization_param, max_iterations)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Print Training Results\n", "\n", "Let's see how model parameters (thetas) look like. For each digit class (from 0 to 9) we've just trained a set of 784 parameters (one theta for each image pixel). These parameters represents the importance of every pixel for specific digit recognition. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...775776777778779780781782783784
0-9.7725790.00.00.00.00.00.00.00.00.0...-0.009417-0.007525-0.019028-0.015672-0.0112550.00.00.00.00.0
1-12.9192640.00.00.00.00.00.00.00.00.0...-0.007120-0.004079-0.000066-0.000032-0.0000070.00.00.00.00.0
2-7.2626800.00.00.00.00.00.00.00.00.0...0.0003850.000191-0.0001550.0001120.0002140.00.00.00.00.0
3-7.5402220.00.00.00.00.00.00.00.00.0...-0.037224-0.019561-0.005837-0.0018350.0001260.00.00.00.00.0
4-9.9325850.00.00.00.00.00.00.00.00.0...-0.1045040.000216-0.001270-0.033175-0.0324750.00.00.00.00.0
5-7.6354570.00.00.00.00.00.00.00.00.0...-0.020391-0.014374-0.005743-0.035149-0.0328780.00.00.00.00.0
6-9.0472950.00.00.00.00.00.00.00.00.0...-0.0034560.000079-0.000917-0.022326-0.0218540.00.00.00.00.0
7-10.4917230.00.00.00.00.00.00.00.00.0...0.058497-0.0420110.0867800.1614910.1565860.00.00.00.00.0
8-6.3110990.00.00.00.00.00.00.00.00.0...-0.005436-0.006730-0.001873-0.025549-0.0385800.00.00.00.00.0
9-8.1991280.00.00.00.00.00.00.00.00.0...-0.0048380.010311-0.007995-0.073160-0.0563800.00.00.00.00.0
\n", "

10 rows × 785 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 775 \\\n", "0 -9.772579 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.009417 \n", "1 -12.919264 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.007120 \n", "2 -7.262680 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.000385 \n", "3 -7.540222 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.037224 \n", "4 -9.932585 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.104504 \n", "5 -7.635457 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.020391 \n", "6 -9.047295 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.003456 \n", "7 -10.491723 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.058497 \n", "8 -6.311099 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.005436 \n", "9 -8.199128 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... -0.004838 \n", "\n", " 776 777 778 779 780 781 782 783 784 \n", "0 -0.007525 -0.019028 -0.015672 -0.011255 0.0 0.0 0.0 0.0 0.0 \n", "1 -0.004079 -0.000066 -0.000032 -0.000007 0.0 0.0 0.0 0.0 0.0 \n", "2 0.000191 -0.000155 0.000112 0.000214 0.0 0.0 0.0 0.0 0.0 \n", "3 -0.019561 -0.005837 -0.001835 0.000126 0.0 0.0 0.0 0.0 0.0 \n", "4 0.000216 -0.001270 -0.033175 -0.032475 0.0 0.0 0.0 0.0 0.0 \n", "5 -0.014374 -0.005743 -0.035149 -0.032878 0.0 0.0 0.0 0.0 0.0 \n", "6 0.000079 -0.000917 -0.022326 -0.021854 0.0 0.0 0.0 0.0 0.0 \n", "7 -0.042011 0.086780 0.161491 0.156586 0.0 0.0 0.0 0.0 0.0 \n", "8 -0.006730 -0.001873 -0.025549 -0.038580 0.0 0.0 0.0 0.0 0.0 \n", "9 0.010311 -0.007995 -0.073160 -0.056380 0.0 0.0 0.0 0.0 0.0 \n", "\n", "[10 rows x 785 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Print thetas table.\n", "pd.DataFrame(thetas)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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kl1zzTVHflT4t3bvvfeuyPUxFHV5eXl2xRVX5PowUETdf//9nEP5qFixon3ve9/L9WGgiHrooYeyOof4sxcAAIgKix8AABAVbm9RCL69eWNKNpO1S5b0vx6VffXVVy77+uuvj+jfBPITPp/Vc1IpW7asyw4cOOCyypUru0x1PLZu3Zra3rVrl9vnyy+/dJk6N4BcOtL3CDOz447zn2Go7ODBg4d/YP/G+OQHAABEhcUPAACICosfAAAQFRY/AAAgKv/WhWdVIitRokS+X6f2qVGjhss2btzoMlWmLFWqlMvCMpsqt6mCmsooN+Ofsnl+m+lCpCokq6GmnTp1Sm0vWLDA7aOKxnv37nVZz549XbZ8+XKXffTRRy4744wzUtvbtm1z+6hMXSCgqDJ2tl+LOKnzqkKFCi47dOhQvl9XpUoVl6nXevW1aj91fof7qfNl586dLitXrpzL1Pvtvn37sspy8X7FJz8AACAqLH4AAEBUWPwAAICosPgBAABRKVKF52wnVZ544okuU4VkVbqcPHlyartMmTJun+3bt7tMlTDVcbRv395lCxcuzPff2LRpk9unYcOGLqtVq5bLVAlT/ez79+/P6mtRfKmioyoiHn/88Vl9P3X+hc+ZE044Iat/c/DgwS5T5cc6deq4TJU1TzrppNS2KijPnj3bZap4rY5XFT3VeVW1atXU9urVq90+iIMqN6vX7PB5FE4rNzMbPXq0y/r37+8y9X6lziFVZm7evHlqOzynzMymTJniMvW+od5fVq5c6bK6deu6LHwNUefoscYnPwAAICosfgAAQFRY/AAAgKjkrPOjhrFVr17dZerviFu2bHHZ888/77IePXq4bPHixantli1bun3U322bNGnisvHjx7tM9QQGDRrksrfeeiu1rXoTq1atclnr1q1dNmbMmKyO4/e//73LRo4cmdrmjtfFh/q7uOqk5OXluSwcsmame0A7duxw2fz581Pba9eudfu0adPGZVOnTnVZ7dq1XTZ9+nSXhb0aM7PHH388td2nTx+3j3o81HGo4aGqc/HTn/7UZevWrUttq9c29Xgj91SXTPXcVCdT9UVnzJjhsrZt27pMDcgNqf6oOufV++GiRYtcpt7Dwud4+fLl3T6qs/Tmm2+6TJ3zqkOk+rPhz6p6c2ro49Hgkx8AABAVFj8AACAqLH4AAEBUWPwAAICoFFrhOSyWqQGBqgj1zjvvuGzgwIEuO/fcc1126qmnuiwczqQKz2vWrHHZfffd57KbbrrJZWrQ2oMPPuiybt26pbZLly7t9lFlUzXM8Xvf+57LVIHz6aefdlmHDh1S22ogo7rjLsXo3FMFZVWSD3/HZrro+cEHH7js5JNPdtnEiRNT26rUuHv3bpep5+67777rMlVu/sc//uGyv//976ntzZs3u3369u3rMjU8VB2vOq/U8z4c1KgKs+p3pQYromDVrFkzta1er9UFL/Xr13fZggULXFa5cmWXqfLuZ599ltpu1qyZ26dp06YuU0M7K1as6LLw/cVMn2vh16p9LrvsMpepn1M9bmoAo3rMw9K22kcVtqdNm+aybPHJDwAAiAqLHwAAEBUWPwAAICosfgAAQFQKrfAcFgVVCUxNOR4yZIjLVFFw/fr1Lrv88stdVqpUqdS2uutspUqVXFaypH+ozjrrLJddcsklLjv99NNddsopp6S2w8nTZmaNGzd22dy5c12mptiqwpiaSNq5c+fUtpogqh4jFL5du3altlVJcunSpS5TJWg1tfWLL75wmSoMX3zxxaltVTRWE8aXLVvmso4dO7qsa9euLlOl7SuuuCK1rV5T1L+piqRq4q6aLv/oo4+6LCxGq7tWq0nWahowClb4O33llVfcPupCGfX7U3c2V+9h6gKaLl26pLbV6/Uzzzzjsl/84hcuW7JkicvUxQvqgoNevXqlttX5qCa4q7vQq7vGqwsJ2rVr57INGzakttVFNuEFDmZmvXv3dlm2+OQHAABEhcUPAACICosfAAAQFRY/AAAgKoddeA7LxiVKlHD7qOmx48ePT22rUnF4W3szXRZTkzVbt27tMjX1+brrrkttz5o1y+2jCr6q+Pnf//3fLvvZz37mMjXlcvr06antcEqsmS5rzps3z2W///3vXfbxxx+7rE+fPi4LJ0ur6bcUnouGcIKqKhiqTJUT1YUE69atc9lbb73lsvPOOy+1rc7HG264wWXvvfeey9SEdVXMVMcWXoQwYcIEt0/58uVdpi4aqFOnjstUCVUVLMOS6x//+Ee3j5qSy4TnwleuXLnUtnr+DRo0yGUjRoxw2ZlnnumyTz75xGXqtT2c8KxK+M2bN3fZiy++6DI1zV9dDKHeq8PSfXhRhZm+eEG9T6gLatRzXBWow+L50KFD3T5hSdxMX8yRLT75AQAAUWHxAwAAosLiBwAARIXFDwAAiMpRT3g+7ji/flIlw7DAlO20xscee8xlqnysCliqsPjmm2+mtpcvX+72UQVl9f0rVqzoMlWg/vzzz10WTnRWZW/1/StXruyyV1991WVq6rMqjYY/6/z5890+FDMLnzqvqlWrltoeO3as2yec2G1mlpeX57I///nPLlOly4suushl4fNIFREXLVrkMjU9PJz8bmb2xhtvuExNWw6LpKpwGU6wNTObPHmyy1SpU03rvf3221327rvvprZPPvlkt4+awqumbKNgha+fTZo0cftMmzbNZY0aNXKZmkK8Y8cOl6nnVnieqmnfVapUcZmawKzOIVWWVncRCC8SUBcrhRfFmJkdOnQoq+9ftWpVl6nHIzxetY96/1JTtrPFJz8AACAqLH4AAEBUWPwAAICosPgBAABROerCsyrDqomys2fPTm2rMvKvfvUrl/Xs2dNlaqLlnDlzXFazZk2XhWXsO++80+2jpnmG02TNzHbv3u0yVaAOp4qamV1yySWpbTVZ8/jjj3eZKmOrMmXdunVdNnr0aJddc801qW312Kpin8pwZFShUD2+YaH39NNPd/uowqWa+hyWp810iVFNhZ05c2ZqWz0n1UUJatLtnj17XKZK/eq8Ci9CUGXvF154wWVt27Z12erVq12mfvYvvvjCZf369Uttq8Jst27dXKbOeRSs8EIQdR5s3LjRZer9Sj2PVJlefb+wWKyef2rquCpBq9f/DRs2uKx+/fouCy8IyPb1X12AoM4N9W+q16OJEyemtn/yk5+4fdRFPOq1M1t88gMAAKLC4gcAAESFxQ8AAIgKix8AABCVwy48h+UnNRFSlRh79OiR2j7xxBPdPqq0rIpmqhB5xhlnuEwVsMKvVSWqNWvWuEwVzRo0aOCy4cOHu+yss85yWVgUV1M6W7Zs6TJVglOTeV9++WWXrVy50mXhY66m8KJgqaJxNkXMdu3auX3U80NNc960aZPLOnTo4LJsJh9XqlTJ7TNu3DiXtWnTxmXqogRVzFcTrz/55JPUtrooQT2O6vVJTY9Vrz2qYBkWTtX5yAUCRUP42q7Kt2qy94IFC1w2bNgwl6kpx+r58Mc//jG1rS6eUdOnf/e737lMnVfq+6n3q9q1a6e2t2zZ4vZRrynqHFIXYKjjaNGihcvuu+++1PY999zj9lElaHUc2eKTHwAAEBUWPwAAICosfgAAQFSOesih+pub+lv5vffem9pWAw1Vv0D1IVRPRw0Mmzt3rsvCu1Srf7NVq1YuU/0KdcfrH/7why5T/YewOxAOgTQza9asmcvU3eU7derkshUrVrhs2bJlLgs7Pgw0LHzqzsRqiFg4gEz10NT5eOaZZ7pMDWNTfS81aHPt2rWpbXWOhsNEzfRzUvUh5s+f77Jszu/wNcbM7IMPPnCZetxU92jevHkuU0Pbxo8fn9o+++yz3T6qx4TCF75+qp6Yen5Mnz7dZaoLo3qragho+JqtBgOrc+jkk0922fnnn+8ydS6r3lL4vFfnsjr3LrjgApep90jVB1TvdatWrUptq9eFsWPHuizsEh8OPvkBAABRYfEDAACiwuIHAABEhcUPAACIylEXnlX5uFGjRi772c9+ltpWw8LU4MOrr77aZeEdYM30kMCKFSu6LBxCtWjRIrfPU0895bKqVau6TN25Wg0mbN26tcuefPLJ1Pa5557r9gmHuP0r6nFTw91+85vfuCwsjarHEYVPDV8Ln4MLFy50+6hz46STTnKZGhSq7iytiroVKlRIbU+aNMnto8qV6jmpnm9Lly51mbqr++WXX57anjVrVlZfp0rLDzzwgMvuuOMOl6nXu3CYqiqlqn9TDR1FwQofc3WehYV+M11aVoMx1XuCKjOHFwWpkrUamKguaFAXL4QFYjOzbt26uSy82EINQlTfa8qUKS5Tj5EaGFmvXj2XhUNX1TmkjuNo8MkPAACICosfAAAQFRY/AAAgKix+AABAVI668KyokmE4sfHaa691+wwdOtRlqlSmvv++fftc1r17d5e99957qe1Bgwa5fdR0XVWCU5MqVRFMZeGdeFXZ9LrrrnPZgw8+6DJVeC5VqpTL1NRP9bgh99TvL5zGev/997t91NTxzZs3u+yll15ymSrlqgm44aRwVXRUhcUBAwa4rGfPni7LZrq1mS98q3NIXXzx+eefuywsT5vpO8mrqfHh46Ymuvfu3dtlFJ4LlppOHv5O1WunuhO5eh6VK1fOZeq5W6JECZeFk6YfeeQRt486tuuvv95lahJ0eFGCmZ6aHL7+T5061e2jXovUa4+6M4J6D1YXGYUXZajXHTVxXZXJs8UnPwAAICosfgAAQFRY/AAAgKiw+AEAAFEpkMKzEpbP1CTMm2++2WVqoqWasvrrX//aZWqi7K9+9avU9vDhw90+eXl5Lqtbt25W+6kps6eccorLKlWqlNpesmSJ20eV1lS57fXXX3fZ3Xff7bI333zTZeGETyVJEpdlMpl8vw7HVljUVZPDy5Yt67JRo0a5rH379i5TBVE1bTmcYq5KnurrypQp4zJVbFTPt//8z/90WTgVVxUuw0m6Zr44bqanqauJuHXq1HHZLbfcktq+99573T5hSRwFT722he8n1atXd/s0a9bMZepiAPX6rC6MUcfxyiuvpLbVxS3z5893mXo+q++vJkZ/+umnLtuyZUtqW5WiP/roI5epKc3q2FasWOEy9V4Xlv/VhUjqwoqjwSc/AAAgKix+AABAVFj8AACAqLD4AQAAUSmQwrMqw4aTNa+88kq3jyodqknQc+bMcdk999zjsrFjx7osnLappr2qMqgqOqoJnKrgdejQIZfdcMMNqW31s3//+9932fnnn+8yVVRVk6BVefzMM89Mbe/cudPtM23aNJepwhuOHVUeXLBgQWpbFZ7VxFP13FVFz3BispkvN6uvVYVqRZV+1TTd3/zmNy4rXbq0yzp27JjaVhPiP/vsM5fVrl3bZX369HHZ4sWLXaamPoeF78mTJ7t9+vXr57Jt27a5DAUrnBSuLhBYv369y9TvXT2P1Lmgzr9wwrMqT6vzW01rVwV+VSrO5jgmTZrk9lHHps5bNQlarQXU+RFeUPTxxx/ne6xmZjt27HBZtvjkBwAARIXFDwAAiAqLHwAAEBUWPwAAICpHXXjet2+fy9TE16+//jq1PXXqVLePmkqpyraqgNWzZ0+XqUJyeGzhxGczPaFVlZbVcdx///0uU1Ofw0mg77//vtunR48eLmvbtq3LVDlMTdNVZbbGjRunttWUXFUGVYU6HDthMd/Ml/9VWVM9d8866yyXvfzyyy5TRc+TTz4532NTz4+KFSu6TE11f/jhh12mysHq/AunpKtzT128oDJVnJw+fbrL1Dn/wAMPpLbVJHWVoWCpcyh8Hs2ePdvt06BBA5epMn3lypVddtlll7lMXUgQFpfVZGh1IYsqXvfq1ctl4QRpM7MmTZq4bOPGjfl+f1VazrYErS4AateunctOOOGE1LZ6LVKT348Gn/wAAICosPgBAABRYfEDAACiwuIHAABE5agLz6qIqLJ169altlXBS33drl27XKaKVWpaavny5V0WFjG7dOni9lETpFWps3fv3i7785//7LIPP/zQZWHhTf2cYUncTBfq1GTNNWvWuOy8885zWfi4qaLZ9u3bXYaCpc6FmTNnprbV1OOf/OQnLlOTXT/66COXqQngSjj1ed68eW4fNYn2t7/9rcvUc7x58+YuU5Oa27Rpk9oOp8Sa6Qsy1DT1Zs2auey2225z2fjx41129tlnp7Zfe+01t4+a2K0uSsCRUUVdpVy5cqlt9Zx/5plnXPbee++5LHz+melS8ZAhQ1wWTmVWzw814Tl8HzXT5586r9RrQ3iBi7oYQD1Ge/fuzWo/VW5W74fhuVC1alW3j/qZjqYEzSc/AAAgKix+AABAVFj8AACAqBx150f9zS0cnGTm/x6oOj9qmNKIESNcpu40/dhjj7lM9XnCgVCrVq1y+4SD/8zMOnXq5DJ1d9pXX33VZWrY4qeffpra/v3vf+/2UZkaaKg6DOpvsk899ZTLwrvaq8Fu6nes+lQ4dtRzJhyWpoYG/ulPf3LZwIEDXTZo0CCXqT6LOifD80Pdbbl///4uU3efvvDCC12mOgwPPfSQy8LnbufOnd0+mzZtcpnq76muW9gPMfP9HjPfI1QdPNU9Uj0PHDtqaG7YRatevbrbRw28VH0W9f3VQFHV3wsHKWbbqxk2bJjLVHdMDUhU52T4Or569Wq3j3o+L1u2zGWNGjVymXrvqF+/vsvC1xQ1RFc9HkeDT34AAEBUWPwAAICosPgBAABRYfEDAACictSFZ1UKvPnmm132xBNPpLZVgVgNXrv00ktdpgYgheVHM10+e/vtt1PbamigGrI2d+5clz333HMuu/jii12m7qZ+1VVXpbYXLFjg9lGPo7pbryq+qqFfd9xxh8vCArgqyqnSmirx4dhRA73COx+rYmatWrVcpu4o/h//8R8uq127tsuWL1/usrDsqErR6rmrLnJQd9AOXyvMzNq2beuysGCpCqhqeKEq66tBnurxOHjwoMvCAYzh3ebNzLZu3eoyHDvqfFEF/nAwofp9jhw50mUffPCBy9Tz+a677sr33zTzz9X9+/e7fdRrrLoYR2Uvvviiy1S5O3yuquG4inqPVOeQuhhHnX9jxoxJbavhiF9++WVWx5YtPvkBAABRYfEDAACiwuIHAABEhcUPAACIylEXnlUJ6a233nLZuHHjUttvvPGG20fdTTfbyajqbrfq7spLly5NbT/yyCNuny1btrisQoUKLlOTL9Ud4UuUKOGysGimptqqiZkXXHCBy1RZWt3xW32/8OdS07lVofVYT9tEmirIhlOfS5b0p+91113nMjXFXH1t165dXabuCN+hQ4d8v384jdrM7Pbbb3dZOOncTE99Vne4njp1ampbFY3VXarVubZ48WKXqcLztm3bXBZeXKB+diaiFyx1UYZ6zoRTxtUkYXUHd0VdVKLu6q6K1+FzXJ1Dt9xyi8tef/11l1WrVs1laoK7unghnHitLnipV6+ey5S8vDyXqfNbTZEOX3vUe6aaZL179+6sjk3hkx8AABAVFj8AACAqLH4AAEBUWPwAAICoHHXhWdmzZ4/Lbr311tT23Xff7fY588wzXRYW1MzMVq5c6bKePXu67JRTTnHZzp07U9vdunVz+6jytCo8z58/32WqqBVOgDUza9GiRWpblTBVgaxp06Yua9iwoctUoTUszJr5AudXX33l9lE/e/g4ouCFRX9VHFTUOaQmyo4dO9Zlapr6Cy+8kNpWE2a7d+/usrCgbKan5J522mkuW7FihcvCf3f9+vVuH5WpkquaVK9eZ1RxOTzXjvUkWhwZVYIOi8Xq+T1jxgyXqbsPPPnkky575513XNaxY8d8j23atGlun8cff9xl6rytWLGiy9RFQWraeXhxT5cuXdw+alq0Klmron+fPn1cpkrK4fuQes1S72lHg09+AABAVFj8AACAqLD4AQAAUWHxAwAAonLUDSI15VgVZMNJqw0aNHD7hNOXzcwOHTrkMlX62rRpk8vuuusul1199dWp7WHDhrl9VJF08ODBWR2H+tpatWq5bNasWantiy66yO1TvXp1l40ePdplqrStHg81vTN8fHft2uX2UROeUfjC34MqNW7YsMFlqpy4fft2l6lp6mvWrHFZOPV50qRJbp+6deu6TJ3LqiytLhooW7asy0JqSrMq5jdv3txl6vXok08+cZma/h7+XKpEyzlUsNTjq55v4fuVmnqspiOrAv/nn3/usosvvthl6kKC8GIWNV1dTelX5Wb1c6pys7pAJ5wkP2LECLfPjh07XKamPrdr185lixYtctnXX3/tsl69eqW21QUO6mc/GnzyAwAAosLiBwAARIXFDwAAiAqLHwAAEJUCmfB8wgknuOyWW25Jbffo0cPt07dvX5ep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c9m2bdtcpnTq1MllqsgdTodesGCB26datWouq1+/vstU+Uzt17dvX5ddeeWVqe2BAwe6ffDvp0KFCi5TBXtVpgzLiWo6uZriqi4uUOetKnpmU6o+msKz+tpsJ6eH/4YqZ6N4y7bIrDI1sVwVkkOqoJzt3Qdef/11lw0ePNhl4fkdFqDN9Htws2bNXKYeo9WrV7tMvc7s37/fZQWNT34AAEBUWPwAAICosPgBAABRKVKdn7y8PJepv0Hu3LnTZervkmow4Xe+853Udt26dd0+7du3d5m6Y7T6W2uPHj1cpv7uedttt6W21d9333jjDZdNmDDBZV26dHGZuuP8Aw884LLnn38+tf3222+7fdTjjaJJdQ7KlSvnMjVoTHXTqlSp4rKyZcvmexzly5d3WZkyZVz25Zdfukz9DOpcC3sCqiukeghqP/Wzq76QysLehOovcMf5oqly5couU8/JXr16uSx87TTTz131vhZ2SNU+DRs2dNmwYcNcprp0t9xyi8teffVVlzVp0iS1rc7R9957z2VNmzZ12dSpU12muqfqMRo1alRq+/rrr3f7LF++3GVHg09+AABAVFj8AACAqLD4AQAAUWHxAwAAolJoheeweKiGm6ny8cKFC13WokULl23evNll7dq1c1k4LG3p0qVuH1XIUuUzVeqcM2eOy9q2beuysPCmBmGpTBXAN2zY4DJ1vM2bN3fZtGnTUtvqcZw9e7bLwuGIKBpUYbF27doumzx5sstUSV6V9cOhhup52rJlS5dt377dZatWrXKZKmh///vfd1nXrl3z/f7r16932eLFi12mHrfPP//cZWo45MaNG1PbqoBK4bloUkNu1fMvfJ00Mxs3bpzL1EU2F110kctGjBiR2lbvVeeee67LLrjgApc9++yzLvuf//kfl6l/49NPP01t16hRw+2j3m/VBRMzZ850Wb169VymLqB5/PHHU9sffvih20cV0dV5my0++QEAAFFh8QMAAKLC4gcAAESFxQ8AAIhKoRWewxKgKgCq8pkq4KqvbdCggcumTJnisqpVq6a2Gzdu7PZRE1pVcVIVnlVZWk3JnT59emr7/fffd/sMHTrUZar4uWXLFpepwpiaYhuW1FSpTJXg1NRPFKzwTumqmKl+f+r5rEqMqkyvyrthMVqdB9ne6V1NTG7UqJHL7rvvPpeFP+tVV13l9lGvH+o8UFOf165d67IOHTq4TF28EVI/J3d/L3zhhTfqOaneEyZOnOiyl19+2WVhkdnM7He/+53LwufbkCFD3D7quXbvvfe6TF3QsGnTJpep97CnnnoqtT1p0iS3zyOPPOIyVexW78HZlqBfeuml1La66726iEfd8SBbfPIDAACiwuIHAABEhcUPAACICosfAAAQlUIrPIfFMlWIVBNa69ev77KKFSu6rFatWi6rXLmyy8IyZTjh0sysffv2LhswYIDLwinNZmbHH3+8y8Kp0mZm1apVS22feeaZbh9VzFTfv06dOi5Thdbx48e7rEuXLqltVcxUhc4XX3zRZShYYQFXFdHDacNmuvwYFu7NzG6//XaXqSJ+WDT+xz/+4fZRFyXcdNNNLjvjjDNcpl4HBg8e7LLHHnsstf3qq6+6fWrWrJnVse3evdtlqsCphMVzVURXvxdVskbBCgv8avr+qFGjXHbOOee47KOPPnLZggULXLZr1y6XLVmyJLV9+eWXu33Uc+bGG290WbNmzVymztts7qAwcuRIt496b927d6/LwouJzPR78BtvvOGycCL1nXfe6fY5/fTTXaZeP+6//36XKXzyAwAAosLiBwAARIXFDwAAiAqLHwAAEJVCKzyHJUA1CVlleXl5LlNTbD/44AOXtWrVymXhFOk2bdq4fU488USXPf300y5Tk5tbt27tsp07d7qsW7duqe2mTZu6fVT5+JNPPnGZ+lpV4DzttNNc1rlz59T2F1984faZP3++y1Qp/N1333UZjowq5YaTlNUkZHW+PPfcc1nt99e//tVlH3/8scvC55uaRKsm56qp42r6tJoq3bt3b5eFFyGsW7fO7aOmNIcTqs3Mrr/+epepn33u3LkuK1ky/TLapEkTt0+207hx7ITTnM3MypYtm9pWr/UtW7Z02ZNPPumyvn37ukwVqNXrfzjlWE1XX758ucvUa716T1AF6ltvvdVlq1evTm2r92D1PFUXAKnXrHCCtJk+v3/5y1+mttVE97feestlixcvdlm2+OQHAABEhcUPAACICosfAAAQFRY/AAAgKkddeFalMlV2DKeZqgKgml68Zs0al1WoUCGrYytdunS+x6EmTavyWf/+/V2mJnyqwpgqwTVu3Di13bBhQ7fPnDlzXBZOBjXTBbKZM2e6TBX5wjLzvHnz3D7q94ljZ9WqVS5TU8zDqeDD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 9\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(10, 10))\n", "\n", "# Go through the thetas and print them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit_pixels = thetas[plot_index][1:]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap='Greys')\n", " plt.title(plot_index)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Analyze Gradient Descent Progress\n", "\n", "The plot below illustrates how the cost function value changes over each iteration. You should see it decreasing. \n", "\n", "In case if cost function value increases it may mean that gradient descent missed the cost function minimum and with each step it goes further away from it.\n", "\n", "From this plot you may also get an understanding of how many iterations you need to get an optimal value of the cost function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Draw gradient descent progress for each label.\n", "labels = logistic_regression.unique_labels\n", "for index, label in enumerate(labels):\n", " plt.plot(range(len(costs[index])), costs[index], label=labels[index])\n", "\n", "plt.xlabel('Gradient Steps')\n", "plt.ylabel('Cost')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Calculate Model Training Precision\n", "\n", "Calculate how many of training and test examples have been classified correctly. Normally we need test precission to be as high as possible. In case if training precision is high and test precission is low it may mean that our model is overfitted (it works really well with the training data set but it is not good at classifying new unknown data from the test dataset). In this case you may want to play with `regularization_param` parameter to fighth the overfitting." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Precision: 96.6833%\n", "Test Precision: 90.4500%\n" ] } ], "source": [ "# Make training set predictions.\n", "y_train_predictions = logistic_regression.predict(x_train)\n", "y_test_predictions = logistic_regression.predict(x_test)\n", "\n", "# Check what percentage of them are actually correct.\n", "train_precision = np.sum(y_train_predictions == y_train) / y_train.shape[0] * 100\n", "test_precision = np.sum(y_test_predictions == y_test) / y_test.shape[0] * 100\n", "\n", "print('Training Precision: {:5.4f}%'.format(train_precision))\n", "print('Test Precision: {:5.4f}%'.format(test_precision))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plot Test Dataset Predictions\n", "\n", "In order to illustrate how our model classifies unknown examples let's plot first 64 predictions for testing dataset. All green digits on the plot below have been recognized corrctly but all the red digits have not been recognized correctly by our classifier. On top of each digit image you may see the class (the number) that has been recognized on the image." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# How many numbers to display.\n", "numbers_to_display = 64\n", "\n", "# Calculate the number of cells that will hold all the numbers.\n", "num_cells = math.ceil(math.sqrt(numbers_to_display))\n", "\n", "# Make the plot a little bit bigger than default one.\n", "plt.figure(figsize=(15, 15))\n", "\n", "# Go through the first numbers in a test set and plot them.\n", "for plot_index in range(numbers_to_display):\n", " # Extrace digit data.\n", " digit_label = y_test[plot_index, 0]\n", " digit_pixels = x_test[plot_index, :]\n", " \n", " # Predicted label.\n", " predicted_label = y_test_predictions[plot_index][0]\n", "\n", " # Calculate image size (remember that each picture has square proportions).\n", " image_size = int(math.sqrt(digit_pixels.shape[0]))\n", " \n", " # Convert image vector into the matrix of pixels.\n", " frame = digit_pixels.reshape((image_size, image_size))\n", " \n", " # Plot the number matrix.\n", " color_map = 'Greens' if predicted_label == digit_label else 'Reds'\n", " plt.subplot(num_cells, num_cells, plot_index + 1)\n", " plt.imshow(frame, cmap=color_map)\n", " plt.title(predicted_label)\n", " plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n", "\n", "# Plot all subplots.\n", "plt.subplots_adjust(hspace=0.5, wspace=0.5)\n", "plt.show()" ] } ], "metadata": { "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }