diff --git a/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb b/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb index 363fcab..5889643 100644 --- a/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb +++ b/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb @@ -1,6 +1,151 @@ { - "cells": [], - "metadata": {}, + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "3eb7a65b", + "metadata": {}, + "outputs": [], + "source": [ + "####### Import #######\n", + "from sklearn.datasets import fetch_openml\n", + "import sklearn\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6cb9b8da", + "metadata": {}, + "outputs": [], + "source": [ + "####### Loading data #######\n", + "# mnist = fetch_openml('mnist_784')\n", + "mnist = fetch_openml('mnist_784',as_frame=False)\n", + "images = mnist.data.reshape((-1, 28, 28))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "66f9e13f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAABaCAYAAACG94wzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAALPklEQVR4nO3de4jU1RvH8fd2teyitXaxTNFEu1FmV6WbZZlYZgUKaZkUkpVCmdqFirKwK1Qa2QW6mFGIGlqUFqWJlqalFqQSaUllv81USrGy/f31PHO+zow7O7vfOTM7n9dfD8/OzB6/LmfO95zzPU9NfX09IiJSenvFboCISLVSBywiEok6YBGRSNQBi4hEog5YRCQSdcAiIpHs05gX19bW1nfq1CmlplS+9evXU1dXV1PMe3VtG7Z8+fK6+vr6do19n65tw4q9tqDrW4h817dRHXCnTp348ssvm69VLcwZZ5xR9Ht1bRtWU1OzoZj36do2rNhrC7q+hch3fTUFISISiTpgEZFI1AGLiESiDlhEJBJ1wCIikagDFhGJRB2wiEgkjdoHLNVp+fLlHk+ePBmA1157zXM33HCDx7fffjsAp59+eolaJ1K5NAIWEYlEHbCISCQVMwWxa9cuj7du3brH19pt8vbt2z23Zs0aj6dMmQLA2LFjPffWW28B0KpVK89NmDDB4wceeKCYZlesr7/+2uNLLrnE423btgFQU5M58uL111/3+N133wVg8+bNKbewen388cceX3fddQAsWLDAc926dSt5myrVxIkTPb7//vsBCMu0ffrppwBccMEFqfx+jYBFRCJRBywiEkn0KYgff/wRgL///ttzixcv9njRokUAbNmyxXMzZsxo9O/p0KGDx7ZSP2vWLM8dfPDBAJx66qmeS+u2o5wtXboUgGuuucZz4ZSPTT0ccsghnttvv/08rqurA2DJkiWe69mzZ9brytHChQs9/v333z0eNGhQjObktWzZMo+bcgJftXr11Vc9njRpksd77703kJzuDKfa0qARsIhIJFFGwF999ZXHffr0ARpeWCuGfaNBcrK9devWQGYBA6B9+/YAtG3b1nMtfTHDFilXrFjhuaFDhwLw888/7/G9Xbt29XjcuHEeDx48GIDevXt7zq79Pffc08QWp8sWXADWrVvncbmMgP/77z8AfvjhB8/ZHWS4cCR7tmFD5mje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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Classe : ['5' '0' '4' '1']\n" + ] + } + ], + "source": [ + "####### Printing example of data #######\n", + "fig, figs = plt.subplots(nrows=1, ncols=4)\n", + "for i in range(4):\n", + " figs[i].imshow(images[i],cmap=plt.cm.gray_r,interpolation=\"nearest\")\n", + " figs[i].axes.get_xaxis().set_visible(False)\n", + " figs[i].axes.get_yaxis().set_visible(False)\n", + "plt.show()\n", + "print(\"Classe : \", mnist.target[0:4])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "40907bdc", + "metadata": {}, + "outputs": [], + "source": [ + "####### Printing various information of mnist #######\n", + "# print(mnist)\n", + "# print(mnist.data)\n", + "# print(mnist.target)\n", + "# len(mnist.data)\n", + "# help(len)\n", + "# print(mnist.data.shape)\n", + "# print(mnist.target.shape)\n", + "# mnist.data[0]\n", + "# mnist.data[0][1]\n", + "# mnist.data[:,1]\n", + "# mnist.data[:100]" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "38f52261", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Score : 0.9695238095238096\n" + ] + } + ], + "source": [ + "### Imports\n", + "from sklearn import model_selection\n", + "from sklearn import neighbors\n", + "\n", + "### Data & target variables\n", + "data = mnist.data\n", + "target = mnist.target\n", + "\n", + "### Split the dataset for training and testing\n", + "xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.7)\n", + "\n", + "n_neighbors = 5\n", + "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", + "clf.fit(xtrain, ytrain)\n", + "pred = clf.predict(xtest)\n", + "pred_proba = clf.predict_proba(xtest)\n", + "print(\"Score : \", clf.score(xtest, ytest))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad5a825f", + "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.8.8" + } + }, "nbformat": 4, "nbformat_minor": 5 } diff --git a/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb b/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb index ce7d5e5..72e8780 100644 --- a/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb +++ b/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb @@ -2,23 +2,37 @@ "cells": [ { "cell_type": "code", - "execution_count": 14, + "execution_count": 23, "id": "530f620c", "metadata": {}, "outputs": [], "source": [ + "####### Import #######\n", "from sklearn.datasets import fetch_openml\n", "from sklearn import model_selection\n", "from sklearn import neighbors\n", "import sklearn\n", "import numpy as np\n", - "\n", + "from matplotlib import pyplot as plt\n", + "from sklearn.model_selection import KFold\n", + "import time\n", + "import statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "68b6a517", + "metadata": {}, + "outputs": [], + "source": [ + "####### Loading data #######\n", "mnist = fetch_openml('mnist_784',as_frame=False)" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 3, "id": "eb2c4496", "metadata": {}, "outputs": [ @@ -33,112 +47,114 @@ " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['3' '6' '3' ... '0' '1' '2']\n", - "Prédiction : ['4' '1' '6' '7' '4' '0' '4' '5' '6' '3' '3' '0' '0' '4' '7' '0' '8' '9'\n", - " '6' '0' '8' '8' '1' '7' '7' '9' '7' '5' '9' '7' '0' '8' '5' '8' '7' '0'\n", - " '0' '1' '3' '3' '3' '4' '1' '5' '8' '6' '9' '5' '4' '1' '3' '0' '3' '4'\n", - " '3' '6' '2' '5' '2' '4' '2' '8' '6' '1' '6' '0' '2' '9' '2' '7' '3' '4'\n", - " '2' '6' '7' '9' '0' '0' '0' '2' '7' '6' '4' '8' '4' '1' '9' '2' '3' '9'\n", - " '5' '1' '1' '8' '9' '8' '6' '4' '3' '1' '6' '6' '2' '1' '8' '7' '5' '2'\n", - " '7' '0' '6' '6' '7' '2' '4' '3' '2' '3' '0' '4' '7' '9' '0' '0' '7' '9'\n", - " '7' '7' '2' '6' '4' '6' '0' '6' '8' '3' '1' '4' '6' '7' '3' '1' '9' '2'\n", - " '1' '2' '3' '0' '4' '5' '5' '5' '3' '3' '9' '9' '1' '0' '5' '1' '2' '3'\n", - " '1' '6' '1' '7' '2' '4' '8' '4' '1' '6' '2' '9' '4' '4' '2' '1' '8' '8'\n", - " '6' '2' '5' '8' '6' '7' '6' '9' '3' '3' '9' '4' '5' '0' '5' '4' '0' '0'\n", - " '4' '6' '3' '3' '6' '9' '3' '5' '8' '2' '9' '2' '5' '1' '9' '1' '9' '6'\n", - " '3' '5' '4' '9' '6' '7' '1' '0' '1' '0' '9' '6' '8' '4' '9' '2' '2' '5'\n", - " '0' '7' '3' '1' '6' '1' '3' '1' '9' '7' '4' '6' '8' '0' '3' '8' '5' '1'\n", - " '7' '7' '3' '1' '1' '4' '0' '8' '1' '6' '4' '2' '5' '1' '3' '1' '3' '0'\n", - " '9' '7' '2' '6' '2' '5' '4' '7' '0' '4' '9' '8' '2' '1' '4' '9' '1' '0'\n", - " '7' '3' '7' '1' '4' '8' '2' '0' '6' '7' '6' '6' '3' '5' '2' '4' '1' '0'\n", - " '9' '9' '9' '7' '2' '4' '0' '7' '7' '4' '8' '6' '8' '7' '7' '9' '6' '4'\n", - " '6' '4' '2' '4' '4' '1' '5' '1' '4' '4' '9' '8' '7' '4' '3' '0' '1' '2'\n", - " '7' '9' '4' '7' '7' '1' '7' '5' '7' '6' '4' '1' '9' '6' '2' '2' '1' '3'\n", - " '7' '0' '6' '3' '9' '6' '0' '7' '3' '9' '4' '5' '0' '5' '4' '1' '7' '0'\n", - " '7' '7' '5' '1' '9' '3' '2' '3' '7' '2' '1' '0' '5' '8' '5' '5' '3' '7'\n", - " '7' '4' '5' '2' '9' '9' '2' '2' '3' '5' '1' '8' '6' '2' '3' '7' '9' '8'\n", - " '4' '3' '9' '4' '0' '4' '1' '8' '9' '0' '3' '2' '5' '1' '7' '0' '7' '3'\n", - " '5' '6' '8' '5' '6' '1' '6' '9' '4' '1' '7' '1' '8' '1' '3' '7' '8' '6'\n", - " '1' '1' '7' '0' '5' '2' '7' '4' '4' '8' '4' '2' '7' '2' '9' '2' '8' '7'\n", - " '7' '9' '7' '6' '4' '0' '1' '6' '8' '4' '4' '6' '9' '6' '3' '6' '4' '9'\n", - " '8' '5' '2' '2' '7' '0' '7' '9' '7' '2' '7' '0' '5' '4' '8' '6' '6' '3'\n", - " '1' '5' '1' '5' '9' '7' '3' '4' '6' '5' '1' '9' '6' '8' '4' '5' '5' '2'\n", - " '1' '3' '4' '3' '6' '1' '6' '9' '0' '2' '1' '5' '8' '6' '7' '0' '1' '3'\n", - " '7' '6' '5' '6' '4' '0' '8' '1' '9' '0' '4' '2' '1' '5' '2' '0' '6' '6'\n", - " '4' '8' '0' '2' '7' '5' '9' '3' '3' '6' '3' '3' '0' '2' '8' '6' '6' '5'\n", - " '5' '0' '1' '2' '6' '6' '7' '1' '1' '9' '3' '8' '8' '2' '4' '7' '5' '5'\n", - " '7' '5' '2' '1' '1' '1' '6' '0' '4' '8' '4' '1' '8' '3' '4' '4' '9' '3'\n", - " '7' '6' '3' '5' '7' '5' '4' '7' '1' '7' '5' '4' '7' '9' '4' '8' '6' '9'\n", - " '1' '2' '8' '5' '4' '8' '3' '1' '5' '7' '3' '2' '1' '4' '4' '1' '2' '1'\n", - " '2' '1' '7' '3' '2' '1' '0' '7' '6' '7' '2' '5' '2' '5' '7' '3' '7' '2'\n", - " '9' '1' '4' '3' '3' '7' '6' '8' '5' '1' '2' '8' '2' '0' '3' '1' '8' '4'\n", - " '5' '4' '9' '1' '7' '2' '4' '9' '4' '9' '2' '8' '5' '8' '9' '7' '4' '7'\n", - " '9' '4' '9' '5' '2' '7' '4' '5' '5' '1' '5' '0' '9' '5' '2' '6' '9' '7'\n", - " '3' '8' '1' '9' '6' '6' '5' '3' '1' '2' '8' '0' '5' '9' '3' '3' '5' '3'\n", - " '5' '1' '6' '3' '0' '1' '3' '0' '7' '6' '2' '7' '9' '9' '7' '4' '6' '4'\n", - " '7' '3' '1' '9' '9' '7' '2' '9' '4' '5' '0' '1' '4' '1' '7' '6' '0' '7'\n", - " '5' '2' '6' '4' '8' '5' '3' '7' '9' '4' '3' '1' '9' '2' '2' '8' '5' '7'\n", - " '1' '9' '4' '3' '2' '4' '2' '6' '9' '1' '1' '0' '7' '7' '3' '7' '8' '9'\n", - " '6' '6' '9' '3' '7' '7' '6' '6' '3' '7' '3' '3' '6' '0' '3' '1' '0' '0'\n", - " '8' '1' '3' '5' '7' '7' '9' '3' '9' '3' '1' '7' '2' '3' '6' '7' '0' '4'\n", - " '9' '3' '3' '1' '8' '9' '0' '3' '9' '1' '7' '1' '8' '4' '7' '8' '4' '1'\n", - " '5' '4' '7' '1' '1' '8' '3' '7' '8' '3' '1' '7' '4' '3' '1' '2' '7' '5'\n", - " '7' '9' '5' '9' '5' '4' '7' '4' '0' '4' '2' '4' '2' '1' '7' '9' '3' '0'\n", - " '1' '7' '8' '0' '2' '8' '7' '1' '8' '4' '1' '6' '9' '9' '9' '3' '7' '1'\n", - " '2' '4' '5' '9' '7' '2' '1' '6' '7' '4' '5' '9' '7' '7' '9' '8' '5' '2'\n", - " '5' '4' '0' '1' '9' '8' '2' '2' '9' '7' '3' '5' '2' '1' '4' '6' '7' '3'\n", - " '1' '1' '1' '8' '6' '0' '8' '0' '1' '6' '6' '7' '1' '4' '8' '0' '8' '6'\n", - " '2' '6' '2' '8' '7' '9' '1' '9' '2' '1' '9' '2' '5' '4' '5' '5' '1' '0'\n", - " '6' '3' '8' '5' '0' '2' '6' '8' '7' '2']\n", - "Probabilités : [[0. 0.4 0. ... 0. 0. 0.1]\n", - " [0. 1. 0. ... 0. 0. 0. ]\n", + "Etiquettes : ['8' '2' '9' ... '5' '2' '8']\n", + "Prédiction : ['4' '2' '3' '0' '5' '0' '3' '8' '5' '4' '7' '6' '6' '2' '2' '1' '0' '3'\n", + " '0' '2' '6' '7' '1' '3' '8' '2' '8' '3' '8' '0' '9' '6' '7' '7' '4' '3'\n", + " '4' '8' '6' '9' '8' '8' '3' '2' '6' '3' '4' '2' '1' '2' '7' '1' '0' '6'\n", + " '3' '8' '5' '9' '3' '2' '2' '2' '5' '6' '1' '7' '5' '7' '2' '3' '8' '5'\n", + " '1' '7' '6' '7' '8' '7' '4' '0' '3' '8' '7' '1' '4' '3' '3' '2' '2' '3'\n", + " '1' '1' '0' '6' '3' '9' '1' '0' '7' '5' '6' '2' '1' '0' '2' '5' '9' '2'\n", + " '5' '1' '9' '7' '4' '8' '4' '4' '7' '5' '0' '0' '7' '6' '7' '3' '2' '1'\n", + " '5' '3' '5' '8' '5' '1' '7' '0' '2' '8' '8' '3' '5' '1' '5' '0' '0' '6'\n", + " '0' '5' '3' '4' '3' '9' '7' '3' '5' '5' '5' '7' '2' '0' '5' '3' '5' '8'\n", + " '3' '6' '2' '6' '1' '3' '2' '3' '3' '7' '3' '4' '3' '0' '4' '5' '1' '5'\n", + " '1' '7' '6' '1' '0' '2' '6' '5' '3' '3' '1' '3' '6' '7' '9' '1' '7' '6'\n", + " '2' '5' '2' '6' '2' '3' '3' '3' '1' '3' '7' '7' '6' '8' '3' '1' '4' '5'\n", + " '7' '4' '0' '5' '4' '4' '4' '9' '1' '0' '7' '7' '1' '3' '9' '4' '4' '6'\n", + " '2' '0' '6' '8' '1' '8' '9' '7' '3' '6' '0' '8' '1' '1' '1' '1' '4' '3'\n", + " '0' '6' '3' '1' '3' '7' '1' '0' '8' '4' '5' '7' '5' '3' '9' '5' '0' '2'\n", + " '8' '9' '7' '0' '4' '5' '4' '9' '4' '7' '8' '2' '7' '4' '7' '6' '7' '5'\n", + " '1' '0' '6' '5' '5' '0' '2' '0' '3' '2' '9' '8' '3' '7' '3' '1' '1' '5'\n", + " '8' '2' '6' '6' '0' '2' '0' '2' '1' '2' '1' '7' '0' '6' '4' '9' '7' '5'\n", + " '0' '3' '2' '2' '5' '3' '1' '0' '0' '5' '8' '5' '0' '1' '0' '7' '3' '9'\n", + " '5' '0' '4' '7' '7' '1' '7' '1' '7' '1' '3' '8' '7' '4' '1' '9' '7' '3'\n", + " '2' '7' '4' '7' '0' '6' '9' '7' '1' '2' '1' '5' '0' '7' '8' '0' '3' '2'\n", + " '5' '1' '3' '3' '8' '6' '1' '2' '5' '5' '6' '9' '1' '1' '2' '0' '6' '8'\n", + " '1' '4' '7' '0' '1' '2' '0' '4' '2' '6' '0' '4' '1' '7' '2' '6' '4' '6'\n", + " '5' '3' '6' '0' '4' '2' '9' '7' '9' '1' '6' '9' '2' '8' '1' '7' '7' '6'\n", + " '1' '3' '5' '5' '6' '6' '1' '1' '6' '1' '8' '8' '9' '1' '1' '0' '5' '1'\n", + " '0' '5' '2' '0' '3' '9' '7' '0' '4' '5' '5' '5' '9' '2' '0' '4' '9' '6'\n", + " '0' '7' '5' '8' '3' '8' '3' '9' '6' '4' '6' '5' '7' '4' '6' '8' '8' '0'\n", + " '0' '6' '3' '8' '6' '8' '3' '9' '4' '7' '6' '4' '1' '0' '9' '4' '3' '0'\n", + " '2' '2' '4' '1' '5' '5' '5' '7' '7' '9' '1' '5' '1' '6' '8' '0' '1' '0'\n", + " '3' '3' '0' '8' '3' '5' '3' '6' '3' '8' '6' '8' '4' '3' '5' '3' '4' '6'\n", + " '7' '1' '6' '2' '7' '9' '0' '2' '8' '1' '8' '2' '8' '0' '7' '6' '2' '9'\n", + " '1' '6' '5' '6' '9' '4' '5' '6' '2' '1' '0' '0' '0' '2' '5' '3' '7' '6'\n", + " '5' '8' '8' '8' '6' '5' '4' '3' '4' '3' '3' '6' '1' '0' '3' '3' '1' '9'\n", + " '6' '7' '5' '9' '7' '7' '3' '2' '4' '9' '8' '8' '4' '4' '3' '5' '8' '2'\n", + " '7' '3' '5' '9' '7' '3' '4' '2' '9' '8' '7' '3' '5' '0' '2' '3' '9' '3'\n", + " '0' '0' '1' '7' '2' '1' '1' '9' '5' '3' '6' '0' '9' '7' '1' '2' '1' '0'\n", + " '4' '4' '3' '0' '4' '6' '5' '6' '9' '9' '1' '2' '0' '3' '8' '6' '0' '6'\n", + " '3' '0' '7' '3' '4' '0' '1' '8' '9' '0' '7' '4' '1' '2' '2' '0' '1' '3'\n", + " '5' '0' '5' '0' '9' '8' '2' '7' '6' '3' '6' '2' '5' '2' '9' '1' '4' '3'\n", + " '5' '5' '2' '7' '8' '1' '8' '9' '2' '9' '3' '4' '5' '5' '5' '3' '4' '4'\n", + " '3' '7' '6' '1' '2' '4' '7' '9' '6' '9' '7' '1' '8' '8' '2' '7' '1' '3'\n", + " '9' '6' '1' '5' '9' '5' '7' '6' '9' '3' '7' '1' '9' '1' '8' '0' '7' '5'\n", + " '8' '0' '5' '3' '2' '7' '6' '8' '4' '7' '6' '0' '1' '4' '2' '9' '9' '4'\n", + " '3' '8' '5' '3' '1' '2' '0' '1' '8' '6' '4' '2' '7' '3' '3' '7' '8' '0'\n", + " '5' '6' '3' '9' '6' '5' '5' '1' '8' '4' '5' '2' '3' '8' '7' '6' '4' '2'\n", + " '3' '8' '6' '9' '9' '6' '1' '1' '5' '6' '2' '7' '9' '0' '0' '5' '0' '0'\n", + " '9' '9' '7' '3' '1' '0' '3' '2' '7' '1' '8' '4' '9' '2' '9' '9' '5' '8'\n", + " '1' '3' '8' '6' '7' '4' '8' '0' '7' '7' '4' '6' '6' '1' '2' '3' '9' '1'\n", + " '2' '5' '5' '1' '1' '9' '5' '0' '1' '8' '0' '4' '3' '0' '9' '1' '9' '0'\n", + " '3' '0' '5' '9' '0' '1' '0' '1' '3' '8' '2' '1' '1' '8' '7' '9' '3' '0'\n", + " '2' '6' '9' '9' '1' '5' '5' '4' '6' '7' '5' '1' '6' '3' '2' '6' '9' '8'\n", + " '2' '6' '0' '0' '8' '3' '7' '8' '2' '4' '7' '7' '1' '7' '7' '4' '3' '2'\n", + " '2' '9' '4' '1' '8' '1' '0' '2' '1' '1' '8' '6' '6' '1' '4' '2' '2' '9'\n", + " '9' '8' '6' '8' '8' '8' '7' '1' '7' '4' '5' '1' '0' '0' '0' '5' '4' '9'\n", + " '3' '0' '6' '7' '3' '0' '0' '4' '8' '6' '5' '9' '1' '5' '3' '6' '5' '3'\n", + " '1' '4' '8' '4' '7' '6' '3' '7' '6' '3']\n", + "Probabilités : [[0. 0.1 0. ... 0.1 0. 0.1]\n", + " [0. 0. 0.8 ... 0.2 0. 0. ]\n", " [0. 0. 0. ... 0. 0. 0. ]\n", " ...\n", - " [0. 0. 0. ... 0.1 0.5 0.3]\n", " [0. 0. 0. ... 1. 0. 0. ]\n", - " [0. 0. 1. ... 0. 0. 0. ]]\n", - "Classe image 4 : 9\n", - "Classe prédite image 4 : 7\n", - "Score échantillon de test : 0.922\n", - "Score données apprentissage : 0.9395\n" + " [0. 0. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0. 0. 0. ]]\n", + "Classe image 4 : 5\n", + "Classe prédite image 4 : 0\n", + "Score échantillon de test : 0.932\n", + "Score données apprentissage : 0.92575\n" ] } ], "source": [ + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", "print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", "print(\"Etiquettes : \", target)\n", "\n", + "### Split the dataset for training and testing\n", "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", "# xtest dataset de prédiction et ytest étiquettes de xtest\n", "xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.8)\n", "\n", + "# On entraîne avec k = 10\n", "n_neighbors = 10\n", "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", - "# On entraîne l'algorithme sur xtrain et ytrain\n", + "# Training with xtrain,ytrain\n", "clf.fit(xtrain, ytrain)\n", - "# On prédit sur xtest\n", + "# Predicting with xtest\n", "pred = clf.predict(xtest)\n", "print(\"Prédiction : \", pred)\n", - "# Probabilités des prédictions sur xtest\n", + "# Predicting probabilities with xtest\n", "pred_proba = clf.predict_proba(xtest)\n", "print(\"Probabilités : \", pred_proba)\n", - "# On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + "# Computing the score with xtest,ytest\n", "score = clf.score(xtest, ytest)\n", "print(\"Classe image 4 : \", target[3])\n", "print(\"Classe prédite image 4 : \", pred[3])\n", "print(\"Score échantillon de test : \", score)\n", - "\n", "scoreApp = clf.score(xtrain, ytrain)\n", "print(\"Score données apprentissage : \", scoreApp)" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 33, "id": "90db6e29", "metadata": {}, "outputs": [ @@ -146,98 +162,161 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset : [[0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " ...\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['8' '3' '7' ... '5' '9' '1']\n", - "[0.924, 0.91, 0.938, 0.932, 0.932, 0.928, 0.918, 0.93, 0.94, 0.914, 0.938, 0.946, 0.94, 0.952, 0.95, 0.932, 0.934, 0.938, 0.92, 0.916, 0.92, 0.942, 0.944, 0.926, 0.918, 0.928, 0.95, 0.932, 0.936, 0.94, 0.94, 0.954, 0.91, 0.942, 0.928, 0.928, 0.93, 0.91, 0.944, 0.956, 0.928, 0.94, 0.938, 0.942, 0.914, 0.922, 0.916, 0.93, 0.938, 0.934, 0.936, 0.946, 0.922, 0.938, 0.926, 0.922, 0.92, 0.904, 0.938, 0.922, 0.92, 0.924, 0.904, 0.934, 0.924, 0.952, 0.928, 0.936, 0.934, 0.922, 0.926, 0.922, 0.926, 0.922, 0.92, 0.934, 0.922, 0.912, 0.95, 0.918, 0.946, 0.92, 0.928, 0.914, 0.928, 0.924, 0.91, 0.92, 0.934, 0.936, 0.898, 0.914, 0.92, 0.928, 0.92, 0.92, 0.93, 0.944, 0.924, 0.934, 0.922, 0.926, 0.93, 0.924, 0.922, 0.898, 0.924, 0.916, 0.942, 0.898, 0.93, 0.908, 0.928, 0.91, 0.93, 0.95, 0.938, 0.89, 0.932, 0.898, 0.924, 0.902, 0.894, 0.912, 0.922, 0.932, 0.932, 0.924, 0.924, 0.932]\n" + "Computing for k = 2\n", + "Computing for k = 3\n", + "Computing for k = 4\n", + "Computing for k = 5\n", + "Computing for k = 6\n", + "Computing for k = 7\n", + "Computing for k = 8\n", + "Computing for k = 9\n", + "Computing for k = 10\n", + "Computing for k = 11\n", + "Computing for k = 12\n", + "Computing for k = 13\n", + "Computing for k = 14\n", + "Computing for k = 15\n", + "2 : 0.9186000000000001\n", + "3 : 0.9294\n", + "4 : 0.9268000000000001\n", + "5 : 0.926\n", + "6 : 0.925\n", + "7 : 0.9236\n", + "8 : 0.9244\n", + "9 : 0.9232\n", + "10 : 0.922\n", + "11 : 0.921\n", + "12 : 0.9198000000000001\n", + "13 : 0.9194\n", + "14 : 0.9176000000000001\n", + "15 : 0.919\n" ] } ], "source": [ - "from sklearn.model_selection import KFold\n", + "####### Variation du nombre k de voisins #######\n", "\n", + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", - "print(\"Dataset : \", data)\n", + "# print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", - "print(\"Etiquettes : \", target)\n", - "\n", - "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", - "# xtest dataset de prédiction et ytest étiquettes de xtest\n", - "# xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.8)\n", + "# print(\"Etiquettes : \", target)\n", "\n", + "### Split the data in 10 chunks\n", "kf = KFold(n_splits=10, random_state=None, shuffle=True)\n", - "scores = []\n", "\n", - "for k in range(2,15):\n", - " \n", + "# Initialisation des métriques\n", + "all_scores = []\n", + "k_scores = []\n", + "all_times = []\n", + "k_times = []\n", + "\n", + "# Fais varier le nombre de voisins de 2 à 15\n", + "for k in range(2,16):\n", + " print(\"Computing for k =\", k)\n", + " k_scores = []\n", + " k_times = []\n", + " # Boucle sur chaque paire de jeu de données entraînement/test\n", " for train_index, test_index in kf.split(data):\n", - "# print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", " X_train, X_test = data[train_index], data[test_index]\n", " y_train, y_test = target[train_index], target[test_index]\n", " \n", + " t1 = round(time.time(),3)\n", " clf = neighbors.KNeighborsClassifier(k)\n", " # On entraîne l'algorithme sur xtrain et ytrain\n", " clf.fit(X_train, y_train)\n", + " t2 = round(time.time(),3)\n", " # On prédit sur xtest\n", " pred = clf.predict(X_test)\n", - "# print(\"Prédiction : \", pred)\n", " # Probabilités des prédictions sur xtest\n", " pred_proba = clf.predict_proba(X_test)\n", - "# print(\"Probabilités : \", pred_proba)\n", " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", - " score = clf.score(X_test, y_test)\n", - " scores += [score]\n", - "# print(\"Classe image 4 : \", target[3])\n", - "# print(\"Classe prédite image 4 : \", pred[3])\n", - "# print(\"Score échantillon de test : \", score)\n", - " scoreApp = clf.score(X_train, y_train)\n", - "# print(\"Score données apprentissage : \", scoreApp)\n", - "print(scores)" + " # et l'ajoute à la liste des scores\n", + " k_scores.append(clf.score(X_test, y_test))\n", + " k_times.append(t2-t1)\n", + " all_scores.append(k_scores)\n", + " all_times.append(k_times)\n", + "print(\"Done\")" ] }, { "cell_type": "code", - "execution_count": 41, - "id": "bf91b914", + "execution_count": 72, + "id": "79d055d6", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 : 0.9266\n", - "3 : 0.9366\n", - "4 : 0.9336\n", - "5 : 0.9341999999999999\n", - "6 : 0.9297777777777778\n", - "7 : 0.9275555555555557\n", - "8 : 0.9273333333333333\n", - "9 : 0.926888888888889\n", - "10 : 0.9264444444444445\n", - "11 : 0.9204444444444445\n", - "12 : 0.9277777777777779\n", - "13 : 0.918\n", - "14 : 0.922222222222222\n", - "15 : 0.9193333333333334\n" - ] + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times')" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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iY2NLTQLITs7m5iYmELHREdHM3HiRMAnKZo0aUKTJk0A2LJlC8nJyaSkpNCrV68d58THxzNnzhwAvv32W958883SvhUREREREZEKTTMdpNzp0KEDy5cvZ8WKFeTl5TF9+nR69OhR6JgNGzaQl5cHwIQJE+jcuTPR0dE45xgwYAAJCQkMGTKk0Dk//PADANu2beOBBx7g6quvLpsbEhERERERqaCUdJByJyoqirFjx9K9e3cSEhLo3bs3iYmJpKamkpqaCsCyZctITEwkPj6eUCjE6NGjAZg3bx6TJ09m7ty5JCUlkZSUxOzZswGYNm0azZo1Iz4+npiYGC6//PLA7lFERERERKQisKLWx1c07du3dwsXLgw6DBEREREREZEKx8wWOefaF7VPMx2kfJgyBRo3hipV/PcpU4KOSERERERERPZChSQl8k2ZAlddBZs3+8eZmf4xQEpKcHGJiIiIiIjIHmmmg0S+O+7YmXDYbvNmv11EREREREQilpIOEvlWrty/7SIiIiIiIhIRlHSQyNewYdHbY2PLNg4RERERERHZL0o6SOQbPhzMdt+elwcLFpR9PCIiIiIiIrJPlHSQyNepEzgHRx7pkw+NGvl6DtWrwymnwP33w9atQUcpIiIiIiIiu1DSQSJfKOS/f/YZbNsGGRnwwAPw5ZfQty/cdRd07gzffRdomCIiIiIiIlKYkg4S+UIhOOEEOP74wtuPOAKefx6mToX0dEhKgmef9bMiREREREREJHBKOkhk++03eO89OOec4o/p1w+++go6dIABA+Cii2D9+rKLUURERERERIqkpINEtg8+gN9/33PSAaBBA3jnHXjkEXj9dWjVCt56q2xiFBERERERkSIp6SCRLRSCQw+F007b+7FVqsBNN/naD0cfDWefDTfc4GdLiIiIiIiISJlT0kEiW1oadOkChx227+e0aQMLF8L//R+MGQMnngiLF5daiCIiIiIiIlI0JR0kcn3/PXz77d6XVhTl0EPhn/+EOXPg5599282HHoL8/JKPU0RERERERIqkpINEru2tMs8++8CvcdZZsGQJ/OUvMGwYnHEGZGaWTHwiIiIiIiKyR0o6SOQKhXybzBNOOLjrHH00zJgBzz3nl1m0bg1Tpqi1poiIiIiISClT0kEi0++/w9y5B7a0oihmcOml8OWXvrPFX/8K/ftDbm7JXF9E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ikiWmBm/fP89PPwwP19zDTGffQYPPujrNEyc6GeAvPQS9OqlhEMpUdJBRERERESksjrhBLjrLli2DBYtghtugM8/9zUf6taFv/4VZs+GLVtKNYycnBwaFOgGERsbS05OTqFj2rRpw8yZMwGfpMjMzCS7uKUh69dDaiqjfvyRm6+7jga33spNq1fz4D33QE4OzJkDl13mu3xIqVLSQUREREREpLIzg3bt4NFHYeVKX1ixf3+fcDjvPKhXD669Fj76yLeOLGFFLfu3XWopDBs2jNzcXJKSkhgzZgxt27YlKipq5wG//urbXJ5/vo/3mmt46vvv+We/fmT973/88/nnGfDhh342h5QZJR1ERERERERkpypV4PTTYfx4WL0aZs2Cs86Cf/8b/vxnaNIEhg2DL7/0BRlLQGxsLFlZWTseZ2dnExMTU+iY6OhoJk6cyBdffMGkSZNYt24dTerX9x06trcDzc6GJUtgyBD44guey8+n15QpcPzxXHzxxTsLSUqZUdJBREREREREila9uq/xMG0a/PADPP88tGzpZ0QkJfmfhw/3RRkPQocOHVi+fDkrVqwgLy+P6dOn06NHj0LHbNiwgby8PNi2jQm33ELnatWIbt4cLrgA3nrL12Vo0gQyMuChh6BNG2JiYvjggw8AmDt3LieccMJBxSn7T0kHERERERER2buaNSElBd5808+AePJJ3+nizjt9YcaTT4YxY3xxxv0UFRXF2LFj6d69OwkJCfTu3ZvExERSU1NJTU0F51j26qsk1q1LfPXqhB59lNHZ2XD22fDGG/Q780xOnjuXb7KyiG3YkGeeeQaAp59+mqFDh9KmTRtuv/12xo8fX9KjInuhlpkiIiIiIiJy4DIzfbeLqVP90oYqVeDMM/2Sh549ITr6wK/9v//5WRZTp8LXX0NUlE809O/vZ2AcfnjJ3YccsD21zFTSQURERERERErG0qU7kwQZGX55xgUX+CTBOefsW1vK1athxgx/je01GE47zV8jORmOPrpUb0H2X8QmHczscOBJIA943zk3Jby9D3AesAV41Dm3zMz+BZzinGsVPuZc4ApgGzDBOTenuOdR0kFERERERKQMOQeffgpTpsALL8C6db49ZXKyTx6sWgX/+IfvlNGwoV+iUbWqTzTMnes7ZLRt64/t0wcKtNOUyBPJSYdLgA3OudfN7AXnXJ/w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i2vFHvnS0tIYPHgw+fn5XHnllQwbNqzQfuccgwcPZvbs2dSoUYN///vftGvXDoArrriCN954gzp16rB06dId59x88828/vrrVKtWjeOPP56JEydyxBFHlOVtiYiIiIiISAVgZpnF7dPyigiXn5/PoEGDCIVCpKenM23aNNLT0wsdEwqFWL58OcuXL2f8+PFcc801O/ZddtllpKWl7Xbds846i6VLl7JkyRKaNWvGgw8+WOr3IiIiIiIiIpWLkg4RbsGCBcTFxdG0aVOqVatG3759mTVrVqFjZs2axaWXXoqZcdJJJ7FhwwZWr14NQOfOnTnqqKN2u263bt2IivITXU466SSys7NL/2ZERERERESkUlHSIcLl5OTQoEGDHY9jY2PJycnZ72P25Nlnn+Wcc845+GBFREREREREClDSIcI553bbZmb7fUxxhg8fTlRUFCkpKQcWoIiIiIiIiEgxKkUhyfIsNjaWrKysHY+zs7OJiYnZ72OK8txzz/HGG2/w7rvv7nOSQkRERERERGRfaaZDhOvQoQPLly9nxYoV5OXlMX36dHr06FHomB49ejBp0iScc8yfP5/atWtTr169PV43LS2Nhx56iNdee40aNWqU5i2IiIiIiIhIJaWkQ4SLiopi7NixdO/enYSEBHr37k1iYiKpqamkpqYCcO6559K0aVPi4uIYOHAgTz755I7z+/Xrx8knn8w333xDbGwszzzzDADXXXcdGzdu5KyzziIpKYmrr746kPsTERERERGRisuKqgdQ0bRv394tXLgw6DBEREREREREKhwzW+Sca1/UPs10iDBTpkDjxlCliv8+ZUrQEYmIiIiIiIgcmFIrJGlmhwNPAnnA+865KeHtLYHbwoc96Jxbamb/Ak5xzrUKHzMMOB44DrjGOZdtZiOBGsBm59ywoq5TWvdSVqZMgauugs2b/ePMTP8YQM0lREREREREpLwpzZkOvYCXnHMDgYKVDwcDg4BrgesBnHN/B77ZfoBzbmT4vGeBLmbWEDjEOXcDUNXMGhR1nfLujjt2Jhy227zZbxcREREREREpb0oz6RALbO/jmF9ge23n3Abn3M9AreJONrOaQG/gVaB+gWutDF97j9cxs6vMbKGZLVy3bt1B30xZWLly/7aLiIiIiIiIRLLSTDpk45MDuz7Pz2ZW28yigY1FnRje9xRwi3NuI5BT4FoNwtfe43Wcc+Odc+2dc+2PPfbYkrmjUtaw4f5tFxEREREREYlkpZl0mAkkm9lTwOtmNjm8fTTwBDAWGANgZsOBtmaWambVgX8DRwB3mNkZzrmVwBYzexzId85lFXWd8m74cKhRo/C2atX8dhEREREREZHyRi0zI8yUKb6Gw8qVPuFw2GGwapX/LiIiIiIiIhJp1DKzHElJgYwM2LYN3noLNmyAp54KOioRERERERGR/aekQwQ77TQ480x48EHYtCnoaERERERERET2j5IOEe6BB2D9ehg9OuhIRERERERERPaPkg4RrlMnuOACeOQRyM0NOhoRERERERGRfaekQzlw//3w88/w2GNBRyIiIiIiIiKy75R0KAfatIHevWHUKFi3LuhoRERERERERPaNkg7lxL33wm+/wciRQUciIiIiIiIism+UdCgn4uPhkkvgySchJyfoaERERERERET2TkmHcuTuu2HrVhg+POhIRERERERERPZOSYdypEkTuPJKmDABVqwIOhoRERERERGRPVPSoZy5806oUgXuuy/oSERERERERET2TEmHcqZ+fbj2Wpg0Cb75JuhoRERERERERIqnpEM5NGwYHHaYr/EgIiIiIiIiEqmUdCiH6tSBwYPhhRdgyZKgoxEREREREREpmpIO5dRNN0Ht2vCPfwQdiYiIiIiIiEjRlHQop4480iceXnsNFiwIOhoRERERERGR3SnpUI4NHgzHHOM7WoiIiIiIiIhEGiUdyrFatXxRybffhg8+CDoaERERERERkcKUdCjnrr0W6tXzsx2cCzoaERERERERkZ2UdCjnDjvMJxw++gjmzAk6GhEREREREZGdlHSoAK68Eho10mwHERERERERiSxKOlQA1arB3XfDwoUwa1bQ0YiIiIiIiIh4SjpUEJdcAs2awT/+Afn5QUcjIiIiIiIioqRDhREVBffeC0uXwowZQUcjIiIiIiIioqRDhdK7N7Rq5ZdabN0adDQiIiIiIiJS2SnpUIFUqQL33w/Ll8OkSUFHIyIiIiIiIpWdkg4VTI8e0KGDX2rxxx9BRyMiIiIiIiKVWaklHczscDN7zsyeNrOUAttbmtmU8FfL8LZ/mdlXBY4518xmm9l14cd1zSw1/LXSzKLN7B4zeyG8Laa07qO8MYMHHoCVK2HChKCjERERERERkcqsNGc69AJecs4NBHoU2D4YGARcC1wP4Jz7O/DN9gOcc7OBhws8Xuucuxr4B/Cec+4XYCuQB2wBNpTifZQ7Z50Ff/6zTz5s3hx0NCIiIiIiIlJZlWbSIRbICv9csIljbefcBufcz0Ct/bzm5cBz4Z9HOOcuAd4GrjyoSCuY7bMd1qyBJ58MOhoRERERERGprEoz6ZCNTzzs+jw/m1ltM4sGNu7rxczMgC7AewDOuW3hXT8ANYs4/iozW2hmC9etW3cg8ZdrnTtDt24wciRs3OdRFhERERERESk5pZl0mAkkm9lTwOtmNjm8fTTwBDAWGANgZsOBtuH6DNXN7GRgCNDHzJLD550OfOicc+Fzbg9feygwcdcnd86Nd861d861P/bYY0vvLiPYAw/Ajz/CqFFBRyIiIiIiIiKVkYXfw1do7du3dwsXLgw6jEBceCG89x6sWAFHHRV0NCIiIiIiIlLRmNki51z7ovapZWYFd//9fnnFo48GHYmIiIiIiIhUNko6VHCtWkGfPjB6NPzwQ9DRiIiIiIiISGWipEMlcO+98Pvv8OCDQUciIiIiIiIilYmSDpVAs2bwt7/BU09BdnbQ0YiIiIiIiEhloaRDJXHXXbBtm+9oISIiIiIiIlIWlHSoJBo3hoED4Zln4Pvvg45GREREREREKgMlHSqRO+6AqChf40FERERERET+v737DpOqSvo4/i1AUEDAAAoiIoIYMI+uuoY1Ievu4qusgmJERUUFRREDQ8YAiqIoijlgZBEDiLomzBLMCRCUICoGUETinPePmlkGZgZmhu4+HX6f55kHuH37dvWh+0533Tp1JNmUdMghjRrBBRfAww/DF1/EjkZERERERESynZIOOaZnT6hZE/r0iR2JiIiIiIiIZDslHXJM/fpw8cXw5JPw4YexoxEREREREZFspqRDDrr0UqhXD/LzY0ciIiIiIiIi2UxJhxxUrx706AHPPQfvvhs7GhEREREREclWSjrkqK5dfapFr16xIxEREREREZFspaRDjqpdG668El5+GV59NXY0IiIiIiIiko2UdMhh558P22zj1Q4hxI5GREREREREso2SDjls44094fD22zBhQuxoREREREREJNso6ZDjOnWC7bdXtYOIiIiIiIgknpIOOa56dejTB6ZOhaeeih2NiIiIiIiIZBMlHYRTToGddoL8fFi1KnY0IiIiIiIiki2UdBCqVoV+/eDzz+Gxx2JHIyIiIiIiItlCSQcB4N//hj328KkWK1bEjkZERERERESygZIOAkCVKjBgAHz9NTzwQOxoREREREREJBso6SD/889/wn77Qf/+sGxZ7GhEREREREQk0ynpIP9jBoMGwZw5MHJk7GhEREREREQk0ynpIGs44gg49FBPPvzxR+xoREREREREJJMp6SBrMIOBA+GHH+C222JHIyIiIiIiIplMSQcp4aCDoE0buP56WLQodjQiIiIiIiKSqZR0kFINHAi//AI33xw7EhEREREREclUSUs6mFktM3vAzO4ys47Ftrcys1GFP60Kt91pZp8U2+cYMxtvZhcW2/a1md1hZp3LOo4kzj77wHHHwY03ws8/x45GREREREREMlEyKx2OB0aHEM4B2hbb3g24AOgCXAQQQjgX+KpohxDCeGDwWsdbDGwCzCnrOJJY/fvD4sUwZEjsSERERERERCQTJTPp0JjVCYJVxbbXDSEsDCEsAjatwPH2AjrhyYb1HsfMOpvZZDObvGDBgkqEL61awUknwS23wPffx45GREREREREMk0ykw5z8cTD2o+zyMzqmlkd4PfyHiyEUBBCWAUsNbMq6ztOCGFkCCEvhJBXv379DXgaua1vX1i+HK69NnYkIiIiIiIikmmSmXQYA7QzsxHAs2b2UOH2YcAtwHDgVgAzGwTsVdizoYaZHQB0B9qbWTsza2lm95rZvcBrIYSC0o4jideiBZxxBtxxB8yeHTsaERERERERySQWQogdQ9Ll5eWFyZMnxw4jY82e7cmH00+HkSNjRyMiIiIiIiLpxMymhBDySrtNS2bKejVpAp07w733wowZsaMRERERERGRTKGkg5TLVVdB9erQr1/sSERERERERCRTKOkg5dKwIVx4IYwaBZ99FjsaERERERERyQRKOki59ewJtWtDnz6xIxEREREREZFMoKSDlNsWW8All8B//gNTp8aORkRERERERNKdkg5SId27w2abQX5+7EhEREREREQk3SnpIBVSty5cfjmMHw9vvx07GhEREREREUlnSjpIhV10ETRoAL16xY5ERERERERE0pmSDlJhtWr5EpqvvgqvvBI7GhEREREREUlXSjpIpZx7LjRuDFdfDSHEjkZERERERETSkZIOUikbb+zNJN991/s7iIiIiIiIiKxNSQeptDPPhGbNvLdDQUHsaERERERERCTdKOkglbbRRtC3L3z4IYwZEzsaERERERERSTdKOsgGOflk2Hln6N0bVq2KHY2IiIiIiIikEyUdZINUrQr9+8MXX8Ajj8SORkRERERERNKJkg6ywY4/Hvbay6darFgROxoRERERERFJF0o6yAarUgUGDICZM+G++2JHIyIiIiIiIulCSQdJiGOOgQMO8OTD0qWxoxEREREREZF0oKSDJIQZDBwIc+fCnXfGjkZERERERETSgZIOkjCHH+4/11wDf/wROxoRERERERGJTUkHSaiBA+HHH+HWW2NHIiIiIiIiIrEp6SAJdcAB8I9/wODBsHBh7GhEREREREQkJiUdJOH694dff4WbboodiYiIiIiIiMSkpIMk3N57Q7t2MHQo/PRT7GhEREREREQkFiUdJCn69/dmkoMHx45EREREREREYlHSQZJil12gY0cYPhzmz48djYiIiIiIiMSgpIMkTd++sHy5L6EpIiIiIiIiuSdpSQczq2VmD5jZXWbWsdj2VmY2qvCnVeG2O83sk2L7HGNm483swsJ/tzSze83sETPrWbitr5k9bmZ3mFmjZD0PqbwddoBOneDOO+Hbb2NHIyIiIiIiIqmWzEqH44HRIYRzgLbFtncDLgC6ABcBhBDOBb4q2iGEMB4YXOzfX4UQOoUQTgb+Urh5JbAcWAEsTN7TkA2Rnw9mMGBA7EhEREREREQk1ZKZdGgMzCn8+6pi2+uGEBaGEBYBm1bkgGbWAXix8J/XhBBOBV4Czi5l385mNtnMJi9YsKDi0UtCbLstnHce3H8/TJ8eOxoRERERERFJpWQmHebiiYe1H2eRmdU1szrA7+U9WGHCYbsQwh0AIYSCwpt+BGqvvX8IYWQIIS+EkFe/fv1KPQFJjCuvhBo1vMeDiIiIiIiI5I5kJh3GAO3MbATwrJk9VLh9GHALMBy4FcDMBgF7FfZnqGFmBwDdgfZm1s7M9gJuALY3s6GF97mq8NiXAvcl8XnIBtp6a7joInj0Ufj009jRiIiIiIiISKpYCCF2DEmXl5cXJk+eHDuMnPbLL7D99nDEETBmTOxoREREREREJFHMbEoIIa+027RkpqTE5ptD9+7w1FOg/I+IiIiIiEhuUNJBUuaSSzz5kJ8fOxIRERERERFJBSUdJGXq1IGePWHCBHjzzdjRiIiIiIiISLIp6SApdeGFsNVWcPXVkAPtRERERERERHKakg6SUjVresJh4kT4739jRyMiIiIiIiLJpKSDpFznzrDtttCrl6odREREREREspmSDpJyNWpA797w/vvw7LOxoxEREREREZFkUdJBojj9dGje3FeyKCiIHY2IiIiIiIgkg5IOEsVGG0HfvvDxx/Dkk7GjERERERERkWRQ0kGi6dABdt0V+vSBlStjRyMiIiIiIiKJpqSDRFO1KvTvD199BQ8/HDsaERERERERSTQlHSSq446DvfeGfv1g+fLY0YiIiIiIiEgiKekgUZnBwIHwzTdwzz2xoxEREREREZFEUtJBomvTBv76V08+/Pln7GhEREREREQkUZR0kOiKqh2++w5GjIgdjYiIiIiIiCSKkg6SFv72NzjySLj2Wli8OHY0IiIiIiIikggVSjqYWRUzq5OsYCS3DRwIP/0Et9wSOxIRERERERFJhPUmHczsETOrY2a1gM+Br8ysR/JDk1zzl7/Av/4FQ4bAwoXr3nfChAm0bNmS5s2bc91115W4PYRA165dad68ObvvvjtTp079322dOnWiQYMGtGrVao37PPnkk+y6665UqVKFyZMnJ+IppZTGpCSNiZSHXiel07iUpDERqRy9d6S89FrJUiGEdf4AHxb+2REYCmwEfLy++6XTzz777BMkM3zwQQgQQq9eZe+zcuXK0KxZs/D111+HZcuWhd133z189tlna+wzbty40KZNm1BQUBDeeeedsN9++/3vttdffz1MmTIl7Lrrrmvc5/PPPw9ffvllOPTQQ8OkSZMS+bSSTmNSksZEykOvk9JpXErSmIhUjt47Ul56rWQ2YHIo4/t4eaZXbGRmGwH/BzwdQlgBhKRkQCTn7bknnHgi3HwzLFhQ+j7vv/8+zZs3p1mzZlSvXp0OHTrw9NNPr7HP008/zWmnnYaZsf/++7Nw4ULmz58PwCGHHMLmm29e4rg777wzLVu2TPAzSg2NSUkaEykPvU5Kp3EpSWMiUjl670h56bWSvcqTdLgT+AaoBUw0s+2A35IZlOS2fv1gyRK4/vrSb583bx7bbrvt//7duHFj5s2bV+F9sonGpCSNiZSHXiel07iUpDERqRy9d6S89FrJXutNOoQQbgkhbBNCOKawcuJb4LAUxCY5aqed4NRT4bbbfBnNtXn1zprMrML7ZBONSUkaEykP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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "nice_scores = np.array_split(scores, 14)\n", - "for i in range (0,14):\n", - " print (i+2, \" : \", nice_scores[i].mean())\n" + "##### x coordinates\n", + "x = np.arange(2,16,1)\n", + "mean_scores = []\n", + "mean_times = []\n", + "for i in range(len(all_scores)):\n", + " mean_scores += [round(statistics.mean(all_scores[i]),3)]\n", + " mean_times += [round(statistics.mean(all_times[i]),3)]\n", + "mean_scores = np.float64(mean_scores)\n", + "mean_times = np.float64(mean_times)\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=2, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,mean_scores, marker='o', color='r')\n", + "figs[1].plot(x,mean_times, marker='o', color='b')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(mean_scores[i], # this is the text\n", + " (x[i],mean_scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(mean_times[i], # this is the text\n", + " (x[i],mean_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Mean scores for k neighbors')\n", + "figs[1].title.set_text('Mean training times for k neighbors')\n", + "figs[0].set_xlabel('N_neighbors')\n", + "figs[1].set_xlabel('N_neighbors')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times')" ] }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 108, "id": "cc24e898", "metadata": {}, "outputs": [ @@ -245,70 +324,476 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset : [[0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " ...\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['3' '0' '3' ... '4' '0' '6']\n", - "3 : 0.8908571428571429\n", - "4 : 0.893\n", - "5 : 0.92\n", - "6 : 0.9105\n", - "7 : 0.9326666666666666\n", - "8 : 0.926\n", - "9 : 0.946\n" + "Computing for j = 10 %\n", + "Computing for j = 20 %\n", + "Computing for j = 30 %\n", + "Computing for j = 40 %\n", + "Computing for j = 50 %\n", + "Computing for j = 60 %\n", + "Computing for j = 70 %\n", + "Computing for j = 80 %\n", + "Computing for j = 90 %\n" ] } ], "source": [ - "from sklearn.model_selection import KFold\n", + "####### Variation du pourcentage des échantillons #######\n", "\n", + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", - "print(\"Dataset : \", data)\n", + "# print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", - "print(\"Etiquettes : \", target)\n", - "\n", - "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", - "# xtest dataset de prédiction et ytest étiquettes de xtest\n", + "# print(\"Etiquettes : \", target)\n", "\n", "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", "\n", - "for j in range (3, 10):\n", + "### Train the algorithm with various percentage of the dataset used for training\n", + "### from 10% to 90% by 10% increment\n", + "for j in range (1, 10):\n", + " print(\"Computing for j =\", j*10, \"%\")\n", + " # Split the dataset\n", " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=(j/10))\n", - "\n", - "\n", - " \n", - "\n", - " clf = neighbors.KNeighborsClassifier(n_neighbors=3,p = 2, n_jobs=-1)\n", - " # On entraîne l'algorithme sur xtrain et ytrain\n", + " \n", + " # Training on xtrain,ytrain\n", + " t1 = round(time.time(),3)\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3)\n", " clf.fit(xtrain, ytrain)\n", - " # On prédit sur xtest\n", + " t2 = round(time.time(),3)\n", + " \n", + " # Predicting on xtest\n", " pred = clf.predict(xtest)\n", - "# print(\"Prédiction : \", pred)\n", + " t3 = round(time.time(),3)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", " # Probabilités des prédictions sur xtest\n", " pred_proba = clf.predict_proba(xtest)\n", - "# print(\"Probabilités : \", pred_proba)\n", " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", - " score = clf.score(xtest, ytest)\n", - " scores += [score]\n", - "# print(\"Classe image 4 : \", target[3])\n", - "# print(\"Classe prédite image 4 : \", pred[3])\n", - "# print(\"Score échantillon de test : \", score)\n", - " scoreApp = clf.score(xtrain, ytrain)\n", - "# print(\"Score données apprentissage : \", scoreApp)\n", - "\n", - "# nice_scores = np.array_split(scores, 7)\n", - "# print(scores)\n", - "n = 3\n", - "for i in scores:\n", - " print (n, \" : \", i)\n", - " n += 1" + " scores.append(round(clf.score(xtest, ytest),3))" ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "cbb5eda6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training_times : \n", + " [0.028, 0.003, 0.004, 0.004, 0.005, 0.006, 0.007, 0.008, 0.013]\n", + "prediction_times : \n", + " [0.252, 0.248, 0.262, 0.242, 0.242, 0.232, 0.18, 0.171, 0.081]\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times(in ms)')" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hvD7779TsWJFXnzxRdq2bcvKlSsZOHAg69ato0yZMgwdOpThw4cDcNNNN/HBBx9Qvnx5mjZtyvjx4znkkEMKHKsSCCIiIiIiUrI5B/Pnp3dNSLtnaNgwY9eEChWiGqZk4hwsWZKx28PixX5e+fLQuXN6QuH442NrqMxASkoKzZs3Z9q0acTHx9O5c2cmTpxI69atDyxz0003UbVqVe666y5++eUXrr76aqZPn87atWtZu3YtnTp1Yvv27Rx99NG89957tG7dmk8++YSTTz6ZuLg4brnlFgAeeOCBAsebXQIhrsBbFxERERERiYY9ezJ2TVi1yjeBP/ZYGDXKJw3atlWz+OLMDJo3968hQ/y0DRvgm2/SkwqPPgoPPujntWyZ3uWha1do2rTYn985c+bQrFkzmjRpAsAFF1zApEmTMiQQFi5cyK233gpAy5YtWbZsGevXr+eII47giCOOAKBatWq0atWK1atX07p1a3r27Hlg/S5duvD2229H/LsogSAiIiIiIrFj3To/xOIHH8C0aX7oxSpVoGdPuPdeOOMMdU2IdbVrw9/+5l/gu58kJaV3eXjnHXj+eT+vTp2MCYWjjoJy5aIXexirV6+mQYMGBz7Hx8cze/bsDMt06NCBd999l65duzJnzhyWL1/OqlWrqBtSaHLZsmXMmzePY4899qB9vPjii5x//vmR+xIBJRBERERERKT4cs4PFZhWz2DOHD89IQEGD07vmlBC+spLGJUqQbdu/gWQmgqLFqUnFGbOhHffTV/2mGPSkwrHHQeFUBegIMKVDbBMrSZGjBjB8OHD6dixI+3ateOoo44iLi79dn3Hjh2cc845PPbYY1SvXj3DuqNGjSIuLo4BAwZE5guEUAJBRERERESKlz174PPP07smrFzpm6kfcwz8+98+adCuXbFvui4RUqaMHzWjTRsYOtRPW7s2Y0Jh9GhISfHXSNu2GVspJCQU6bUTHx/PypUrD3xetWoV9erVy7BM9erVGT9+POATDo0bN6Zx48YA7N+/n3POOYcBAwZw9tlnZ1jv5Zdf5sMPP2T69OkHJSUiQUUURUREREQk+tavz9g1YedOqFzZd00480zfNSGkObdItnbs8K1V0pIK334L27f7efXrZxw+sn17iIvcs/Xk5GSaN2/O9OnTqV+/Pp07d+b111+nTZs2B5bZsmULlStXpnz5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f/zxx0HbljwqaAX/5OTcNfPPzTJhzv9BKlU6+Ca+UaPcPeEP/VyxYskq0qc+9CIikokSCCIiUuwVpGr/rl27slw3Pj6es88+GzPjmGOOoUyZMmzcuJHatWsXwbcqgdKa+d98c/gK/tdcAwsX5nzTn9sK/uH68Nerl/dm/ireJyIikitKIIiISLFXkKr92a3797//nc8++4wePXrw66+/sm/fPmrVqhWNrxg9zvkb9sJo5r9vX/b72rIFHnjA9+cPvfmvXRuaNs3bjX/VqtFv5i8iIlLKKIEgIiLFXkGq9me1LsCQIUMYMmQIbdu2pXz58rz88sux030hJSXvw/hl9UpNzXl/FSsefBOfkBD+5v6uu2DTpoO30aCB784QK8dYREREMrBwfUOLs8TERJeUlBTtMERERPJn37689eHP6rVjR+72V7Vq3p7sZ9XMv3z53H/HzDUQwFfwHzdOfepFRESKOTOb65xLDDdPLRBERERy4pwffq8wnvbv3Zvz/sqUOfgmvmbN3BX2y9zMv2zZiB+eg6iCv4iISImkFggiIlI8FcYwgKmphdfMPyUl5/2VK+f79xf0iX/lymrmLyIiIlGhFggiIhJbwg0DeNll8O230L597m/6t2/P3f4qVz74Jj6vRf2qV4cKFSJ3TERERESiTAkEEREpPjZvhq++gquuOngov7174amn0j+bHTyMX40avlBfXvv3x+mfQxEREZGc6H9MIiISPRs3wpdfwhdf+NePP/p6A1kxg5Ur/Y1/lSoaxk9ERESkCCmBICIiRWfduvRkwZdfws8/++mVKsFxx8Hdd8OJJ8Ill/hEQWYJCVC/fpGGLCIiIiKeEggiIhI5q1alJwy++AJ+/dVPr1IFTjgBLrrIJww6d844TOD994cfBnDUqKKNX0REREQOUAJBREQKz7JlGRMGf/zhp1evDl27+kKIJ54InTr5EQuyomEARURERIodDeMoIiL54xz8/nvGhMGKFX7eoYdC9+4+WXDiidChA5QtG914RURERCRHGsZRREQKzjn45Zf0+gVffAFr1vh5tWv7hMGNN/qEQdu2KnAoIiIiUsIogSAiIuGlpvoih6FFD//80887/PD01gUnngitWvkREkRERESkxIpYAsHMqgBPA/uAGc65CcH084EzgP3Aw865RWY2GqgM7HLOjYhUTCIiko2UFD+MYlrC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QYNo164dzjkeeOABatWqBdu3s+vbb5n2wQc8u38/3Hcf/PYbACOAxeXLU6ZSJRq2bs3Ye++FXr2gatUoflsREREREZGMcjWMY3GiYRyl2NuzB+bPz1izYNEiX88AICEhvVVBYiIcfTQcemhUQxYREREREYECDOMoUqpNmAAjR8KKFf6mf9QoGDAg4zL798OCBRmLHC5YAMnJfn7duj5R0L+//3n00X6aiIiIiIhIjFECQSScCRNg6FDYtct/Xr7cf161yicAkpL8a/582LvXL3PooT5JcPPN6a0L6teHTCM1iIiIiIiIxCJ1YRAJp1EjnzTIStWqvjVBWqKgc2do3FjJAhERERERiWnqwiCSVytWZD1v4UJo0QLKlCm6eERERERERKJMCQSRUFu2wOjR6QUPM2vY0A+vKCIiIiIiUsroEaoI+DoGjz4KTZvCgw/CCSdApUoZl6lc2RdSFBERERERKYWUQJDSLTUVJk6Eli3hn//0dQ3mzoWvv4bnnvMtDsz8z3HjDh6FQUREREREpJRQFwYpvT7/HG66yScMOnSAjz+Gnj3T5w8YoISBiIiIiIhIQC0QpPRZsADOOANOPhn+/BNeftknEUKTByIiIiIiIpKBEghSeqxaBZdd5lsbzJzpax38+isMHAhly0Y7OhERERERkWJNXRik5Nu61ScLHn0UUlLguuvgttvgsMOiHZmIiIiIiEjMUAJBSq59+2DsWLj3Xti0CS66CP79b2jcONqRiYiIiIiIxBx1YZCSxzl46y1o1QqGD/ddFpKSYMIEJQ9ERERERETySQkEKVm++AK6dIHzz4cqVWDKFPj0Uz88o4iIiIiIiOSbEghSMixcCP36QY8esHo1jB8P8+ZB795gFu3oREREREREYp4SCBLb1qyBK66Adu1864P774clS2DQII2sICIiIiIiUohURFFi07Zt8NBD8J//QHIyXHstjBwJtWpFOzIREREREZESSQkEiS3798O4cXDPPbBhA1xwAYwaBU2aRDsyERERERGREk1dGCQ2OAfvvANt2sA110Dr1jBnDkycqOSBiIiIiIhIEVACQYq/r7+G44+Hc8+F8uXhww/h88+hc+doRyYiIiIiIlJqKIEgxdcvv8Df/w7dusGKFfD88/DDD3DGGRpZQUREREREpIhFrAaCmVUBngb2ATOccxOC6X2AIUAq8Lxz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Z8N//kPZxYuZv3w5q1atYs6cOSxYsODAeqNGjWLlypUMGDCAMWPGRPy7iIiIiIiISOkTsVEYnHM7gcEhkyYE018HXg+z/DLgxkjFE23x8fGsXLnywOdVq1ZRr169DMuMHzeOEbVrY82b0wxonJDALy+8wDGnnnpgmUMOOYQePXowdepU2rZtm2H9iy66iDPOOIN77rknot9FRERERERESp9ItkCQEJ07d2bJkiUsXbqUffv28cYbb9CvX1Bbcu9eePRREr78kumvvw79+7P+669ZnJxMk44d2bBhA1u2bAFg9+7dfPrpp7Rs2RKAJUuWHNjH+++/f2C6iIiIiIiISGGKWAsEySguLo4xY8bQq1cvUlJSGDJkCG1atWLsZZfBe+8x7K+/uKNbNwbt30+7efNwgwbxwAMPUKtWLX788UcuvfRSUlJSSE1NpX///vTt2xeAESNGsHjxYsqUKUPDhg0ZO3ZslL+piIiIiIiIlEQWrm9+cZaYmOiSkkrAiI+ffw433QRz50KHDvDgg9CzZ7SjEhERERERkVLMzOY65xLDzVMXhqK2YAGccQacfDL8+Se88gp8/72SByIiIiIiIlKsKYEQSRMmQKNGUKYMxMdDjx6+tcHMmb7Fwa+/wiWX+PkiIiIiIiIixZhqIETKhAkwdCjs2uU/r17tX336wKuvQs2a0Y1PREREREREJA/06DtSRo5MTx6E+vlnJQ9EREREREQk5iiBECkrVuRtuoiIiIiIiEgxpgRCpCQk5G26iIiIiIiISDGmBEKkjBoFlStnnFa5sp8uIiIiIiIiEmOUQIiUAQNg3Dho2BDM/M9x4/x0ERERERERkRijURgiacAAJQxERERERESkRFALBBERERERERHJkRIIIiIiIiIiIpIjJRBEREREREREJEfmnIt2DHliZhuA5dGOI49qARujHYTkm85f7NM5jG06f7FN5y/26RzGNp2/2KdzGNti8fw1dM7VDjcj5hIIscjMkpxzidGOQ/JH5y/26RzGNp2/2KbzF/t0DmObzl/s0zmMbSXt/KkLg4iIiIiIiIjkSAkEEREREREREcmREghFY1y0A5AC0fmLfTqHsU3nL7bp/MU+ncPYpvMX+3QOY1uJOn+qgSAiIiIiIiIiOVILBBERERERERHJUVy0AyiJzKwJMBKo4Zw718wuAk4CKgBXOed2RjVA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AqGI3XILdOniWyGsXh3taERERERERERyRwmEIhYXB6++Cvv2wZAh4Fy0IxIRERERERHJmRIIUdCsGfznP/DJJ/D009GORkRERERERCRnSiBEyZVXQu/ecNNNsHhxtKMRERERERERyZ4SCFFiBi+8AJUqwcCBkJwc7YhEREREREREsqYEQhTVqwfPPANz5sD990c7GhEREREREZGsKYEQZf37w0UXwb33wty50Y5GREREREREJDwlEIqBMWOgbl24+GLYvTva0YiIiIiIiIgcTAmEYuDQQ2H8ePjlF7j11mhHIyIiIiIiInIwJRCKidNOg2uugccfh+nTox2NiIiIiIiISEZFnkAws7+b2XNmNsnMeprZFDMba2YPF3Usxc0DD0CLFjBoEGzZEu1oRERERERERNIVeQLBOfeec+4KYBBwPrAriGN9UcdS3FSuDK++CmvXwrXXRjsaERERERERkXTR7MJwO/AUcJ5zbihwhJm1D7egmQ01syQzS9qwYUORBlnUOneG22/3iYR33ol2NCIiIiIiIiJeNLowmJk9AExxzn3vnEsNZv0JVA23jnNunHMu0TmXWLt27SKLNVpGjoTERLjySt8aQURERERERCTa4qKwz/8DTgVqmFkz4Dh8N4Y44MEoxFPslCvnWyAcdRRcfjl8+CGYRTsqERERERERKc2KPIHgnHsCeCJk0tiijiEWtGzpiyoOHw7PPQdDh0Y7IhERERERESnNNIxjMXbNNXDKKfDPf8Lvv0c7GhERERERESnNlEAoxsqUgfHjIS4OLr0UUlKiHZGIiIiIiIiUVkogFHMNGsBTT8HMmfDQQ9GORkREREREREorJRBiwEUXwbnnwp13wvz50Y5GRERERERESiMlEGKAGYwdC4cdBpdcAnv2RDsiERERERERKW2UQIgRhx0GL74ICxb4lggiIiIiIiIiRUkJhBhy+ulw5ZXw8MPw5ZfRjkZERERERERKEyUQYszDD0OTJn5Uhm3boh2NiIiIiIiIlBZKIMSYqlXhlVdgxQq4/vpoRyMiIiIiIiKlhRIIMej44+GWW3xNhEmToh2NiIiIiIiIlAZKIMSou++Gjh3hiivgzz+jHY2IiIiIiIiUdEogxKjy5eHVV2HrVl9Y0bloRyQiIiIiIiIlmRIIMaxtW7jvPnjvPXj55WhHIyIiIiIiIiWZEggx7rrroHt3uPZaWLYs2tGIiIiIiIhISaUEQowrWza99cGgQZCaGtVwREREREREpIRSAqEEaNQIHn8cvvgCHnss2tGIiIiIiIhISaQEQgkxaBD87W9w223w88/RjkZERERERERKGiUQSggzGDcOqleHiy+GffuiHZGIiIiIiIiUJEoglCB16sBzz8H8+XDPPdGORkREREREREoSJRBKmL/9DQYPhtGj4Ztvoh2NiIiIiIiIlBRKIJRAjz0GCQkwcCDs2BHtaERERERERKQkUAKhBKpe3Q/t+McfcNNN0Y5GRERERERESgIlEEqo7t3hhhtg7FiYMiXa0YiIiIiIiEisUwKhBPvXv6BtWxgyBDZtinY0IiIiIiIiEsuUQCjBKlaEV1/1yYOrrgLnoh2RiIiIiIiIxColEEq4jh39kI7//S+8/nq0oxEREREREZFYpQRCKXDzzXD88XD11bBqVbSjERERERERkViU7wSCmR1nZk+Z2Y9mtsHMVpjZZDO72sxqZLPe383sOTObZGY9zeyi4PMrZlYlv/FI1sqWhVdegeRkGDwYUlOjHZGIiIiIiIjEmnwlEMxsCnA58DHQGzgCaA3cDlQEJplZv3DrOufec85dAQwCzgfOCj6/BZydn3gkZ02bwn/+A59+Ck89Fe1oREREREREJNaYy0dlPTOr5ZzbWJBlzOw/wARghHOuv5m1A/o65+4Ps+xQYChAQkLC0cuXL89zzOKLKPbtC599BvPmQcuW0Y5IREREREREihMzm+ucSww3L18tENISA2ZWxczKBO+bm1k/MysXukyYYMzMHgCmOOe+D5mVAITtoe+cG+ecS3TOJdauXTs/IQtgBs8/D1WqwCWXwP790Y5IREREREREYkVBiyh+CVQ0s/rAdGAw8FIO6/wfcCpwrpkNA94zs2eA84B3CxiP5OCII2DsWEhKgvvui3Y0IiIiIiIiEivy1YXhwMpm3zvnOpnZ/wGVnHMPmtk859xRhRdiRomJiS4pKSlSmy81LrkEJk6Eb7+Fzp2jHY2IiIiIiIgUB4XehSHjtu04YADwUTAtroDblCLw5JO+NcIll8CuXdGORkRERERERIq7giYQrgNuBf7nnPvZzJoAnxc4Kom4Qw6Bl16CxYthxIhoRyMiIiIiIiLFXYESCM65L5xz/ZxzDwSf/3DOXVs4oUmknXIKXHutb40wbVq0oxEREREREZHirEAJBDNLNLN3zex7M/sx7VVYwUnkjR7th3McPBg2b452NCIiIiIiIlJcFbQLwwT8qAvnAGeGvCRGVKoEr74K69fD//1ftKMRERERERGR4qqgCYQNzrn3nXNLnXPL016FEpkUmcREuOMOmDAB/vvfaEcjIiIiIiIixVFBh3E8BbgQmA7sTZvunHu34KGFp2EcI2P/fjjhBPj9d1iwwI/QICIiIiIiIqVLJIdxHAx0BHqT3n2hbwG3KVFQrpzvyrB7N1x2GRQgryQiIiIiIiIlUFwB1+/gnGtXKJFI1LVoAQ8+6GshjBsHV14Z7YhERERERESkuChoC4RZZta6UCKRYuEf/4DTToN//hN++y3a0YiIiIiIiEhxUdAEQldgvpktDoZw/EnDOMa2MmXgxRehfHkYOBCSk6MdkYiIiIiIiBQHBe3C0LtQopBiJT4ennoKBgzwXRpuuy3aEYmIiIiIiEi0FSiBoCEbS64LL4RJk+Cuu+D00+Goo6IdkYiIiIiIiERTQbswSAllBs88A7Vrw8UXw5490Y5IREREREREokkJBMlSzZq+HsLChXD77dGORkRERERERKJJCQTJVu/ecNVV8Mgj8MUX0Y5GREREREREoqVACQQzO9vMlpjZVjPbZmbbzWxbYQUnxcNDD0HTpnDppbBNZ1dERERERKRUKmgLhAeBfs65Gs656s65as656oURmBQfVarAq6/CypUwfHi0oxEREREREZFoKGgCYb1zblGhRCLFWpcucOut8NJL8N570Y5GREREREREipo55/K/stnjwOHAe8DetOnOuXcLHFkWEhMTXVJSUqQ2L9nYt88nElatggULoE6daEckIiIiIiIihcnM5jrnEsPNK2gLhOrALqAncGbw6lvAbUoxVb6878qwbRtccQUUIPckIiIiIiIiMSauICs75wYXViASG9q0gfvugxtugPHjYciQaEckIiIiIiIiRSFfCQQzu9k596CZPQkc9BzaOXdtgSOTYuu66+CDD3xBxZNOgsaNox2RiIiIiIiIRFp+WyCkFU5UMYJSqEwZX0yxfXs/tOPnn0PZstGOSkRERERERCIpXwkE59wHwc+XCzcciRUNG8ITT8CgQfDoo3DjjdGOSERERERERCIpX0UUzWycmbXLYl4VMxtiZgMKFpoUdwMHwllnwciR8NNP0Y5G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66MdVpln7l7wUgezA7N6wGigF/AkwciDbkAVYES42DhgN/Cxu0/Jb3tdunTx5GQNMxEREREREZGD4+48ueBJbnrnJqomVOWZvs9wfqvzox1WVJnZfHfvkuu8kk4gFDclEERERERERKQ4fbvpWwa+NpBFPy1iRNcRPNzrYaokVIl2WFGRXwJBj3EUERERERGRQ1rr+q35/OrPufnEmxn/5Xi6/rMrS35eEu2wyhwlEEREREREROSQVym+Eo/0foSZg2aycddGuv6zK+PmjaO4R+0/+uijHHPMMbRr146BAweye/dupk6dyjHHHENcXBz5jbh/5513aNWqFUcddRRjxowp1rgKQwkEERERERERkdBZR53F4uGLOf3w07lx5o30ebkPG3cWTzH/devW8Y9//IPk5GSWLl1KWloaL7/8Mu3ateP111/n1FNPzXPdtLQ0RowYwcyZM1m2bBkvvfQSy5YtK5a4CksJBBEREREREZEIjao34q3L3mJs77HM+u8sOk7syJwf5xTLtvfv309qair79+9n165dNGnShDZt2tCqVat815s3bx5HHXUURxxxBBUrVuTSSy9l+vTpxRJTYSmBICIiIiIiIpKNmXHTiTcxb+g8aleuTa/ne3H77NvZm7b3gLfZtGlTbr31VhITE2ncuDG1atXizDPPLNS669ato3nz5pmfmzVrxrp16w44lgOhBIKIiIiIiIhIHjoe1pHkYclc2/laHv70YU5+6mS+3/z9AW1r69atTJ8+nRUrVrB+/Xp27tzJCy+8UKh1c6vFYGYHFMeBUgJBREREREREJB9VE6oy8byJvH7x66xIWUGnJzrxzMJnilxgcc6cORx++OE0aNCAhIQE+vfvz6efflqodZs1a8aaNWsyP69du5YmTZoUaf8HSwkEERERERERkULo16YfXw3/iq5NuzLkzSFc+tqlpOxOKfT6iYmJfP755+zatQt357333qNNmzaFWrdr164sX76cFStWsHfvXl5++WX69OlzgEdyYJRAEBERERERESmkZjWbMefyOdx/+v28tuw1Ok7syMerPy7UuieccAIXXnghnTp1on379qSnpzNs2DD+9a9/0axZMz777DPOPfdcevfuDcD69es555xzAIiPj2fcuHH07t2bNm3acPHFF3PMMceU2HHmxor7mZYlrUuXLp7fczFFRERERERE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = np.arange(10,100,10)\n", + "print(\"training_times : \\n\", training_times)\n", + "print(\"prediction_times : \\n\", prediction_times)\n", + "\n", + "training_times = [i*1000 for i in training_times]\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various percentage of training dataset (k=3)')\n", + "figs[1].title.set_text('Training times for various percentage of training dataset (k=3)')\n", + "figs[2].title.set_text('Prediction times for various percentage of training dataset (k=3)')\n", + "figs[0].set_xlabel('Percentage of training dataset')\n", + "figs[1].set_xlabel('Percentage of training dataset')\n", + "figs[2].set_xlabel('Percentage of training dataset')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "572d0a52", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing for taille échantillon = 5000 données\n", + "Computing for taille échantillon = 10000 données\n", + "Computing for taille échantillon = 15000 données\n", + "Computing for taille échantillon = 20000 données\n", + "Computing for taille échantillon = 25000 données\n", + "Computing for taille échantillon = 30000 données\n", + "Computing for taille échantillon = 35000 données\n", + "Computing for taille échantillon = 40000 données\n", + "Computing for taille échantillon = 45000 données\n", + "Computing for taille échantillon = 50000 données\n", + "Computing for taille échantillon = 55000 données\n", + "Computing for taille échantillon = 60000 données\n", + "Computing for taille échantillon = 65000 données\n" + ] + } + ], + "source": [ + "####### Variation de la taille de l'échantillon #######\n", + "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", + "\n", + "for i in range (1,14):\n", + " print(\"Computing for taille échantillon = \", i*5000, \" données\")\n", + " ### Create vector of 5000 random indexes\n", + " rand_indexes = np.random.randint(70000, size=i*5000)\n", + " ### Load data with the previous vector\n", + " data = mnist.data[rand_indexes]\n", + " target = mnist.target[rand_indexes]\n", + "\n", + " # Split the dataset\n", + " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=(0.9))\n", + "\n", + " # Training on xtrain,ytrain\n", + " t1 = round(time.time(),3)\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3)\n", + " clf.fit(xtrain, ytrain)\n", + " t2 = round(time.time(),3)\n", + "\n", + " # Predicting on xtest\n", + " pred = clf.predict(xtest)\n", + " t3 = round(time.time(),3)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", + " # Probabilités des prédictions sur xtest\n", + " pred_proba = clf.predict_proba(xtest)\n", + " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + " scores.append(round(clf.score(xtest, ytest),3))" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "61279a41", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times(in ms)')" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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zp2RhyQUThgkJ8PQoQW9C8oyYSBHZsqUQw8DERERqQJiKjsAEZGKNn/+fLp06UJSUlL+DVuorKwshg0bRq9evRgwYADLly/PX7dnzx5GjBhB165d6datG++//37YvtOmTcPM2BnaPVxqvNTUVNasWcO6devIyclh7ty5DB06NGybPXv2kJOTA8Ds2bM59dRTiYuL49hjj6V9+/asXr0agIULF+bXVrjwwgt54403APjiiy/IycmhhRm8/TY89BD88pfw059C69a+u/ugQXDddfDkk77A4NChvkv8/PmwaZOv5P/++zB7Nvz613DWWdCunZIIVcWYMb6wYmKif08SEzX1nIiIVEnqkSAitUpubi4TJ04Mq64/dOjQsKJ4d955J3369OGFF14oUl1/0qRJnH322Tz33HP51fXzbNq0iQULFmh62looNjaWGTNmMHjwYHJzcxk7dizdu3dn5syZAEyYMIGVK1dy+eWXU6dOHZKTk3nkkUfy958+fTpjxowhJyeHTp06+Z4Lu3Yx9vjjGfvYY/R44AHq5eTwRGwsFtoboWlT38PgvPPChyTExys5UF3V9GEgIiJSI5T79I/lRdM/isjheP/997ntttt47bXXALjrrrsA8qvpAwwZMoRbbrmFk08+GYDjjjuO9957j4YNG9K7d+9ix6iPGDGCP/7xj1xwwQUsXbqUFi1aVMAVSbW3e3fkoofbthVs06RJeLHDvIcSBiIiIlJOKnv6RxGRKqO8quu/+OKLtGvXjt69e1f0JUllSU8v3UwEu3dHLnr49dcF2+QlDM49Nzxx0L69EgYiIiJSZSiRICK1SnlU17/llluYMmUKr7/+ekVdhlS29PTwongbNvjX4JMAkYoehiYMGjf2iYKzzw4fktC+PcSofJGIiIhUbUokiEitUh7V9b/66ivWrVuX3xshMzOTfv36kZGRwbHHHltBVyYVavLk8Mr64F9ffjkcPFiwrFEjnyQYPDh8SIISBiIiIlKNKZEgIrVKaHX9du3aMXfuXJ555pmwbfbs2UOjRo2oV69eWHX9uLi4/Or6Xbp0ya+u37NnT7Zv356/f4cOHVQjoaY5cMD3MMjIgCVLfA+ESA4ehLvvLkgYJCQoYSAiIiI1jhIJIlKrlEt1falZnIO1a33CIC9x8NFHBT0QmjeHBg389IqFJSbCzTdXaLgiIiIiFU2z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dlQiIiIiIiJSAdQjQUrnpZegZ09YtAgeeMC/VhJBRERERESk1lAiQaKTnQ2/+AUMHQrt2sGHH8J114FZZUcmIiIiIiIiFUiJBDm0jz6C/v1h5kz47W9h8WI/O4OIiIiIiIjUOkokSPEOHoS//AVOOAH27oUFC/zr+vUrOzIRERERERGpJCq2KJFlZsIVV8Abb8Dw4TBrFhxzTGVHJSIiIiIiIpVMPRKkqGefhV69/BCGRx6B555TEkFEREREREQAJRIk1LffwtixMHIkJCXBxx/71yqoKCIiIiIiIgElEsT74APo2xcefxwmT4Z334Xjj6/sqERERERERKSKUSKhtjtwAO64A04+Gfbvh7fegj//GerWrezIREREREREpApSscXabN06uOwy3/tg9Gh44AFo3ryyoxIREREREZEqTImE2urpp+G663z9g6efhjFjKjsiERERERERqQY0tKG22bPH9z647DI/M8OyZUoiiIiIiIiISNSUSKhN3nkHeveGf/3L10VYtAg6dKjsqERERERERKQaUSKhNti/38/EMGiQL6L47rvwhz9ArEa2iIiIiIiISOnoTrKmW7PGD11YsgTGjoV774WmTSs7KhEREREREamm1COhpnIOHnkE+vaFL7+EZ5/1r5VEEBERERERkSOgREJNtGsXXHQRjBsHAwbAp5/CiBGVHZWIiIiIiIjUAEok1DT//a+fjeE//4F77vGv4+MrOyoRERERERGpIZRIqCl+/BF++1s480yIi4PFi+GmmyBGb7GIiIiIiIiUHRVbrAlWrIDRo2HZMvjFL2DaNGjUqLKjEhERERERkRpIX1dXZ87BAw9A//6weTO8+CI8+KCSCCIiIiIiIlJu1COhutq2zU/n+MorcPbZ8NhjcOyxlR2ViIiIiIiI1HDlnkgws8bAg0AOsMg5lx4svwQYAuwHpgGrgYeAhkC2c25CecdWbb3yClx1FXzzDdx/P/zyl2BW2VGJiIiIiIhILVARQxuGA885564BhoYsvwi4GrgFuNE5d9A5d61z7nKgnplp2EVh33/vkwZDhkDr1rB0KfzqV0oiiIiIiIiISIWpiJv1eGBT8Dw3ZPk0YDpwHXAUgJklm9nzwPfOuYOFD2Rm481sqZkt3bFjRzmHXX7mz59Ply5dSEpKYurUqUXWZ2VlMWzYMHr16sWAAQNYvnw5fPIJ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KCIiIqeC4121YYGZnQW0AQxY4ZzLKtHIRERESsnevV6iIC9pkJx8eFLEiAjo2hWuv95LGvTuDQkJBYcpPP540TkSIiO9CRdFRERETnbHu2pDKDAUaO47x7lmhnPu6RKMTUREKpicnBwSExNp0qQJM2bM4L777mP69OlERETQsmVLJk2aRO3atYsc99lnn3HnnXeSk5PDmDFjePDBB8ss5uxsWLy4YNJg2TJvaUbwJkHs3/9w0qBLF6hS5cjnHDXK+1l41Ya87SIiIiIns+NdtWEmcAhYDPhHizrnHi650I5MqzaIiJS9p59+mpSUFPbu3cuMGTP44osvOOeccwgLC+OBBx4A4IknnihwTE5ODq1bt2bWrFnExsbSs2dP3nnnHdq3b1/i8TkH69cXTBrMn+/NXQAQHe0NUchLGvTsCXXrlngYIiIiIpVeaazaEOuc63wCMYmISCWTmprKJ598wrhx43j6aa8D2rnnnuvf36dPHz744IMixyUnJ5OQkEB8fDwAI0aMYOrUqSWSSNi9G376qeDcBtu2efuqVIHu3eGmmw4nD1q00EoKIiIiIifqeBMJn5rZuc65L0o0GhERqbDuuusunnzySfbt2xdw/+uvv86VV15ZZPumTZto2rSp/3NsbCzz5s075vozM2HRooJJgxUrDu9v2xaGDDmcNOjUyZvvQERERERK1vEmEn4EPjKzECALb8JF55yrWWKRiYhIhTFjxgxiYmLo0aMHc+bMKbI/KSmJsLAwRgWYJCDQEDo7SrcA52DNmoJJg59/howMb3+DBl6y4OqrDw9RqFXruC5NRERERI7R8SYS/gH0BRa745lkQUREKpXvvvuOadOmMXPmTA4dOsTevXv5wx/+wL///W/efPNNZsyYwezZswMmCGJjY9m4caP/c2pqKo0bNy5QZseOw0MU8pIHO3Z4+6pVgx494LbbvKRBr17e5IYaoiAiIiJSPo53ssXPgSHOudyjFi4lmmxRRKR8zJkzhwkTJjBjxgw+++wz7rnnHr755hvq168fsHx2djatW7dm9uzZNGnShMTEnvzP/7xNWloHf9Jg9WqvrBm0b394MsRevaBjRwg73rS3iIiIiByX0phscQswx8w+BTLyNmr5RxGRU8ttt91GRkYGgwYNArwJF19++WU2b97MmDFjmDFjJmvWhHHJJRPp1m0whw7lkJU1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LpsH/Pzf/AcrPBwiIwO/GjYsuq1atcBlb74Z8q3m6NesGfz5z8cel4iIiIjIqU6JBJFKaNy4w0mEPOnpcMst8N13wT/gZ2Ude90hIVC9euCH9ujooz/YH+1VrZr3Cg8vmbZKTy+YdAGvnqSkkjm/iIiIiMipRokEkUokIwNmzfJ6IASybx988EHRh/NataBRo+N7qC+8LTy8cs0XkNdDozIMAxERERERqQyUSBCp4A4dgs8/9xIE06bB3r3eg3yg+QCaNYN168o8xApv1CglDkRERERESooSCSIV0MGD8OmnXvJg+nTYvx/q1oXLLoPLL/dWIfjjH9VdX0REREREyp4SCSIVxIEDXvLg/ffhk0+8z9HRcNVVXgKhf/+C8waEham7voiIiIiIlD0lEkTK0f79XtLg/fdh5kyvJ0JMDFx9tZc8OOssL2EQiLrri4iIiIhIeVAiQaSM7d0LM2Z4yYPPPvPmQGjYEK6/3hu2cMYZEBpa3lGKiIiIiIgEpkSCSBnYvdub6+CDD7yJEzMyoHFjuPFGL3nQr5+SByIiIiIiUjkokSBSSnbtgqlTveTBF19AVhbExsItt3jJgz59ICSkvKMUERERERE5NkokiJSgHTvg44+95MGXX0J2trck4x13eHMe9Oql5IGIiIiIiFRuSiSInKC0NC958P778NVXkJMDLVrAPfd4yYPERDAr7yhFRERERERKhhIJIsdh61b46CMveTBnDuTmQkIC3H+/lzzo1k3JAxEREREROTkpkSASpC1b4MMPvWELc+d6yYPWreF//seb86BzZyUPRERERETk5KfR2lJpjB49mpiYGDp27Ojf9tBDD9GkSRO6du1K165dmTlzZsBjP/vsM9q0aUNCQgKPP/540HVu2gTPPQdnnglNmsBtt8G2bfDnP8PixbB8Ofz979Cli5IIIiIiIiJyajDnXHnHcFwSExNdSkpKeYchZWju3LlERUVxzTXXsGTJEsBLJERFRXHvvfcWe1xOTg6tW7dm1qxZxMbG0rNnT9555x3at28fsPzGjV6vgw8+gO+/97Z17Oj1OrjsMijmMBERERERkZOGmc13ziUG2qehDVJpnHnmmaxbt+6Yj0tOTiYhIYH4+HgARowYwdSpUwskEtatO5w8mDfP29ali9fb4NJLoW3bErgAERERERGRk4CGNkilN3HiRDp37szo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rh179+71b9u4cSOzZs0iLi6uSPm7776bIUOGFNh277330r9/fzIzMxkwYACffvppkTLLli1jypQpLF26lM2bNzNw4EBWrlxJaGhowLiccyxLW+bvcTBn3Rz2Z+7HMBIbJ3Jfv/sYGD+Qfk37UTWsagm0hIhI2Qp2aMNrwN3AfCCn9MIRERERETm61NRUPvnkE8aNG8fTTz/t33733Xfz5JNPMmzYsALlP/74Y+Lj46le/fAEhZGRkfTv3x+AiIgIunfvTmpqapG6pk6dyogRI6hSpQotWrQgISGB5ORk+vbtezieval8ueZLZq+dzZdrvuT3/b8D0KpuK67ufDUD4wdydvOzqVutbom2g4hIeQg2kbDHOfdpqUYiIiIiIhKku+66iyeffJJ9+/b5t02bNo0mTZrQpUuXAmUPHDjAE088waxZs/zDGgrbvXs306dP58477yyyb9OmTfTp08f/OTY2lpVrV7K1zlb/BIkrdqwAIKZ6DANaDGBg/EAGtBhAs9rNSuJyRUQqlGATCV+b2VPAh0BG3kbn3IJSiUpEREREpBgzZswgJiaGHj16MGfOHMCb7yApKYkvvviiSPm//e1v3H333URFRQU8X3Z2NldddRV33HEH8fFFR+4658jKyWLOujl8ueZLpq+YzqQDk3CrHNXDq3NW87O4qcdNDIwfSMeYjprbQEROesEmEnr7fuZfQ9IB55RsOCIiIiIiR/bdd98xbdo0Zs6cyaFDh9i7dy9XX301a9eu9fdGSE1NpXv37iQnJzNv3jw++OAD7r//fnbv3k1ISAhVq1bltttuA2Ds2LG0atWKu+66y19Hrsvll99/Yfba2cxKm8Urk18he102oRZKjd01uG7EdVx/4fX0ju1NRGhEeTSDiEi5MedcecdwXBITE11KSkp5hyEiIiIi5WjOnDlMmDCBGTNmFNjevHlzUlJSiI6OLrD9oYceIioqinvvvReAP//5z/z666+8//77rN+z3j9B4ldrv2J7urfqQ3xWPHvf3ss/p/6ThPAELh56MatWrSp2skURkZOBmc13ziUG2nfEHglm9gfn3L/N7J5A+51zTwfaLiIiIiJS0S1atYikpCRqx9amWlw1MrMzoRc0PrsxnXZ1otaOWrww4QUa12hMUrUk7rv4PsLCwnjhhReURBCRU9oReySY2U3OuX+a2d8C7XfOPVxq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9O3bt8SuJzs3m9U7VxdIGCzauoh1uw9fY80qNencoDMjO430Jww6xnSkZpWaxZ43L1kQzKoNIiIiUjkokSAiIlJCOnbsyLRp0xg2bBjvv/8+GzduLFLmP//5D926daNKlSokJCSwfPly1q1bR2xsLB9//DGZmZlFjtm0aRN9+vTxf46NjWXTpk3HHee2A9tYtNVLFCzetphFWxexLG0Zh7IPARBqobSJbkPvJr25sfuN/t4GxzsB4qhOo5Q4EBEROYkokSAiIlJCXn/9de644w4eeeQRLrroIiIiIgrsX7p0KQ888ABffPEFAHXq1OGll17iyiuvJCQkhH79+rFmzZoi5w00DDGYB/pD2YdYlrasSC+DbQe2+cs0jGpI5wadubXnrf6EQbv67agaVvVYL19EREROEUokiIiIlJC2bdv6kwQrV67kk08+8e9LTU1l+PDh/Otf/6Jly5b+7RdeeCEXXnghAK+88krAeQ9iY2ML9G5ITU2lcePG/s/OOdbvWV+kl8HKHSvJdbkAVA2rSseYjpzf6nz/sIROMZ2oX71+yTaCiIiInPSUSBARESkh27ZtIyYmhtzcXP7+979z8803A7B7927OP/98xo8fz2mnnRbwmF27dvHiiy/y3nvvFTnvRRddxMiRI7nnnntYvnY5i39dzHybz79m/Ms/+eG+zH3+8vF14ukU04nL21/uTxgk1E0gNKT0J2cUERGRk58SCSIiIsfhqquuYs6cOWzfvp3Y2Fgefvhh9u/fzwsvvADAJZdcwvXXXw/AxIkTWb16NY8++iiPPvooAF988QUxMTHceeed/PLLLwD89a9/pXXr1gB89PFHfPHtF5x1/Vks3rqYjLYZRDWJIptsOA9u//x2aletTaeYTlzT5Rp/wqBjTEdqVKlRDi0iIiIipwot/ygiIlKOnHNsPbC1yDwGv6b9SkZOBgBhIWG0qdemwJCEzg06E1sz9rgmPxQRERE5mnJZ/tHMLgbOB2KAF4BooD9QBbjFV+xFIBOY45ybbGYj85dxzh0orfhERETKWnpWesDJD7enb/eXaRTViM4NOjMofpA/YdA2ui1VwqqUY+QiIiIih5V6jwQzqwNMAGo65y43swuAOr7du51z083sXefclWb2fv4yzrm3ijuveiSIiEh5mrx4MuNmj2PDng3E1YojaUCSf4nDXJfLut3riiQM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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = np.arange(5000,70000,5000)\n", + "\n", + "training_times = [i*1000 for i in training_times]\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various size of the dataset (k=3,train_size=0.9)')\n", + "figs[1].title.set_text('Training times for various size of the dataset')\n", + "figs[2].title.set_text('Prediction times for various size of the dataset')\n", + "figs[0].set_xlabel('Size of the dataset')\n", + "figs[1].set_xlabel('Size of the dataset')\n", + "figs[2].set_xlabel('Size of the dataset')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b766a47e", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing for d = manhattan\n", + "Fitting...\n", + "Predicting...\n" + ] + } + ], + "source": [ + "####### Variation des types de distances utilisées #######\n", + "\n", + "### Create vector of 5000 random indexes\n", + "rand_indexes = np.random.randint(70000, size=50000)\n", + "### Load data with the previous vector\n", + "data = mnist.data[rand_indexes]\n", + "# print(\"Dataset : \", data)\n", + "target = mnist.target[rand_indexes]\n", + "# print(\"Etiquettes : \", target)\n", + "\n", + "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", + "\n", + "### Train the algorithm with various distance types\n", + "distances = [1,2,3]\n", + "names_distances = [\"manhattan\",\"euclidean\",\"minkowski\"]\n", + "\n", + "for i in distances:\n", + " print(\"Computing for d =\", names_distances[i-1])\n", + " # Split the dataset\n", + " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.9)\n", + " \n", + " # Training on xtrain,ytrain\n", + " t1 = round(time.time(),3)\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3,p=i)\n", + " print(\"Fitting...\")\n", + " clf.fit(xtrain, ytrain)\n", + " t2 = round(time.time(),3)\n", + " \n", + " # Predicting on xtest\n", + " print(\"Predicting...\")\n", + " pred = clf.predict(xtest)\n", + " t3 = round(time.time(),3)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", + " # Probabilités des prédictions sur xtest\n", + " pred_proba = clf.predict_proba(xtest)\n", + " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + " scores.append(round(clf.score(xtest, ytest),3))" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "8f4fd158", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "names_distances : ['manhattan', 'euclidean', 'minkowski']\n", + "training_times : [78.0, 92.0]\n", + "prediction_times : [219800.0, 5061.0]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "x and y must have same first dimension, but have shapes (3,) and (2,)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnrows\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mncols\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m15\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtight_layout\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpad\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3.0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mscores\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'r'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 13\u001b[0m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtraining_times\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'b'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mprediction_times\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'g'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(self, scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1741\u001b[0m \"\"\"\n\u001b[0;32m 1742\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1743\u001b[1;33m \u001b[0mlines\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1744\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1745\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 271\u001b[0m \u001b[0mthis\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 272\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 273\u001b[1;33m \u001b[1;32myield\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 274\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mget_next_color\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[1;34m(self, tup, kwargs)\u001b[0m\n\u001b[0;32m 397\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 398\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 399\u001b[1;33m raise ValueError(f\"x and y must have same first dimension, but \"\n\u001b[0m\u001b[0;32m 400\u001b[0m f\"have shapes {x.shape} and {y.shape}\")\n\u001b[0;32m 401\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (3,) and (2,)" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = names_distances\n", + "print(\"names_distances : \", names_distances)\n", + "training_times = [i*1000 for i in training_times]\n", + "print(\"training_times : \", training_times)\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "print(\"prediction_times : \", prediction_times)\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[1].title.set_text('Training times for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[2].title.set_text('Prediction times for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[0].set_xlabel('Distance type')\n", + "figs[1].set_xlabel('Distance type')\n", + "figs[2].set_xlabel('Distance type')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24b641ef", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "343e5d14", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98107e41", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a45453b9", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -327,7 +812,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.8" } }, "nbformat": 4, diff --git a/TP1_prog1.py.ipynb b/TP1_prog1.py.ipynb index 68bbd00..5889643 100644 --- a/TP1_prog1.py.ipynb +++ b/TP1_prog1.py.ipynb @@ -5,12 +5,38 @@ "execution_count": 1, "id": "3eb7a65b", "metadata": {}, + "outputs": [], + "source": [ + "####### Import #######\n", + "from sklearn.datasets import fetch_openml\n", + "import sklearn\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6cb9b8da", + "metadata": {}, + "outputs": [], + "source": [ + "####### Loading data #######\n", + "# mnist = fetch_openml('mnist_784')\n", + "mnist = fetch_openml('mnist_784',as_frame=False)\n", + "images = mnist.data.reshape((-1, 28, 28))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "66f9e13f", + "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWAAAABaCAYAAACG94wzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAALPklEQVR4nO3de4jU1RvH8fd2teyitXaxTNFEu1FmV6WbZZlYZgUKaZkUkpVCmdqFirKwK1Qa2QW6mFGIGlqUFqWJlqalFqQSaUllv81USrGy/f31PHO+zow7O7vfOTM7n9dfD8/OzB6/LmfO95zzPU9NfX09IiJSenvFboCISLVSBywiEok6YBGRSNQBi4hEog5YRCQSdcAiIpHs05gX19bW1nfq1CmlplS+9evXU1dXV1PMe3VtG7Z8+fK6+vr6do19n65tw4q9tqDrW4h817dRHXCnTp348ssvm69VLcwZZ5xR9Ht1bRtWU1OzoZj36do2rNhrC7q+hch3fTUFISISiTpgEZFI1AGLiESiDlhEJBJ1wCIikagDFhGJRB2wiEgkjdoHLNVp+fLlHk+ePBmA1157zXM33HCDx7fffjsAp59+eolaJ1K5NAIWEYlEHbCISCQVMwWxa9cuj7du3brH19pt8vbt2z23Zs0aj6dMmQLA2LFjPffWW28B0KpVK89NmDDB4wceeKCYZlesr7/+2uNLLrnE423btgFQU5M58uL111/3+N133wVg8+bNKbewen388cceX3fddQAsWLDAc926dSt5myrVxIkTPb7//vsBCMu0ffrppwBccMEFqfx+jYBFRCJRBywiEkn0KYgff/wRgL///ttzixcv9njRokUAbNmyxXMzZsxo9O/p0KGDx7ZSP2vWLM8dfPDBAJx66qmeS+u2o5wtXboUgGuuucZz4ZSPTT0ccsghnttvv/08rqurA2DJkiWe69mzZ9brytHChQs9/v333z0eNGhQjObktWzZMo+bcgJftXr11Vc9njRpksd77703kJzuDKfa0qARsIhIJFFGwF999ZXHffr0ARpeWCuGfaNBcrK9devWQGYBA6B9+/YAtG3b1nMtfTHDFilXrFjhuaFDhwLw888/7/G9Xbt29XjcuHEeDx48GIDevXt7zq79Pffc08QWp8sWXADWrVvncbmMgP/77z8AfvjhB8/ZHWS4cCR7tmFD5mje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\n", "text/plain": [ - "
" + "
" ] }, "metadata": { @@ -22,46 +48,36 @@ "name": "stdout", "output_type": "stream", "text": [ - "Classe : 5\n" + "Classe : ['5' '0' '4' '1']\n" ] } ], "source": [ - "from sklearn.datasets import fetch_openml\n", - "import sklearn\n", - "import matplotlib.pyplot as plt\n", - "mnist = fetch_openml('mnist_784',as_frame=False)\n", - "images = mnist.data.reshape((-1, 28, 28))\n", - "plt.imshow(images[0],cmap=plt.cm.gray_r,interpolation=\"nearest\")\n", + "####### Printing example of data #######\n", + "fig, figs = plt.subplots(nrows=1, ncols=4)\n", + "for i in range(4):\n", + " figs[i].imshow(images[i],cmap=plt.cm.gray_r,interpolation=\"nearest\")\n", + " figs[i].axes.get_xaxis().set_visible(False)\n", + " figs[i].axes.get_yaxis().set_visible(False)\n", "plt.show()\n", - "print(\"Classe : \", mnist.target[0])" + "print(\"Classe : \", mnist.target[0:4])" ] }, { "cell_type": "code", - "execution_count": null, - "id": "6cb9b8da", - "metadata": {}, - "outputs": [], - "source": [ - "# mnist = fetch_openml('mnist_784')\n", - "mnist = fetch_openml('mnist_784',as_frame=False)" - ] - }, - { - "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "40907bdc", "metadata": {}, "outputs": [], "source": [ + "####### Printing various information of mnist #######\n", "# print(mnist)\n", - "# print (mnist.data)\n", - "# print (mnist.target)\n", + "# print(mnist.data)\n", + "# print(mnist.target)\n", "# len(mnist.data)\n", "# help(len)\n", - "# print (mnist.data.shape)\n", - "# print (mnist.target.shape)\n", + "# print(mnist.data.shape)\n", + "# print(mnist.target.shape)\n", "# mnist.data[0]\n", "# mnist.data[0][1]\n", "# mnist.data[:,1]\n", @@ -70,61 +86,45 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "f4dff3a7", + "execution_count": 5, + "id": "38f52261", "metadata": {}, "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, { "name": "stdout", "output_type": "stream", "text": [ - "Classe : 5\n" + "Score : 0.9695238095238096\n" ] } ], "source": [ - "# from sklearn import datasets\n", - "import matplotlib.pyplot as plt\n", - "images = mnist.data.reshape((-1, 28, 28))\n", - "plt.imshow(images[0],cmap=plt.cm.gray_r,interpolation=\"nearest\")\n", - "plt.show()\n", - "print(\"Classe : \", mnist.target[0])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "38f52261", - "metadata": {}, - "outputs": [], - "source": [ + "### Imports\n", "from sklearn import model_selection\n", "from sklearn import neighbors\n", "\n", + "### Data & target variables\n", "data = mnist.data\n", "target = mnist.target\n", "\n", + "### Split the dataset for training and testing\n", "xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.7)\n", "\n", "n_neighbors = 5\n", "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", "clf.fit(xtrain, ytrain)\n", - "clf.predict(xtest)\n", - "clf.predict_proba(xtest)\n", - "print(clf.score(xtest, ytest))" + "pred = clf.predict(xtest)\n", + "pred_proba = clf.predict_proba(xtest)\n", + "print(\"Score : \", clf.score(xtest, ytest))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad5a825f", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -143,7 +143,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.8" } }, "nbformat": 4, diff --git a/TP1_prog2.py.ipynb b/TP1_prog2.py.ipynb index 780b9ae..72e8780 100644 --- a/TP1_prog2.py.ipynb +++ b/TP1_prog2.py.ipynb @@ -2,17 +2,31 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 23, "id": "530f620c", "metadata": {}, "outputs": [], "source": [ + "####### Import #######\n", "from sklearn.datasets import fetch_openml\n", "from sklearn import model_selection\n", "from sklearn import neighbors\n", "import sklearn\n", "import numpy as np\n", - "\n", + "from matplotlib import pyplot as plt\n", + "from sklearn.model_selection import KFold\n", + "import time\n", + "import statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "68b6a517", + "metadata": {}, + "outputs": [], + "source": [ + "####### Loading data #######\n", "mnist = fetch_openml('mnist_784',as_frame=False)" ] }, @@ -33,112 +47,114 @@ " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]\n", " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['1' '3' '4' ... '5' '1' '2']\n", - "Prédiction : ['6' '7' '1' '4' '2' '7' '6' '6' '4' '9' '8' '4' '0' '0' '6' '8' '5' '0'\n", - " '9' '6' '5' '0' '7' '7' '0' '7' '6' '1' '0' '1' '6' '6' '5' '8' '5' '6'\n", - " '6' '5' '0' '7' '7' '5' '2' '7' '3' '2' '2' '6' '0' '0' '5' '8' '2' '4'\n", - " '1' '0' '9' '6' '3' '7' '6' '3' '9' '4' '0' '0' '8' '8' '0' '6' '7' '1'\n", - " '8' '3' '1' '6' '9' '1' '8' '0' '2' '0' '4' '5' '9' '3' '4' '3' '6' '3'\n", - " '2' '3' '8' '0' '8' '6' '1' '7' '3' '8' '4' '2' '0' '7' '9' '4' '0' '2'\n", - " '2' '0' '2' '2' '3' '0' '0' '0' '6' '8' '2' '4' '3' '7' '2' '6' '8' '4'\n", - " '3' '8' '8' '0' '4' '6' '1' '0' '4' '6' '6' '0' '0' '6' '1' '6' '5' '5'\n", - " '1' '5' '8' '2' '6' '4' '7' '5' '3' '2' '5' '8' '5' '2' '2' '3' '0' '3'\n", - " '6' '1' '4' '8' '1' '7' '7' '5' '9' '1' '3' '5' '0' '7' '8' '6' '5' '0'\n", - " '6' '6' '8' '5' '9' '5' '3' '9' '7' '4' '9' '0' '1' '5' '3' '3' '6' '1'\n", - " '1' '1' '8' '7' '7' '1' '7' '4' '1' '1' '3' '8' '4' '4' '3' '9' '8' '4'\n", - " '0' '4' '4' '9' '6' '0' '6' '0' '3' '8' '8' '0' '9' '1' '4' '4' '2' '1'\n", - " '5' '7' '5' '0' '7' '6' '0' '4' '5' '7' '5' '9' '4' '3' '4' '4' '0' '5'\n", - " '0' '0' '1' '9' '1' '7' '3' '4' '6' '0' '5' '9' '6' '1' '1' '5' '6' '5'\n", - " '2' '9' '4' '3' '4' '1' '0' '0' '4' '2' '1' '7' '1' '4' '1' '3' '9' '2'\n", - " '0' '8' '7' '7' '4' '4' '7' '1' '8' '7' '1' '4' '6' '9' '2' '7' '1' '4'\n", - " '5' '1' '1' '4' '2' '7' '3' '8' '5' '8' '3' '3' '4' '7' '2' '1' '4' '9'\n", - " '9' '4' '7' '9' '3' '4' '9' '7' '1' '0' '7' '7' '3' '8' '4' '6' '1' '3'\n", - " '5' '5' '4' '9' '6' '0' '1' '1' '0' '0' '0' '3' '2' '7' '9' '8' '0' '3'\n", - " '6' '1' '9' '4' '0' '1' '0' '0' '1' '6' '9' '6' '3' '8' '2' '5' '9' '5'\n", - " '1' '3' '7' '0' '9' '3' '2' '6' '8' '5' '1' '5' '4' '1' '4' '1' '1' '3'\n", - " '1' '5' '7' '2' '3' '2' '6' '1' '2' '6' '3' '8' '7' '3' '3' '9' '8' '0'\n", - " '4' '3' '7' '7' '9' '3' '9' '8' '7' '8' '0' '4' '8' '8' '0' '4' '1' '5'\n", - " '1' '2' '1' '3' '5' '4' '9' '8' '1' '3' '1' '5' '8' '4' '8' '2' '9' '8'\n", - " '2' '3' '6' '3' '5' '2' '4' '0' '1' '0' '1' '8' '9' '9' '6' '2' '4' '1'\n", - " '5' '6' '7' '7' '1' '5' '0' '2' '6' '5' '0' '3' '2' '8' '8' '9' '7' '9'\n", - " '4' '4' '1' '9' '7' '8' '2' '1' '9' '6' '2' '4' '8' '7' '8' '9' '9' '4'\n", - " '6' '9' '9' '5' '6' '9' '9' '8' '5' '5' '6' '4' '6' '8' '8' '7' '6' '0'\n", - " '0' '9' '2' '3' '7' '7' '1' '5' '9' '1' '9' '9' '1' '4' '1' '9' '6' '9'\n", - " '0' '9' '4' '6' '1' '0' '7' '0' '8' '9' '7' '3' '8' '2' '3' '0' '2' '8'\n", - " '3' '1' '7' '0' '2' '1' '0' '4' '2' '0' '8' '1' '5' '2' '4' '5' '0' '9'\n", - " '8' '1' '3' '9' '8' '7' '2' '4' '6' '2' '3' '9' '1' '8' '2' '1' '9' '0'\n", - " '2' '4' '0' '9' '1' '4' '1' '3' '2' '4' '9' '5' '0' '2' '2' '1' '1' '7'\n", - " '6' '8' '4' '9' '7' '7' '9' '4' '2' '3' '8' '1' '3' '5' '7' '9' '2' '0'\n", - " '4' '8' '1' '6' '1' '7' '9' '6' '3' '6' '0' '0' '4' '7' '1' '1' '1' '4'\n", - " '5' '6' '6' '1' '7' '6' '1' '7' '6' '1' '1' '2' '0' '8' '6' '1' '4' '3'\n", - " '3' '6' '8' '7' '1' '1' '1' '4' '3' '3' '2' '6' '3' '3' '8' '8' '3' '1'\n", - " '8' '6' '6' '8' '8' '9' '6' '7' '6' '7' '8' '9' '1' '8' '3' '9' '5' '0'\n", - " '6' '6' '9' '3' '1' '2' '5' '5' '0' '9' '5' '9' '0' '0' '6' '1' '8' '5'\n", - " '0' '2' '2' '8' '3' '9' '7' '2' '7' '6' '2' '8' '6' '8' '8' '0' '2' '0'\n", - " '6' '2' '7' '7' '3' '7' '2' '7' '1' '7' '9' '3' '4' '7' '7' '9' '9' '2'\n", - " '5' '8' '3' '7' '7' '2' '1' '7' '1' '1' '9' '9' '3' '0' '9' '4' '9' '0'\n", - " '7' '6' '7' '7' '7' '7' '9' '7' '8' '1' '1' '6' '2' '6' '3' '8' '2' '8'\n", - " '1' '5' '7' '0' '8' '3' '2' '7' '5' '1' '5' '3' '5' '2' '1' '7' '6' '0'\n", - " '2' '6' '3' '2' '6' '0' '6' '2' '3' '9' '8' '6' '4' '9' '1' '3' '0' '4'\n", - " '2' '3' '8' '1' '9' '0' '3' '5' '4' '5' '3' '2' '5' '0' '1' '1' '8' '3'\n", - " '5' '6' '2' '1' '9' '3' '0' '4' '5' '9' '7' '2' '2' '1' '2' '1' '1' '5'\n", - " '0' '9' '3' '7' '1' '9' '6' '5' '1' '6' '0' '1' '1' '6' '5' '8' '2' '2'\n", - " '1' '8' '9' '7' '6' '8' '4' '5' '2' '3' '0' '7' '6' '0' '6' '6' '6' '0'\n", - " '8' '8' '3' '4' '0' '9' '7' '5' '1' '1' '1' '4' '6' '7' '9' '6' '3' '9'\n", - " '3' '9' '1' '9' '6' '4' '5' '4' '7' '0' '1' '9' '4' '8' '4' '6' '1' '8'\n", - " '5' '6' '5' '1' '2' '7' '9' '5' '8' '0' '8' '8' '3' '2' '9' '4' '4' '8'\n", - " '3' '0' '6' '5' '9' '7' '0' '0' '9' '7' '0' '3' '2' '1' '0' '5' '6' '4'\n", - " '0' '4' '6' '9' '3' '0' '4' '1' '5' '6' '3' '6' '9' '1' '5' '6' '3' '0'\n", - " '1' '6' '1' '0' '6' '2' '1' '7' '1' '9']\n", - "Probabilités : [[0. 0. 0. ... 0. 0. 0. ]\n", - " [0. 0. 0. ... 1. 0. 0. ]\n", - " [0. 1. 0. ... 0. 0. 0. ]\n", + "Etiquettes : ['8' '2' '9' ... '5' '2' '8']\n", + "Prédiction : ['4' '2' '3' '0' '5' '0' '3' '8' '5' '4' '7' '6' '6' '2' '2' '1' '0' '3'\n", + " '0' '2' '6' '7' '1' '3' '8' '2' '8' '3' '8' '0' '9' '6' '7' '7' '4' '3'\n", + " '4' '8' '6' '9' '8' '8' '3' '2' '6' '3' '4' '2' '1' '2' '7' '1' '0' '6'\n", + " '3' '8' '5' '9' '3' '2' '2' '2' '5' '6' '1' '7' '5' '7' '2' '3' '8' '5'\n", + " '1' '7' '6' '7' '8' '7' '4' '0' '3' '8' '7' '1' '4' '3' '3' '2' '2' '3'\n", + " '1' '1' '0' '6' '3' '9' '1' '0' '7' '5' '6' '2' '1' '0' '2' '5' '9' '2'\n", + " '5' '1' '9' '7' '4' '8' '4' '4' '7' '5' '0' '0' '7' '6' '7' '3' '2' '1'\n", + " '5' '3' '5' '8' '5' '1' '7' '0' '2' '8' '8' '3' '5' '1' '5' '0' '0' '6'\n", + " '0' '5' '3' '4' '3' '9' '7' '3' '5' '5' '5' '7' '2' '0' '5' '3' '5' '8'\n", + " '3' '6' '2' '6' '1' '3' '2' '3' '3' '7' '3' '4' '3' '0' '4' '5' '1' '5'\n", + " '1' '7' '6' '1' '0' '2' '6' '5' '3' '3' '1' '3' '6' '7' '9' '1' '7' '6'\n", + " '2' '5' '2' '6' '2' '3' '3' '3' '1' '3' '7' '7' '6' '8' '3' '1' '4' '5'\n", + " '7' '4' '0' '5' '4' '4' '4' '9' '1' '0' '7' '7' '1' '3' '9' '4' '4' '6'\n", + " '2' '0' '6' '8' '1' '8' '9' '7' '3' '6' '0' '8' '1' '1' '1' '1' '4' '3'\n", + " '0' '6' '3' '1' '3' '7' '1' '0' '8' '4' '5' '7' '5' '3' '9' '5' '0' '2'\n", + " '8' '9' '7' '0' '4' '5' '4' '9' '4' '7' '8' '2' '7' '4' '7' '6' '7' '5'\n", + " '1' '0' '6' '5' '5' '0' '2' '0' '3' '2' '9' '8' '3' '7' '3' '1' '1' '5'\n", + " '8' '2' '6' '6' '0' '2' '0' '2' '1' '2' '1' '7' '0' '6' '4' '9' '7' '5'\n", + " '0' '3' '2' '2' '5' '3' '1' '0' '0' '5' '8' '5' '0' '1' '0' '7' '3' '9'\n", + " '5' '0' '4' '7' '7' '1' '7' '1' '7' '1' '3' '8' '7' '4' '1' '9' '7' '3'\n", + " '2' '7' '4' '7' '0' '6' '9' '7' '1' '2' '1' '5' '0' '7' '8' '0' '3' '2'\n", + " '5' '1' '3' '3' '8' '6' '1' '2' '5' '5' '6' '9' '1' '1' '2' '0' '6' '8'\n", + " '1' '4' '7' '0' '1' '2' '0' '4' '2' '6' '0' '4' '1' '7' '2' '6' '4' '6'\n", + " '5' '3' '6' '0' '4' '2' '9' '7' '9' '1' '6' '9' '2' '8' '1' '7' '7' '6'\n", + " '1' '3' '5' '5' '6' '6' '1' '1' '6' '1' '8' '8' '9' '1' '1' '0' '5' '1'\n", + " '0' '5' '2' '0' '3' '9' '7' '0' '4' '5' '5' '5' '9' '2' '0' '4' '9' '6'\n", + " '0' '7' '5' '8' '3' '8' '3' '9' '6' '4' '6' '5' '7' '4' '6' '8' '8' '0'\n", + " '0' '6' '3' '8' '6' '8' '3' '9' '4' '7' '6' '4' '1' '0' '9' '4' '3' '0'\n", + " '2' '2' '4' '1' '5' '5' '5' '7' '7' '9' '1' '5' '1' '6' '8' '0' '1' '0'\n", + " '3' '3' '0' '8' '3' '5' '3' '6' '3' '8' '6' '8' '4' '3' '5' '3' '4' '6'\n", + " '7' '1' '6' '2' '7' '9' '0' '2' '8' '1' '8' '2' '8' '0' '7' '6' '2' '9'\n", + " '1' '6' '5' '6' '9' '4' '5' '6' '2' '1' '0' '0' '0' '2' '5' '3' '7' '6'\n", + " '5' '8' '8' '8' '6' '5' '4' '3' '4' '3' '3' '6' '1' '0' '3' '3' '1' '9'\n", + " '6' '7' '5' '9' '7' '7' '3' '2' '4' '9' '8' '8' '4' '4' '3' '5' '8' '2'\n", + " '7' '3' '5' '9' '7' '3' '4' '2' '9' '8' '7' '3' '5' '0' '2' '3' '9' '3'\n", + " '0' '0' '1' '7' '2' '1' '1' '9' '5' '3' '6' '0' '9' '7' '1' '2' '1' '0'\n", + " '4' '4' '3' '0' '4' '6' '5' '6' '9' '9' '1' '2' '0' '3' '8' '6' '0' '6'\n", + " '3' '0' '7' '3' '4' '0' '1' '8' '9' '0' '7' '4' '1' '2' '2' '0' '1' '3'\n", + " '5' '0' '5' '0' '9' '8' '2' '7' '6' '3' '6' '2' '5' '2' '9' '1' '4' '3'\n", + " '5' '5' '2' '7' '8' '1' '8' '9' '2' '9' '3' '4' '5' '5' '5' '3' '4' '4'\n", + " '3' '7' '6' '1' '2' '4' '7' '9' '6' '9' '7' '1' '8' '8' '2' '7' '1' '3'\n", + " '9' '6' '1' '5' '9' '5' '7' '6' '9' '3' '7' '1' '9' '1' '8' '0' '7' '5'\n", + " '8' '0' '5' '3' '2' '7' '6' '8' '4' '7' '6' '0' '1' '4' '2' '9' '9' '4'\n", + " '3' '8' '5' '3' '1' '2' '0' '1' '8' '6' '4' '2' '7' '3' '3' '7' '8' '0'\n", + " '5' '6' '3' '9' '6' '5' '5' '1' '8' '4' '5' '2' '3' '8' '7' '6' '4' '2'\n", + " '3' '8' '6' '9' '9' '6' '1' '1' '5' '6' '2' '7' '9' '0' '0' '5' '0' '0'\n", + " '9' '9' '7' '3' '1' '0' '3' '2' '7' '1' '8' '4' '9' '2' '9' '9' '5' '8'\n", + " '1' '3' '8' '6' '7' '4' '8' '0' '7' '7' '4' '6' '6' '1' '2' '3' '9' '1'\n", + " '2' '5' '5' '1' '1' '9' '5' '0' '1' '8' '0' '4' '3' '0' '9' '1' '9' '0'\n", + " '3' '0' '5' '9' '0' '1' '0' '1' '3' '8' '2' '1' '1' '8' '7' '9' '3' '0'\n", + " '2' '6' '9' '9' '1' '5' '5' '4' '6' '7' '5' '1' '6' '3' '2' '6' '9' '8'\n", + " '2' '6' '0' '0' '8' '3' '7' '8' '2' '4' '7' '7' '1' '7' '7' '4' '3' '2'\n", + " '2' '9' '4' '1' '8' '1' '0' '2' '1' '1' '8' '6' '6' '1' '4' '2' '2' '9'\n", + " '9' '8' '6' '8' '8' '8' '7' '1' '7' '4' '5' '1' '0' '0' '0' '5' '4' '9'\n", + " '3' '0' '6' '7' '3' '0' '0' '4' '8' '6' '5' '9' '1' '5' '3' '6' '5' '3'\n", + " '1' '4' '8' '4' '7' '6' '3' '7' '6' '3']\n", + "Probabilités : [[0. 0.1 0. ... 0.1 0. 0.1]\n", + " [0. 0. 0.8 ... 0.2 0. 0. ]\n", + " [0. 0. 0. ... 0. 0. 0. ]\n", " ...\n", " [0. 0. 0. ... 1. 0. 0. ]\n", - " [0. 0.4 0. ... 0.1 0. 0.3]\n", - " [0. 0. 0. ... 0.1 0. 0.9]]\n", - "Classe image 4 : 9\n", - "Classe prédite image 4 : 4\n", - "Score échantillon de test : 0.912\n", - "Score données apprentissage : 0.94325\n" + " [0. 0. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0. 0. 0. ]]\n", + "Classe image 4 : 5\n", + "Classe prédite image 4 : 0\n", + "Score échantillon de test : 0.932\n", + "Score données apprentissage : 0.92575\n" ] } ], "source": [ + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", "print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", "print(\"Etiquettes : \", target)\n", "\n", + "### Split the dataset for training and testing\n", "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", "# xtest dataset de prédiction et ytest étiquettes de xtest\n", "xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.8)\n", "\n", + "# On entraîne avec k = 10\n", "n_neighbors = 10\n", "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", - "# On entraîne l'algorithme sur xtrain et ytrain\n", + "# Training with xtrain,ytrain\n", "clf.fit(xtrain, ytrain)\n", - "# On prédit sur xtest\n", + "# Predicting with xtest\n", "pred = clf.predict(xtest)\n", "print(\"Prédiction : \", pred)\n", - "# Probabilités des prédictions sur xtest\n", + "# Predicting probabilities with xtest\n", "pred_proba = clf.predict_proba(xtest)\n", "print(\"Probabilités : \", pred_proba)\n", - "# On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + "# Computing the score with xtest,ytest\n", "score = clf.score(xtest, ytest)\n", "print(\"Classe image 4 : \", target[3])\n", "print(\"Classe prédite image 4 : \", pred[3])\n", "print(\"Score échantillon de test : \", score)\n", - "\n", "scoreApp = clf.score(xtrain, ytrain)\n", "print(\"Score données apprentissage : \", scoreApp)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 33, "id": "90db6e29", "metadata": {}, "outputs": [ @@ -146,98 +162,161 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset : [[0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " ...\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['9' '9' '8' ... '9' '4' '6']\n", - "[0.92, 0.922, 0.93, 0.966, 0.924, 0.922, 0.922, 0.896, 0.92, 0.91, 0.916, 0.94, 0.938, 0.938, 0.926, 0.936, 0.932, 0.932, 0.934, 0.938, 0.922, 0.934, 0.96, 0.926, 0.942, 0.934, 0.908, 0.926, 0.92, 0.936, 0.932, 0.924, 0.922, 0.938, 0.938, 0.916, 0.932, 0.96, 0.942, 0.922, 0.926, 0.938, 0.936, 0.924, 0.938, 0.946, 0.922, 0.928, 0.912, 0.908, 0.916, 0.932, 0.932, 0.93, 0.92, 0.928, 0.908, 0.932, 0.918, 0.938, 0.92, 0.93, 0.938, 0.924, 0.924, 0.932, 0.916, 0.916, 0.934, 0.928, 0.924, 0.94, 0.942, 0.926, 0.924, 0.912, 0.93, 0.906, 0.894, 0.922, 0.924, 0.912, 0.906, 0.942, 0.95, 0.924, 0.926, 0.92, 0.92, 0.9, 0.918, 0.908, 0.93, 0.942, 0.916, 0.934, 0.916, 0.92, 0.91, 0.918, 0.93, 0.918, 0.916, 0.894, 0.934, 0.926, 0.934, 0.91, 0.9, 0.914, 0.928, 0.918, 0.924, 0.916, 0.908, 0.904, 0.922, 0.912, 0.92, 0.914, 0.926, 0.906, 0.902, 0.914, 0.9, 0.936, 0.906, 0.942, 0.922, 0.906]\n" + "Computing for k = 2\n", + "Computing for k = 3\n", + "Computing for k = 4\n", + "Computing for k = 5\n", + "Computing for k = 6\n", + "Computing for k = 7\n", + "Computing for k = 8\n", + "Computing for k = 9\n", + "Computing for k = 10\n", + "Computing for k = 11\n", + "Computing for k = 12\n", + "Computing for k = 13\n", + "Computing for k = 14\n", + "Computing for k = 15\n", + "2 : 0.9186000000000001\n", + "3 : 0.9294\n", + "4 : 0.9268000000000001\n", + "5 : 0.926\n", + "6 : 0.925\n", + "7 : 0.9236\n", + "8 : 0.9244\n", + "9 : 0.9232\n", + "10 : 0.922\n", + "11 : 0.921\n", + "12 : 0.9198000000000001\n", + "13 : 0.9194\n", + "14 : 0.9176000000000001\n", + "15 : 0.919\n" ] } ], "source": [ - "from sklearn.model_selection import KFold\n", + "####### Variation du nombre k de voisins #######\n", "\n", + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", - "print(\"Dataset : \", data)\n", + "# print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", - "print(\"Etiquettes : \", target)\n", - "\n", - "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", - "# xtest dataset de prédiction et ytest étiquettes de xtest\n", - "# xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.8)\n", + "# print(\"Etiquettes : \", target)\n", "\n", + "### Split the data in 10 chunks\n", "kf = KFold(n_splits=10, random_state=None, shuffle=True)\n", - "scores = []\n", "\n", - "for k in range(2,15):\n", - " \n", + "# Initialisation des métriques\n", + "all_scores = []\n", + "k_scores = []\n", + "all_times = []\n", + "k_times = []\n", + "\n", + "# Fais varier le nombre de voisins de 2 à 15\n", + "for k in range(2,16):\n", + " print(\"Computing for k =\", k)\n", + " k_scores = []\n", + " k_times = []\n", + " # Boucle sur chaque paire de jeu de données entraînement/test\n", " for train_index, test_index in kf.split(data):\n", - "# print(\"TRAIN:\", train_index, \"TEST:\", test_index)\n", " X_train, X_test = data[train_index], data[test_index]\n", " y_train, y_test = target[train_index], target[test_index]\n", " \n", + " t1 = round(time.time(),3)\n", " clf = neighbors.KNeighborsClassifier(k)\n", " # On entraîne l'algorithme sur xtrain et ytrain\n", " clf.fit(X_train, y_train)\n", + " t2 = round(time.time(),3)\n", " # On prédit sur xtest\n", " pred = clf.predict(X_test)\n", - "# print(\"Prédiction : \", pred)\n", " # Probabilités des prédictions sur xtest\n", " pred_proba = clf.predict_proba(X_test)\n", - "# print(\"Probabilités : \", pred_proba)\n", " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", - " score = clf.score(X_test, y_test)\n", - " scores += [score]\n", - "# print(\"Classe image 4 : \", target[3])\n", - "# print(\"Classe prédite image 4 : \", pred[3])\n", - "# print(\"Score échantillon de test : \", score)\n", - " scoreApp = clf.score(X_train, y_train)\n", - "# print(\"Score données apprentissage : \", scoreApp)\n", - "print(scores)" + " # et l'ajoute à la liste des scores\n", + " k_scores.append(clf.score(X_test, y_test))\n", + " k_times.append(t2-t1)\n", + " all_scores.append(k_scores)\n", + " all_times.append(k_times)\n", + "print(\"Done\")" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "bf91b914", + "execution_count": 72, + "id": "79d055d6", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "2 : 0.9232000000000001\n", - "3 : 0.933\n", - "4 : 0.9308\n", - "5 : 0.9326000000000001\n", - "6 : 0.9300000000000002\n", - "7 : 0.922888888888889\n", - "8 : 0.9266666666666666\n", - "9 : 0.9273333333333333\n", - "10 : 0.9206666666666666\n", - "11 : 0.9208888888888889\n", - "12 : 0.9197777777777778\n", - "13 : 0.9175555555555555\n", - "14 : 0.9162222222222223\n", - "15 : 0.9148888888888889\n" - ] + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times')" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABB0AAAK5CAYAAADzWFZcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAADHWElEQVR4nOzdeVyVZfrH8c+lpGWKrZqIa6QgLmguLTOWWdrqpJQbU1OZTWXlL22xZdo1W0dTizHLSXPJyrLFQ1ZWU5aZZpmDlVOCgEtaWJoVivfvj/uooOAKPAf4vl8vXnCe7VzPDeU517nv6zLnHCIiIiIiIiIiJa1K0AGIiIiIiIiISMWkpIOIiIiIiIiIlAolHURERERERESkVCjpICIiIiIiIiKlQkkHERERERERESkVSjqIiIiIiIiISKlQ0kFEREQCZWZ1zew/ZrbRzB4rgetdZmYflURse3me281swj4ee4+ZPb+H/RlmdmbJRSciIhIZooIOQEREpCIwswwgBohxzq0vsP0LoA3QxDmXEUhwke8qYD0Q7ZxzQQezr5xzI4KOQUREJNJppoOIiEjJWQH02/7AzFoBhwUXTukxs5L84KIRkH4gCYcSjqPc03iIiEikUdJBRESk5EwGLi3w+G/ApIIHmFl1M3vUzFaa2VozSzWzw8L7jjSzN8xsnZnlhn+OLXDu+2Z2v5nNCy9FmGNmxxQViJkdEz5/g5n9ZGYfmlmV8L4GZjYz/Dw/mtnY8PYqZnanmWWa2Q9mNsnMaof3NTYzZ2YDzGwlMDe8/QozWxaO9y0zaxTebmb2z/B1fjazJWbWsog4/x0ep1vMbJOZnRkeo1Fmtir8NcrMqoePP93Mss3sVjNbA0zc2y/FzB4xs4+238su++4xsxnhe91oZv81s/YF9seY2cvhsVphZjfscu7zBR5fGh67H83sH0UsmahW3POEdTCz9PBYTjSzQwtce6CZ/S/8u3zNzGIK7HNmNsjMlgPL93XsRUREyoKSDiIiIiVnPhBtZglmVhXoA+y6jv8hoBmQBMQB9YG7wvuq4N9ENwIaAr8BY3c5vz9wOVAHqAbcVEwsQ4Fs4FigLnA74MJxvQFkAo3Dzz89fM5l4a8uQFOgZhHPfxqQAHQ3swvD1+0Vfp4PgWnh47oBncP3ekR4LH7cNUjn3GXAFOBh51xN59w7wB3ASeExagN0BO4scNpxwFH4cbqqmPvfnkR5GmgNdHPO/VzMoT3CY3AE8Nr2ew4naV4HvsSPU1fg/8ysexHP1QJ4EkgB6gG1w+fs9XkKSAG6A8fjx+3O8LXPAB4EeoevncnO39l2FwKdgBbs49iLiIiUBSUdREREStb22Q5nAV8DOdt3mJkBA4EbnXM/Oec2AiOAvgDOuR+dcy875zaH9w3Hv8kvaKJz7lvn3G/ADPwb86Jswb9BbeSc2+Kc+zC8fKEjvvbEzc65X51zvzvnthddTAEed85975zbBNwG9LXCU/bvCZ/3G/B34EHn3DLn3NbwvSSFZztsAWoB8YCFj1m9j2OYAtznnPvBObcOuBe4pMD+bcDdzrk/wnEU5RB8AuQo4ALn3OY9PN9HzrnZzrl8/O+vTXh7B+BY59x9zrk859z3wNOEf1+7uAh43Tn3kXMuD59I2nW5SHHPs91Y51yWc+4n/O9++1KdFOBZ59znzrk/8L+Xk82scYFzHwz/Tf3GwY29iIhIiVLSQUREpGRNxs9GuIxdllbgZwPUABaFlz1sANLC2zGzGmb2r/AU/V+A/wBHhGcnbLemwM+b8bMRivII8D9gjpl9b2bDwtsbAJnhJMGuYvCfom+XiS86XbfAtqwCPzcCRhe4l58AA+o75+biP8kfB6w1s/FmFl1MrPsSR0yBx+ucc7/v5RpxwF+Ae8NJgD3ZdUwPDSdaGgEx2+8vfI+3U3g8Csa8Y2zCSY5dZxcU9zzbFRzbgvdcaDzCCaEfKTyTouBzH8zYi4iIlCglHUREREqQcy4TX1DyXGDmLrvX45dMJDrnjgh/1XbObU8cDAWaA52cc9H4KfLg38jvbxwbnXNDnXNNgQuAIWbWFf/mtKEVXXBwFf6N9nYNga3A2oKXLvBzFvD3AvdyhHPuMOfcx+EYnnDOnQgk4qf637yP4RcVx6piYijOMvwylJCZNd/H591VFrBil/ur5Zw7t4hjVwMF628cBhy9n8/XoMDPBe+50HiY2eHha+cUOL7QmBzE2IuIiJQoJR1ERERK3gDgDOfcrwU3Oue24afn/9PM6gCYWf0CNQJq4ZMSG8zsKODuAw3AzM43s7jwko5fgPzw1wL8G+SRZna4mR1qZqeGT5sG3GhmTcysJn65xAvFzIoASAVuM7PE8HPWNrOLwz93MLNOZnYI8Cvwe/j598U04E4zO9Z8ocy72L02xl4556bhZya8Y2bH7+/5+LH6JVy08jAzq2pmLc2sQxHHvgRcYGanmFk1/JKQ/U0WDTKz2PDv/nbghfD2qcDlZpZkvqDmCODT4lqwHuTYi4iIlCglHUREREqYc+4759zCYnbfil/2MD+8hOId/OwGgFH4Fpvr8UUp0w4ijBPC194EfAI86Zx7P1xP4AL88oOV+GKTfcLnPItfHvIf/GyN34Hri3sC59wr+MKY08P3shQ4J7w7Gp9gycUvDfgReHQfY38AWAgsAb4CPg9v22/OueeA+4C5u9RA2Jdzt49VEn481gMT8EUidz32v/ixmo5P6mwEfgD+2I+nnArMAb4Pfz0Qvva7wD+Al8PXPp6i60psdzBjLyIiUqLsAFpii4iIiMgehGeKbABOcM6tCDgcERGRwGimg4iIiEgJMLMLwsVAD8fPLPgKyAg2KhERkWAp6SAiIiJSMv6CL/q4Cr+8pa/TlFIREanktLxCREREREREREqFZjqIiIiIiIiISKlQ0kFERERERERESkVU0AGUhWOOOcY1btw46DBEREREREREKpxFixatd84dW9S+SpF0aNy4MQsXFtcuXcqjtLQ0Bg8eTH5+PldeeSXDhg0rtD83N5crrriC7777jkMPPZRnn32Wli1bkpWVxaWXXsqaNWuoUqUKV111FYMHDwbgyy+/5Oqrr2bTpk00btyYKVOmEB0dHcTtiYiIiIiIlBtmllncPi2vkHInPz+fQYMGEQqFSE9PZ9q0aaSnpxc6ZsSIESQlJbFkyRImTZq0I7EQFRXFY489xrJly5g/fz7jxo3bce6VV17JyJEj+eqrr+jZsyePPPJImd+biIiIiIhIRaKkg5Q7CxYsIC4ujqZNm1KtWjX69u3LrFmzCh2Tnp5O165dAYiPjycjI4O1a9dSr1492rVrB0CtWrVISEggJycHgG+++YbOnTsDcNZZZ/Hyyy+X4V2JiIiIiIhUPEo6SLmTk5NDgwYNdjyOjY3dkTjYrk2bNsycORPwSYrMzEyys7MLHZORkcHixYvp1KkTAC1btuS1114D4MUXXyQrK6s0b0NERERERKTCU9JByh3n3G7bzKzQ42HDhpGbm0tSUhJjxoyhbdu2REXtLGGyadMmkpOTGTVq1I66Dc8++yzjxo3jxBNPZOPGjVSrVq10b0RERERERKSCqxSFJKViiY2NLTQLITs7m5iYmELHREdHM3HiRMAnKZo0aUKTJk0A2LJlC8nJyaSkpNCrV68d58THxzNnzhwAvv32W958883SvhUREREREZEKTTMdpNzp0KEDy5cvZ8WKFeTl5TF9+nR69OhR6JgNGzaQl5cHwIQJE+jcuTPR0dE45xgwYAAJCQkMGTKk0Dk//PADANu2beOBBx7g6quvLpsbEhERERERqaCUdJByJyoqirFjx9K9e3cSEhLo3bs3iYmJpKamkpqaCsCyZctITEwkPj6eUCjE6NGjAZg3bx6TJ09m7ty5JCUlkZSUxOzZswGYNm0azZo1Iz4+npiYGC6//PLA7lFERERERKQisKLWx1c07du3dwsXLgw6DBEREREREZEKx8wWOefaF7VPMx2kfJgyBRo3hipV/PcpU4KOSERERERERPZChSQl8k2ZAlddBZs3+8eZmf4xQEpKcHGJiIiIiIjIHmmmg0S+O+7YmXDYbvNmv11EREREREQilpIOEvlWrty/7SIiIiIiIhIRlHSQyNewYdHbY2PLNg4RERERERHZL0o6SOQbPhzMdt+elwcLFpR9PCIiIiIiIrJPlHSQyNepEzgHRx7pkw+NGvl6DtWrwymnwP33w9atQUcpIiIiIiIiu1DSQSJfKOS/f/YZbNsGGRnwwAPw5ZfQty/cdRd07gzffRdomCIiIiIiIlKYkg4S+UIhOOEEOP74wtuPOAKefx6mToX0dEhKgmef9bMiREREREREJHBKOkhk++03eO89OOec4o/p1w+++go6dIABA+Cii2D9+rKLUURERERERIqkpINEtg8+gN9/33PSAaBBA3jnHXjkEXj9dWjVCt56q2xiFBERERERkSIp6SCRLRSCQw+F007b+7FVqsBNN/naD0cfDWefDTfc4GdLiIiIiIiISJlT0kEiW1oadOkChx227+e0aQMLF8L//R+MGQMnngiLF5daiCIiIiIiIlI0JR0kcn3/PXz77d6XVhTl0EPhn/+EOXPg5599282HHoL8/JKPU0RERERERIqkpINEru2tMs8++8CvcdZZsGQJ/OUvMGwYnHEGZGaWTHwiIiIiIiKyR0o6SOQKhXybzBNOOLjrHH00zJgBzz3nl1m0bg1Tpqi1poiIiIiISClT0kEi0++/w9y5B7a0oihmcOml8OWXvrPFX/8K/ftDbm7JXF9E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ikiWmBm/fP89PPwwP19zDTGffQYPPujrNEyc6GeAvPQS9OqlhEMpUdJBRERERESksjrhBLjrLli2DBYtghtugM8/9zUf6taFv/4VZs+GLVtKNYycnBwaFOgGERsbS05OTqFj2rRpw8yZMwGfpMjMzCS7uKUh69dDaiqjfvyRm6+7jga33spNq1fz4D33QE4OzJkDl13mu3xIqVLSQUREREREpLIzg3bt4NFHYeVKX1ixf3+fcDjvPKhXD669Fj76yLeOLGFFLfu3XWopDBs2jNzcXJKSkhgzZgxt27YlKipq5wG//urbXJ5/vo/3mmt46vvv+We/fmT973/88/nnGfDhh342h5QZJR1ERERERERkpypV4PTTYfx4WL0aZs2Cs86Cf/8b/vxnaNIEhg2DL7/0BRlLQGxsLFlZWTseZ2dnExMTU+iY6OhoJk6cyBdffMGkSZNYt24dTerX9x06trcDzc6GJUtgyBD44guey8+n15QpcPzxXHzxxTsLSUqZUdJBREREREREila9uq/xMG0a/PADPP88tGzpZ0QkJfmfhw/3RRkPQocOHVi+fDkrVqwgLy+P6dOn06NHj0LHbNiwgby8PNi2jQm33ELnatWIbt4cLrgA3nrL12Vo0gQyMuChh6BNG2JiYvjggw8AmDt3LieccMJBxSn7T0kHERERERER2buaNSElBd5808+AePJJ3+nizjt9YcaTT4YxY3xxxv0UFRXF2LFj6d69OwkJCfTu3ZvExERSU1NJTU0F51j26qsk1q1LfPXqhB59lNHZ2XD22fDGG/Q780xOnjuXb7KyiG3YkGeeeQaAp59+mqFDh9KmTRtuv/12xo8fX9KjInuhlpkiIiIiIiJy4DIzfbeLqVP90oYqVeDMM/2Sh549ITr6wK/9v//5WRZTp8LXX0NUlE809O/vZ2AcfnjJ3YccsD21zFTSQURERERERErG0qU7kwQZGX55xgUX+CTBOefsW1vK1athxgx/je01GE47zV8jORmOPrpUb0H2X8QmHczscOBJIA943zk3Jby9D3AesAV41Dm3zMz+BZzinGsVPuZc4ApgGzDBOTenuOdR0kFERERERKQMOQeffgpTpsALL8C6db49ZXKyTx6sWgX/+IfvlNGwoV+iUbWqTzTMnes7ZLRt64/t0wcKtNOUyBPJSYdLgA3OudfN7AXnXJ/w9hlACnAkMMI5d2V4+0vOuYvCPz8ATAZ+Af7POXdrcc+jpIOIiIiIiEhAtm71iYSpU2HmTNi4sfhjjz/eJxr69YOEhLKLUQ7KnpIOUUVtLEOxwFfhn/MLbH8UGAOswSceivIK8G98McyBpRSfiIiIiIiIHIyoKOjWzX899ZSf2bB+/e7HHXccLF8OZmUfo5SaoLtXZOMTD1AgFufcAufc1cDzQFZRJwK3AacBfwaG7brTzK4ys4VmtnDdunUlG7WIiIiIiIjsv8MOgx9/LHrf2rVKOFRAQScdZgLJZvYU8LqZTQZfryG87W5gZHjbcKCtmaWaWfXwuU8DE4C0XS/snBvvnGvvnGt/7LHHltHtiIiIiIiIyB41bLh/26VcU/cKERERERERKTtTpsBVV8HmzTu31agB48dDSkpwcckB21NNh6BnOoiIiIiIiEhlkpLiEwyNGvnlFI0aKeFQgQVdSFJEREREREQqm5QUJRkqCc10EBEREREREZFSoaSDiIiIiIiIiJQKJR1EREREREREpFQo6SAiIiIiIiIipUJJBxEREREREREpFUo6iIiIiIiIiEipUNJBREREREREREqFkg4iIiIiIiIiUirMORd0DKXOzNYBmUHHsZ+OAdYHHUQE0rjsTmOyO43J7jQmu9OY7E5jUjSNy+40JrvTmOxOY7I7jcnuNCa7K49j0sg5d2xROypF0qE8MrOFzrn2QccRaTQuu9OY7E5jsjuNye40JrvTmBRN47I7jcnuNCa705jsTmOyO43J7iramGh5hYiIiIiIiIiUCiUdRERERERERKRUKOkQucYHHUCE0rjsTmOyO43J7jQmu9OY7E5jUjSNy+40JrvTmOxOY7I7jcnuNCa7q1BjopoOIiIiIiIiIlIqNNNBREREREREREqFkg4RyMwuNLOnzWyWmXULOp5IYGYJZpZqZi+Z2TVBxxMpzOxwM1tkZucHHUskMLPTzezD8N/K6UHHEwnMrIqZDTezMWb2t6DjiRRm9ufw38kEM/s46HgigZk1NLPXzOxZMxsWdDyRwMxamNkMM3vKzC4KOp4gmVlTM3vGzF4KP+4ffq0yycwODzq+IBQxJkPM7HMzaxl0bEEpYkwmhr+eM7OqQccXhCLG5Jbwvz2zzOyooOMLyq7jEt42wMw+CDKuIBXxtxIKv1Z5NOjYDpaSDhHIOfeqc24gcBnQJ+BwIoJzbplz7mqgN1Bh2seUgFuBGUEHEUEcsAk4FMgOOJZI8RegPrAFjckOzrkPw/9PeQN4Luh4IkQz4E3n3BVAi6CDiRDnAGOcc9cAlwYdTJCcc9875wYU2NQz/FplBtAroLACteuYOOceB14LMKTAFTEmlzvnLgc2ADGBBRagIsbkYefclcD7QIPAAgvYruNiZk2Ao4F1wUUVrCL+P7sZ/359bUAhlRglHSLbncC4oIOIFGbWA/gIeDfoWCKBmZ0JpFMB/kdUgj50zp2DT8bcG3QwEaI58IlzbgigWUK76w9MCzqICLEY6Gtmc4H3gg4mQkzGj8kj+BfDstP2omCZQGyQgUhkM7N4oLpzLivoWCKBmVUzswnAefj/fio9M6sCDAVGBRxKpLnYOXcVUM/MWgcdzMFQ0iECmfcQEHLOfR50PJHCOfeac+4UICXoWCJEF+Ak/JumgeH/YVdqzrlt4R9zgepBxhJBsvHjAZAfZCCRxswaAj87534JOpYIcTlwt3PuDPyL4UrPOfeDc24QMAxYH3Q8EaohmkUlxQgvNbkJuCHoWCKFcy4vPNNhPH42okBT4FjgYaCNmZ0bcDwRocDr2h+AmkHGcrCigg5AinQ9cCZQ28zinHOpQQcUtPD6/F74N5KzAw0mQjjn7gAws8uA9QX+x1RpmVkvoDtwBDA22GgixkxgjJn9GfhP0MFEmAHAxKCDiCBpwD1m1h/ICDiWiGBmjYHbgcOBR4KNJlhmdjQwHGhrZrcBr5rZU8BhwKBAgwtIEWOyCjgfSDCzB5xzXwUaYAB2GZM7gOuAEPBEeEwqXYKqiL+TI4AawJH4T/crpYLjgv9Ev094e6xzrlK+1i/ibyUev8QiCp+QKbfUMlNERERERERESkWln44tIiIiIiIiIqVDSQcRERERERERKRVKOoiIiIiIiIhIqVDSQURERERERERKhZIOIiIiIiIiIlIqlHQQERGRYpmZM7PHCjy+yczuKeHn+Hgfjskws2OK2H6Pmd1UkvGIiIhIyVHSQURERPbkD6BXUW/4S4pz7pTSuvaemFnVIJ5XRESkMlHSQURERPZkKzAeuHFfDjazf5vZE2b2sZl9b2YXFdh3s5l9ZmZLzOzeAts3hb9XMbMnzey/ZvaGmc0ueD5wvZl9bmZfmVl8ge1tzGyumS03s4Hha5mZPWJmS8PH9wlvP93M3jOzqcBXZna4mb1pZl+Gj+1zwCMlIiIiu4kKOgARERGJeOOAJWb28D4eXw/4ExAPvAa8ZGbdgBOAjoABr5lZZ+fcfwqc1wtoDLQC6gDLgGcL7F/vnGtnZtcCNwFXhre3Bk4CDgcWm9mbwMlAEtAGOAb4zMy2P1dHoKVzboWZJQOrnHPnAZhZ7X28RxEREdkHmukgIiIie+Sc+wWYBNywj6e86pzb5pxLB+qGt3ULfy0GPscnJE7Y5bw/AS+Gz10DvLfL/pnh74vwyYntZjnnfnPOrQ+f0zF8rWnOuXzn3FrgA6BD+PgFzrkV4Z+/As40s4fM7M/OuZ/38R5FRERkHyjpICIiIvtiFDAAP5tgb/4o8LMV+P6gcy4p/BXnnHtml/OMPdt+3XwKz9Z0uxzn9nKtX3cc6Ny3wIn45MODZnbXXmIQERGR/aCkg4iIiOyVc+4nYAY+8XAg3gKuMLOaAGZW38zq7HLMR0ByuLZDXeD0fbz2X8zsUDM7OnzOZ8B/gD5mVtXMjgU6Awt2PdHMYoDNzrnngUeBdvt/ayIiIlIc1XQQERGRffUYcN2BnOicm2NmCcAnZgawCfgr8EOBw14GugJLgW+BT4F9We6wAHgTaAjc75xbZWav4Os6fImf+XCLc27NLgUowdePeMTMtgFbgGsO5P5ERESkaObcrjMSRURERIJhZjWdc5vCsxYWAKeG6zuIiIhIOaSZDiIiIhJJ3jCzI4Bq+FkLSjiIiIiUY5rpICIiIvvNzO4ALt5l84vOueFBxCMiIiKRSUkHERERERERESkV6l4hIiIiIiIiIqVCSQcRERERERERKRVKOoiIiIiIiIhIqVDSQURERERERERKhZIOIiIiIiIiIlIqlHQQEREp58xsk5k1LeljD5aZhczsb2XxXHuI4VQzWx6+7wtL4Hr/NrMHSiC0vT3PPo+dmb1vZlcWs6+xmTkziyrZCEVERPaN/gESEZFKw8wygBggxjm3vsD2L4A2QBPnXEYZxnM68LxzLvZgruOcq1kax+4PM7sHiHPO/bXAc51TGs+1n+4DxjrnRgcdyP6IkLETERE5aJrpICIilc0KoN/2B2bWCjgsuHD2TJ9QH7RGwH8P5ESNfWEaDxERORBKOoiISGUzGbi0wOO/AZMKHmBm1c3sUTNbaWZrzSzVzA4L7zvSzN4ws3Vmlhv+ObbAue+b2f1mNs/MNprZHDM7ZtcgzOxwIATEhKf+bzKzGDO7x8xeMrPnzewX4DIz62hmn5jZBjNbbWZjzaxagWs5M4sL//xvMxtnZm+Gn/9TMzv+AI/tZmbfmNnPZvakmX1Q1DR+MzsbuB3oE76PLwuMxZXhny8Lj8k/w/fxvZmdEt6eZWY/FFxOsJffwTHhcd9gZj+Z2YdmtttrGjP7DmgKvB6Oq3p4jF8Ln/c/MxtY4Pjdxn7Xa+5y/Vpm9p6ZPWFmVsT+Pf4tmNlJZvZx+D6+DM98KXju9rGramaPmdl6M1thZtfZ7ksmGu3lb+4KM1sV/vsZuss4jwrvWxX+uXp43+lmlm1mt5rZGmDivo69iIjIdvpHQkREKpv5QLSZJZhZVaAP8PwuxzwENAOSgDigPnBXeF8VYCL+E/SGwG/A2F3O7w9cDtQBqgE37RqEc+5X4BxglXOuZvhrVXj3X4CXgCOAKUA+cCNwDHAy0BW4dg/32A+4FzgS+B8wfH+PDb9pfQm4DTga+AY4pagLOOfSgBHAC+H7aFPMc3UCloSvNxWYDnTAj/FfgbFmtn35x55+B0OBbOBYoC4+4eGKiOt4YCVwQTiuP4Bp4XNjgIuAEWbWtcBpu459kczsaOBdYJ5z7gbn3G7PH1bk34KZ1QfeBB4Ajgpvf9nMji3iGgPxfytJQDvgwn19ngK6ACcA3YBhZnZmePsdwEnha7cBOgJ3FjjvuHB8jYCr2MexFxER2U5JBxERqYy2z3Y4C/gayNm+I/yJ9UDgRufcT865jfg31H0BnHM/Oudeds5tDu8bDpy2y/UnOue+dc79BszAv6HbH5845151zm1zzv3mnFvknJvvnNsarjnxryKes6CZzrkFzrmt+DfOe3r+4o49F/ivc25meN8TwJr9vI9drXDOTXTO5QMvAA2A+5xzfzjn5gB5QNzefgfAFqAe0Mg5t8U59+Ee3vTvYGYNgD8BtzrnfnfOfQFMAC4pcFihsS/mUjHAB8CLzrk7izlmu+L+Fv4KzHbOzQ4/19vAQvy476o3MNo5l+2cywVG7sfzbHevc+5X59xX+KTZ9iVGKfjfwQ/OuXX4BFTB8dgG3B3+Hf3GAY69iIhUXlqbJyIildFk4D9AE3ZZWoH/BLcGsKjAjHkDqgKYWQ3gn8DZ+NkBALXMrGr4zTQUfnO+Gdjf4o1ZBR+YWTPgcaB9OLYoYNEezt+f5y/u2JiCcTjnnJll7zXyPVtb4OffwtfddVtN9vI7AB4B7gHmhPePd84V9UZ8VzHA9iTGdpn4cd0ui707D9gEpO7DscWNbyPgYjO7oMD+Q4D3irhGod9FMTHu7Xde8JxMoFWBa2fusi+mwON1zrnfCzw+0LEXEZFKSjMdRESk0nHOZeILSp4LzNxl93r8m99E59wR4a/aBbo+DAWaA52cc9FA5/D23db070so+7j9KfyMjBPCz3n7AT7f/lgNFKxVYQUfF6EkP+3e4+/AObfROTfUOdcUuAAYsssSieKsAo4ys1oFtjWkwEwX9u0+ngbSgNnma3MciCxgcoH7O8I5d3gxb+AL/S7wM0T2V8FzGuLHgvD3RsXsg13G4yDGXkREKiklHUREpLIaAJwRrq2wg3NuG/5N5T/NrA749fdm1j18SC38G+INZnYUcPdBxLAWONrMau/luFrAL8AmM4sHrjmI59xXbwKtzOzCcMHCQfj1/cVZCzQuiaKCe/sdmNn5ZrZ9GcYv+JoX+cVecOd1s4CPgQfN7FAza43/Oyi2dsMeXIevc/HG9gKX++l54AIz6x4uFHlouHBjUYmdGcDg8BgcAdx6AM/3DzOrYWaJ+NoPL4S3TwPuNLNjw3U87mL3Gic7HOjYi4hI5aWkg4iIVErOue+ccwuL2X0rvqji/HAXg3fwsxsARuFbbK7HF6VMO4gYvsa/6fs+3A0gpphDb8IXCtyIfzP+QjHHlRjn3HrgYuBh4EegBb7mwB/FnPJi+PuPZvZ5CYSwp9/BCeHHm4BPgCedc+/v43X7AY3xn+a/gq9X8Pb+BheuY3AVfsbCLDM7dD/Pz8IXrbwdWBe+zs0U/drsaWAOvgjnYmA2sJX9e7P/AX483wUeDdfQAF/IcmH42l8Bn4e3Fedgxl5ERCohU+0fERER2ZvwDIZsIMU5V1TdASkjZnYOkOqca7TXg0VERAKmmQ4iIiJSpPDU/yPMrDo760jMDzisSsfMDjOzc80sKtxq8278LA0REZGIp6SDiIiIFOdk4Dv8UpILgAv30EZSSo/hW1nm4pdXLMPXXhAREYl4Wl4hIiIiIiIiIqVCMx1EREREREREpFQo6SAiIiIiIiIipSIq6ADKwjHHHOMaN24cdBgiIiIiIiIiFc6iRYvWO+eOLWpfpUg6NG7cmIULi2vFHvnS0tIYPHgw+fn5XHnllQwbNqzQfuccgwcPZvbs2dSoUYN///vftGvXDoArrriCN954gzp16rB06dId59x88828/vrrVKtWjeOPP56JEydyxBFHlOVtiYiIiIiISAVgZpnF7dPyigiXn5/PoEGDCIVCpKenM23aNNLT0wsdEwqFWL58OcuXL2f8+PFcc801O/ZddtllpKWl7Xbds846i6VLl7JkyRKaNWvGgw8+WOr3IiIiIiIiIpWLkg4RbsGCBcTFxdG0aVOqVatG3759mTVrVqFjZs2axaWXXoqZcdJJJ7FhwwZWr14NQOfOnTnqqKN2u263bt2IivITXU466SSys7NL/2ZERERERESkUlHSIcLl5OTQoEGDHY9jY2PJycnZ72P25Nlnn+Wcc845+GBFREREREREClDSIcI553bbZmb7fUxxhg8fTlRUFCkpKQcWoIiIiIiIiEgxKkUhyfIsNjaWrKysHY+zs7OJiYnZ72OK8txzz/HGG2/w7rvv7nOSQkRERERERGRfaaZDhOvQoQPLly9nxYoV5OXlMX36dHr06FHomB49ejBp0iScc8yfP5/atWtTr169PV43LS2Nhx56iNdee40aNWqU5i2IiIiIiIhIJaWkQ4SLiopi7NixdO/enYSEBHr37k1iYiKpqamkpqYCcO6559K0aVPi4uIYOHAgTz755I7z+/Xrx8knn8w333xDbGwszzzzDADXXXcdGzdu5KyzziIpKYmrr746kPsTERERERGRisuKqgdQ0bRv394tXLgw6DBEREREREREKhwzW+Sca1/UPs10iDBTpkDjxlCliv8+ZUrQEYmIiIiIiIgcmFIrJGlmhwNPAnnA+865KeHtLYHbwoc96Jxbamb/Ak5xzrUKHzMMOB44DrjGOZdtZiOBGsBm59ywoq5TWvdSVqZMgauugs2b/ePMTP8YQM0lREREREREpLwpzZkOvYCXnHMDgYKVDwcDg4BrgesBnHN/B77ZfoBzbmT4vGeBLmbWEDjEOXcDUNXMGhR1nfLujjt2Jhy227zZbxcREREREREpb0oz6RALbO/jmF9ge23n3Abn3M9AreJONrOaQG/gVaB+gWutDF97j9cxs6vMbKGZLVy3bt1B30xZWLly/7aLiIiIiIiIRLLSTDpk45MDuz7Pz2ZW28yigY1FnRje9xRwi3NuI5BT4FoNwtfe43Wcc+Odc+2dc+2PPfbYkrmjUtaw4f5tFxEREREREYlkpZl0mAkkm9lTwOtmNjm8fTTwBDAWGANgZsOBtmaWambVgX8DRwB3mNkZzrmVwBYzexzId85lFXWd8m74cKhRo/C2atX8dhEREREREZHyRi0zI8yUKb6Gw8qVPuFw2GGwapX/LiIiIiIiIhJp1DKzHElJgYwM2LYN3noLNmyAp54KOioRERERERGR/aekQwQ77TQ480x48EHYtCnoaERERERERET2j5IOEe6BB2D9ehg9OuhIRERERERERPaPkg4RrlMnuOACeOQRyM0NOhoRERERERGRfaekQzlw//3w88/w2GNBRyIiIiIiIiKy75R0KAfatIHevWHUKFi3LuhoRERERERERPaNkg7lxL33wm+/wciRQUciIiIiIiIism+UdCgn4uPhkkvgySchJyfoaERERERERET2TkmHcuTuu2HrVhg+POhIRERERERERPZOSYdypEkTuPJKmDABVqwIOhoRERERERGRPVPSoZy5806oUgXuuy/oSERERERERET2TEmHcqZ+fbj2Wpg0Cb75JuhoRERERERERIqnpEM5NGwYHHaYr/EgIiIiIiIiEqmUdCiH6tSBwYPhhRdgyZKgoxEREREREREpmpIO5dRNN0Ht2vCPfwQdiYiIiIiIiEjRlHQop4480iceXnsNFiwIOhoRERERERGR3SnpUI4NHgzHHOM7WoiIiIiIiIhEGiUdyrFatXxRybffhg8+CDoaERERERERkcKUdCjnrr0W6tXzsx2cCzoaERERERERkZ2UdCjnDjvMJxw++gjmzAk6GhEREREREZGdlHSoAK68Eho10mwHERERERERiSxKOlQA1arB3XfDwoUwa1bQ0YiIiIiIiIh4SjpUEJdcAs2awT/+Afn5QUcjIiIiIiIioqRDhREVBffeC0uXwowZQUcjIiIiIiIioqRDhdK7N7Rq5ZdabN0adDQiIiIiIiJS2SnpUIFUqQL33w/Ll8OkSUFHIyIiIiIiIpWdkg4VTI8e0KGDX2rxxx9BRyMiIiIiIiKVWaklHczscDN7zsyeNrOUAttbmtmU8FfL8LZ/mdlXBY4518xmm9l14cd1zSw1/LXSzKLN7B4zeyG8Laa07qO8MYMHHoCVK2HChKCjERERERERkcqsNGc69AJecs4NBHoU2D4YGARcC1wP4Jz7O/DN9gOcc7OBhws8Xuucuxr4B/Cec+4XYCuQB2wBNpTifZQ7Z50Ff/6zTz5s3hx0NCIiIiIiIlJZlWbSIRbICv9csIljbefcBufcz0Ct/bzm5cBz4Z9HOOcuAd4GrjyoSCuY7bMd1qyBJ58MOhoRERERERGprEoz6ZCNTzzs+jw/m1ltM4sGNu7rxczMgC7AewDOuW3hXT8ANYs4/iozW2hmC9etW3cg8ZdrnTtDt24wciRs3OdRFhERERERESk5pZl0mAkkm9lTwOtmNjm8fTTwBDAWGANgZsOBtuH6DNXN7GRgCNDHzJLD550OfOicc+Fzbg9feygwcdcnd86Nd861d861P/bYY0vvLiPYAw/Ajz/CqFFBRyIiIiIiIiKVkYXfw1do7du3dwsXLgw6jEBceCG89x6sWAFHHRV0NCIiIiIiIlLRmNki51z7ovapZWYFd//9fnnFo48GHYmIiIiIiIhUNko6VHCtWkGfPjB6NPzwQ9DRiIiIiIiISGWipEMlcO+98Pvv8OCDQUciIiIiIiIilYmSDpVAs2bwt7/BU09BdnbQ0YiIiIiIiEhloaRDJXHXXbBtm+9oISIiIiIiIlIWlHSoJBo3hoED4Zln4Pvvg45GREREREREKgMlHSqRO+6AqChf40FERERERET+v737DpOqSvo4/i1AUEDAAAoiIoIYMI+uuoY1Ievu4qusgmJERUUFRREDQ8YAiqIoijlgZBEDiLomzBLMCRCUICoGUETinPePmlkGZgZmhu4+HX6f55kHuH37dvWh+0533Tp1JNmUdMghjRrBBRfAww/DF1/EjkZERERERESynZIOOaZnT6hZE/r0iR2JiIiIiIiIZDslHXJM/fpw8cXw5JPw4YexoxEREREREZFspqRDDrr0UqhXD/LzY0ciIiIiIiIi2UxJhxxUrx706AHPPQfvvhs7GhEREREREclWSjrkqK5dfapFr16xIxEREREREZFspaRDjqpdG668El5+GV59NXY0IiIiIiIiko2UdMhh558P22zj1Q4hxI5GREREREREso2SDjls44094fD22zBhQuxoREREREREJNso6ZDjOnWC7bdXtYOIiIiIiIgknpIOOa56dejTB6ZOhaeeih2NiIiIiIiIZBMlHYRTToGddoL8fFi1KnY0IiIiIiIiki2UdBCqVoV+/eDzz+Gxx2JHIyIiIiIiItlCSQcB4N//hj328KkWK1bEjkZERERERESygZIOAkCVKjBgAHz9NTzwQOxoREREREREJBso6SD/889/wn77Qf/+sGxZ7GhEREREREQk0ynpIP9jBoMGwZw5MHJk7GhEREREREQk0ynpIGs44gg49FBPPvzxR+xoREREREREJJMp6SBrMIOBA+GHH+C222JHIyIiIiIiIplMSQcp4aCDoE0buP56WLQodjQiIiIiIiKSqZR0kFINHAi//AI33xw7EhEREREREclUSUs6mFktM3vAzO4ys47Ftrcys1GFP60Kt91pZp8U2+cYMxtvZhcW2/a1md1hZp3LOo4kzj77wHHHwY03ws8/x45GREREREREMlEyKx2OB0aHEM4B2hbb3g24AOgCXAQQQjgX+KpohxDCeGDwWsdbDGwCzCnrOJJY/fvD4sUwZEjsSERERERERCQTJTPp0JjVCYJVxbbXDSEsDCEsAjatwPH2AjrhyYb1HsfMOpvZZDObvGDBgkqEL61awUknwS23wPffx45GREREREREMk0ykw5z8cTD2o+zyMzqmlkd4PfyHiyEUBBCWAUsNbMq6ztOCGFkCCEvhJBXv379DXgaua1vX1i+HK69NnYkIiIiIiIikmmSmXQYA7QzsxHAs2b2UOH2YcAtwHDgVgAzGwTsVdizoYaZHQB0B9qbWTsza2lm95rZvcBrIYSC0o4jideiBZxxBtxxB8yeHTsaERERERERySQWQogdQ9Ll5eWFyZMnxw4jY82e7cmH00+HkSNjRyMiIiIiIiLpxMymhBDySrtNS2bKejVpAp07w733wowZsaMRERERERGRTKGkg5TLVVdB9erQr1/sSERERERERCRTKOkg5dKwIVx4IYwaBZ99FjsaERERERERyQRKOki59ewJtWtDnz6xIxEREREREZFMoKSDlNsWW8All8B//gNTp8aORkRERERERNKdkg5SId27w2abQX5+7EhEREREREQk3SnpIBVSty5cfjmMHw9vvx07GhEREREREUlnSjpIhV10ETRoAL16xY5ERERERERE0pmSDlJhtWr5EpqvvgqvvBI7GhEREREREUlXSjpIpZx7LjRuDFdfDSHEjkZERERERETSkZIOUikbb+zNJN991/s7iIiIiIiIiKxNSQeptDPPhGbNvLdDQUHsaERERERERCTdKOkglbbRRtC3L3z4IYwZEzsaERERERERSTdKOsgGOflk2Hln6N0bVq2KHY2IiIiIiIikEyUdZINUrQr9+8MXX8Ajj8SORkRERERERNKJkg6ywY4/Hvbay6darFgROxoRERERERFJF0o6yAarUgUGDICZM+G++2JHIyIiIiIiIulCSQdJiGOOgQMO8OTD0qWxoxEREREREZF0oKSDJIQZDBwIc+fCnXfGjkZERERERETSgZIOkjCHH+4/11wDf/wROxoRERERERGJTUkHSaiBA+HHH+HWW2NHIiIiIiIiIrEp6SAJdcAB8I9/wODBsHBh7GhEREREREQkJiUdJOH694dff4WbboodiYiIiIiIiMSkpIMk3N57Q7t2MHQo/PRT7GhEREREREQkFiUdJCn69/dmkoMHx45EREREREREYlHSQZJil12gY0cYPhzmz48djYiIiIiIiMSgpIMkTd++sHy5L6EpIiIiIiIiuSdpSQczq2VmD5jZXWbWsdj2VmY2qvCnVeG2O83sk2L7HGNm483swsJ/tzSze83sETPrWbitr5k9bmZ3mFmjZD0PqbwddoBOneDOO+Hbb2NHIyIiIiIiIqmWzEqH44HRIYRzgLbFtncDLgC6ABcBhBDOBb4q2iGEMB4YXOzfX4UQOoUQTgb+Urh5JbAcWAEsTN7TkA2Rnw9mMGBA7EhEREREREQk1ZKZdGgMzCn8+6pi2+uGEBaGEBYBm1bkgGbWAXix8J/XhBBOBV4Czi5l385mNtnMJi9YsKDi0UtCbLstnHce3H8/TJ8eOxoRERERERFJpWQmHebiiYe1H2eRmdU1szrA7+U9WGHCYbsQwh0AIYSCwpt+BGqvvX8IYWQIIS+EkFe/fv1KPQFJjCuvhBo1vMeDiIiIiIiI5I5kJh3GAO3MbATwrJk9VLh9GHALMBy4FcDMBgF7FfZnqGFmBwDdgfZm1s7M9gJuALY3s6GF97mq8NiXAvcl8XnIBtp6a7joInj0Ufj009jRiIiIiIiISKpYCCF2DEmXl5cXJk+eHDuMnPbLL7D99nDEETBmTOxoREREREREJFHMbEoIIa+027RkpqTE5ptD9+7w1FOg/I+IiIiIiEhuUNJBUuaSSzz5kJ8fOxIRERERERFJBSUdJGXq1IGePWHCBHjzzdjRiIiIiIiISLIp6SApdeGFsNVWcPXVkAPtRERERERERHKakg6SUjVresJh4kT4739jRyMiIiIiIiLJpKSDpFznzrDtttCrl6odREREREREspmSDpJyNWpA797w/vvw7LOxoxEREREREZFkUdJBojj9dGje3FeyKCiIHY2IiIiIiIgkg5IOEsVGG0HfvvDxx/Dkk7GjERERERERkWRQ0kGi6dABdt0V+vSBlStjRyMiIiIiIiKJpqSDRFO1KvTvD199BQ8/HDsaERERERERSTQlHSSq446DvfeGfv1g+fLY0YiIiIiIiEgiKekgUZnBwIHwzTdwzz2xoxEREREREZFEUtJBomvTBv76V08+/Pln7GhEREREREQkUZR0kOiKqh2++w5GjIgdjYiIiIiIiCSKkg6SFv72NzjySLj2Wli8OHY0IiIiIiIikggVSjqYWRUzq5OsYCS3DRwIP/0Et9wSOxIRERERERFJhPUmHczsETOrY2a1gM+Br8ysR/JDk1zzl7/Av/4FQ4bAwoXr3nfChAm0bNmS5s2bc91115W4PYRA165dad68ObvvvjtTp079322dOnWiQYMGtGrVao37PPnkk+y6665UqVKFyZMnJ+IppZTGpCSNiZSHXiel07iUpDERqRy9d6S89FrJUiGEdf4AHxb+2REYCmwEfLy++6XTzz777BMkM3zwQQgQQq9eZe+zcuXK0KxZs/D111+HZcuWhd133z189tlna+wzbty40KZNm1BQUBDeeeedsN9++/3vttdffz1MmTIl7Lrrrmvc5/PPPw9ffvllOPTQQ8OkSZMS+bSSTmNSksZEykOvk9JpXErSmIhUjt47Ul56rWQ2YHIo4/t4eaZXbGRmGwH/BzwdQlgBhKRkQCTn7bknnHgi3HwzLFhQ+j7vv/8+zZs3p1mzZlSvXp0OHTrw9NNPr7HP008/zWmnnYaZsf/++7Nw4ULmz58PwCGHHMLmm29e4rg777wzLVu2TPAzSg2NSUkaEykPvU5Kp3EpSWMiUjl670h56bWSvcqTdLgT+AaoBUw0s+2A35IZlOS2fv1gyRK4/vrSb583bx7bbrvt//7duHFj5s2bV+F9sonGpCSNiZSHXiel07iUpDERqRy9d6S89FrJXutNOoQQbgkhbBNCOKawcuJb4LAUxCY5aqed4NRT4bbbfBnNtXn1zprMrML7ZBONSUkaEykP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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" } ], "source": [ - "nice_scores = np.array_split(scores, 14)\n", - "for i in range (0,14):\n", - " print (i+2, \" : \", nice_scores[i].mean())\n" + "##### x coordinates\n", + "x = np.arange(2,16,1)\n", + "mean_scores = []\n", + "mean_times = []\n", + "for i in range(len(all_scores)):\n", + " mean_scores += [round(statistics.mean(all_scores[i]),3)]\n", + " mean_times += [round(statistics.mean(all_times[i]),3)]\n", + "mean_scores = np.float64(mean_scores)\n", + "mean_times = np.float64(mean_times)\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=2, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,mean_scores, marker='o', color='r')\n", + "figs[1].plot(x,mean_times, marker='o', color='b')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(mean_scores[i], # this is the text\n", + " (x[i],mean_scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(mean_times[i], # this is the text\n", + " (x[i],mean_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Mean scores for k neighbors')\n", + "figs[1].title.set_text('Mean training times for k neighbors')\n", + "figs[0].set_xlabel('N_neighbors')\n", + "figs[1].set_xlabel('N_neighbors')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times')" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 108, "id": "cc24e898", "metadata": {}, "outputs": [ @@ -245,101 +324,473 @@ "name": "stdout", "output_type": "stream", "text": [ - "Dataset : [[0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " ...\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]\n", - " [0. 0. 0. ... 0. 0. 0.]]\n", - "Etiquettes : ['0' '0' '5' ... '9' '8' '6']\n", - "Temps d'entraînement : 0.002\n", - "Temps de prédiction : 0.338\n", - "Temps total : 0.34\n", - "Temps d'entraînement : 0.003\n", - "Temps de prédiction : 0.31\n", - "Temps total : 0.313\n", - "Temps d'entraînement : 0.002\n", - "Temps de prédiction : 0.328\n", - "Temps total : 0.33\n", - "Temps d'entraînement : 0.003\n", - "Temps de prédiction : 0.305\n", - "Temps total : 0.308\n", - "Temps d'entraînement : 0.003\n", - "Temps de prédiction : 0.254\n", - "Temps total : 0.257\n", - "Temps d'entraînement : 0.003\n", - "Temps de prédiction : 0.244\n", - "Temps total : 0.247\n", - "Temps d'entraînement : 0.004\n", - "Temps de prédiction : 0.203\n", - "Temps total : 0.207\n", - "3 : 0.9045714285714286\n", - "4 : 0.91\n", - "5 : 0.9168\n", - "6 : 0.925\n", - "7 : 0.934\n", - "8 : 0.922\n", - "9 : 0.952\n" + "Computing for j = 10 %\n", + "Computing for j = 20 %\n", + "Computing for j = 30 %\n", + "Computing for j = 40 %\n", + "Computing for j = 50 %\n", + "Computing for j = 60 %\n", + "Computing for j = 70 %\n", + "Computing for j = 80 %\n", + "Computing for j = 90 %\n" ] } ], "source": [ - "from sklearn.model_selection import KFold\n", - "import time\n", + "####### Variation du pourcentage des échantillons #######\n", "\n", + "### Create vector of 5000 random indexes\n", "rand_indexes = np.random.randint(70000, size=5000)\n", - "\n", + "### Load data with the previous vector\n", "data = mnist.data[rand_indexes]\n", - "print(\"Dataset : \", data)\n", + "# print(\"Dataset : \", data)\n", "target = mnist.target[rand_indexes]\n", - "print(\"Etiquettes : \", target)\n", - "\n", - "# xtrain data set d'entraînement et ytrain étiquettes de xtrain\n", - "# xtest dataset de prédiction et ytest étiquettes de xtest\n", + "# print(\"Etiquettes : \", target)\n", "\n", "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", "\n", - "for j in range (3, 10):\n", + "### Train the algorithm with various percentage of the dataset used for training\n", + "### from 10% to 90% by 10% increment\n", + "for j in range (1, 10):\n", + " print(\"Computing for j =\", j*10, \"%\")\n", + " # Split the dataset\n", " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=(j/10))\n", " \n", + " # Training on xtrain,ytrain\n", " t1 = round(time.time(),3)\n", - " clf = neighbors.KNeighborsClassifier(n_neighbors=3,p = 2, n_jobs=-1)\n", - " # On entraîne l'algorithme sur xtrain et ytrain\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3)\n", " clf.fit(xtrain, ytrain)\n", " t2 = round(time.time(),3)\n", - " # On prédit sur xtest\n", + " \n", + " # Predicting on xtest\n", " pred = clf.predict(xtest)\n", " t3 = round(time.time(),3)\n", - " \n", - " print(\"Temps d'entraînement : \", round(t2-t1,3))\n", - " print(\"Temps de prédiction : \", round(t3-t2,3))\n", - " print(\"Temps total : \", round(t3-t1,3))\n", - "# print(\"Prédiction : \", pred)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", " # Probabilités des prédictions sur xtest\n", " pred_proba = clf.predict_proba(xtest)\n", - "# print(\"Probabilités : \", pred_proba)\n", " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", - " score = clf.score(xtest, ytest)\n", - " scores += [score]\n", - "# print(\"Classe image 4 : \", target[3])\n", - "# print(\"Classe prédite image 4 : \", pred[3])\n", - "# print(\"Score échantillon de test : \", score)\n", - " scoreApp = clf.score(xtrain, ytrain)\n", - "# print(\"Score données apprentissage : \", scoreApp)\n", + " scores.append(round(clf.score(xtest, ytest),3))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "cbb5eda6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "training_times : \n", + " [0.028, 0.003, 0.004, 0.004, 0.005, 0.006, 0.007, 0.008, 0.013]\n", + "prediction_times : \n", + " [0.252, 0.248, 0.262, 0.242, 0.242, 0.232, 0.18, 0.171, 0.081]\n" + ] + }, + { + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times(in ms)')" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hvD7779TsWJFXnzxRdq2bcvKlSsZOHAg69ato0yZMgwdOpThw4cDcNNNN/HBBx9Qvnx5mjZtyvjx4znkkEMKHKsSCCIiIiIiUrI5B/Pnp3dNSLtnaNgwY9eEChWiGqZk4hwsWZKx28PixX5e+fLQuXN6QuH442NrqMxASkoKzZs3Z9q0acTHx9O5c2cmTpxI69atDyxz0003UbVqVe666y5++eUXrr76aqZPn87atWtZu3YtnTp1Yvv27Rx99NG89957tG7dmk8++YSTTz6ZuLg4brnlFgAeeOCBAsebXQIhrsBbFxERERERiYY9ezJ2TVi1yjeBP/ZYGDXKJw3atlWz+OLMDJo3968hQ/y0DRvgm2/SkwqPPgoPPujntWyZ3uWha1do2rTYn985c+bQrFkzmjRpAsAFF1zApEmTMiQQFi5cyK233gpAy5YtWbZsGevXr+eII47giCOOAKBatWq0atWK1atX07p1a3r27Hlg/S5duvD2229H/LsogSAiIiIiIrFj3To/xOIHH8C0aX7oxSpVoGdPuPdeOOMMdU2IdbVrw9/+5l/gu58kJaV3eXjnHXj+eT+vTp2MCYWjjoJy5aIXexirV6+mQYMGBz7Hx8cze/bsDMt06NCBd999l65duzJnzhyWL1/OqlWrqBtSaHLZsmXMmzePY4899qB9vPjii5x//vmR+xIBJRBERERERKT4cs4PFZhWz2DOHD89IQEGD07vmlBC+spLGJUqQbdu/gWQmgqLFqUnFGbOhHffTV/2mGPSkwrHHQeFUBegIMKVDbBMrSZGjBjB8OHD6dixI+3ateOoo44iLi79dn3Hjh2cc845PPbYY1SvXj3DuqNGjSIuLo4BAwZE5guEUAJBRERERESKlz174PPP07smrFzpm6kfcwz8+98+adCuXbFvui4RUqaMHzWjTRsYOtRPW7s2Y0Jh9GhISfHXSNu2GVspJCQU6bUTHx/PypUrD3xetWoV9erVy7BM9erVGT9+POATDo0bN6Zx48YA7N+/n3POOYcBAwZw9tlnZ1jv5Zdf5sMPP2T69OkHJSUiQUUURUREREQk+tavz9g1YedOqFzZd00480zfNSGkObdItnbs8K1V0pIK334L27f7efXrZxw+sn17iIvcs/Xk5GSaN2/O9OnTqV+/Pp07d+b111+nTZs2B5bZsmULlStXpnz5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f/zxx0HbljwqaAX/5OTcNfPPzTJhzv9BKlU6+Ca+UaPcPeEP/VyxYskq0qc+9CIikokSCCIiUuwVpGr/rl27slw3Pj6es88+GzPjmGOOoUyZMmzcuJHatWsXwbcqgdKa+d98c/gK/tdcAwsX5nzTn9sK/uH68Nerl/dm/ireJyIikitKIIiISLFXkKr92a3797//nc8++4wePXrw66+/sm/fPmrVqhWNrxg9zvkb9sJo5r9vX/b72rIFHnjA9+cPvfmvXRuaNs3bjX/VqtFv5i8iIlLKKIEgIiLFXkGq9me1LsCQIUMYMmQIbdu2pXz58rz88sux030hJSXvw/hl9UpNzXl/FSsefBOfkBD+5v6uu2DTpoO30aCB784QK8dYREREMrBwfUOLs8TERJeUlBTtMERERPJn37689eHP6rVjR+72V7Vq3p7sZ9XMv3z53H/HzDUQwFfwHzdOfepFRESKOTOb65xLDDdPLRBERERy4pwffq8wnvbv3Zvz/sqUOfgmvmbN3BX2y9zMv2zZiB+eg6iCv4iISImkFggiIlI8FcYwgKmphdfMPyUl5/2VK+f79xf0iX/lymrmLyIiIlGhFggiIhJbwg0DeNll8O230L597m/6t2/P3f4qVz74Jj6vRf2qV4cKFSJ3TERERESiTAkEEREpPjZvhq++gquuOngov7174amn0j+bHTyMX40avlBfXvv3x+mfQxEREZGc6H9MIiISPRs3wpdfwhdf+NePP/p6A1kxg5Ur/Y1/lSoaxk9ERESkCCmBICIiRWfduvRkwZdfws8/++mVKsFxx8Hdd8OJJ8Ill/hEQWYJCVC/fpGGLCIiIiKeEggiIhI5q1alJwy++AJ+/dVPr1IFTjgBLrrIJww6d844TOD994cfBnDUqKKNX0REREQOUAJBREQKz7JlGRMGf/zhp1evDl27+kKIJ54InTr5EQuyomEARURERIodDeMoIiL54xz8/nvGhMGKFX7eoYdC9+4+WXDiidChA5QtG914RURERCRHGsZRREQKzjn45Zf0+gVffAFr1vh5tWv7hMGNN/qEQdu2KnAoIiIiUsIogSAiIuGlpvoih6FFD//80887/PD01gUnngitWvkREkRERESkxIpYAsHMqgBPA/uAGc65CcH084EzgP3Aw865RWY2GqgM7HLOjYhUTCIiko2UFD+MYlrC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QYNo164dzjkeeOABatWqBdu3s+vbb5n2wQc8u38/3Hcf/PYbACOAxeXLU6ZSJRq2bs3Ye++FXr2gatUoflsREREREZGMcjWMY3GiYRyl2NuzB+bPz1izYNEiX88AICEhvVVBYiIcfTQcemhUQxYREREREYECDOMoUqpNmAAjR8KKFf6mf9QoGDAg4zL798OCBRmLHC5YAMnJfn7duj5R0L+//3n00X6aiIiIiIhIjFECQSScCRNg6FDYtct/Xr7cf161yicAkpL8a/582LvXL3PooT5JcPPN6a0L6teHTCM1iIiIiIiIxCJ1YRAJp1EjnzTIStWqvjVBWqKgc2do3FjJAhERERERiWnqwiCSVytWZD1v4UJo0QLKlCm6eERERERERKJMCQSRUFu2wOjR6QUPM2vY0A+vKCIiIiIiUsroEaoI+DoGjz4KTZvCgw/CCSdApUoZl6lc2RdSFBERERERKYWUQJDSLTUVJk6Eli3hn//0dQ3mzoWvv4bnnvMtDsz8z3HjDh6FQUREREREpJRQFwYpvT7/HG66yScMOnSAjz+Gnj3T5w8YoISBiIiIiIhIQC0QpPRZsADOOANOPhn+/BNeftknEUKTByIiIiIiIpKBEghSeqxaBZdd5lsbzJzpax38+isMHAhly0Y7OhERERERkWJNXRik5Nu61ScLHn0UUlLguuvgttvgsMOiHZmIiIiIiEjMUAJBSq59+2DsWLj3Xti0CS66CP79b2jcONqRiYiIiIiIxBx1YZCSxzl46y1o1QqGD/ddFpKSYMIEJQ9ERERERETySQkEKVm++AK6dIHzz4cqVWDKFPj0Uz88o4iIiIiIiOSbEghSMixcCP36QY8esHo1jB8P8+ZB795gFu3oREREREREYp4SCBLb1qyBK66Adu1864P774clS2DQII2sICIiIiIiUohURFFi07Zt8NBD8J//QHIyXHstjBwJtWpFOzIREREREZESSQkEiS3798O4cXDPPbBhA1xwAYwaBU2aRDsyERERERGREk1dGCQ2OAfvvANt2sA110Dr1jBnDkycqOSBiIiIiIhIEVACQYq/r7+G44+Hc8+F8uXhww/h88+hc+doRyYiIiIiIlJqKIEgxdcvv8Df/w7dusGKFfD88/DDD3DGGRpZQUREREREpIhFrAaCmVUBngb2ATOccxOC6X2AIUAq8Lxz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Z8N//kPZxYuZv3w5q1atYs6cOSxYsODAeqNGjWLlypUMGDCAMWPGRPy7iIiIiIiISOkTsVEYnHM7gcEhkyYE018HXg+z/DLgxkjFE23x8fGsXLnywOdVq1ZRr169DMuMHzeOEbVrY82b0wxonJDALy+8wDGnnnpgmUMOOYQePXowdepU2rZtm2H9iy66iDPOOIN77rknot9FRERERERESp9ItkCQEJ07d2bJkiUsXbqUffv28cYbb9CvX1Bbcu9eePRREr78kumvvw79+7P+669ZnJxMk44d2bBhA1u2bAFg9+7dfPrpp7Rs2RKAJUuWHNjH+++/f2C6iIiIiIiISGGKWAsEySguLo4xY8bQq1cvUlJSGDJkCG1atWLsZZfBe+8x7K+/uKNbNwbt30+7efNwgwbxwAMPUKtWLX788UcuvfRSUlJSSE1NpX///vTt2xeAESNGsHjxYsqUKUPDhg0ZO3ZslL+piIiIiIiIlEQWrm9+cZaYmOiSkkrAiI+ffw433QRz50KHDvDgg9CzZ7SjEhERERERkVLMzOY65xLDzVMXhqK2YAGccQacfDL8+Se88gp8/72SByIiIiIiIlKsKYEQSRMmQKNGUKYMxMdDjx6+tcHMmb7Fwa+/wiWX+PkiIiIiIiIixZhqIETKhAkwdCjs2uU/r17tX336wKuvQs2a0Y1PREREREREJA/06DtSRo5MTx6E+vlnJQ9EREREREQk5iiBECkrVuRtuoiIiIiIiEgxpgRCpCQk5G26iIiIiIiISDGmBEKkjBoFlStnnFa5sp8uIiIiIiIiEmOUQIiUAQNg3Dho2BDM/M9x4/x0ERERERERkRijURgiacAAJQxERERERESkRFALBBERERERERHJkRIIIiIiIiIiIpIjJRBEREREREREJEfmnIt2DHliZhuA5dGOI49qARujHYTkm85f7NM5jG06f7FN5y/26RzGNp2/2KdzGNti8fw1dM7VDjcj5hIIscjMkpxzidGOQ/JH5y/26RzGNp2/2KbzF/t0DmObzl/s0zmMbSXt/KkLg4iIiIiIiIjkSAkEEREREREREcmREghFY1y0A5AC0fmLfTqHsU3nL7bp/MU+ncPYpvMX+3QOY1uJOn+qgSAiIiIiIiIiOVILBBERERERERHJUVy0AyiJzKwJMBKo4Zw718wuAk4CKgBXOed2RjVA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AqGI3XILdOniWyGsXh3taERERERERERyRwmEIhYXB6++Cvv2wZAh4Fy0IxIRERERERHJmRIIUdCsGfznP/DJJ/D009GORkRERERERCRnSiBEyZVXQu/ecNNNsHhxtKMRERERERERyZ4SCFFiBi+8AJUqwcCBkJwc7YhEREREREREsqYEQhTVqwfPPANz5sD990c7GhEREREREZGsKYEQZf37w0UXwb33wty50Y5GREREREREJDwlEIqBMWOgbl24+GLYvTva0YiIiIiIiIgcTAmEYuDQQ2H8ePjlF7j11mhHIyIiIiIiInIwJRCKidNOg2uugccfh+nTox2NiIiIiIiISEZFnkAws7+b2XNmNsnMeprZFDMba2YPF3Usxc0DD0CLFjBoEGzZEu1oRERERERERNIVeQLBOfeec+4KYBBwPrAriGN9UcdS3FSuDK++CmvXwrXXRjsaERERERERkXTR7MJwO/AUcJ5zbihwhJm1D7egmQ01syQzS9qwYUORBlnUOneG22/3iYR33ol2NCIiIiIiIiJeNLowmJk9AExxzn3vnEsNZv0JVA23jnNunHMu0TmXWLt27SKLNVpGjoTERLjySt8aQURERERERCTa4qKwz/8DTgVqmFkz4Dh8N4Y44MEoxFPslCvnWyAcdRRcfjl8+CGYRTsqERERERERKc2KPIHgnHsCeCJk0tiijiEWtGzpiyoOHw7PPQdDh0Y7IhERERERESnNNIxjMXbNNXDKKfDPf8Lvv0c7GhERERERESnNlEAoxsqUgfHjIS4OLr0UUlKiHZGIiIiIiIiUVkogFHMNGsBTT8HMmfDQQ9GORkREREREREorJRBiwEUXwbnnwp13wvz50Y5GRERERERESiMlEGKAGYwdC4cdBpdcAnv2RDsiERERERERKW2UQIgRhx0GL74ICxb4lggiIiIiIiIiRUkJhBhy+ulw5ZXw8MPw5ZfRjkZERERERERKEyUQYszDD0OTJn5Uhm3boh2NiIiIiIiIlBZKIMSYqlXhlVdgxQq4/vpoRyMiIiIiIiKlhRIIMej44+GWW3xNhEmToh2NiIiIiIiIlAZKIMSou++Gjh3hiivgzz+jHY2IiIiIiIiUdEogxKjy5eHVV2HrVl9Y0bloRyQiIiIiIiIlmRIIMaxtW7jvPnjvPXj55WhHIyIiIiIiIiWZEggx7rrroHt3uPZaWLYs2tGIiIiIiIhISaUEQowrWza99cGgQZCaGtVwREREREREpIRSAqEEaNQIHn8cvvgCHnss2tGIiIiIiIhISaQEQgkxaBD87W9w223w88/RjkZERERERERKGiUQSggzGDcOqleHiy+GffuiHZGIiIiIiIiUJEoglCB16sBzz8H8+XDPPdGORkREREREREoSJRBKmL/9DQYPhtGj4Ztvoh2NiIiIiIiIlBRKIJRAjz0GCQkwcCDs2BHtaERERERERKQkUAKhBKpe3Q/t+McfcNNN0Y5GRERERERESgIlEEqo7t3hhhtg7FiYMiXa0YiIiIiIiEisUwKhBPvXv6BtWxgyBDZtinY0IiIiIiIiEsuUQCjBKlaEV1/1yYOrrgLnoh2RiIiIiIiIxColEEq4jh39kI7//S+8/nq0oxEREREREZFYpQRCKXDzzXD88XD11bBqVbSjERERERERkViU7wSCmR1nZk+Z2Y9mtsHMVpjZZDO72sxqZLPe383sOTObZGY9zeyi4PMrZlYlv/FI1sqWhVdegeRkGDwYUlOjHZGIiIiIiIjEmnwlEMxsCnA58DHQGzgCaA3cDlQEJplZv3DrOufec85dAQwCzgfOCj6/BZydn3gkZ02bwn/+A59+Ck89Fe1oREREREREJNaYy0dlPTOr5ZzbWJBlzOw/wARghHOuv5m1A/o65+4Ps+xQYChAQkLC0cuXL89zzOKLKPbtC599BvPmQcuW0Y5IREREREREihMzm+ucSww3L18tENISA2ZWxczKBO+bm1k/MysXukyYYMzMHgCmOOe+D5mVAITtoe+cG+ecS3TOJdauXTs/IQtgBs8/D1WqwCWXwP790Y5IREREREREYkVBiyh+CVQ0s/rAdGAw8FIO6/wfcCpwrpkNA94zs2eA84B3CxiP5OCII2DsWEhKgvvui3Y0IiIiIiIiEivy1YXhwMpm3zvnOpnZ/wGVnHMPmtk859xRhRdiRomJiS4pKSlSmy81LrkEJk6Eb7+Fzp2jHY2IiIiIiIgUB4XehSHjtu04YADwUTAtroDblCLw5JO+NcIll8CuXdGORkRERERERIq7giYQrgNuBf7nnPvZzJoAnxc4Kom4Qw6Bl16CxYthxIhoRyMiIiIiIiLFXYESCM65L5xz/ZxzDwSf/3DOXVs4oUmknXIKXHutb40wbVq0oxEREREREZHirEAJBDNLNLN3zex7M/sx7VVYwUnkjR7th3McPBg2b452NCIiIiIiIlJcFbQLwwT8qAvnAGeGvCRGVKoEr74K69fD//1ftKMRERERERGR4qqgCYQNzrn3nXNLnXPL016FEpkUmcREuOMOmDAB/vvfaEcjIiIiIiIixVFBh3E8BbgQmA7sTZvunHu34KGFp2EcI2P/fjjhBPj9d1iwwI/QICIiIiIiIqVLJIdxHAx0BHqT3n2hbwG3KVFQrpzvyrB7N1x2GRQgryQiIiIiIiIlUFwB1+/gnGtXKJFI1LVoAQ8+6GshjBsHV14Z7YhERERERESkuChoC4RZZta6UCKRYuEf/4DTToN//hN++y3a0YiIiIiIiEhxUdAEQldgvpktDoZw/EnDOMa2MmXgxRehfHkYOBCSk6MdkYiIiIiIiBQHBe3C0LtQopBiJT4ennoKBgzwXRpuuy3aEYmIiIiIiEi0FSiBoCEbS64LL4RJk+Cuu+D00+Goo6IdkYiIiIiIiERTQbswSAllBs88A7Vrw8UXw5490Y5IREREREREokkJBMlSzZq+HsLChXD77dGORkRERERERKJJCQTJVu/ecNVV8Mgj8MUX0Y5GREREREREoqVACQQzO9vMlpjZVjPbZmbbzWxbYQUnxcNDD0HTpnDppbBNZ1dERERERKRUKmgLhAeBfs65Gs656s65as656oURmBQfVarAq6/CypUwfHi0oxEREREREZFoKGgCYb1zblGhRCLFWpcucOut8NJL8N570Y5GREREREREipo55/K/stnjwOHAe8DetOnOuXcLHFkWEhMTXVJSUqQ2L9nYt88nElatggULoE6daEckIiIiIiIihcnM5jrnEsPNK2gLhOrALqAncGbw6lvAbUoxVb6878qwbRtccQUUIPckIiIiIiIiMSauICs75wYXViASG9q0gfvugxtugPHjYciQaEckIiIiIiIiRSFfCQQzu9k596CZPQkc9BzaOXdtgSOTYuu66+CDD3xBxZNOgsaNox2RiIiIiIiIRFp+WyCkFU5UMYJSqEwZX0yxfXs/tOPnn0PZstGOSkRERERERCIpXwkE59wHwc+XCzcciRUNG8ITT8CgQfDoo3DjjdGOSERERERERCIpX0UUzWycmbXLYl4VMxtiZgMKFpoUdwMHwllnwciR8NNP0Y5G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66MdVpln7l7wUgezA7N6wGigF/AkwciDbkAVYES42DhgN/Cxu0/Jb3tdunTx5GQNMxEREREREZGD4+48ueBJbnrnJqomVOWZvs9wfqvzox1WVJnZfHfvkuu8kk4gFDclEERERERERKQ4fbvpWwa+NpBFPy1iRNcRPNzrYaokVIl2WFGRXwJBj3EUERERERGRQ1rr+q35/OrPufnEmxn/5Xi6/rMrS35eEu2wyhwlEEREREREROSQVym+Eo/0foSZg2aycddGuv6zK+PmjaO4R+0/+uijHHPMMbRr146BAweye/dupk6dyjHHHENcXBz5jbh/5513aNWqFUcddRRjxowp1rgKQwkEERERERERkdBZR53F4uGLOf3w07lx5o30ebkPG3cWTzH/devW8Y9//IPk5GSWLl1KWloaL7/8Mu3ateP111/n1FNPzXPdtLQ0RowYwcyZM1m2bBkvvfQSy5YtK5a4CksJBBEREREREZEIjao34q3L3mJs77HM+u8sOk7syJwf5xTLtvfv309qair79+9n165dNGnShDZt2tCqVat815s3bx5HHXUURxxxBBUrVuTSSy9l+vTpxRJTYSmBICIiIiIiIpKNmXHTiTcxb+g8aleuTa/ne3H77NvZm7b3gLfZtGlTbr31VhITE2ncuDG1atXizDPPLNS669ato3nz5pmfmzVrxrp16w44lgOhBIKIiIiIiIhIHjoe1pHkYclc2/laHv70YU5+6mS+3/z9AW1r69atTJ8+nRUrVrB+/Xp27tzJCy+8UKh1c6vFYGYHFMeBUgJBREREREREJB9VE6oy8byJvH7x66xIWUGnJzrxzMJnilxgcc6cORx++OE0aNCAhIQE+vfvz6efflqodZs1a8aaNWsyP69du5YmTZoUaf8HSwkEERERERERkULo16YfXw3/iq5NuzLkzSFc+tqlpOxOKfT6iYmJfP755+zatQt357333qNNmzaFWrdr164sX76cFStWsHfvXl5++WX69OlzgEdyYJRAEBERERERESmkZjWbMefyOdx/+v28tuw1Ok7syMerPy7UuieccAIXXnghnTp1on379qSnpzNs2DD+9a9/0axZMz777DPOPfdcevfuDcD69es555xzAIiPj2fcuHH07t2bNm3acPHFF3PMMceU2HHmxor7mZYlrUuXLp7fczFFRERERERE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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = np.arange(10,100,10)\n", + "print(\"training_times : \\n\", training_times)\n", + "print(\"prediction_times : \\n\", prediction_times)\n", "\n", - "# nice_scores = np.array_split(scores, 7)\n", - "# print(scores)\n", - "n = 3\n", - "for i in scores:\n", - " print (n, \" : \", i)\n", - " n += 1" + "training_times = [i*1000 for i in training_times]\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various percentage of training dataset (k=3)')\n", + "figs[1].title.set_text('Training times for various percentage of training dataset (k=3)')\n", + "figs[2].title.set_text('Prediction times for various percentage of training dataset (k=3)')\n", + "figs[0].set_xlabel('Percentage of training dataset')\n", + "figs[1].set_xlabel('Percentage of training dataset')\n", + "figs[2].set_xlabel('Percentage of training dataset')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "572d0a52", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing for taille échantillon = 5000 données\n", + "Computing for taille échantillon = 10000 données\n", + "Computing for taille échantillon = 15000 données\n", + "Computing for taille échantillon = 20000 données\n", + "Computing for taille échantillon = 25000 données\n", + "Computing for taille échantillon = 30000 données\n", + "Computing for taille échantillon = 35000 données\n", + "Computing for taille échantillon = 40000 données\n", + "Computing for taille échantillon = 45000 données\n", + "Computing for taille échantillon = 50000 données\n", + "Computing for taille échantillon = 55000 données\n", + "Computing for taille échantillon = 60000 données\n", + "Computing for taille échantillon = 65000 données\n" + ] + } + ], + "source": [ + "####### Variation de la taille de l'échantillon #######\n", + "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", + "\n", + "for i in range (1,14):\n", + " print(\"Computing for taille échantillon = \", i*5000, \" données\")\n", + " ### Create vector of 5000 random indexes\n", + " rand_indexes = np.random.randint(70000, size=i*5000)\n", + " ### Load data with the previous vector\n", + " data = mnist.data[rand_indexes]\n", + " target = mnist.target[rand_indexes]\n", + "\n", + " # Split the dataset\n", + " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=(0.9))\n", + "\n", + " # Training on xtrain,ytrain\n", + " t1 = round(time.time(),3)\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3)\n", + " clf.fit(xtrain, ytrain)\n", + " t2 = round(time.time(),3)\n", + "\n", + " # Predicting on xtest\n", + " pred = clf.predict(xtest)\n", + " t3 = round(time.time(),3)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", + " # Probabilités des prédictions sur xtest\n", + " pred_proba = clf.predict_proba(xtest)\n", + " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + " scores.append(round(clf.score(xtest, ytest),3))" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "61279a41", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(108.0, 0.5, 'Times(in ms)')" + ] + }, + "execution_count": 107, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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zp2RhyQUThgkJ8PQoQW9C8oyYSBHZsqUQw8DERERqQJiKjsAEZGKNn/+fLp06UJSUlL+DVuorKwshg0bRq9evRgwYADLly/PX7dnzx5GjBhB165d6datG++//37YvtOmTcPM2BnaPVxqvNTUVNasWcO6devIyclh7ty5DB06NGybPXv2kJOTA8Ds2bM59dRTiYuL49hjj6V9+/asXr0agIULF+bXVrjwwgt54403APjiiy/IycmhhRm8/TY89BD88pfw059C69a+u/ugQXDddfDkk77A4NChvkv8/PmwaZOv5P/++zB7Nvz613DWWdCunZIIVcWYMb6wYmKif08SEzX1nIiIVEnqkSAitUpubi4TJ04Mq64/dOjQsKJ4d955J3369OGFF14oUl1/0qRJnH322Tz33HP51fXzbNq0iQULFmh62looNjaWGTNmMHjwYHJzcxk7dizdu3dn5syZAEyYMIGVK1dy+eWXU6dOHZKTk3nkkUfy958+fTpjxowhJyeHTp06+Z4Lu3Yx9vjjGfvYY/R44AHq5eTwRGwsFtoboWlT38PgvPPChyTExys5UF3V9GEgIiJSI5T79I/lRdM/isjheP/997ntttt47bXXALjrrrsA8qvpAwwZMoRbbrmFk08+GYDjjjuO9957j4YNG9K7d+9ix6iPGDGCP/7xj1xwwQUsXbqUFi1aVMAVSbW3e3fkoofbthVs06RJeLHDvIcSBiIiIlJOKnv6RxGRKqO8quu/+OKLtGvXjt69e1f0JUllSU8v3UwEu3dHLnr49dcF2+QlDM49Nzxx0L69EgYiIiJSZSiRICK1SnlU17/llluYMmUKr7/+ekVdhlS29PTwongbNvjX4JMAkYoehiYMGjf2iYKzzw4fktC+PcSofJGIiIhUbUokiEitUh7V9b/66ivWrVuX3xshMzOTfv36kZGRwbHHHltBVyYVavLk8Mr64F9ffjkcPFiwrFEjnyQYPDh8SIISBiIiIlKNKZEgIrVKaHX9du3aMXfuXJ555pmwbfbs2UOjRo2oV69eWHX9uLi4/Or6Xbp0ya+u37NnT7Zv356/f4cOHVQjoaY5cMD3MMjIgCVLfA+ESA4ehLvvLkgYJCQoYSAiIiI1jhIJIlKrlEt1falZnIO1a33CIC9x8NFHBT0QmjeHBg389IqFJSbCzTdXaLgiIiIiFU2z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dlQiIiIiIiJSAdQjQUrnpZegZ09YtAgeeMC/VhJBRERERESk1lAiQaKTnQ2/+AUMHQrt2sGHH8J114FZZUcmIiIiIiIiFUiJBDm0jz6C/v1h5kz47W9h8WI/O4OIiIiIiIjUOkokSPEOHoS//AVOOAH27oUFC/zr+vUrOzIRERERERGpJCq2KJFlZsIVV8Abb8Dw4TBrFhxzTGVHJSIiIiIiIpVMPRKkqGefhV69/BCGRx6B555TEkFEREREREQAJRIk1LffwtixMHIkJCXBxx/71yqoKCIiIiIiIgElEsT74APo2xcefxwmT4Z334Xjj6/sqERERERERKSKUSKhtjtwAO64A04+Gfbvh7fegj//GerWrezIREREREREpApSscXabN06uOwy3/tg9Gh44AFo3ryyoxIREREREZEqTImE2urpp+G663z9g6efhjFjKjsiERERERERqQY0tKG22bPH9z647DI/M8OyZUoiiIiIiIiISNSUSKhN3nkHeveGf/3L10VYtAg6dKjsqERERERERKQaUSKhNti/38/EMGiQL6L47rvwhz9ArEa2iIiIiIiISOnoTrKmW7PGD11YsgTGjoV774WmTSs7KhEREREREamm1COhpnIOHnkE+vaFL7+EZ5/1r5VEEBERERERkSOgREJNtGsXXHQRjBsHAwbAp5/CiBGVHZWIiIiIiIjUAEok1DT//a+fjeE//4F77vGv4+MrOyoRERERERGpIZRIqCl+/BF++1s480yIi4PFi+GmmyBGb7GIiIiIiIiUHRVbrAlWrIDRo2HZMvjFL2DaNGjUqLKjEhERERERkRpIX1dXZ87BAw9A//6weTO8+CI8+KCSCCIiIiIiIlJu1COhutq2zU/n+MorcPbZ8NhjcOyxlR2ViIiIiIiI1HDlnkgws8bAg0AOsMg5lx4svwQYAuwHpgGrgYeAhkC2c25CecdWbb3yClx1FXzzDdx/P/zyl2BW2VGJiIiIiIhILVARQxuGA885564BhoYsvwi4GrgFuNE5d9A5d61z7nKgnplp2EVh33/vkwZDhkDr1rB0KfzqV0oiiIiIiIiISIWpiJv1eGBT8Dw3ZPk0YDpwHXAUgJklm9nzwPfOuYOFD2Rm481sqZkt3bFjRzmHXX7mz59Ply5dSEpKYurUqUXWZ2VlMWzYMHr16sWAAQNYvnw5fPIJ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KCIiIqeC4121YYGZnQW0AQxY4ZzLKtHIRERESsnevV6iIC9pkJx8eFLEiAjo2hWuv95LGvTuDQkJBYcpPP540TkSIiO9CRdFRERETnbHu2pDKDAUaO47x7lmhnPu6RKMTUREKpicnBwSExNp0qQJM2bM4L777mP69OlERETQsmVLJk2aRO3atYsc99lnn3HnnXeSk5PDmDFjePDBB8ss5uxsWLy4YNJg2TJvaUbwJkHs3/9w0qBLF6hS5cjnHDXK+1l41Ya87SIiIiIns+NdtWEmcAhYDPhHizrnHi650I5MqzaIiJS9p59+mpSUFPbu3cuMGTP44osvOOeccwgLC+OBBx4A4IknnihwTE5ODq1bt2bWrFnExsbSs2dP3nnnHdq3b1/i8TkH69cXTBrMn+/NXQAQHe0NUchLGvTsCXXrlngYIiIiIpVeaazaEOuc63wCMYmISCWTmprKJ598wrhx43j6aa8D2rnnnuvf36dPHz744IMixyUnJ5OQkEB8fDwAI0aMYOrUqSWSSNi9G376qeDcBtu2efuqVIHu3eGmmw4nD1q00EoKIiIiIifqeBMJn5rZuc65L0o0GhERqbDuuusunnzySfbt2xdw/+uvv86VV15ZZPumTZto2rSp/3NsbCzz5s075vozM2HRooJJgxUrDu9v2xaGDDmcNOjUyZvvQERERERK1vEmEn4EPjKzECALb8JF55yrWWKRiYhIhTFjxgxiYmLo0aMHc+bMKbI/KSmJsLAwRgWYJCDQEDo7SrcA52DNmoJJg59/howMb3+DBl6y4OqrDw9RqFXruC5NRERERI7R8SYS/gH0BRa745lkQUREKpXvvvuOadOmMXPmTA4dOsTevXv5wx/+wL///W/efPNNZsyYwezZswMmCGJjY9m4caP/c2pqKo0bNy5QZseOw0MU8pIHO3Z4+6pVgx494LbbvKRBr17e5IYaoiAiIiJSPo53ssXPgSHOudyjFi4lmmxRRKR8zJkzhwkTJjBjxgw+++wz7rnnHr755hvq168fsHx2djatW7dm9uzZNGnShMTEnvzP/7xNWloHf9Jg9WqvrBm0b394MsRevaBjRwg73rS3iIiIiByX0phscQswx8w+BTLyNmr5RxGRU8ttt91GRkYGgwYNArwJF19++WU2b97MmDFjmDFjJmvWhHHJJRPp1m0whw7lkJU1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LpsH/Pzf/AcrPBwiIwO/GjYsuq1atcBlb74Z8q3m6NesGfz5z8cel4iIiIjIqU6JBJFKaNy4w0mEPOnpcMst8N13wT/gZ2Ude90hIVC9euCH9ujooz/YH+1VrZr3Cg8vmbZKTy+YdAGvnqSkkjm/iIiIiMipRokEkUokIwNmzfJ6IASybx988EHRh/NataBRo+N7qC+8LTy8cs0XkNdDozIMAxERERERqQyUSBCp4A4dgs8/9xIE06bB3r3eg3yg+QCaNYN168o8xApv1CglDkRERERESooSCSIV0MGD8OmnXvJg+nTYvx/q1oXLLoPLL/dWIfjjH9VdX0REREREyp4SCSIVxIEDXvLg/ffhk0+8z9HRcNVVXgKhf/+C8waEham7voiIiIiIlD0lEkTK0f79XtLg/fdh5kyvJ0JMDFx9tZc8OOssL2EQiLrri4iIiIhIeVAiQaSM7d0LM2Z4yYPPPvPmQGjYEK6/3hu2cMYZEBpa3lGKiIiIiIgEpkSCSBnYvdub6+CDD7yJEzMyoHFjuPFGL3nQr5+SByIiIiIiUjkokSBSSnbtgqlTveTBF19AVhbExsItt3jJgz59ICSkvKMUERERERE5NkokiJSgHTvg44+95MGXX0J2trck4x13eHMe9Oql5IGIiIiIiFRuSiSInKC0NC958P778NVXkJMDLVrAPfd4yYPERDAr7yhFRERERERKhhIJIsdh61b46CMveTBnDuTmQkIC3H+/lzzo1k3JAxEREREROTkpkSASpC1b4MMPvWELc+d6yYPWreF//seb86BzZyUPRERERETk5KfR2lJpjB49mpiYGDp27Ojf9tBDD9GkSRO6du1K165dmTlzZsBjP/vsM9q0aUNCQgKPP/540HVu2gTPPQdnnglNmsBtt8G2bfDnP8PixbB8Ofz979Cli5IIIiIiIiJyajDnXHnHcFwSExNdSkpKeYchZWju3LlERUVxzTXXsGTJEsBLJERFRXHvvfcWe1xOTg6tW7dm1qxZxMbG0rNnT9555x3at28fsPzGjV6vgw8+gO+/97Z17Oj1OrjsMijmMBERERERkZOGmc13ziUG2qehDVJpnHnmmaxbt+6Yj0tOTiYhIYH4+HgARowYwdSpUwskEtatO5w8mDfP29ali9fb4NJLoW3bErgAERERERGRk4CGNkilN3HiRDp37szo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rh179+71b9u4cSOzZs0iLi6uSPm7776bIUOGFNh277330r9/fzIzMxkwYACffvppkTLLli1jypQpLF26lM2bNzNw4EBWrlxJaGhowLiccyxLW+bvcTBn3Rz2Z+7HMBIbJ3Jfv/sYGD+Qfk37UTWsagm0hIhI2Qp2aMNrwN3AfCCn9MIRERERETm61NRUPvnkE8aNG8fTTz/t33733Xfz5JNPMmzYsALlP/74Y+Lj46le/fAEhZGRkfTv3x+AiIgIunfvTmpqapG6pk6dyogRI6hSpQotWrQgISGB5ORk+vbtezieval8ueZLZq+dzZdrvuT3/b8D0KpuK67ufDUD4wdydvOzqVutbom2g4hIeQg2kbDHOfdpqUYiIiIiIhKku+66iyeffJJ9+/b5t02bNo0mTZrQpUuXAmUPHDjAE088waxZs/zDGgrbvXs306dP58477yyyb9OmTfTp08f/OTY2lpVrV7K1zlb/BIkrdqwAIKZ6DANaDGBg/EAGtBhAs9rNSuJyRUQqlGATCV+b2VPAh0BG3kbn3IJSiUpEREREpBgzZswgJiaGHj16MGfOHMCb7yApKYkvvviiSPm//e1v3H333URFRQU8X3Z2NldddRV33HEH8fFFR+4658jKyWLOujl8ueZLpq+YzqQDk3CrHNXDq3NW87O4qcdNDIwfSMeYjprbQEROesEmEnr7fuZfQ9IB55RsOCIiIiIiR/bdd98xbdo0Zs6cyaFDh9i7dy9XX301a9eu9fdGSE1NpXv37iQnJzNv3jw++OAD7r//fnbv3k1ISAhVq1bltttuA2Ds2LG0atWKu+66y19Hrsvll99/Yfba2cxKm8Urk18he102oRZKjd01uG7EdVx/4fX0ju1NRGhEeTSDiEi5MedcecdwXBITE11KSkp5hyEiIiIi5WjOnDlMmDCBGTNmFNjevHlzUlJSiI6OLrD9oYceIioqinvvvReAP//5z/z666+8//77rN+z3j9B4ldrv2J7urfqQ3xWPHvf3ss/p/6ThPAELh56MatWrSp2skURkZOBmc13ziUG2nfEHglm9gfn3L/N7J5A+51zTwfaLiIiIiJS0S1atYikpCRqx9amWlw1MrMzoRc0PrsxnXZ1otaOWrww4QUa12hMUrUk7rv4PsLCwnjhhReURBCRU9oReySY2U3OuX+a2d8C7XfOPVxq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9O3bt8SuJzs3m9U7VxdIGCzauoh1uw9fY80qNencoDMjO430Jww6xnSkZpWaxZ43L1kQzKoNIiIiUjkokSAiIlJCOnbsyLRp0xg2bBjvv/8+GzduLFLmP//5D926daNKlSokJCSwfPly1q1bR2xsLB9//DGZmZlFjtm0aRN9+vTxf46NjWXTpk3HHee2A9tYtNVLFCzetphFWxexLG0Zh7IPARBqobSJbkPvJr25sfuN/t4GxzsB4qhOo5Q4EBEROYkokSAiIlJCXn/9de644w4eeeQRLrroIiIiIgrsX7p0KQ888ABffPEFAHXq1OGll17iyiuvJCQkhH79+rFmzZoi5w00DDGYB/pD2YdYlrasSC+DbQe2+cs0jGpI5wadubXnrf6EQbv67agaVvVYL19EREROEUokiIiIlJC2bdv6kwQrV67kk08+8e9LTU1l+PDh/Otf/6Jly5b+7RdeeCEXXnghAK+88krAeQ9iY2ML9G5ITU2lcePG/s/OOdbvWV+kl8HKHSvJdbkAVA2rSseYjpzf6nz/sIROMZ2oX71+yTaCiIiInPSUSBARESkh27ZtIyYmhtzcXP7+979z8803A7B7927OP/98xo8fz2mnnRbwmF27dvHiiy/y3nvvFTnvRRddxMiRI7nnnntYvnY5i39dzHybz79m/Ms/+eG+zH3+8vF14ukU04nL21/uTxgk1E0gNKT0J2cUERGRk58SCSIiIsfhqquuYs6cOWzfvp3Y2Fgefvhh9u/fzwsvvADAJZdcwvXXXw/AxIkTWb16NY8++iiPPvooAF988QUxMTHceeed/PLLLwD89a9/pXXr1gB89PFHfPHtF5x1/Vks3rqYjLYZRDWJIptsOA9u//x2aletTaeYTlzT5Rp/wqBjTEdqVKlRDi0iIiIipwot/ygiIlKOnHNsPbC1yDwGv6b9SkZOBgBhIWG0qdemwJCEzg06E1sz9rgmPxQRERE5mnJZ/tHMLgbOB2KAF4BooD9QBbjFV+xFIBOY45ybbGYj85dxzh0orfhERETKWnpWesDJD7enb/eXaRTViM4NOjMofpA/YdA2ui1VwqqUY+QiIiIih5V6jwQzqwNMAGo65y43swuAOr7du51z083sXefclWb2fv4yzrm3ijuveiSIiEh5mrx4MuNmj2PDng3E1YojaUCSf4nDXJfLut3riiQM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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = np.arange(5000,70000,5000)\n", + "\n", + "training_times = [i*1000 for i in training_times]\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various size of the dataset (k=3,train_size=0.9)')\n", + "figs[1].title.set_text('Training times for various size of the dataset')\n", + "figs[2].title.set_text('Prediction times for various size of the dataset')\n", + "figs[0].set_xlabel('Size of the dataset')\n", + "figs[1].set_xlabel('Size of the dataset')\n", + "figs[2].set_xlabel('Size of the dataset')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" ] }, { "cell_type": "code", "execution_count": null, - "id": "cbb5eda6", + "id": "b766a47e", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computing for d = manhattan\n", + "Fitting...\n", + "Predicting...\n" + ] + } + ], + "source": [ + "####### Variation des types de distances utilisées #######\n", + "\n", + "### Create vector of 5000 random indexes\n", + "rand_indexes = np.random.randint(70000, size=50000)\n", + "### Load data with the previous vector\n", + "data = mnist.data[rand_indexes]\n", + "# print(\"Dataset : \", data)\n", + "target = mnist.target[rand_indexes]\n", + "# print(\"Etiquettes : \", target)\n", + "\n", + "scores = []\n", + "training_times = []\n", + "prediction_times = []\n", + "\n", + "### Train the algorithm with various distance types\n", + "distances = [1,2,3]\n", + "names_distances = [\"manhattan\",\"euclidean\",\"minkowski\"]\n", + "\n", + "for i in distances:\n", + " print(\"Computing for d =\", names_distances[i-1])\n", + " # Split the dataset\n", + " xtrain, xtest, ytrain, ytest = model_selection.train_test_split(data, target,train_size=0.9)\n", + " \n", + " # Training on xtrain,ytrain\n", + " t1 = round(time.time(),3)\n", + " clf = neighbors.KNeighborsClassifier(n_neighbors=3,p=i)\n", + " print(\"Fitting...\")\n", + " clf.fit(xtrain, ytrain)\n", + " t2 = round(time.time(),3)\n", + " \n", + " # Predicting on xtest\n", + " print(\"Predicting...\")\n", + " pred = clf.predict(xtest)\n", + " t3 = round(time.time(),3)\n", + " training_times.append(round(t2-t1,3))\n", + " prediction_times.append(round(t3-t2,3))\n", + " # Probabilités des prédictions sur xtest\n", + " pred_proba = clf.predict_proba(xtest)\n", + " # On calcule le score obtenu sur xtest avec les étiquettes ytest\n", + " scores.append(round(clf.score(xtest, ytest),3))" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "8f4fd158", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "names_distances : ['manhattan', 'euclidean', 'minkowski']\n", + "training_times : [78.0, 92.0]\n", + "prediction_times : [219800.0, 5061.0]\n" + ] + }, + { + "ename": "ValueError", + "evalue": "x and y must have same first dimension, but have shapes (3,) and (2,)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnrows\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mncols\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m15\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m10\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtight_layout\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpad\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3.0\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 12\u001b[1;33m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mscores\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'r'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 13\u001b[0m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mtraining_times\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'b'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 14\u001b[0m \u001b[0mfigs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mprediction_times\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmarker\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'o'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'g'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(self, scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1741\u001b[0m \"\"\"\n\u001b[0;32m 1742\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1743\u001b[1;33m \u001b[0mlines\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1744\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1745\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mline\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 271\u001b[0m \u001b[0mthis\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 272\u001b[0m \u001b[0margs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 273\u001b[1;33m \u001b[1;32myield\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 274\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mget_next_color\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\matplotlib\\axes\\_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[1;34m(self, tup, kwargs)\u001b[0m\n\u001b[0;32m 397\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 398\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 399\u001b[1;33m raise ValueError(f\"x and y must have same first dimension, but \"\n\u001b[0m\u001b[0;32m 400\u001b[0m f\"have shapes {x.shape} and {y.shape}\")\n\u001b[0;32m 401\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mndim\u001b[0m \u001b[1;33m>\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: x and y must have same first dimension, but have shapes (3,) and (2,)" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "##### x coordinates\n", + "x = names_distances\n", + "print(\"names_distances : \", names_distances)\n", + "training_times = [i*1000 for i in training_times]\n", + "print(\"training_times : \", training_times)\n", + "prediction_times = [i*1000 for i in prediction_times]\n", + "print(\"prediction_times : \", prediction_times)\n", + "\n", + "### Create plot\n", + "fig, figs = plt.subplots(nrows=3, ncols=1, figsize=(15,10))\n", + "fig.tight_layout(pad=3.0)\n", + "figs[0].plot(x,scores, marker='o', color='r')\n", + "figs[1].plot(x,training_times, marker='o', color='b')\n", + "figs[2].plot(x,prediction_times, marker='o', color='g')\n", + "### Add every x coordinates\n", + "figs[0].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[1].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "figs[2].tick_params(axis='both', which='both', labelsize=7, labelbottom=True)\n", + "\n", + "for i in range(len(x)):\n", + " figs[0].annotate(scores[i], # this is the text\n", + " (x[i],scores[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[1].annotate(training_times[i], # this is the text\n", + " (x[i],training_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + " figs[2].annotate(prediction_times[i], # this is the text\n", + " (x[i],prediction_times[i]), # these are the coordinates to position the label\n", + " textcoords=\"offset points\", # how to position the text\n", + " xytext=(15,5), # distance from text to points (x,y)\n", + " ha='center') # horizontal alignment can be left, right or center\n", + "\n", + "figs[0].set_xticks(x)\n", + "figs[1].set_xticks(x)\n", + "figs[2].set_xticks(x)\n", + " \n", + "### Add title and axis names\n", + "figs[0].title.set_text('Scores for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[1].title.set_text('Training times for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[2].title.set_text('Prediction times for various distance type (k=3,train_size=0.9,dataset_size=50000)')\n", + "figs[0].set_xlabel('Distance type')\n", + "figs[1].set_xlabel('Distance type')\n", + "figs[2].set_xlabel('Distance type')\n", + "figs[0].set_ylabel('Score')\n", + "figs[1].set_ylabel('Times (in ms)')\n", + "figs[2].set_ylabel('Times(in ms)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24b641ef", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "343e5d14", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "98107e41", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a45453b9", "metadata": {}, "outputs": [], "source": [] @@ -361,7 +812,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.8.8" } }, "nbformat": 4,