{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Reconocimiento de digitos usando KNN" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Importamos las librerías necesarias" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import numpy as np\n", "import sklearn\n", "import sklearn.datasets as ds\n", "import sklearn.model_selection as cv\n", "import sklearn.neighbors as nb\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "plt.rcParams['figure.figsize'] = (12, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "cargamos los digitos " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(0.0, 16.0)\n", "(1797, 64)\n" ] } ], "source": [ "digits = ds.load_digits()\n", "X = digits.data\n", "y = digits.target\n", "print((X.min(), X.max()))\n", "print(X.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Más infomacion acerca de esta data en \n", "http://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f6d147427f0>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nrows, ncols = 2, 5\n", "plt.figure(figsize=(6,3));\n", "plt.gray()\n", "for i in range(ncols * nrows):\n", " ax = plt.subplot(nrows, ncols, i + 1)\n", " ax.matshow(digits.images[i,...])\n", " plt.xticks([]); plt.yticks([]);\n", " plt.title(digits.target[i]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Separamos nuestra data de entrenamiento y nuestra data de prueba:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "(X_train, X_test, \n", " y_train, y_test) = cv.train_test_split(X, y, test_size=.25)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Usamos el clasificador de KNN" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "knc = nb.KNeighborsClassifier()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "knc.fit(X_train, y_train);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nos da un margen de acierto de un 98.2%" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.98666666666666669" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knc.score(X_test, y_test)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 16., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0.]])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dibujamos un 1 \n", "one = np.zeros((8, 8))\n", "one[1:-1, 4] = 16 # The image values are in [0, 16].\n", "one[2, 3] = 16\n", "one" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f6d147424a8>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(2,2));\n", "plt.imshow(one, interpolation='none');\n", "plt.grid(False);\n", "plt.xticks(); plt.yticks();\n", "plt.title(\"One\");" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/gerson/anaconda3/envs/py3/lib/python3.6/site-packages/sklearn/utils/validation.py:395: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", " DeprecationWarning)\n" ] }, { "data": { "text/plain": [ "array([1])" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knc.predict(one.ravel())" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 0., 0., 0., 0., 0., 0., 0.],\n", " [ 0., 0., 16., 16., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 16., 16., 16., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 16., 0., 0., 0.],\n", " [ 0., 0., 0., 0., 0., 0., 0., 0.]])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Dibujamos un 7 \n", "seven = np.zeros((8, 8))\n", "seven[1:-1, 4] = 16 # The image values are in [0, 16].\n", "seven[1, 2:5] = 16\n", "seven[4, 3:6] = 16\n", "seven" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "<matplotlib.text.Text at 0x7f6d11bd9710>" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x7f6d11c37240>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(2,2));\n", "plt.imshow(seven, interpolation='none');\n", "plt.grid(False);\n", "plt.xticks(); plt.yticks();\n", "plt.title(\"Seven\")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/gerson/anaconda3/envs/py3/lib/python3.6/site-packages/sklearn/utils/validation.py:395: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.\n", " DeprecationWarning)\n" ] }, { "data": { "text/plain": [ "array([1])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "knc.predict(seven.ravel())" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "/* This template is inspired in the one used by Lorena Barba\n", "in the numerical-mooc repository: https://github.com/numerical-mooc/numerical-mooc\n", "We thank her work and hope you also enjoy the look of the notobooks with this style */\n", "\n", "<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro|Josefin+Sans:400,700,400italic|Ubuntu+Condensed' rel='stylesheet' type='text/css'>\n", "Estilo aplicado\n", "<style>\n", "\n", "\n", "\n", "#notebook_panel { /* main background */\n", " background: #f7f7f7;\n", "}\n", "\n", "div.cell { /* set cell width */\n", " width: 1000px;\n", "}\n", "\n", "div #notebook { /* centre the content */\n", " background: #fff; /* white background for content */\n", " width: 1100px;\n", " margin: auto;\n", " padding-left: 0em;\n", "}\n", "\n", "#notebook li { /* More space between bullet points */\n", " margin-top:0.6em;\n", "}\n", "\n", "/* draw border around running cells */\n", "div.cell.border-box-sizing.code_cell.running { \n", " border: 1px solid #111;\n", "}\n", "\n", "/* Put a solid color box around each cell and its output, visually linking them*/\n", "div.cell.code_cell {\n", " font-family: 'Source Sans Pro', sans-serif;\n", " background-color: rgb(256,256,256);\n", " font-size: 110%;\n", " border-radius: 0px; \n", " padding: 0.5em;\n", " margin-left:1em;\n", " margin-top: 1em;\n", "}\n", "\n", "div.text_cell_render{\n", " font-family: 'Josefin Sans', serif;\n", " line-height: 145%;\n", " font-size: 125%;\n", " font-weight: 500;\n", " width:850px;\n", " margin-left:auto;\n", " margin-right:auto;\n", "}\n", "\n", "\n", "/* Formatting for header cells */\n", ".text_cell_render h1, .text_cell_render h2, .text_cell_render h3,\n", ".text_cell_render h4, .text_cell_render h5 {\n", " font-family: 'Ubuntu Condensed', sans-serif;\n", "}\n", "/*\n", ".text_cell_render h1 {\n", " font-family: Flux, 'Ubuntu Condensed', serif;\n", " font-style:regular;\n", " font-weight: 400; \n", " font-size: 30pt;\n", " text-align: center;\n", " line-height: 100%;\n", " color: #335082;\n", " margin-bottom: 0.5em;\n", " margin-top: 0.5em;\n", " display: block;\n", "}\n", "*/\n", ".text_cell_render h1 {\n", "\tfont-family: Flux, 'Ubuntu Condensed', serif;\n", " font-style:regular;\n", " font-weight: 600;\n", " font-size: 35pt;\n", "\ttext-align: center;\n", " line-height: 100%;\n", " color: #2c7638;\n", " margin-bottom: 0.2em;\n", " margin-top: 0.3em;\n", " display: block;\n", "}\n", "\n", ".text_cell_render h2 {\n", " margin-top:16px;\n", " font-size: 27pt;\n", " font-weight: 550;\n", " margin-bottom: 0.1em;\n", " margin-top: 0.3em;\n", " font-style: regular;\n", " color: #498550\t;\n", "}\t\n", "\n", ".text_cell_render h3 {\n", " font-size: 20pt;\n", " font-weight: 550\n", " text-align: left;\n", " margin-bottom: 0.1em;\n", " margin-top: 0.3em;\n", " font-style: regular;\n", " color: #1a66ab;\n", "}\n", "\n", ".text_cell_render h4 { /*Use this for captions*/\n", " font-size: 18pt;\n", " font-weight: 450\n", " text-align: left;\n", " margin-bottom: 0.1em;\n", " margin-top: 0.3em;\n", " font-style: regular;\n", " color: #578cb4;\n", "}\n", "\n", ".text_cell_render h5 { /*Use this for small titles*/\n", " font-size: 18pt;\n", " font-weight: 550;\n", " color: rgb(163,0,0);\n", " font-style: italic;\n", " margin-bottom: .1em;\n", " margin-top: 0.8em;\n", " display: block;\n", " color: #b21c0d;\n", "}\n", "\n", ".text_cell_render h6 { /*use this for copyright note*/\n", " font-family: 'Ubuntu Condensed', sans-serif;\n", " font-weight: 300;\n", " font-size: 14pt;\n", " line-height: 100%;\n", " color: #252525;\n", " text-align: right;\n", " margin-bottom: 1px;\n", " margin-top: 1px;\n", "}\n", "\n", ".CodeMirror{\n", " font-family: 'Duru Sans', sans-serif;\n", " font-size: 100%;\n", "}\n", "\n", "</style>\n", "<script>\n", " MathJax.Hub.Config({\n", " TeX: {\n", " extensions: [\"AMSmath.js\"],\n", " equationNumbers: { autoNumber: \"AMS\", useLabelIds: true}\n", " },\n", " tex2jax: {\n", " inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n", " displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n", " },\n", " displayAlign: 'center', // Change this to 'center' to center equations.\n", " \"HTML-CSS\": {\n", " styles: {'.MathJax_Display': {\"margin\": 4}}\n", " }\n", " });\n", "</script>\n" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Esta celda da el estilo al notebook\n", "from IPython.core.display import HTML\n", "css_file = '../styles/StyleCursoPython.css'\n", "HTML(open(css_file, \"r\").read())" ] } ], "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.6.0" } }, "nbformat": 4, "nbformat_minor": 2 }