{ "cells": [ { "cell_type": "markdown", "id": "224d7d45-1565-4b79-8f68-9c96efa4438b", "metadata": {}, "source": [ "# TD : Modèles et apprentissage en Machine Learning \n", "\n", "L'objectif de cette séance pratique et de regarder comment implémenter les différents modèles présentés lors des différentes séancs à l'aide de Python.\n", "\n", "Nous commencerons notre travail sur des jeux de donnéessynthétiques afin de visualiser les résultats des différents modèles, puis on étudiera l'impact des hyper-paramètres sur les performances du modèles.\n", "\n", "Dans un second temps, on cherchera ensuite à optimiser ces hyper-paramètres en mettant en place a cross-validation de ces derniers puis nous finirons par développer un protocole complet d'apprentissage et de comparaison des modèles." ] }, { "cell_type": "markdown", "id": "2dee333a-2d6a-4b85-a509-4bebc62a31c9", "metadata": {}, "source": [ "## I. Visualisation des sorties d'un modèle de SVM : linéaire et non linéaire\n", "\n", "On commence par regarder le comportement d'un SVM mais aussi la façon d'apprendre ce dernier. Pour cela, nous aurons besoin des librairies suivantes de Python" ] }, { "cell_type": "code", "execution_count": 42, "id": "5b2ecae0-7e86-4b63-8e81-9a2d025a15f8", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn import datasets\n", "from sklearn.svm import SVC\n", "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n", "from sklearn.metrics import accuracy_score" ] }, { "cell_type": "markdown", "id": "ff4346ac-81a9-4d64-b9fc-d0ce0acda483", "metadata": {}, "source": [ "On commence par charger notre jeu de données. On travaillera avec un jeu de données classique **iris**.\n", "Ce jeu de données est un jeu de données multi-classes." ] }, { "cell_type": "code", "execution_count": 5, "id": "f747cf28-ce84-4bb4-a792-b098597039eb", "metadata": {}, "outputs": [], "source": [ "iris = datasets.load_iris()\n", "X = iris.data[:, :2] # On va garder uniquement les deux premières variables\n", "y = iris.target" ] }, { "cell_type": "markdown", "id": "40698bf9-d0b8-4e1f-82c4-54ca02cbaaac", "metadata": {}, "source": [ "### A. Apprentissage d'un SVM linéaire\n", "\n", "L'apprentissage d'un SVM se fait avec la fonction SVC qui dépend de plusieurs paramètres dont le \"noyau\" que l'on souhaite employer. Ici, on souhaite travailler avec un noyau linéaire dans un premier temps.\n", "\n", "Pour apprendre un modèle de SVM, on utilisera la commande suivante " ] }, { "cell_type": "code", "execution_count": 6, "id": "9fcd6b36-3245-4c55-baf4-73afad5d67d3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
SVC(kernel='linear')In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
SVC(kernel='linear')