From 22ff555a161655a36fe516b31ce9fd1b558eb98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?F=C3=A9lix=20MARQUET?= <72651575+BreizhHardware@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:09:39 +0200 Subject: [PATCH] Obisidian vault auto-backup: 29-09-2025 15:09:39 on . 1 files edited --- ISEN/IA/CIPA4/TP/TP2/tp2_IA.ipynb | 184 +++++++++++++++++++++++++++++- 1 file changed, 180 insertions(+), 4 deletions(-) diff --git a/ISEN/IA/CIPA4/TP/TP2/tp2_IA.ipynb b/ISEN/IA/CIPA4/TP/TP2/tp2_IA.ipynb index 07662c0..2d8d60d 100644 --- a/ISEN/IA/CIPA4/TP/TP2/tp2_IA.ipynb +++ b/ISEN/IA/CIPA4/TP/TP2/tp2_IA.ipynb @@ -1370,10 +1370,42 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "id": "5733c7b1", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Évaluation du classifieur SGD avec cross_val_predict ===\n", + "\n", + "Type des prédictions: \n", + "Forme des prédictions: (60000,)\n", + "Type des éléments: \n", + "\n", + "Premières 20 prédictions: [ True False False False False False False False False False False True\n", + " False False False False False False False False]\n", + "Dernières 20 prédictions: [False False False False False False False False False False False False\n", + " False True False False False True False False]\n", + "\n", + "=== Statistiques des prédictions ===\n", + "Nombre total de prédictions: 60000\n", + "Prédictions 'True' (chiffre 5): 6843\n", + "Prédictions 'False' (non-5): 53157\n", + "Pourcentage de 'True': 11.40%\n", + "Pourcentage de 'False': 88.59%\n", + "\n", + "=== Comparaison avec la réalité ===\n", + "Vraies instances de '5' dans l'entraînement: 5421\n", + "Vraies instances de 'non-5' dans l'entraînement: 54579\n", + "\n", + "=== Résultats de cross_val_predict ===\n", + "Les prédictions ont été obtenues pour tous les échantillons d'entraînement\n", + "Chaque échantillon a été prédit exactement une fois lors de la validation croisée\n" + ] + } + ], "source": [ "from sklearn.model_selection import cross_val_predict\n", "\n", @@ -1409,9 +1441,153 @@ "print(f\"Vraies instances de 'non-5' dans l'entraînement: {len(y_train_5) - nb_vraies_5}\")\n", "\n", "print(f\"\\n=== Résultats de cross_val_predict ===\")\n", - "print(\"✅ Les prédictions ont été obtenues pour tous les échantillons d'entraînement\")\n", - "print(\"✅ Chaque échantillon a été prédit exactement une fois lors de la validation croisée\")" + "print(\"Les prédictions ont été obtenues pour tous les échantillons d'entraînement\")\n", + "print(\"Chaque échantillon a été prédit exactement une fois lors de la validation croisée\")" ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "970fce9c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Matrice de confusion du classifieur SGD ===\n", + "\n", + "Matrice de confusion (valeurs absolues):\n", + "[[52312 2267]\n", + " [ 845 4576]]\n", + "\n", + "Matrice de confusion normalisée:\n", + "[[0.95846388 0.04153612]\n", + " [0.1558753 0.8441247 ]]\n" + ] + }, + { + "data": { + "image/png": "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UJtCK522T7ep57Eeb61g9fhrcODqn6znsn6f6OdIK18N/DRA1RYxepz0PUmI9qHVQeL0uOrnQ8ujUxTGTaRowKBdcDTZos/R8mo/Vn0fdRAtfS8///xz875rlxjtk67l0kBUv5f0O8Tz6oyrhY5ePUpsilwASA3EZMRkNsZkSaXxk9a5Gm9oiwZteavHWhMAOg5WatD4SM817XaiMZYmHPQz4mu8saS8f3r+6BgvGnNoCxtNkGiLJleLVT3n9PzS7eo5peecDi6qcZm+9xpLagtajZm0pZZ+nrRLi77n2q1MWzDpRSm98JbYODtIQBJnSYFlEppSKi5f04e99dZbZipFnRKyXLly5rXiTvvlmlZJp2XKmDGjecw1VZVr3WPHjsXbnq/XUTrdVPXq1c02s2fPbqZx+v77773W0amWdHpHncorQ4YMzpIlSzp79uzp/P333696PP744w/zmvo8ndJSp13S/Uxoasnr3c6JEyec/fr1M9vQqawKFSpkjsvx48fd6xw5csT54IMPOnPlymXWqVy5stcUVJ7Th02ePDneNnS5HsekvNdTpkwxZdHj2rBhQ7MPcacPe+2118z7qFOV6Xq6v0OHDnWePn063jbiHiudLkzPkeDgYGfevHmdjz32mPPUqVNe6+i2fE1PFne6rIToVGN6rPQ98+WNN94wZdNpwi5evBjv8T///NPZpEkTMz2bvo5OA+eafszzuCd0bi5evNhMNabTdOlN91enD92+ffs1H2vXtGG+pksdP368s06dOmYKO/1M6XZ02lidXu5qU7rqlLf58+c3z9Nt65RlCW37ww8/dI4YMcKZJ08es75+/j2ntv3nn3+cDz30kDkP9PzPkSOHmW5w6dKl8abbHTt2rJleVd//woULm9fV8niKWw6lU7zpe6LHSs+bp556ynze406p5ppi9p577nGfn3rO3H///c4ffvjBfX7o+apT4uo5oO+R/j179ux4x6pu3brOBx54INHjCQDJjZjMGzGZvTGZbtfXFOq+pqxdv369ee80/sqUKZOJJVauXOm1TmLHK6Gy+vqc+Cqb7rvrvdUyaFn0cxK3rEmZ0vWjjz4yU+Zq7KTnSZEiRZyPPPKI89ChQ15l0KmINRYqVaqUWU+33aBBA+eLL74YL557/fXXnTVr1jSfWY1f9NwbNmyYmfoW186h/ySU8AAAf6BX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/HiCZdErARp4aBPQ0qVLS4YMGaR58+ayf//+eM0i33zzTSlevLhZR/3333/y8MMPS+7cuU05GzdubMruadKkSaYcui+9evWSS5cueT3u2cRS//7555/NFQo9rnrT4Oh69gsAAKQ+YiNiI8CFpAbg506ePCnffPONueqgFWhcWhkmRCsxrTD//PNPU0m98cYb8vLLL7sf79q1qxQqVEh+++03WbdunQwfPlyCg4PNY7q9iIgI+eWXX2Tz5s3y/PPPm8rMVZFq5Vm9enVT0Wv5jhw5Ivfff3+i+3LhwgV57rnnZN68ebJixQrzOp06dfJaZ+fOnbJ48WL5+OOPZePGjWZZhw4d5OjRo/L111+bctaoUUPuvPNOc2zUwoULTaU/YcIEUx7tUzp79uwEy6HHon79+tK7d28zqJbetMnq9e4XAABIPcRGxEaAFycAv7ZmzRqnflQ//vjjq66r633yyScJPj558mRnzZo13ffDwsKcc+fO9blu5cqVnWPGjPH52Lhx45zNmjXzWrZ//36z/e3bt/t8zpw5c8zjq1evdi/btm2bWab7qEaPHu0MDg52Hj161L3O8uXLneHh4c5Lly55vV7JkiWdr732mvm7fv36zj59+ng9XrduXWfVqlXd93v06OG8++673fdvu+0254ABA254vwAAQOoiNiI2AjzRUgPwc5fr4+uzYMEC0980X7585krCM888I/v27XM/rk00telikyZNTBPFXbt2uR97/PHHZfz48eb5o0ePlj/++MP9mDZvXLZsmXlN161cuXLmMc/XiCsoKEhq167tvq/P0asp27Ztcy8rWrSoaUrpua1z585Jzpw5vba3e/du97b0+XXr1vXall5tuFbXu18AACD1EBsRGwGeGCgU8HPax1L7NV7rgFerVq0yTSh13nLtn6mDQc2fP1+mTJniXkebJXbp0kW+/PJL03xRK2hdp3379qZC1+fpY999950ZVVufq6OMa0WqfUq12WVcV5tO7GriNiPVbelr/vTTT9fUvPR6pOR+AQCA5EFsRGwEeKKlBuDncuTIYSrQWbNmyfnz5+M9rn0dfVm5cqXJ7D/99NNSq1YtEwDoAFdx6WBZAwcONJXzPffcI3PmzHE/pn0pH330UdOHc/DgwabfqdJ+m1u3bpVixYpJqVKlvG6++ra6REdHuwfbUtu3bzflL1++fILP0W3plG16JSPutnLlymXW0eevWbPG63mJDRKmdOTwmJiYeNu6nv0CAACph9iI2AjwRFIDsIBW2lrJ1KlTxwwUtWPHDtOscPr06Qk2JdSKWptT6tUFbR6o637yySfuxy9evCj9+vUzWX6t0HVwKh0Uy1WJ6jzlOi2aNmVcv369aXroekwHytKBqDp37myeo6+v6z744IPxKkNPOtCWXs3QSlYHtdKRtuvVq2f2KyHa/FP3UUfn1uBCR+LWoEQDElcQMGDAAHn77bdN0PH333+bqypaASdGK2cth76ejuAdGxt73fsFAABSF7ERsRHgQlIDsIBOOaaVp04xplcFKlWqJE2bNpUffvhBXnnlFZ/Padu2rbnKoJWzTgWmlZ1OW+YSGBgoJ06ckO7du5srEjqKtU7XpU0ylVZUWpFpZd2iRQuzjmvU7AIFCpiKXtdp1qyZmRteK3pt8hgQkPDXik6fplOpabNO7Y+q/TK1b2titHmpTpfWqFEjU4FqOXRUcA02dFox1bFjR7NvOle7Tr2mjz322GOJvu6QIUPMMahQoYLpp6pBzvXuFwAASF3ERsRGgItDRwt13wOAFKLTp2klmFCTUAAAgPSE2AhIHqTXAAAAAACAlUhqAAAAAAAAK9H9BAAAAAAAWImWGgAAAAAAwEokNQAAAAAAgJVIagAAAAAAACuR1AAAAAAAAFYiqQEAAAAAAKxEUgMAAAAAAFiJpAYAAAAAALASSQ0AAAAAAGAlkhoAAAAAAEBs9P/Ret1shKXSagAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "=== Interprétation de la matrice de confusion ===\n", + "\n", + "Valeurs de la matrice (absolues):\n", + "• Vrais Négatifs (TN): 52312 - Correctement classés comme 'Non-5'\n", + "• Faux Positifs (FP): 2267 - Incorrectement classés comme '5' (Erreur Type I)\n", + "• Faux Négatifs (FN): 845 - Incorrectement classés comme 'Non-5' (Erreur Type II)\n", + "• Vrais Positifs (TP): 4576 - Correctement classés comme '5'\n", + "\n", + "Pourcentages (normalisés):\n", + "• Spécificité (TN rate): 0.958 - 95.8% des 'Non-5' bien identifiés\n", + "• Taux FP (FP rate): 0.042 - 4.2% des 'Non-5' mal classés comme '5'\n", + "• Taux FN (FN rate): 0.156 - 15.6% des '5' mal classés comme 'Non-5'\n", + "• Sensibilité (TP rate): 0.844 - 84.4% des '5' bien identifiés\n" + ] + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "print(\"=== Matrice de confusion du classifieur SGD ===\\n\")\n", + "\n", + "# Calculer la matrice de confusion normale\n", + "cm = confusion_matrix(y_train_5, y_train_pred)\n", + "print(\"Matrice de confusion (valeurs absolues):\")\n", + "print(cm)\n", + "\n", + "# Calculer la matrice de confusion normalisée\n", + "cm_normalized = confusion_matrix(y_train_5, y_train_pred, normalize='true')\n", + "print(\"\\nMatrice de confusion normalisée:\")\n", + "print(cm_normalized)\n", + "\n", + "# Visualisation des matrices de confusion avec matplotlib uniquement\n", + "fig, axes = plt.subplots(1, 2, figsize=(12, 5))\n", + "\n", + "# Matrice de confusion absolue\n", + "im1 = axes[0].imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n", + "axes[0].set_title('Matrice de confusion (valeurs absolues)')\n", + "axes[0].set_xlabel('Classe prédite')\n", + "axes[0].set_ylabel('Classe réelle')\n", + "\n", + "# Ajouter les annotations manuellement\n", + "for i in range(cm.shape[0]):\n", + " for j in range(cm.shape[1]):\n", + " axes[0].text(j, i, format(cm[i, j], 'd'), \n", + " ha=\"center\", va=\"center\", color=\"black\")\n", + "\n", + "# Ajouter les labels des axes\n", + "axes[0].set_xticks([0, 1])\n", + "axes[0].set_yticks([0, 1])\n", + "axes[0].set_xticklabels(['Non-5', '5'])\n", + "axes[0].set_yticklabels(['Non-5', '5'])\n", + "\n", + "# Matrice de confusion normalisée\n", + "im2 = axes[1].imshow(cm_normalized, interpolation='nearest', cmap=plt.cm.Blues)\n", + "axes[1].set_title('Matrice de confusion normalisée')\n", + "axes[1].set_xlabel('Classe prédite')\n", + "axes[1].set_ylabel('Classe réelle')\n", + "\n", + "# Ajouter les annotations pour la matrice normalisée\n", + "for i in range(cm_normalized.shape[0]):\n", + " for j in range(cm_normalized.shape[1]):\n", + " axes[1].text(j, i, format(cm_normalized[i, j], '.3f'), \n", + " ha=\"center\", va=\"center\", color=\"black\")\n", + "\n", + "# Ajouter les labels des axes\n", + "axes[1].set_xticks([0, 1])\n", + "axes[1].set_yticks([0, 1])\n", + "axes[1].set_xticklabels(['Non-5', '5'])\n", + "axes[1].set_yticklabels(['Non-5', '5'])\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "# Interprétation détaillée de la matrice de confusion\n", + "print(\"\\n=== Interprétation de la matrice de confusion ===\")\n", + "tn, fp, fn, tp = cm.ravel()\n", + "\n", + "print(f\"\\nValeurs de la matrice (absolues):\")\n", + "print(f\"• Vrais Négatifs (TN): {tn} - Correctement classés comme 'Non-5'\")\n", + "print(f\"• Faux Positifs (FP): {fp} - Incorrectement classés comme '5' (Erreur Type I)\")\n", + "print(f\"• Faux Négatifs (FN): {fn} - Incorrectement classés comme 'Non-5' (Erreur Type II)\")\n", + "print(f\"• Vrais Positifs (TP): {tp} - Correctement classés comme '5'\")\n", + "\n", + "print(f\"\\nPourcentages (normalisés):\")\n", + "print(f\"• Spécificité (TN rate): {cm_normalized[0,0]:.3f} - {cm_normalized[0,0]*100:.1f}% des 'Non-5' bien identifiés\")\n", + "print(f\"• Taux FP (FP rate): {cm_normalized[0,1]:.3f} - {cm_normalized[0,1]*100:.1f}% des 'Non-5' mal classés comme '5'\")\n", + "print(f\"• Taux FN (FN rate): {cm_normalized[1,0]:.3f} - {cm_normalized[1,0]*100:.1f}% des '5' mal classés comme 'Non-5'\")\n", + "print(f\"• Sensibilité (TP rate): {cm_normalized[1,1]:.3f} - {cm_normalized[1,1]*100:.1f}% des '5' bien identifiés\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "b1b979f7", + "metadata": {}, + "source": [ + "### 2-3- Précision et rappel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4a6c352", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {