Last active
November 6, 2018 05:31
-
-
Save mGalarnyk/748f1a4301da57327d355307342226e9 to your computer and use it in GitHub Desktop.
Logistic Regression using Python (Sklearn, NumPy, MNIST, Handwriting Recognition, Matplotlib) on the Digit Dataset for the youtube video: https://www.youtube.com/watch?v=71iXeuKFcQM
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<h1 align=\"center\"> Logistic Regression (Preloaded Dataset) </h1>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"scikit-learn comes with a few small datasets that do not require to download any file from some external website. The digits dataset we will use is one of these small standard datasets. These datasets are useful to quickly illustrate the behavior of the various algorithms implemented in the scikit. They are however often too small to be representative of real world machine learning tasks. After learning the basics of logisitic regression, we will use the MNIST Handwritten digit database" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Each datapoint is a 8x8 image of a digit.</b>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Parameters | Number\n", | |
"--- | ---\n", | |
"Classes | 10\n", | |
"Samples per class | ~180\n", | |
"Samples total | 1797\n", | |
"Dimensionality | 64\n", | |
"Features | integers 0-16" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 126, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.datasets import load_digits\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"import numpy as np \n", | |
"\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"\n", | |
"# Used for Confusion Matrix\n", | |
"from sklearn import metrics\n", | |
"\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 127, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"digits = load_digits()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 128, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(1797, 64)" | |
] | |
}, | |
"execution_count": 128, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"digits.data.shape" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 104, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(1797,)" | |
] | |
}, | |
"execution_count": 104, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"digits.target.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Showing the Images and Labels" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 125, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHcAAAEJCAYAAAAev8sNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuUnOldH/hv4bExxLak4WIn4SJrWB4umpUGaReDwZZh\nJlwOWDIgZQ8Law04M96FMGJjkOzFkYZLIh1sLAfioHHs0WxikjMylmTYXcyIM9pwWSCjWBMrWR4v\nlsXiBQLxtGRszM3U/lGtWOi0uutp1dv1vqPP5xydnq7+PU/9urq+XW//5q2q0Xg8DgAAAADD9Cnz\nbgAAAACA1TPcAQAAABgwwx0AAACAATPcAQAAABgwwx0AAACAATPcAQAAABiw2+bdQB+VUg4lOThl\n+e/UWjfO8LqPJ3llkrtqredXsX6c5Mla69ZZ9TQrpZSvSPIjSbYlGSf5pST7a60X59oYgyGb3Sul\nvDPJF/S9T/pFNmevlDJK8uokfy/JFyf5RJInk7yx1vquefbGMMjl7C3m8juSPJCkJPmTJO9J8g9r\nrZfm2BoDIpvdK6VsTfJvk7yj1rp3zu2sGcOdpZ1d4rK9ST4/yZuTXL7m8stL1N6MU0kuJfmDVa5/\n8CbWdqaU8tIkv5hkIcnxJOuSfHuSl5VStntAZEpnl7hsb2RzJkopr0nyrZn8AQktzi5x2d7I5s14\nKMmrklxM8s+TfGqSb0nys6WUf1Br/Yl5NscgnF3isr2Ry5vxo0lel+S3krw1yWcl+e+SfHMp5ctr\nre+fZ3MMxtklLtsb2ZyJUsptSd6eW3DWMRqPx/PuYRBKKWeTvDTJCw0i2pRSPiXJf0zy/CR31lo/\ntHj51yZ5LMm7aq3fNscWGTDZvHmllGck+cdJfmDxot7/Hxn6TzZXr5TyoiT/V5JfT/K1tdY/Wbz8\n+UnOJfnMTG7X359flwyRXK5eKaVkMtT5jSRfXWv9i8XLvy7JLyR5Z6119xxbZMBkc3ZKKa9L8mOL\nnz5yK5254zV3WAtfm8mpq2+7OthJklrrL2Uy3NlVSvmMeTUHt7JSypdl8sfiD2Rydh0wf9+y+PHH\nrg52kqTW+p+S/HQmZ/F8zTwag1vYliS/m+QNVwc7SVJrfU8mZ6Z/xbwaAyZKKV+U5B8m+d/n3cs8\n3HKnKnXlmudO3p3kHyXZmskpb9tqrR8tpbw4yT/I5Bf/ZyT5WJInkvyjWuvj1+xzPNc8D7KUsjHJ\nBzM5Be7fJfmhJHcm+eMkp5O8ttb6n69Z/9eeB3lNX1+c5H/I5HnCz0/y20l+stb609d9H89J8vok\nf3ex7j8mOZRkZ5LvrrWOrqm9lMnpgytNmF+y+PHxJb72eJK/k+SrFr8fmCnZXPH//rw8yRck2Z/k\njUn+coV6mAnZXDabj2XyWh7/domv/dnix+cssx5WRS5vnMta66NJHl3iNnt+kvWL3x90QjZXPptp\n8dkib1u8XX44yTeutObpxnBn9t6RySmbP5nkuYth25nkZ5P8YZKTmYRlc5JvSLKjlPLfTPGCVt+c\nSRB+Pp8ciLwqyZckefEUff3LTMLxs5n88fYdSf5ZKeUTtda3Jkkp5VlJziT58iS/luREJi9+fDrJ\n7yyx59FMHsxWei7oHYsfP7DE1y4tfvzCKb4HuBmyubSfS/LPFs8IyOSsc1hTsnmdWutjmQx4lrJr\n8eN/mOJ7gNWSyxWUUj49yX+b5OrrX/3jlvWwSrJ5Y9+XyXDrpfnk/wi5pRjuzN7vJvmaWutfXXPZ\nkSRXMpmQ/qerF5ZSfnDxa3uSrBS4L0uyp9Z6YnHtDyV5b5KvLKV8Ua31t1ZY/xlJvqTW+keL638m\nya8m+e5MXhAuSf5+JmH7qSTfV2sdL9b+eJLXXL9hrfXoCtd57XUnSwfzyuLHdVPuBaslm0uotZ6b\nthY6IptTKqW8MslXJrmQyYExdEUul1FKuSOTMxOu+v5a6ztb94FVkM0llFI2ZfI6O8dqrb+8+G5Z\ntxyvuTN7J68N2+LpYa9N8p3Xhm3R2cWPnz3Fvhevhi1JFp/re2bx041TrH/71bAtrv+1TIYt1659\nZZKPJvmhq2Fb9GAmzyVerWcuflxqgnr1smffxP4wDdmEfpLNKZRS7k5yLMlfJHnVdQf2MGtyubzb\nkrwpk0z+QZKfKKW8fkZ7w3Jkc2lvXdxj/03uM2jO3Jm9v/Z828XwnUySUsrnZ3KK3B2ZnOL2ssWy\nZ0yx71JvrXj1rJdPXeX6jyR53mJvz87k+ZXnaq1Xri1aPN3vySQ7priepXx88eOzlvja1d4/tsq9\nYVqyCf0kmysopXxTJqevPzOTA/jfmMW+sAy5XEattSb5nxev83/J5AyFHy6lvKfW+ps3uz8sQzav\nU0r5e5m8ycDOWutHVrPH04Xhzux9/PoLSil3Jvkn+eQd9i8yefGoJzJ5rZnR9WuWsNRZL1cnnjez\n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\nfbv/rKGmXCbDz2ar1v7Pnj3bXTNJ1q9f31S/ZcuWPPnkk01rDh061FTf6tSpU1PXDv3+cxNkcwWt\n/e/YsaO7ZtJ2v06SdevW5cqVKysXXuP8+fNN9a1abqOh339uwi2Xzf379zfVHz58uOkYr+tj2osX\nLzbVb9q0qXnN9u3bm+pbOaadyi31t+ZqtHwPrcebrY4fP968ZufOnTl9+vTU9bt27Wq+ji717T60\n3Mk50zwt6yNJnnvtmuUeCIE1IZfQT7IJ/SSb0E+yCTMyzXDnV5N8Y5KUUl6U5H2ddgRMQy6hn2QT\n+kk2oZ9kE2ZkmqdlnUxyTynl1zJ5fte93bYETEEuoZ9kE/pJNqGfZBNmZMXhTq31r5K8eg16AaYk\nl9BPsgn9JJvQT7IJszPN07IAAAAA6CnDHQAAAIABM9wBAAAAGDDDHQAAAIABM9wBAAAAGDDDHQAA\nAIABW/Gt0G81hw8f7nTNpk2bmvdvsWHDhs7XPPXUU83X0WLPnj1N9bt3726qP3HiRFM9t4bLly93\nuv9LX/rS5jVbtmxpqt+xY0fzdbQ4depUp/szTFu3bu10zeOPP968f4srV650un+SbNy4sfPrYHhW\nc8zZovX4KEnuu+++qWvvv//+5v1bHDt2rHlN63H2tm3bmq+jxZkzZzrdH663d+/eTvc/f/5885qd\nO3euah3tnLkDAAAAMGCGOwAAAAADZrgDAAAAMGCGOwAAAAADZrgDAAAAMGCGOwAAAAADZrgDAAAA\nMGCGOwAAAAADZrgDAAAAMGBTDXdKKV9eSjnbcS9AI9mEfpJN6CfZhH6STbh5t61UUEr5wSTfmeRj\n3bcDTEs2oZ9kE/pJNqGfZBNmYzQej5ctKKV8a5J/n+Rf1FpftNKGFy5cGG/evHlG7cGwjEajjMfj\n0Vpcl2zC9GQT+kk2oZ/6mk25hNwwlysOd5KklLIxyb+e5oFwNBqtvOE1xuNxRqM1+b0xlQ984ANN\n9Zs2bcrFixeb6rt04sSJpvrdu3evak2X9uzZM3Xto48+2lSftN9GrdbqgTC5tbLZqrX/U6dOddhN\nsnPnzk73T5I3v/nNne6/b9++qWv7eP+RzW5s3bq1qf69731v7rrrrqb6Ll25cqWpft26dc1rLl++\n3FTfauPGjVPX9u3+k9y62Tx8+HDL9s1aj9daj2mPHDnS2lKTY8eOdbp/ktxzzz2d7n/mzJmpa2Vz\n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\ngAEz3AEAAAAYMMMdAAAAgAG7baWCUsreJHsXP312kq1JXlBrvdxdW8BKZBP6Ry6hn2QT+kk2YXZW\nHO7UWo8nOZ4kpZR/muTtwgbzJ5vQP3IJ/SSb0E+yCbMz9dOySinbk3xprfWhDvsBGskm9I9cQj/J\nJvSTbMLNG43H46kKSynvSvKTtdbHl6u7cOHCePPmzbPoDQZnNBplPB6P1vI6ZRNWttbZnDaXiWxy\na5NN6Ke+ZlMuITfM5VTDnVLK+iS/Wmv90hWvaTSablq0aDweZzRa07+Fl3Xfffc11R87diz333//\n1PX79+9vbanJuXPnmup3796dEydONK3Zs2dPU32X+nb/SbLWD4S3TDZbtfZ/6tSpDrtJdu7c2en+\nSfLII490uv/evXunru3j/WetstmSy0Q2V7J169YOu0kOHTrUVL9z586cPn26eU2X3vzmN09d+8AD\nDzTVJ8m+fftaW2oim91oPeY8fPhwDhw4MHV96zFz1zZt2pSLFy82rTlz5kxH3Uy0/I3Qt/tP0s9s\nDj2Xq9HyPWzcuLHTXj74wQ92un+SvOxlL+t0/7NnzzbV9+0+tFwup31a1kuS/NJs2gFmSDahf+QS\n+kk2oZ9kE2Zg2uFOSdI2CgfWgmxC/8gl9JNsQj/JJszAiu+WlSS11h/vuhGgnWxC/8gl9JNsQj/J\nJszG1O+WBQAAAED/GO4AAAAADJjhDgAAAMCAGe4AAAAADJjhDgAAAMCAGe4AAAAADJjhDgAAAMCA\njcbj8bx7AAAAAGCVnLkDAAAAMGCGOwAAAAADZrgDAAAAMGCGOwAAAAADZrgDAAAAMGCGOwAAAAAD\nZrgDAAAAMGC3zeNKSymfkuQtSbYk+bMkr6q1/vY8elmNUsozk7w9ycYkn5rkR2ut755rU6tQSvns\nJOeS3FNr/a1599OqlPLaJC9P8qwkb6m1vm3OLQ2ebPaDbHI92ewH2eR6stkPQ86mXHZDNvtBNtfW\nvM7c2ZXk2bXWr0hyIMkb59THan1Hkg/XWr86ydcn+ak599Ns8RfGsSQfn3cvq1FK2ZHkK5O8OMlL\nk3zuXBt6+pDNOZNNbkA250w2uQHZnLMhZ1MuOyWbcyaba29ew52vSvILSVJr/fUk2+fUx2qdSPL6\nxf8eJfnLOfayWm9I8tNJfm/ejazS1yV5X5KTSX4uyc/Pt52nDdmcP9lkKbI5f7LJUmRz/oacTbns\njmzOn2yusXkNd56X5Mo1n3+ilDKXp4itRq31o7XWPy6lPDfJO5P80Lx7alFK2Zvkj2qt75l3Lzfh\nMzP5Jb07yauTvKOUMppvS08LsjlHsskyZHOOZJNlyOYcPQ2yKZfdkc05ks35mNdw5yNJnnttH7XW\nQU0jSymfm+TxJP+i1voz8+6n0XcluaeUcjbJ1iT/aynlBfNtqdmHk7yn1vrntdaa5E+TfNace3o6\nkM35kk1uRDbnSza5Edmcr6FnUy67I5vzJZtzMK/p5a8m+eYkj5ZSXpTJKU+DUUp5fpJfTPK9tdZf\nmnc/rWqtL7n634uBe3Wt9Q/m19Gq/EqSB0opP5Hkbyb5G5mEkJsjm3MkmyxDNudINlmGbM7R0yCb\nctkd2Zwj2ZyPeQ13TmYyyfu1TJ5DeO+c+lit1yXZkOT1pZSrz4X8hlrr4F4saqhqrT9fSnlJkt/M\n5Ay076m1fmLObT0dyCY3RTY7I5vcFNnsjGyyanLZKdlk1YaazdF4PJ53DwAAAACs0rxecwcAAACA\nGTDcAQAAABgwwx0AAACAATPcAQAAABgwwx0AAACAATPcAQAAABgwwx0AAACAAfv/AadojZkORLig\nAAAAAElFTkSuQmCC\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1159ee510>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(20,4))\n", | |
"for index, (image, label) in enumerate(zip(digits.data[0:5], digits.target[0:5])):\n", | |
" plt.subplot(1, 5, index + 1)\n", | |
" plt.imshow(np.reshape(image, (8,8)), cmap=plt.cm.gray)\n", | |
" plt.title('Training: %i\\n' % label, fontsize = 20)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Splitting Data into Training and Test Sets" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 129, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# test_size: what proportion of original data is used for test set\n", | |
"x_train, x_test, y_train, y_test = train_test_split(\n", | |
" digits.data, digits.target, test_size=0.25, random_state=0)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 65, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1347, 64)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(x_train.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 66, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1347,)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(y_train.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 67, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(450, 64)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(x_test.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 68, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(450,)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(y_test.shape)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Scikit-learn 4-Step Modeling Pattern" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Step 1: </b> Import the model you want to use" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"In sklearn, all machine learning models are implemented as Python classes" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 134, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from sklearn.linear_model import LogisticRegression " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Step 2:</b> Make an instance of the Model" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 135, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"logisticRegr = LogisticRegression()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Step 3:</b> Training the model on the data, storing the information learned from the data" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Model is learning the relationship between x (digits) and y (labels)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 136, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"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": 136, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"logisticRegr.fit(x_train, y_train)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Step 4</b>: Predict the labels of new data (new images)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Uses the information the model learned during the model training process" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 137, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([2])" | |
] | |
}, | |
"execution_count": 137, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Returns a NumPy Array\n", | |
"# Predict for One Observation (image)\n", | |
"logisticRegr.predict(x_test[0].reshape(1,-1))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 138, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"array([2, 8, 2, 6, 6, 7, 1, 9, 8, 5])" | |
] | |
}, | |
"execution_count": 138, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Predict for Multiple Observations (images) at Once\n", | |
"logisticRegr.predict(x_test[0:10])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 139, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Make predictions on entire test data\n", | |
"predictions = logisticRegr.predict(x_test)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 113, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(450,)" | |
] | |
}, | |
"execution_count": 113, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"predictions.shape" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Measuring Model Performance" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"accuracy (fraction of correct predictions): correct predictions / total number of data points" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Basically, how the model performs on new data (test set)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 140, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0.953333333333\n" | |
] | |
} | |
], | |
"source": [ | |
"# Use score method to get accuracy of model\n", | |
"score = logisticRegr.score(x_test, y_test)\n", | |
"print(score)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Confusion Matrix (Matplotlib)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"A confusion matrix is a table that is often used to describe the performance of a classification model (or \"classifier\") on a set of test data for which the true values are known. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 142, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def plot_confusion_matrix(cm, title='Confusion matrix', cmap='Pastel1'):\n", | |
" plt.figure(figsize=(9,9))\n", | |
" plt.imshow(cm, interpolation='nearest', cmap=cmap)\n", | |
" plt.title(title, size = 15)\n", | |
" plt.colorbar()\n", | |
" tick_marks = np.arange(10)\n", | |
" plt.xticks(tick_marks, [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"], rotation=45, size = 10)\n", | |
" plt.yticks(tick_marks, [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"], size = 10)\n", | |
" plt.tight_layout()\n", | |
" plt.ylabel('Actual label', size = 15)\n", | |
" plt.xlabel('Predicted label', size = 15)\n", | |
" width, height = cm.shape\n", | |
"\n", | |
" for x in xrange(width):\n", | |
" for y in xrange(height):\n", | |
" plt.annotate(str(cm[x][y]), xy=(y, x), \n", | |
" horizontalalignment='center',\n", | |
" verticalalignment='center')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 143, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Confusion matrix\n", | |
"[[37 0 0 0 0 0 0 0 0 0]\n", | |
" [ 0 39 0 0 0 0 2 0 2 0]\n", | |
" [ 0 0 41 3 0 0 0 0 0 0]\n", | |
" [ 0 0 1 43 0 0 0 0 0 1]\n", | |
" [ 0 0 0 0 38 0 0 0 0 0]\n", | |
" [ 0 1 0 0 0 47 0 0 0 0]\n", | |
" [ 0 0 0 0 0 0 52 0 0 0]\n", | |
" [ 0 1 0 1 1 0 0 45 0 0]\n", | |
" [ 0 3 1 0 0 0 0 0 43 1]\n", | |
" [ 0 0 0 1 0 1 0 0 1 44]]\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x115a0e190>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1159f2990>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# confusion matrix\n", | |
"confusion = metrics.confusion_matrix(y_test, predictions)\n", | |
"print('Confusion matrix')\n", | |
"print(confusion)\n", | |
"plt.figure()\n", | |
"plot_confusion_matrix(confusion);\n", | |
"plt.show();" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Confusion Matrix (Seaborn)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"<b>Note: Seaborn needs to be installed for this portion </b>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 144, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# !conda install seaborn -y" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 145, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"# Make predictions on test data\n", | |
"predictions = logisticRegr.predict(x_test)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 146, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"cm = metrics.confusion_matrix(y_test, predictions)\n", | |
"#cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 147, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nrkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x1159f2e10>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(9,9))\n", | |
"sns.heatmap(cm, annot=True, fmt=\".3f\", linewidths=.5, square = True, cmap = 'Blues_r');\n", | |
"plt.ylabel('Actual label');\n", | |
"plt.xlabel('Predicted label');\n", | |
"all_sample_title = 'Accuracy Score: {0}'.format(score)\n", | |
"plt.title(all_sample_title, size = 15);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Display Misclassified images with Predicted Labels" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 148, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"index = 0\n", | |
"misclassifiedIndex = []\n", | |
"for predict, actual in zip(predictions, y_test):\n", | |
" if predict != actual: \n", | |
" misclassifiedIndex.append(index)\n", | |
" index +=1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 149, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nRK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x112075910>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.figure(figsize=(20,4))\n", | |
"for plotIndex, wrong in enumerate(misclassifiedIndex[10:15]):\n", | |
" plt.subplot(1, 5, plotIndex + 1)\n", | |
" plt.imshow(np.reshape(x_test[wrong], (8,8)), cmap=plt.cm.gray)\n", | |
" plt.title('Predicted: {}, Actual: {}'.format(predictions[wrong], y_test[wrong]), fontsize = 20)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Part 2 of the tutorial is located here: [MNIST Logistic Regression](https://github.com/mGalarnyk/Python_Tutorials/blob/master/Sklearn/Logistic_Regression/LogisticRegression_MNIST.ipynb)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"<b>if this tutorial doesn't cover what you are looking for, please leave a comment on the youtube video and I will try to cover what you are interested in. </b>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"[youtube video](https://www.youtube.com/watch?v=71iXeuKFcQM)" | |
] | |
} | |
], | |
"metadata": { | |
"anaconda-cloud": {}, | |
"kernelspec": { | |
"display_name": "Python [conda root]", | |
"language": "python", | |
"name": "conda-root-py" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 2 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython2", | |
"version": "2.7.13" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 1 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment