{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "closing-bread", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "dense-wilderness", "metadata": {}, "source": [ "### Question 1" ] }, { "cell_type": "code", "execution_count": 3, "id": "greater-configuration", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(4, 2)\n", "[[-1. 0. ]\n", " [ 0. 0.25]\n", " [ 1. 1. ]\n", " [ 1. -1. ]]\n", "[[ 1. -1. 0. ]\n", " [ 1. 0. 0.25]\n", " [ 1. 1. 1. ]\n", " [ 1. 1. -1. ]]\n", "[-1 1 1 -1]\n" ] } ], "source": [ "inputs = np.array([[-1, 0], [0, 0.25], [1, 1], [1, -1]])\n", "labels = np.array([-1, 1, 1, -1])\n", "\n", "num_examples, num_features = np.shape(inputs)\n", "print(np.shape(inputs))\n", "print(inputs)\n", "\n", "# Augment points with a dimension for the bias.\n", "inputs = np.concatenate([np.ones((num_examples, 1)), inputs], axis=1)\n", "\n", "print(inputs)\n", "print(labels)" ] }, { "cell_type": "code", "execution_count": 7, "id": "quality-improvement", "metadata": {}, "outputs": [], "source": [ "# One epoch of the perceptron algorithm.\n", "def perceptron_epoch(inputs, labels, w, eta):\n", " mistakes = 0\n", " for x, y in zip(inputs, labels):\n", " # Sign function.\n", " y_hat = 1 if w.dot(x) >= 0 else -1\n", " if y_hat != y:\n", " mistakes += 1\n", " # Perceptron update.\n", " #w += eta * (y - y_hat) * x\n", " w += eta * y * x\n", " print(\"Mistakes: %d\" % mistakes)\n", " return mistakes" ] }, { "cell_type": "code", "execution_count": 8, "id": "confirmed-present", "metadata": {}, "outputs": [], "source": [ "# Plot separation line associated with model w, along with the data.\n", "def plot_separation_line(inputs, labels, w):\n", " # Plot data.\n", " plt.plot(inputs[labels == -1, 1], inputs[labels == -1, 2], \"b.\")\n", " plt.plot(inputs[labels == 1, 1], inputs[labels == 1, 2], \"r.\")\n", " # Plot model separation line.\n", " # w0 + w1*x1 + w2*x2 = 0.\n", " x1 = np.array([-2, 2])\n", " x2 = (-w[0] - w[1]*x1) / w[2]\n", " plt.plot(x1, x2, 'k--')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "id": "dynamic-honduras", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1\n", "Mistakes: 3\n", "[-1. 0. 1.25]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2\n", "Mistakes: 1\n", "[0. 0. 1.5]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3\n", "Mistakes: 2\n", "[0. 1. 1.75]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4\n", "Mistakes: 0\n", "[0. 1. 1.75]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize all weights to 0 (including the bias)\n", "w = np.zeros(num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 5 epochs of perceptron.\n", "#for epoch in range(5):\n", "\n", "mistakes = 1\n", "epoch = 1\n", "while mistakes > 0 and epoch <= 10:\n", " print(\"Epoch %d\" % epoch)\n", " mistakes= perceptron_epoch(inputs, labels, w, eta)\n", " print(w)\n", " plot_separation_line(inputs, labels, w)\n", " epoch += 1" ] }, { "cell_type": "markdown", "id": "southeast-canberra", "metadata": {}, "source": [ "### Question 1.3" ] }, { "cell_type": "code", "execution_count": 12, "id": "polish-reconstruction", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1\n", "Mistakes: 2\n", "[-0.61284488 -0.1594529 0.59140187]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 2\n", "Mistakes: 1\n", "[ 0.38715512 -0.1594529 0.84140187]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 3\n", "Mistakes: 3\n", "[-0.61284488 -0.1594529 2.09140187]\n" ] }, { "data": { "image/png": "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+R18485++vTpzJ49mx07djB8+PAWy333u99l/PjxDBw4kNNPP52pU6eSyWQYMWIEmUyGs846C4BsNsvvf//7Ntffr18/+vXr11VvL89BYGapERG8++677N+/n0wmdw7LXXfdxe9+97smO/tLL72Uf/7nfwZg+vTpfPjhhwAcd9xxjBgxIr8jHzp0KAsWLCCTyTTZ0Q8cOBCAyspKFi9e3O3vs7McBGbW40UEu3fvzu/MI4JLLrkEgK9+9ausXr06P2///v1Mnz6dX/3qVwD84Ac/oK6uLr8Tz2azfPrTnwagV69ePPvsswwdOpRMJsOAAQOQlF9vRUUFN910U/e/4RJzEJjZEW337t289dZbTbpmDh06xLe+lTsfZdasWSxZsoT6+vr8Mp/61Kd49dVXAXjnnXc49thjOf/88/Of3E8//fR823Xr1nHccce1uf4LLrigi97ZkcNBYGbd7tChQ/Tq1QtJvPzyy6xatapJ18w777zD888/D8CNN97Iv/3bvzVZfvTo0fkguPDCCxk9enSTrpmTTjop3/bBBx9st5b2QiAtHARmVjIHDx5k586dbNu2jTPOOIO+ffuybNkyHn300SY7+h07drBr1y4GDhzIww8/zIIFCwAYMmRIfodeX19Pnz59uP7667nyyivzn+YzmQx9+/bNr/NLX/pSud7uUcNBYGaHVV9fz44dO5qcIjlz5kxGjBjBE088wd/93d+xbds2du7cSUQAsGbNGs444wzWr1/P448/nt/B//Ef/zEjRozIv/bXvvY15s2bx/Dhwzn22GNbrHvChAnd9j7TykFglnL79u3j5ZdfbnEu/PXXX8/48eN56qmnmDGj5a/Djx07lhEjRtCvXz9GjBjBueeem++ayWQyjBqV+xmxefPmMW/evDbX39rpl9a9HARmR6EPPviAgwcPcsIJJ7Bnzx7uv//+FufCf+Mb3+Dqq69m/fr1nH/++fllG69ivfzyywE47bTT+M53vtPiFMlhw4YBMGnSJCZNmlSW92ml4SAw60Hef//9/M580KBBnHnmmRw4cIA5c+Y0+TT/7rvvcsstt3DbbbdRX1/PjTfeyDHHHMPw4cPJZDKccsopDB48GIBx48bxy1/+Mr+DHzp0KBUVFfl1jh49mm9/+9vlesvWDRwEZkeAvXv3sm3btiY780wmw1VXXQXkrkDdsGEDe/bs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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 4\n", "Mistakes: 1\n", "[ 0.38715512 -0.1594529 2.34140187]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 5\n", "Mistakes: 2\n", "[0.38715512 0.8405471 2.59140187]\n" ] }, { "data": { "image/png": "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nKNPnz7ExcUxduxYvvrqK78jipQaFQKRINWrV88ff/TRR7ngggv4xz/+QZMmTbjxxhtZt26df+FESokKgUghzIwrr7yS999/n61bt3LHHXewYMGC/HsaHTx4kEOHDvmcUiQ8VAhETuB3v/sdkydPJicnh759+wIwffp0YmNjuf/++9m1a5fPCUVCo0IgUkynnXZa/qGjjh070q1bN5588kmaN2/On/70JxYtWuRzQpGTo0IgchIuueQSXn/9db744gtGjx7NJ598wj//+c/85T/99JOP6URKRoVAJASxsbGMHTuWPXv28MorrwCBG901atSI//mf/2HTpk3+BhQpBhUCkTCoXr06sbGxAOTl5fHnP/+Zl19+mQsuuICuXbvy5ptvcuTIEZ9TihROhUAkzJo0acJLL71EdnY2EyZM4IsvvqBv377s3bsXQM9blnJHhUCklNSvX5/777+fzMxM0tPTadw48OiN5ORkbrrpJlatWqXnJEi5oEIgUsqioqK4+OKLgcDeQPPmzZk/fz5JSUlcfPHFvPLKK7omQXylQiBShqpUqZJ/TcK0adM4dOgQf/nLX5g2bZrf0SSCqRCI+OD000/PP6vogw8+YODAgQDMmjWL5ORklixZor4EKTMhFQIzq2dmS8xsuzesW0ibtmaWbmabzWyDmfUNWvaKme0ys3Xeq20oeUQqGjOja9eunHHGGUDg1hXp6en07NmThIQEpk6dyvfff+9zSqnsQt0jGAEsc861AJZ50wUdBG5xzrUCegGTzaxO0PL7nHNtvde6EPOIVGi33norWVlZzJw5kzp16nD33XfTq1cvv2NJJRdqIUgGZnjjM4A+BRs457Y557Z7418CXwMNQvxckUqrevXq+WcVffLJJzz22GMAfP/99/zxj39k3rx5uiZBwirUQtDQObfXG/8KaHi8xmbWDogGdgTNfsw7ZPSUmVUvYlXMbKiZZZhZRm5uboixRSqGiy++mK5duwKQmZnJpk2buOaaa4iPj2fcuHF8/fXXPieUyuCED683s6XAWYUsGg3McM7VCWq73zn3m34Cb1kjIA0Y4JxbFTTvKwLFIRXY4Zwbc6LQeni9RKq8vDwWLFjA008/zdKlS4mOjiYzMzP/GgWR4znph9c75y47zpvuM7NGzrm93pd6oT9PzKwW8H/A6GNFwHvvY3sTP5vZy8DfTpRH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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nKNPnz7ExcUxduxYvvrqK78jipQaFQKRINWrV88ff/TRR7ngggv4xz/+QZMmTbjxxhtZt26df+FESokKgUghzIwrr7yS999/n61bt3LHHXewYMGC/HsaHTx4kEOHDvmcUiQ8VAhETuB3v/sdkydPJicnh759+wIwffp0YmNjuf/++9m1a5fPCUVCo0IgUkynnXZa/qGjjh070q1bN5588kmaN2/On/70JxYtWuRzQpGTo0IgchIuueQSXn/9db744gtGjx7NJ598wj//+c/85T/99JOP6URKRoVAJASxsbGMHTuWPXv28MorrwCBG901atSI//mf/2HTpk3+BhQpBhUCkTCoXr06sbGxAOTl5fHnP/+Zl19+mQsuuICuXbvy5ptvcuTIEZ9TihROhUAkzJo0acJLL71EdnY2EyZM4IsvvqBv377s3bsXQM9blnJHhUCklNSvX5/777+fzMxM0tPTadw48OiN5ORkbrrpJlatWqXnJEi5oEIgUsqioqK4+OKLgcDeQPPmzZk/fz5JSUlcfPHFvPLKK7omQXylQiBShqpUqZJ/TcK0adM4dOgQf/nLX5g2bZrf0SSCqRCI+OD000/PP6vogw8+YODAgQDMmjWL5ORklixZor4EKTMhFQIzq2dmS8xsuzesW0ibtmaWbmabzWyDmfUNWvaKme0ys3Xeq20oeUQqGjOja9eunHHGGUDg1hXp6en07NmThIQEpk6dyvfff+9zSqnsQt0jGAEsc861AJZ50wUdBG5xzrUCegGTzaxO0PL7nHNtvde6EPOIVGi33norWVlZzJw5kzp16nD33XfTq1cvv2NJJRdqIUgGZnjjM4A+BRs457Y557Z7418CXwMNQvxckUqrevXq+WcVffLJJzz22GMAfP/99/zxj39k3rx5uiZBwirUQtDQObfXG/8KaHi8xmbWDogGdgTNfsw7ZPSUmVUvYlXMbKiZZZhZRm5uboixRSqGiy++mK5duwKQmZnJpk2buOaaa4iPj2fcuHF8/fXXPieUyuCED683s6XAWYUsGg3McM7VCWq73zn3m34Cb1kjIA0Y4JxbFTTvKwLFIRXY4Zwbc6LQeni9RKq8vDwWLFjA008/zdKlS4mOjiYzMzP/GgWR4znph9c75y47zpvuM7NGzrm93pd6oT9PzKwW8H/A6GNFwHvvY3sTP5vZy8DfTpRH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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize weights randomly (including the bias)\n", "w = np.random.randn(num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 5 epochs of perceptron.\n", "for epoch in range(5):\n", " print(\"Epoch %d\" % (epoch + 1))\n", " perceptron_epoch(inputs, labels, w, eta)\n", " print(w)\n", " plot_separation_line(inputs, labels, w)\n", "\n", "# Plot separation line.\n", "plot_separation_line(inputs, labels, w)" ] }, { "cell_type": "markdown", "id": "phantom-marketplace", "metadata": {}, "source": [ "### Question 2" ] }, { "cell_type": "code", "execution_count": 25, "id": "oriental-bearing", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "inputs0 = np.array([0, 0]) + np.random.randn(10, 2)\n", "inputs1 = np.array([0, 3]) + np.random.randn(10, 2)\n", "inputs2 = np.array([2, 2]) + np.random.randn(10, 2)\n", "inputs = np.concatenate([inputs0, inputs1, inputs2], axis=0)\n", "labels = np.array([0]*10 + [1]*10 + [2]*10)\n", "ind = np.random.permutation(30)\n", "inputs = inputs[ind, :]\n", "labels = labels[ind]\n", "\n", "num_examples, num_features = np.shape(inputs)\n", "num_labels = np.max(labels) + 1\n", "\n", "# Augment points with a dimension for the bias.\n", "inputs = np.concatenate([np.ones((num_examples, 1)), inputs], axis=1)\n", "\n", "plt.plot(inputs[labels == 0, 1], inputs[labels == 0, 2], \"b.\")\n", "plt.plot(inputs[labels == 1, 1], inputs[labels == 1, 2], \"r.\")\n", "plt.plot(inputs[labels == 2, 1], inputs[labels == 1, 2], \"g.\")\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "silver-fisher", "metadata": {}, "outputs": [], "source": [ "# One epoch of the multi-class perceptron algorithm.\n", "def multi_class_perceptron_epoch(inputs, labels, W, eta=1):\n", " mistakes = 0\n", " for x, y in zip(inputs, labels):\n", " # Sign function.\n", " y_hat = np.argmax(W.dot(x))\n", " if y_hat != y:\n", " mistakes += 1\n", " # Perceptron update.\n", " W[y, :] += eta * x\n", " W[y_hat, :] -= eta * x\n", " print(\"Mistakes: %d\" % mistakes)" ] }, { "cell_type": "code", "execution_count": 27, "id": "consistent-transmission", "metadata": {}, "outputs": [], "source": [ "# Run classifier.\n", "def multi_class_classify(inputs, W):\n", " predicted_labels = []\n", " for x in inputs:\n", " y_hat = np.argmax(W.dot(x))\n", " predicted_labels.append(y_hat)\n", " predicted_labels = np.array(predicted_labels)\n", " return predicted_labels" ] }, { "cell_type": "code", "execution_count": 28, "id": "decent-mining", "metadata": {}, "outputs": [], "source": [ "# Compute accuracy of predicted labels.\n", "def evaluate(predicted_labels, gold_labels):\n", " accuracy = np.mean(predicted_labels == gold_labels)\n", " return accuracy" ] }, { "cell_type": "code", "execution_count": 29, "id": "opening-timer", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1\n", "Mistakes: 10\n", "Accuracy (training set): 0.533333\n", "\n", "Epoch 2\n", "Mistakes: 10\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 3\n", "Mistakes: 9\n", "Accuracy (training set): 0.700000\n", "\n", "Epoch 4\n", "Mistakes: 9\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 5\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 6\n", "Mistakes: 8\n", "Accuracy (training set): 0.700000\n", "\n", "Epoch 7\n", "Mistakes: 9\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 8\n", "Mistakes: 7\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 9\n", "Mistakes: 9\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 10\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 11\n", "Mistakes: 9\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 12\n", "Mistakes: 9\n", "Accuracy (training set): 0.700000\n", "\n", "Epoch 13\n", "Mistakes: 6\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 14\n", "Mistakes: 8\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 15\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 16\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 17\n", "Mistakes: 9\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 18\n", "Mistakes: 7\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 19\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 20\n", "Mistakes: 6\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 21\n", "Mistakes: 6\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 22\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 23\n", "Mistakes: 7\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 24\n", "Mistakes: 9\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 25\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 26\n", "Mistakes: 9\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 27\n", "Mistakes: 6\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 28\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 29\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 30\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 31\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 32\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 33\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 34\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 35\n", "Mistakes: 9\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 36\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 37\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 38\n", "Mistakes: 6\n", "Accuracy (training set): 0.900000\n", "\n", "Epoch 39\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 40\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 41\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 42\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 43\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 44\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 45\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 46\n", "Mistakes: 7\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 47\n", "Mistakes: 6\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 48\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 49\n", "Mistakes: 8\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 50\n", "Mistakes: 6\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 51\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 52\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 53\n", "Mistakes: 6\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 54\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 55\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 56\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 57\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 58\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 59\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 60\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 61\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 62\n", "Mistakes: 6\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 63\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 64\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 65\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 66\n", "Mistakes: 6\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 67\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 68\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 69\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 70\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 71\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 72\n", "Mistakes: 9\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 73\n", "Mistakes: 7\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 74\n", "Mistakes: 9\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 75\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 76\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 77\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 78\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 79\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 80\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 81\n", "Mistakes: 6\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 82\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 83\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 84\n", "Mistakes: 6\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 85\n", "Mistakes: 9\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 86\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 87\n", "Mistakes: 7\n", "Accuracy (training set): 0.800000\n", "\n", "Epoch 88\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 89\n", "Mistakes: 6\n", "Accuracy (training set): 0.766667\n", "\n", "Epoch 90\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 91\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 92\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 93\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 94\n", "Mistakes: 6\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 95\n", "Mistakes: 8\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 96\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 97\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 98\n", "Mistakes: 8\n", "Accuracy (training set): 0.866667\n", "\n", "Epoch 99\n", "Mistakes: 7\n", "Accuracy (training set): 0.833333\n", "\n", "Epoch 100\n", "Mistakes: 9\n", "Accuracy (training set): 0.833333\n", "\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize all weights to 0 (including the bias)\n", "W = np.zeros((num_labels, num_features+1)) # num_labels x (num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 10 epochs of perceptron.\n", "accuracies = []\n", "for epoch in range(100):\n", " print(\"Epoch %d\" % (epoch + 1))\n", " multi_class_perceptron_epoch(inputs, labels, W, eta)\n", " predicted_labels = multi_class_classify(inputs, W)\n", " accuracy = evaluate(predicted_labels, labels)\n", " print(\"Accuracy (training set): %f\\n\" % accuracy)\n", " accuracies.append(accuracy)\n", " \n", "# Plot accuracies as a function of number of epochs.\n", "plt.plot(range(100), accuracies)\n" ] }, { "cell_type": "markdown", "id": "checked-provision", "metadata": {}, "source": [ "### Question 3" ] }, { "cell_type": "code", "execution_count": 30, "id": "failing-updating", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. -1.]\n", " [ 1. 1.]]\n", "[ 1 -1]\n", "Mistakes: 1\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n", "Mistakes: 0\n", "[-1. -1.]\n" ] } ], "source": [ "# NOT\n", "inputs = np.array([[-1], [1]])\n", "labels = np.array([1, -1])\n", "\n", "num_examples, num_features = np.shape(inputs)\n", "\n", "# Augment points with a dimension for the bias.\n", "inputs = np.concatenate([np.ones((num_examples, 1)), inputs], axis=1)\n", "\n", "print(inputs)\n", "print(labels)\n", "\n", "# Initialize all weights to 0 (including the bias)\n", "w = np.zeros(num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 10 epochs of perceptron.\n", "for epoch in range(10):\n", " perceptron_epoch(inputs, labels, w, eta)\n", " print(w)" ] }, { "cell_type": "code", "execution_count": 33, "id": "strong-swaziland", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. -1. -1.]\n", " [ 1. -1. 1.]\n", " [ 1. 1. -1.]\n", " [ 1. 1. 1.]]\n", "[-1 1 1 -1]\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "Mistakes: 4\n", "[0. 0. 0.]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ ":9: RuntimeWarning: invalid value encountered in true_divide\n", " x2 = (-w[0] - w[1]*x1) / w[2]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "inputs = np.array([[-1, -1], [-1, 1], [1, -1], [1, 1]])\n", "#labels = np.array([-1, -1, -1, 1]) # AND\n", "#labels = np.array([-1, 1, 1, 1]) # OR\n", "labels = np.array([-1, 1, 1, -1]) # XOR\n", "\n", "num_examples, num_features = np.shape(inputs)\n", "\n", "# Augment points with a dimension for the bias.\n", "inputs = np.concatenate([np.ones((num_examples, 1)), inputs], axis=1)\n", "\n", "print(inputs)\n", "print(labels)\n", "\n", "# Initialize all weights to 0 (including the bias)\n", "w = np.zeros(num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 10 epochs of perceptron.\n", "for epoch in range(10):\n", " perceptron_epoch(inputs, labels, w, eta)\n", " \n", "print(w) \n", "plot_separation_line(inputs, labels, w)" ] }, { "cell_type": "markdown", "id": "twelve-belfast", "metadata": {}, "source": [ "### Question 4" ] }, { "cell_type": "code", "execution_count": 34, "id": "prerequisite-narrow", "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_digits\n", "data = load_digits()" ] }, { "cell_type": "code", "execution_count": 35, "id": "focal-acrobat", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. 0. 0. ... 0. 0. 0.]\n", " [ 1. 0. 0. ... 10. 0. 0.]\n", " [ 1. 0. 0. ... 16. 9. 0.]\n", " ...\n", " [ 1. 0. 0. ... 6. 0. 0.]\n", " [ 1. 0. 0. ... 12. 0. 0.]\n", " [ 1. 0. 0. ... 12. 1. 0.]]\n", "[0 1 2 ... 8 9 8]\n", ".. _digits_dataset:\n", "\n", "Optical recognition of handwritten digits dataset\n", "--------------------------------------------------\n", "\n", "**Data Set Characteristics:**\n", "\n", " :Number of Instances: 1797\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", "\n" ] } ], "source": [ "inputs = data.data # num_examples x num_features\n", "labels = data.target # num_examples x num_labels\n", "\n", "num_examples, num_features = np.shape(inputs)\n", "num_labels = np.max(labels)+1 # labels are 0, 1, ..., num_labels-1\n", "\n", "# Augment points with a dimension for the bias.\n", "inputs = np.concatenate([np.ones((num_examples, 1)), inputs], axis=1)\n", "\n", "print(inputs)\n", "print(labels)\n", "\n", "print(data.DESCR)" ] }, { "cell_type": "code", "execution_count": 36, "id": "furnished-algorithm", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPoAAAECCAYAAADXWsr9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAL40lEQVR4nO3d34tc9RnH8c/HNWKiwZWYiBgxFkpAhPxAQkWRNCESq6S56EUiipWW9KIVlxZEe1P9ByS9KEKIGsEY0WiwSGsNmChCq01ibGISi4aICerGH/nhDxrMPr2Yk5Jut+6Z9XzPzu7zfsGQ2dmZeZ7N8pnvObNnzuOIEIDJ7ZzxbgBAeQQdSICgAwkQdCABgg4kQNCBBHoi6LaX237H9ru27ytc61Hbg7b3lqxzVr0rbG+zvc/227bvKVzvfNtv2H6rqvdgyXpVzT7bb9p+oXStqt4h23ts77a9o3CtftubbR+wvd/2dQVrza1+pjOXE7YHGnnyiBjXi6Q+Se9J+p6k8yS9JenqgvVulLRQ0t6Wfr7LJC2srk+X9M/CP58lXVhdnyLpdUk/KPwz/lrSk5JeaOn/9JCkS1qq9bikn1fXz5PU31LdPkkfSbqyiefrhRV9kaR3I+JgRJyS9JSkH5cqFhGvSvqs1POPUO/DiNhVXT8pab+kywvWi4j4ovpySnUpdlSU7dmSbpG0vlSN8WL7InUWhkckKSJORcSxlsovlfReRLzfxJP1QtAvl/TBWV8fVsEgjCfbcyQtUGeVLVmnz/ZuSYOStkZEyXprJd0raahgjeFC0ku2d9peU7DOVZKOSnqs2jVZb/uCgvXOtkrSpqaerBeCnoLtCyU9K2kgIk6UrBURpyNivqTZkhbZvqZEHdu3ShqMiJ0lnv9b3BARCyXdLOmXtm8sVOdcdXbzHo6IBZK+lFT0PSRJsn2epBWSnmnqOXsh6EckXXHW17Or2yYN21PUCfnGiHiurbrVZuY2ScsLlbhe0grbh9TZ5Vpi+4lCtf4jIo5U/w5K2qLO7l8JhyUdPmuLaLM6wS/tZkm7IuLjpp6wF4L+d0nft31V9Uq2StIfx7mnxti2Ovt4+yPioRbqzbTdX12fKmmZpAMlakXE/RExOyLmqPN7ezkibi9R6wzbF9iefua6pJskFfkLSkR8JOkD23Orm5ZK2lei1jCr1eBmu9TZNBlXEfGN7V9J+os67zQ+GhFvl6pne5OkxZIusX1Y0u8i4pFS9dRZ9e6QtKfab5ak30bEnwrVu0zS47b71HkhfzoiWvmzV0sulbSl8/qpcyU9GREvFqx3t6SN1SJ0UNJdBWudefFaJukXjT5v9VY+gEmsFzbdARRG0IEECDqQAEEHEiDoQAI9FfTChzOOWy3qUW+86/VU0CW1+Z/Z6i+OetQbz3q9FnQABRQ5YMb2pD4KZ9asWV0/5uuvv9bUqVPHVK+vr6/rx3z11VeaNm3amOpdfPHFXT/m888/H9PjJI3p/+Xo0aOaOXPmmOqdPn2668d8+umnmjFjxpjq7dmzp+vHDA0N6Zxzul+Hh4aGNDQ05OG3j/shsBPRbbfd1mq9/v7+VuutXLmy1Xrz5s1rtd7x48dbrTdnzpzWap08eXLE29l0BxIg6EACBB1IgKADCRB0IAGCDiRA0IEECDqQQK2gtzkyCUDzRg16dZLBP6hzCtqrJa22fXXpxgA0p86K3urIJADNqxP0NCOTgMmqsQ+1VB+Ub/szuwBqqBP0WiOTImKdpHXS5P+YKjDR1Nl0n9Qjk4AMRl3R2x6ZBKB5tfbRqzlhpWaFASiMI+OABAg6kABBBxIg6EACBB1IgKADCRB0IAGCDiTApJYJ4NixY63WGxgYmNT12p580/bvbySs6EACBB1IgKADCRB0IAGCDiRA0IEECDqQAEEHEiDoQAIEHUigzkimR20P2t7bRkMAmldnRd8gaXnhPgAUNGrQI+JVSZ+10AuAQthHBxJg9hqQQGNBZ/Ya0LvYdAcSqPPntU2S/ippru3Dtn9Wvi0ATaozZHF1G40AKIdNdyABgg4kQNCBBAg6kABBBxIg6EACBB1IgKADCTii+cPSOdZ9YnvggQdarbdy5cpW6y1evLjVem3PXosID7+NFR1IgKADCRB0IAGCDiRA0IEECDqQAEEHEiDoQAIEHUiAoAMJ1Dk55BW2t9neZ/tt2/e00RiA5tQ5r/s3kn4TEbtsT5e00/bWiNhXuDcADakze+3DiNhVXT8pab+ky0s3BqA5Xe2j254jaYGk14t0A6CI2iOZbF8o6VlJAxFxYoTvM3sN6FG1gm57ijoh3xgRz410H2avAb2rzrvulvSIpP0R8VD5lgA0rc4++vWS7pC0xPbu6vKjwn0BaFCd2WuvSfqfU9MAmDg4Mg5IgKADCRB0IAGCDiRA0IEECDqQAEEHEiDoQAK1P9TSy9qepdV2vbYNDAyMdwtFtT3rbcOGDa3WGwkrOpAAQQcSIOhAAgQdSICgAwkQdCABgg4kQNCBBAg6kABBBxKocxbY822/Yfutavbag200BqA5dY51/5ekJRHxRXV+99ds/zki/la4NwANqXMW2JD0RfXllOrCgAZgAqm1j267z/ZuSYOStkYEs9eACaRW0CPidETMlzRb0iLb1wy/j+01tnfY3tFwjwC+o67edY+IY5K2SVo+wvfWRcS1EXFtQ70BaEidd91n2u6vrk+VtEzSgcJ9AWhQnXfdL5P0uO0+dV4Yno6IF8q2BaBJdd51/4ekBS30AqAQjowDEiDoQAIEHUiAoAMJEHQgAYIOJEDQgQQIOpDApJi9dujQoVbrzZ8/v9V6k33WW9uz0LZv395qvV7Aig4kQNCBBAg6kABBBxIg6EACBB1IgKADCRB0IAGCDiRA0IEEage9GuLwpm1ODAlMMN2s6PdI2l+qEQDl1B3JNFvSLZLWl20HQAl1V/S1ku6VNFSuFQCl1JnUcqukwYjYOcr9mL0G9Kg6K/r1klbYPiTpKUlLbD8x/E7MXgN616hBj4j7I2J2RMyRtErSyxFxe/HOADSGv6MDCXR1KqmI2C5pe5FOABTDig4kQNCBBAg6kABBBxIg6EACBB1IgKADCRB0IAFHRPNPajf/pImV+B19m7ZnoT3//POt1pvsIsLDb2NFBxIg6EACBB1IgKADCRB0IAGCDiRA0IEECDqQAEEHEiDoQAK1zhlXner5pKTTkr7hlM7AxNLNySF/GBGfFOsEQDFsugMJ1A16SHrJ9k7ba0o2BKB5dTfdb4iII7ZnSdpq+0BEvHr2HaoXAF4EgB5Ua0WPiCPVv4OStkhaNMJ9mL0G9Kg601QvsD39zHVJN0naW7oxAM2ps+l+qaQtts/c/8mIeLFoVwAaNWrQI+KgpHkt9AKgEP68BiRA0IEECDqQAEEHEiDoQAIEHUiAoAMJEHQggW4+j47K2rVrW613/PjxVuu98sorrdZDeazoQAIEHUiAoAMJEHQgAYIOJEDQgQQIOpAAQQcSIOhAAgQdSKBW0G33295s+4Dt/bavK90YgObUPdb995JejIif2D5P0rSCPQFo2KhBt32RpBsl/VSSIuKUpFNl2wLQpDqb7ldJOirpMdtv2l5fDXL4L7bX2N5he0fjXQL4TuoE/VxJCyU9HBELJH0p6b7hd2IkE9C76gT9sKTDEfF69fVmdYIPYIIYNegR8ZGkD2zPrW5aKmlf0a4ANKruu+53S9pYveN+UNJd5VoC0LRaQY+I3ZLY9wYmKI6MAxIg6EACBB1IgKADCRB0IAGCDiRA0IEECDqQALPXxmDx4sWt1rvzzjtbrXfs2LFW66E8VnQgAYIOJEDQgQQIOpAAQQcSIOhAAgQdSICgAwkQdCCBUYNue67t3WddTtgeaKE3AA0Z9RDYiHhH0nxJst0n6YikLWXbAtCkbjfdl0p6LyLeL9EMgDK6DfoqSZtKNAKgnNpBr87pvkLSM//n+8xeA3pUNx9TvVnSroj4eKRvRsQ6SeskyXY00BuAhnSz6b5abLYDE1KtoFdjkpdJeq5sOwBKqDuS6UtJMwr3AqAQjowDEiDoQAIEHUiAoAMJEHQgAYIOJEDQgQQIOpAAQQcScETznz+xfVTSWD6zfomkTxpupxdqUY96bdW7MiJmDr+xSNDHyvaOiLh2stWiHvXGux6b7kACBB1IoNeCvm6S1qIe9ca1Xk/towMoo9dWdAAFEHQgAYIOJEDQgQQIOpDAvwFsHo+KSJ11OgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Visualize image examples.\n", "import matplotlib.pyplot as plt\n", "plt.gray()\n", "for i in range(10):\n", " plt.matshow(data.images[i])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 37, "id": "global-scientist", "metadata": {}, "outputs": [], "source": [ "# Split between train and test data.\n", "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(inputs, labels, test_size=0.2, random_state=42)" ] }, { "cell_type": "code", "execution_count": 38, "id": "secret-recognition", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1\n", "Mistakes: 329\n", "Accuracy (training set): 0.888657\n", "Accuracy (test set): 0.858333\n", "\n", "Epoch 2\n", "Mistakes: 161\n", "Accuracy (training set): 0.937370\n", "Accuracy (test set): 0.916667\n", "\n", "Epoch 3\n", "Mistakes: 120\n", "Accuracy (training set): 0.956159\n", "Accuracy (test set): 0.936111\n", "\n", "Epoch 4\n", "Mistakes: 91\n", "Accuracy (training set): 0.866388\n", "Accuracy (test set): 0.877778\n", "\n", "Epoch 5\n", "Mistakes: 89\n", "Accuracy (training set): 0.941545\n", "Accuracy (test set): 0.933333\n", "\n", "Epoch 6\n", "Mistakes: 82\n", "Accuracy (training set): 0.947112\n", "Accuracy (test set): 0.919444\n", "\n", "Epoch 7\n", "Mistakes: 73\n", "Accuracy (training set): 0.961030\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 8\n", "Mistakes: 80\n", "Accuracy (training set): 0.951287\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 9\n", "Mistakes: 83\n", "Accuracy (training set): 0.934586\n", "Accuracy (test set): 0.925000\n", "\n", "Epoch 10\n", "Mistakes: 74\n", "Accuracy (training set): 0.974252\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 11\n", "Mistakes: 52\n", "Accuracy (training set): 0.949200\n", "Accuracy (test set): 0.944444\n", "\n", "Epoch 12\n", "Mistakes: 66\n", "Accuracy (training set): 0.947112\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 13\n", "Mistakes: 55\n", "Accuracy (training set): 0.971468\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 14\n", "Mistakes: 48\n", "Accuracy (training set): 0.972164\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 15\n", "Mistakes: 50\n", "Accuracy (training set): 0.974252\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 16\n", "Mistakes: 62\n", "Accuracy (training set): 0.958246\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 17\n", "Mistakes: 57\n", "Accuracy (training set): 0.950592\n", "Accuracy (test set): 0.941667\n", "\n", "Epoch 18\n", "Mistakes: 38\n", "Accuracy (training set): 0.983299\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 19\n", "Mistakes: 50\n", "Accuracy (training set): 0.980515\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 20\n", "Mistakes: 38\n", "Accuracy (training set): 0.972164\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 21\n", "Mistakes: 34\n", "Accuracy (training set): 0.970077\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 22\n", "Mistakes: 37\n", "Accuracy (training set): 0.974948\n", "Accuracy (test set): 0.944444\n", "\n", "Epoch 23\n", "Mistakes: 42\n", "Accuracy (training set): 0.990257\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 24\n", "Mistakes: 39\n", "Accuracy (training set): 0.962422\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 25\n", "Mistakes: 28\n", "Accuracy (training set): 0.971468\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 26\n", "Mistakes: 30\n", "Accuracy (training set): 0.974948\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 27\n", "Mistakes: 27\n", "Accuracy (training set): 0.984690\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 28\n", "Mistakes: 26\n", "Accuracy (training set): 0.949896\n", "Accuracy (test set): 0.930556\n", "\n", "Epoch 29\n", "Mistakes: 26\n", "Accuracy (training set): 0.981211\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 30\n", "Mistakes: 24\n", "Accuracy (training set): 0.981211\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 31\n", "Mistakes: 28\n", "Accuracy (training set): 0.958246\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 32\n", "Mistakes: 34\n", "Accuracy (training set): 0.983299\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 33\n", "Mistakes: 24\n", "Accuracy (training set): 0.990257\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 34\n", "Mistakes: 23\n", "Accuracy (training set): 0.990953\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 35\n", "Mistakes: 23\n", "Accuracy (training set): 0.991649\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 36\n", "Mistakes: 19\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 37\n", "Mistakes: 9\n", "Accuracy (training set): 0.962422\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 38\n", "Mistakes: 24\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 39\n", "Mistakes: 28\n", "Accuracy (training set): 0.992345\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 40\n", "Mistakes: 17\n", "Accuracy (training set): 0.994433\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 41\n", "Mistakes: 16\n", "Accuracy (training set): 0.991649\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 42\n", "Mistakes: 21\n", "Accuracy (training set): 0.986082\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 43\n", "Mistakes: 26\n", "Accuracy (training set): 0.993041\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 44\n", "Mistakes: 23\n", "Accuracy (training set): 0.989562\n", "Accuracy (test set): 0.972222\n", "\n", "Epoch 45\n", "Mistakes: 14\n", "Accuracy (training set): 0.995129\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 46\n", "Mistakes: 21\n", "Accuracy (training set): 0.978427\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 47\n", "Mistakes: 15\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.972222\n", "\n", "Epoch 48\n", "Mistakes: 14\n", "Accuracy (training set): 0.993041\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 49\n", "Mistakes: 22\n", "Accuracy (training set): 0.986778\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 50\n", "Mistakes: 26\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 51\n", "Mistakes: 21\n", "Accuracy (training set): 0.986082\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 52\n", "Mistakes: 13\n", "Accuracy (training set): 0.966597\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 53\n", "Mistakes: 14\n", "Accuracy (training set): 0.992345\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 54\n", "Mistakes: 12\n", "Accuracy (training set): 0.990953\n", "Accuracy (test set): 0.969444\n", "\n", "Epoch 55\n", "Mistakes: 16\n", "Accuracy (training set): 0.997216\n", "Accuracy (test set): 0.969444\n", "\n", "Epoch 56\n", "Mistakes: 4\n", "Accuracy (training set): 0.995825\n", "Accuracy (test set): 0.966667\n", "\n", "Epoch 57\n", "Mistakes: 13\n", "Accuracy (training set): 0.983994\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 58\n", "Mistakes: 15\n", "Accuracy (training set): 0.983994\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 59\n", "Mistakes: 19\n", "Accuracy (training set): 0.994433\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 60\n", "Mistakes: 9\n", "Accuracy (training set): 0.991649\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 61\n", "Mistakes: 11\n", "Accuracy (training set): 0.986778\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 62\n", "Mistakes: 17\n", "Accuracy (training set): 0.997912\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 63\n", "Mistakes: 5\n", "Accuracy (training set): 0.995825\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 64\n", "Mistakes: 8\n", "Accuracy (training set): 0.983994\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 65\n", "Mistakes: 9\n", "Accuracy (training set): 0.995825\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 66\n", "Mistakes: 15\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 67\n", "Mistakes: 17\n", "Accuracy (training set): 0.996521\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 68\n", "Mistakes: 10\n", "Accuracy (training set): 0.978427\n", "Accuracy (test set): 0.944444\n", "\n", "Epoch 69\n", "Mistakes: 14\n", "Accuracy (training set): 0.993737\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 70\n", "Mistakes: 14\n", "Accuracy (training set): 0.995825\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 71\n", "Mistakes: 10\n", "Accuracy (training set): 0.999304\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 72\n", "Mistakes: 7\n", "Accuracy (training set): 0.995129\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 73\n", "Mistakes: 15\n", "Accuracy (training set): 0.978427\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 74\n", "Mistakes: 13\n", "Accuracy (training set): 0.994433\n", "Accuracy (test set): 0.961111\n", "\n", "Epoch 75\n", "Mistakes: 14\n", "Accuracy (training set): 0.992345\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 76\n", "Mistakes: 14\n", "Accuracy (training set): 0.999304\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 77\n", "Mistakes: 5\n", "Accuracy (training set): 0.993041\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 78\n", "Mistakes: 9\n", "Accuracy (training set): 0.994433\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 79\n", "Mistakes: 9\n", "Accuracy (training set): 0.996521\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 80\n", "Mistakes: 11\n", "Accuracy (training set): 0.988170\n", "Accuracy (test set): 0.944444\n", "\n", "Epoch 81\n", "Mistakes: 7\n", "Accuracy (training set): 0.989562\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 82\n", "Mistakes: 11\n", "Accuracy (training set): 0.990257\n", "Accuracy (test set): 0.963889\n", "\n", "Epoch 83\n", "Mistakes: 9\n", "Accuracy (training set): 0.990953\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 84\n", "Mistakes: 13\n", "Accuracy (training set): 0.993041\n", "Accuracy (test set): 0.947222\n", "\n", "Epoch 85\n", "Mistakes: 10\n", "Accuracy (training set): 0.994433\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 86\n", "Mistakes: 6\n", "Accuracy (training set): 0.992345\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 87\n", "Mistakes: 4\n", "Accuracy (training set): 0.995129\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 88\n", "Mistakes: 14\n", "Accuracy (training set): 0.997216\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 89\n", "Mistakes: 13\n", "Accuracy (training set): 0.988866\n", "Accuracy (test set): 0.950000\n", "\n", "Epoch 90\n", "Mistakes: 14\n", "Accuracy (training set): 0.996521\n", "Accuracy (test set): 0.955556\n", "\n", "Epoch 91\n", "Mistakes: 7\n", "Accuracy (training set): 0.997216\n", "Accuracy (test set): 0.958333\n", "\n", "Epoch 92\n", "Mistakes: 3\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 93\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 94\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 95\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 96\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 97\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 98\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 99\n", "Mistakes: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n", "Epoch 100\n", "Mistakes: 0\n", "Accuracy (training set): 1.000000\n", "Accuracy (test set): 0.952778\n", "\n" ] }, { "data": { "image/png": "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VlaG8ePH44QTTsCKFSvQo0cPfPTRR4h10aBPPvkEDz30EGpqapCamoq33noLXbt2RVlZGW644QasXr0aRIT77rsPZ599Nr744gv83//9H+rr65GWlobFixc36buwp9Bri16j0fjhkUcewbp16/Cz0cIsXboUa9aswbp16xpCF2fPno2UlBRUVlZi2LBhOPvss5Gamup0nPz8fLzzzjt4+eWXce655+K///0vLr74YqdtTjjhBKxatQpEhFdeeQWPPfYYnnzySTz44INISkrCr7/+CgAoLi5GYWEhrrnmGixbtgxZWVkoKnJLJhA0HVLotUWv0bQtfFneLcnw4cOd4tOfffZZLFiwAACwfft25Ofnuwl9VlYWBg8eDADIycnBn3/+6XbcgoICnHfeedi1axdqamoazrFo0SLMmzevYbvOnTvjk08+wUknndSwTUpKSpOvy54+ej9RN9qi12g0noiPj2/4vHTpUixatAgrV67E2rVrMWTIEI/x69EWyzE8PNyjf/+GG27AtGnT8Ouvv+Kll15q8dHA9hJ6PxZ9RAQQFqYteo1GAyQmJuLgwYNe15eWlqJz586Ii4vDxo0bsWrVqkafq7S0FD16SC7IOXPmNJSfcsopeP755xuWi4uLceyxx2LZsmX4448/ACAkrht7Cr0Pkz0qSlv0Go0GSE1NxfHHH4/DDz8ct99+u9v6cePGoa6uDgMHDsRdd92FY489ttHnuv/++3HOOecgJycHaWlpDeXTp09HcXExDj/8cBx11FFYsmQJ0tPTMWvWLEyZMgVHHXUUzjvvvEafV0GSqaDtMHToUF69enXjdr7jDuC550wXjgeSkoBhw4BFixpZQY1GExI2bNiAgQMHtnY12iWevjsiymPmoZ62t59F78Vto4iO1ha9RqPpWHQ4oY+K0j56jUbTsbCX0FdWeo24USQmAp06+dxEo9FobIX94uj9WPRvvw2EICxVo9Fo2g0dTuiHDGmhumg0Gk0bocO5bjQajaajYS+hD8Ci12g0GqBpaYoB4Omnn0aFGrvTxtFCr9FoOiQdSegD8tET0TgAzwAIB/AKMz/isr4ngDkAko1t7jKmHwQRHQngJQCdADgADGPm5kn0oF03Gk37pBXyFLumKX788cfx+OOP47333kN1dTUmT56MBx54AOXl5Tj33HNRUFCA+vp63HvvvdizZw927tyJk08+GWlpaViyZInTsWfOnIlPPvkElZWVGDFiBF566SUQETZv3oxrr70WhYWFCA8Px/vvv48+ffrg0Ucfxdy5cxEWFobx48fjkUce8VLrxuFX6IkoHDLJ9ykACgD8SEQfG/PEKqZDJg1/kYgGQeaX7U1EEQDmAriEmdcSUSqA2pBegRVt0Ws0mgBxTVP81VdfIT8/Hz/88AOYGWeeeSaWLVuGwsJCdO/eHZ999hkAyVuTlJSEf/3rX1iyZIlTSgPFtGnTMGOGTKt9ySWX4NNPP8UZZ5yBiy66CHfddRcmT56MqqoqOBwOfP755/joo4/w/fffIy4uLiS5bVwJxKIfDmAzM28FACKaB2ASAKvQM8RiB4AkADuNz6cC+IWZ1wIAM+8PRaW9ooVeo2mftIE8xV999RW++uorDDFC88rKypCfn48TTzwRt956K+68806cfvrpOPHEE/0ea8mSJXjsscdQUVGBoqIiHHbYYRg1ahR27NiByZMnAwBijCH6ixYtwhVXXIE4Q7tCkZbYlUCEvgeA7ZblAgDHuGxzP4CviOgGAPEAxhrl/QEwEX0JIB3APGZ+rEk19gazdt1oNJpGw8y4++67MXXqVLd1a9aswcKFCzF9+nSMGTOmwVr3RFVVFa677jqsXr0amZmZuP/++1s8LbEroeqMvQDA68ycAWACgDeJKAzSkJwA4CLjfTIRjXHdmYhyiWg1Ea0uLCxsXA2qq0XstUWv0WgCwDVN8WmnnYbZs2ejrKwMALBjxw7s3bsXO3fuRFxcHC6++GLcfvvtWLNmjcf9FUrU09LSUFZWhvnz5zdsn5GRgQ8//BAAUF1djYqKCpxyyil47bXXGjp2W8t1swNApmU5wyizchWAcQDAzCuJKAZAGsT6X8bM+wCAiBYCOBqA0wSIzDwLwCxAslcGfxnwm4teo9ForFjTFI8fPx6PP/44NmzYgOOOOw4AkJCQgLlz52Lz5s24/fbbERYWhsjISLz44osAgNzcXIwbNw7du3d36oxNTk7GNddcg8MPPxzdunXDsGHDGta9+eabmDp1KmbMmIHIyEi8//77GDduHH7++WcMHToUUVFRmDBhAh5++OGQXqvfNMVGh+rvAMZABP5HABcy82+WbT4H8C4zv05EAyFC3gMShbMYYs3XAPgCwFPM/Jm38zU6TXFJCTB1KnDllcBppwW/v0ajaVF0muLGE2yaYr8WPTPXEdE0AF9CQidnM/NvRDQTwGpm/hjArQBeJqKbIR2zl7O0IMVE9C9I48AAFvoS+SaRnAy8+26zHFqj0WjaMwHF0Rsx8QtdymZYPq8HcLyXfedCQiw1Go1G0wrYa2SsRqNpV7S1Ge7aA435zrTQazSaViEmJgb79+/XYh8EzIz9+/c3xOAHir3SFGs0mnZDRkYGCgoK0OiQ6g5KTEwMMjIygtpHC71Go2kVIiMjkZWV1drV6BBo141Go9HYHC30Go1GY3O00Gs0Go3N8TsytqUhokIAfzXhEGkA9oWoOu2FjnjNQMe87o54zUDHvO5gr7kXM6d7WtHmhL6pENFqb8OA7UpHvGagY153R7xmoGNedyivWbtuNBqNxuZooddoNBqbY0ehn9XaFWgFOuI1Ax3zujviNQMd87pDds2289FrNBqNxhk7WvQajUajsaCFXqPRaGyObYSeiMYR0SYi2kxEd7V2fZoLIsokoiVEtJ6IfiOiG43yFCL6mojyjffOrV3XUENE4UT0ExF9aixnEdH3xj1/l4iiWruOoYaIkoloPhFtJKINRHSc3e81Ed1s/LbXEdE7RBRjx3tNRLOJaC8RrbOUeby3JDxrXP8vRHR0MOeyhdATUTiA5wGMBzAIwAVENKh1a9Vs1AG4lZkHATgWwPXGtd4FYDEz94NM32jHxu5GABssy49CpqbsC6AYMnex3XgGwBfMPADAUZDrt+29JqIeAP4fgKHMfDhkVrvzYc97/TqMubYteLu34wH0M165AF4M5kS2EHoAwwFsZuatzFwDYB6ASa1cp2aBmXcx8xrj80HIH78H5HrnGJvNAXBWq1SwmSCiDAATAbxiLBOA0QDmG5vY8ZqTAJwE4FUAYOYaZi6Bze81JKturDFfdRyAXbDhvWbmZQCKXIq93dtJAN5gYRWAZCI6JNBz2UXoewDYblkuMMpsDRH1BjAEwPcAujLzLmPVbgBdW6tezcTTAO4A4DCWUwGUMHOdsWzHe54FoBDAa4bL6hUiioeN7zUz7wDwBIBtEIEvBZAH+99rhbd72ySNs4vQdziIKAHAfwHcxMwHrOuMidltEzdLRKcD2MvMea1dlxYmAsDRAF5k5iEAyuHiprHhve4MsV6zAHQHEA9390aHIJT31i5CvwNApmU5wyizJUQUCRH5t5j5A6N4j3qUM973tlb9moHjAZxJRH9C3HKjIb7rZOPxHrDnPS8AUMDM3xvL8yHCb+d7PRbAH8xcyMy1AD6A3H+732uFt3vbJI2zi9D/CKCf0TMfBem8+biV69QsGL7pVwFsYOZ/WVZ9DOAy4/NlAD5q6bo1F8x8NzNnMHNvyL39hpkvArAEwN+MzWx1zQDAzLsBbCeiQ42iMQDWw8b3GuKyOZaI4ozfurpmW99rC97u7ccALjWib44FUGpx8fiHmW3xAjABwO8AtgC4p7Xr04zXeQLkce4XAD8brwkQn/ViAPkAFgFIae26NtP1jwLwqfE5G8APADYDeB9AdGvXrxmudzCA1cb9/hBAZ7vfawAPANgIYB2ANwFE2/FeA3gH0g9RC3l6u8rbvQVAkMjCLQB+hUQlBXwunQJBo9FobI5dXDcajUaj8YIWeo1Go7E5Wug1Go3G5mih12g0GpujhV6j0WhsjhZ6jUajsTla6DUajcbm/H88ZB2YZWdVOwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Initialize all weights to 0 (including the bias)\n", "W = np.zeros((num_labels, num_features+1)) # num_labels x (num_features + 1)\n", "\n", "# Learning rate.\n", "eta = 1 \n", " \n", "# Run 100 epochs of perceptron.\n", "train_accuracies = []\n", "test_accuracies = []\n", "for epoch in range(100):\n", " print(\"Epoch %d\" % (epoch + 1))\n", "\n", " # Run 1 epoch of training.\n", " multi_class_perceptron_epoch(X_train, y_train, W, eta)\n", " \n", " # Predict on training set and evaluate.\n", " predicted_labels = multi_class_classify(X_train, W)\n", " accuracy = evaluate(predicted_labels, y_train)\n", " print(\"Accuracy (training set): %f\" % accuracy)\n", " train_accuracies.append(accuracy)\n", " \n", " # Predict on test set and evaluate.\n", " predicted_labels = multi_class_classify(X_test, W)\n", " accuracy = evaluate(predicted_labels, y_test)\n", " print(\"Accuracy (test set): %f\\n\" % accuracy)\n", " test_accuracies.append(accuracy)\n", " \n", "# Plot train and test accuracies as a function of number of epochs.\n", "plt.plot(range(100), train_accuracies, 'b-', label='train acc')\n", "plt.plot(range(100), test_accuracies, 'r-', label='test acc')\n", "plt.legend()\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 39, "id": "instant-oregon", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9735560194850382\n", "0.9583333333333334\n" ] } ], "source": [ "from sklearn.linear_model import Perceptron\n", "clf = Perceptron(fit_intercept=False, shuffle=False)\n", "clf.fit(X_train, y_train)\n", "print(clf.score(X_train, y_train))\n", "print(clf.score(X_test, y_test))" ] }, { "cell_type": "code", "execution_count": null, "id": "damaged-nursery", "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.9.2" } }, "nbformat": 4, "nbformat_minor": 5 }