Python Project
{ "cells": [ { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_digits" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "digits = load_digits() " ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ ".. _digits_dataset:\n", "\n", "Optical recognition of handwritten digits dataset\n", "--------------------------------------------------\n", "\n", "**Data Set Characteristics:**\n", "\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", "https://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits\n", "\n", "The data set contains images of hand-written digits: 10 classes where\n", "each class refers to a digit.\n", "\n", "Preprocessing programs made available by NIST were used to extract\n", "normalized bitmaps of handwritten digits from a preprinted form. From a\n", "total of 43 people, 30 contributed to the training set and different 13\n", "to the test set. 32x32 bitmaps are divided into nonoverlapping blocks of\n", "4x4 and the number of on pixels are counted in each block. This generates\n", "an input matrix of 8x8 where each element is an integer in the range\n", "0..16. This reduces dimensionality and gives invariance to small\n", "distortions.\n", "\n", "For info on NIST preprocessing routines, see M. D. Garris, J. L. Blue, G.\n", "T. Candela, D. L. Dimmick, J. Geist, P. J. Grother, S. A. Janet, and C.\n", "L. Wilson, NIST Form-Based Handprint Recognition System, NISTIR 5469,\n", "1994.\n", "\n", ".. topic:: References\n", "\n", " - C. Kaynak (1995) Methods of Combining Multiple Classifiers and Their\n", " Applications to Handwritten Digit Recognition, MSc Thesis, Institute of\n", " Graduate Studies in Science and Engineering, Bogazici University.\n", " - E. Alpaydin, C. Kaynak (1998) Cascading Classifiers, Kybernetika.\n", " - Ken Tang and Ponnuthurai N. Suganthan and Xi Yao and A. Kai Qin.\n", " Linear dimensionalityreduction using relevance weighted LDA. School of\n", " Electrical and Electronic Engineering Nanyang Technological University.\n", " 2005.\n", " - Claudio Gentile. A New Approximate Maximal Margin Classification\n", " Algorithm. NIPS. 2000.\n" ] } ], "source": [ "print(digits.DESCR)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 4, 1, 7, 4, 8, 2, 2, 4, 4, 1, 9, 7, 3, 2, 1, 2, 5])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "digits.target[::100] # target values of every 100th sample" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0., 2., 9., 15., 14., 9., 3., 0.],\n", " [ 0., 4., 13., 8., 9., 16., 8., 0.],\n", " [ 0., 0., 0., 6., 14., 15., 3., 0.],\n", " [ 0., 0., 0., 11., 14., 2., 0., 0.],\n", " [ 0., 0., 0., 2., 15., 11., 0., 0.],\n", " [ 0., 0., 0., 0., 2., 15., 4., 0.],\n", " [ 0., 1., 5., 6., 13., 16., 6., 0.],\n", " [ 0., 2., 12., 12., 13., 11., 0., 0.]])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "digits.images[13] # show array for sample image at index 13" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<matplotlib.image.AxesImage at 0x1b4a17b0>" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPUAAAD4CAYAAAA0L6C7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAALPUlEQVR4nO3d/6uW9R3H8derk2aarlpfUZl9FdpgGQdHCEG6hlrUBoMpFKxiEqPICqL2W/9Aqx9GTMwW5JLNckS4WvQ9trn8ti09Gs41PFmZjOaXpaa998O5BcvTznXf5/p23jwfcPDc59yc9+vm+DrXdV/3dV8fR4QA5HFK0wEAlItSA8lQaiAZSg0kQ6mBZE6t4oeO92kxQZOq+NEn8YTTapkjSYcu6KttliRdNnlPbbMORSX/FYa168DZtc06bW/Nr+4c+LSWMYd0UEfisIf7XiW/yQmapO94XhU/+iR9l86sZY4kDdw3ubZZkrR63qO1zdp65PzaZt3z5qLaZl365LHaZknSKa9vqmXOunj5qzPUkgBAbSg1kAylBpKh1EAylBpIhlIDyVBqIBlKDSRDqYFkCpXa9nzb223vsP1A1aEA9G7EUtvuk/QLSQskXSFpse0rqg4GoDdFttSzJe2IiJ0RcUTSKkk3VRsLQK+KlHqqpF0n3B7sfO0LbC+xvd72+s90uKx8ALpUpNTDvb3rpPezRcSyiOiPiP5xqu/tkAC+qEipByVNP+H2NEm7q4kDYLSKlPptSZfZvsj2eEmLJD1XbSwAvRrxIgkRcdT2nZJelNQnaUVEbKk8GYCeFLrySUSslbS24iwASsAZZUAylBpIhlIDyVBqIBlKDSRDqYFkKDWQTH1rrVRk/+Vn1jbrJ/2v1TZLkhY8e19tsz7/2tHaZv1z/vLaZl3ynztqmyVJl75e67hhsaUGkqHUQDKUGkiGUgPJUGogGUoNJEOpgWQoNZAMpQaSodRAMkVW6Fhhe4/td+oIBGB0imypfyVpfsU5AJRkxFJHxBuS/l1DFgAlKO1dWraXSFoiSRM0sawfC6BLpR0oY9kdoB04+g0kQ6mBZIq8pPW0pD9Jmml70Pbt1ccC0Ksia2ktriMIgHKw+w0kQ6mBZCg1kAylBpKh1EAylBpIhlIDyYz5ZXcmrllX26zX15xe2yxJOuOe+v7mPvTTVbXNevezg7XNuvh3h2ub1RZsqYFkKDWQDKUGkqHUQDKUGkiGUgPJUGogGUoNJEOpgWQoNZBMkWuUTbf9qu0B21ts311HMAC9KXLu91FJ90XERtuTJW2w/VJEbK04G4AeFFl254OI2Nj5fL+kAUlTqw4GoDddvUvL9gxJsySd9NYolt0B2qHwgTLbZ0h6RtLSiNj35e+z7A7QDoVKbXuchgq9MiKerTYSgNEocvTbkh6XNBARD1cfCcBoFNlSz5F0i6S5tjd3PhZWnAtAj4osu/OWJNeQBUAJOKMMSIZSA8lQaiAZSg0kQ6mBZCg1kAylBpKh1EAyY34trczOXvh+0xEqsXThbbXNOmXLptpmtQVbaiAZSg0kQ6mBZCg1kAylBpKh1EAylBpIhlIDyVBqIJkiFx6cYPsvtv/aWXbnoTqCAehNkdNED0uaGxEHOpcKfsv27yPizxVnA9CDIhceDEkHOjfHdT6iylAAelf0Yv59tjdL2iPppYgYdtkd2+ttr/9Mh8vOCaCgQqWOiGMRcaWkaZJm2/7WMPdh2R2gBbo6+h0Rn0h6TdL8StIAGLUiR7/PtX1m5/PTJX1X0raqgwHoTZGj3xdKetJ2n4b+CPwmIp6vNhaAXhU5+v03Da1JDWAM4IwyIBlKDSRDqYFkKDWQDKUGkqHUQDKUGkiGUgPJsOxOi52+dEJts65Y+1Ftsz595FBts8ZfV9uo1mBLDSRDqYFkKDWQDKUGkqHUQDKUGkiGUgPJUGogGUoNJEOpgWQKl7pzQf9NtrnoINBi3Wyp75Y0UFUQAOUouuzONEnXS1pebRwAo1V0S/2IpPslff5Vd2AtLaAdiqzQcYOkPRGx4f/dj7W0gHYosqWeI+lG2+9JWiVpru2nKk0FoGcjljoiHoyIaRExQ9IiSa9ExM2VJwPQE16nBpLp6nJGEfGahpayBdBSbKmBZCg1kAylBpKh1EAylBpIhlIDyVBqIBmW3WmxY1u21zZr6cLbapv1y7Urapt1+w/urW2WJE1cs67WecNhSw0kQ6mBZCg1kAylBpKh1EAylBpIhlIDyVBqIBlKDSRDqYFkCp0m2rmS6H5JxyQdjYj+KkMB6F03535fGxF7K0sCoBTsfgPJFC11SPqD7Q22lwx3B5bdAdqh6O73nIjYbfs8SS/Z3hYRb5x4h4hYJmmZJE3x2VFyTgAFFdpSR8Tuzr97JK2RNLvKUAB6V2SBvEm2Jx//XNL3JL1TdTAAvSmy+32+pDW2j9//1xHxQqWpAPRsxFJHxE5J364hC4AS8JIWkAylBpKh1EAylBpIhlIDyVBqIBlKDSQz5pfd6Tv/vNpm7V1wSW2zJOnwWa5t1o9ufbm2WZePm1TbrH0z+mqbJUkTa502PLbUQDKUGkiGUgPJUGogGUoNJEOpgWQoNZAMpQaSodRAMpQaSKZQqW2faXu17W22B2xfXXUwAL0peu73o5JeiIgf2h6vdpziCmAYI5ba9hRJ10j6sSRFxBFJR6qNBaBXRXa/L5b0saQnbG+yvbxz/e8vYNkdoB2KlPpUSVdJeiwiZkk6KOmBL98pIpZFRH9E9I/TaSXHBFBUkVIPShqMiHWd26s1VHIALTRiqSPiQ0m7bM/sfGmepK2VpgLQs6JHv++StLJz5HunpFuriwRgNAqVOiI2S+qvOAuAEnBGGZAMpQaSodRAMpQaSIZSA8lQaiAZSg0kQ6mBZMb8Wlo656zaRn3zjndqm5XZtVtuqm3WBT//Y22z2oItNZAMpQaSodRAMpQaSIZSA8lQaiAZSg0kQ6mBZCg1kMyIpbY90/bmEz722V5aRzgA3RvxNNGI2C7pSkmy3SfpfUlrKs4FoEfd7n7Pk/SPiPhXFWEAjF63b+hYJOnp4b5he4mkJZI0gfXzgMYU3lJ3rvl9o6TfDvd9lt0B2qGb3e8FkjZGxEdVhQEwet2UerG+YtcbQHsUKrXtiZKuk/RstXEAjFbRZXf+K+nrFWcBUALOKAOSodRAMpQaSIZSA8lQaiAZSg0kQ6mBZCg1kIwjovwfan8sqdu3Z54jaW/pYdoh62PjcTXnGxFx7nDfqKTUvbC9PiL6m85RhayPjcfVTux+A8lQaiCZNpV6WdMBKpT1sfG4Wqg1z6kBlKNNW2oAJaDUQDKtKLXt+ba3295h+4Gm85TB9nTbr9oesL3F9t1NZyqT7T7bm2w/33SWMtk+0/Zq29s6v7urm87UrcafU3cWCHhXQ5dLGpT0tqTFEbG10WCjZPtCSRdGxEbbkyVtkPT9sf64jrN9r6R+SVMi4oam85TF9pOS3oyI5Z0r6E6MiE+aztWNNmypZ0vaERE7I+KIpFWSbmo406hFxAcRsbHz+X5JA5KmNpuqHLanSbpe0vKms5TJ9hRJ10h6XJIi4shYK7TUjlJPlbTrhNuDSvKf/zjbMyTNkrSu2SSleUTS/ZI+bzpIyS6W9LGkJzpPLZbbntR0qG61odQe5mtpXmezfYakZyQtjYh9TecZLds3SNoTERuazlKBUyVdJemxiJgl6aCkMXeMpw2lHpQ0/YTb0yTtbihLqWyP01ChV0ZElssrz5F0o+33NPRUaa7tp5qNVJpBSYMRcXyParWGSj6mtKHUb0u6zPZFnQMTiyQ913CmUbNtDT03G4iIh5vOU5aIeDAipkXEDA39rl6JiJsbjlWKiPhQ0i7bMztfmidpzB3Y7HaBvNJFxFHbd0p6UVKfpBURsaXhWGWYI+kWSX+3vbnztZ9FxNoGM2Fkd0la2dnA7JR0a8N5utb4S1oAytWG3W8AJaLUQDKUGkiGUgPJUGogGUoNJEOpgWT+B/FDnfX6Tk+EAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 432x288 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.imshow(digits.images[13])" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 432x288 with 24 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure, axes = plt.subplots(nrows=4, ncols=6, figsize=(6, 4))\n", "\n", "for item in zip(axes.ravel(), digits.images, digits.target):\n", " axes, image, target = item \n", " axes.imshow(image, cmap=plt.cm.gray_r)\n", " axes.set_xticks([]) # remove x-axis tick marks\n", " axes.set_yticks([]) # remove y-axis tick marks\n", " axes.set_title(target)\n", "plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " digits.data, digits.target, random_state=11, test_size=0.20) \n", "# random_state for reproducibility\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1437, 64)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.shape" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n", " metric_params=None, n_jobs=None, n_neighbors=5, p=2,\n", " weights='uniform')" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.neighbors import KNeighborsClassifier\n", "knn = KNeighborsClassifier()\n", "knn.fit(X=X_train, y=y_train)\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([0, 4, 9, 9, 3, 1, 4, 1, 5, 0, 4, 9, 4, 1, 5, 3, 3, 8, 3, 6])" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predicted = knn.predict(X=X_test)\n", "expected = y_test\n", "\n", "predicted[:20]\n", "expected[:20]\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "array([0, 4, 9, 9, 3, 1, 4, 1, 5, 0, 4, 9, 4, 1, 5, 3, 3, 8, 5, 6])" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predicted[:20]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 4, 9, 9, 3, 1, 4, 1, 5, 0, 4, 9, 4, 1, 5, 3, 3, 8, 3, 6])" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "expected[:20]" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "wrong = [(p, e) for (p, e) in zip(predicted, expected) if p != e]" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(5, 3), (8, 9), (4, 9), (7, 3), (7, 4)]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wrong" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model accuracy:98.61%\n" ] } ], "source": [ "print(\"Model accuracy:%.2f%%\" %(knn.score(X_test,y_test)*100))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.3" } }, "nbformat": 4, "nbformat_minor": 2 }