diff --git a/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb b/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/.ipynb_checkpoints/TP1_prog1.py-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb b/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb new file mode 100644 index 0000000..ce7d5e5 --- /dev/null +++ b/.ipynb_checkpoints/TP1_prog2.py-checkpoint.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "id": "530f620c", + "metadata": {}, + "outputs": [], + "source": [ + "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", + "mnist = fetch_openml('mnist_784',as_frame=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "eb2c4496", + "metadata": {}, + "outputs": [ + { + "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' '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", + " [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" + ] + } + ], + "source": [ + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "n_neighbors = 10\n", + "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", + "# On entraîne l'algorithme sur xtrain et ytrain\n", + "clf.fit(xtrain, ytrain)\n", + "# On prédit sur xtest\n", + "pred = clf.predict(xtest)\n", + "print(\"Prédiction : \", pred)\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", + "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, + "id": "90db6e29", + "metadata": {}, + "outputs": [ + { + "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" + ] + } + ], + "source": [ + "from sklearn.model_selection import KFold\n", + "\n", + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "kf = KFold(n_splits=10, random_state=None, shuffle=True)\n", + "scores = []\n", + "\n", + "for k in range(2,15):\n", + " \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", + " clf = neighbors.KNeighborsClassifier(k)\n", + " # On entraîne l'algorithme sur xtrain et ytrain\n", + " clf.fit(X_train, y_train)\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)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "bf91b914", + "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" + ] + } + ], + "source": [ + "nice_scores = np.array_split(scores, 14)\n", + "for i in range (0,14):\n", + " print (i+2, \" : \", nice_scores[i].mean())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "cc24e898", + "metadata": {}, + "outputs": [ + { + "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" + ] + } + ], + "source": [ + "from sklearn.model_selection import KFold\n", + "\n", + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "scores = []\n", + "\n", + "for j in range (3, 10):\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", + " clf.fit(xtrain, ytrain)\n", + " # On prédit sur xtest\n", + " pred = clf.predict(xtest)\n", + "# print(\"Prédiction : \", pred)\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" + ] + } + ], + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/.ipynb_checkpoints/tp1-checkpoint.ipynb b/.ipynb_checkpoints/tp1-checkpoint.ipynb new file mode 100644 index 0000000..80a35fc --- /dev/null +++ b/.ipynb_checkpoints/tp1-checkpoint.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 53, + "id": "3cd9fe22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.24.2'" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.datasets import fetch_openml\n", + "import sklearn\n", + "sklearn.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "b35f064d", + "metadata": {}, + "outputs": [], + "source": [ + "# mnist = fetch_openml('mnist_784')\n", + "mnist = fetch_openml('mnist_784',as_frame=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "907bd199", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 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": 61, + "id": "d0e89d79", + "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" + ] + } + ], + "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": 82, + "id": "2d870997", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['3' '0' '9' ... '3' '1' '5']\n", + "[[0. 0. 0. ... 0. 0. 0. ]\n", + " [1. 0. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0.2 0. 0.8]\n", + " ...\n", + " [0. 0. 0. ... 0. 0. 0. ]\n", + " [0. 1. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0. 0. 0. ]]\n", + "Classe image 4 : 1\n", + "Classe prédite image 4 : 0\n", + "Score échantillon de test : 0.9699523809523809\n" + ] + } + ], + "source": [ + "from sklearn import model_selection\n", + "from sklearn import neighbors\n", + "\n", + "data = mnist.data\n", + "target = mnist.target\n", + "\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))" + ] + } + ], + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/TP1_prog1.py.ipynb b/TP1_prog1.py.ipynb new file mode 100644 index 0000000..70c562e --- /dev/null +++ b/TP1_prog1.py.ipynb @@ -0,0 +1,62 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "3eb7a65b", + "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" + ] + } + ], + "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", + "plt.show()\n", + "print(\"Classe : \", mnist.target[0])" + ] + } + ], + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/TP1_prog2.py.ipynb b/TP1_prog2.py.ipynb new file mode 100644 index 0000000..ce7d5e5 --- /dev/null +++ b/TP1_prog2.py.ipynb @@ -0,0 +1,335 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 14, + "id": "530f620c", + "metadata": {}, + "outputs": [], + "source": [ + "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", + "mnist = fetch_openml('mnist_784',as_frame=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "eb2c4496", + "metadata": {}, + "outputs": [ + { + "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' '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", + " [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" + ] + } + ], + "source": [ + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "n_neighbors = 10\n", + "clf = neighbors.KNeighborsClassifier(n_neighbors)\n", + "# On entraîne l'algorithme sur xtrain et ytrain\n", + "clf.fit(xtrain, ytrain)\n", + "# On prédit sur xtest\n", + "pred = clf.predict(xtest)\n", + "print(\"Prédiction : \", pred)\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", + "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, + "id": "90db6e29", + "metadata": {}, + "outputs": [ + { + "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" + ] + } + ], + "source": [ + "from sklearn.model_selection import KFold\n", + "\n", + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "kf = KFold(n_splits=10, random_state=None, shuffle=True)\n", + "scores = []\n", + "\n", + "for k in range(2,15):\n", + " \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", + " clf = neighbors.KNeighborsClassifier(k)\n", + " # On entraîne l'algorithme sur xtrain et ytrain\n", + " clf.fit(X_train, y_train)\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)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "bf91b914", + "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" + ] + } + ], + "source": [ + "nice_scores = np.array_split(scores, 14)\n", + "for i in range (0,14):\n", + " print (i+2, \" : \", nice_scores[i].mean())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "cc24e898", + "metadata": {}, + "outputs": [ + { + "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" + ] + } + ], + "source": [ + "from sklearn.model_selection import KFold\n", + "\n", + "rand_indexes = np.random.randint(70000, size=5000)\n", + "\n", + "data = mnist.data[rand_indexes]\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", + "\n", + "scores = []\n", + "\n", + "for j in range (3, 10):\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", + " clf.fit(xtrain, ytrain)\n", + " # On prédit sur xtest\n", + " pred = clf.predict(xtest)\n", + "# print(\"Prédiction : \", pred)\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" + ] + } + ], + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tp1.ipynb b/tp1.ipynb new file mode 100644 index 0000000..80a35fc --- /dev/null +++ b/tp1.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 53, + "id": "3cd9fe22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0.24.2'" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.datasets import fetch_openml\n", + "import sklearn\n", + "sklearn.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "b35f064d", + "metadata": {}, + "outputs": [], + "source": [ + "# mnist = fetch_openml('mnist_784')\n", + "mnist = fetch_openml('mnist_784',as_frame=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "907bd199", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 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": 61, + "id": "d0e89d79", + "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" + ] + } + ], + "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": 82, + "id": "2d870997", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['3' '0' '9' ... '3' '1' '5']\n", + "[[0. 0. 0. ... 0. 0. 0. ]\n", + " [1. 0. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0.2 0. 0.8]\n", + " ...\n", + " [0. 0. 0. ... 0. 0. 0. ]\n", + " [0. 1. 0. ... 0. 0. 0. ]\n", + " [0. 0. 0. ... 0. 0. 0. ]]\n", + "Classe image 4 : 1\n", + "Classe prédite image 4 : 0\n", + "Score échantillon de test : 0.9699523809523809\n" + ] + } + ], + "source": [ + "from sklearn import model_selection\n", + "from sklearn import neighbors\n", + "\n", + "data = mnist.data\n", + "target = mnist.target\n", + "\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))" + ] + } + ], + "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.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}