Obisidian vault auto-backup: 29-09-2025 14:59:28 on . 1 files edited

This commit is contained in:
Félix MARQUET
2025-09-29 14:59:29 +02:00
parent a67b86328f
commit e583bb3177

View File

@@ -1291,16 +1291,127 @@
"id": "8aa1ea52",
"metadata": {},
"source": [
"## 2-1- Taux de classification"
"### 2-1- Taux de classification"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "acaeacd9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Taux de classification (accuracy) pour chaque fold: [0.96875 0.96325 0.9651 ]\n",
"Moyenne du taux de classification: 0.9657\n"
]
}
],
"source": [
"from sklearn.model_selection import cross_val_score\n",
"\n",
"# Opter pour la valeur accuracy pour l'argument scoring\n",
"# a. Afficher le taux de classification (accuracy) de chaque fold\n",
"scores = cross_val_score(sgd_classifier, X_train, y_train_5, cv=3, scoring='accuracy')\n",
"print(f\"Taux de classification (accuracy) pour chaque fold: {scores}\")\n",
"# b. Afficher la moyenne du taux de classification\n",
"print(f\"Moyenne du taux de classification: {scores.mean():.4f}\")"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "e5949779",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Taux de classification (accuracy) pour chaque fold avec Never5Classifier: [0.91125 0.90855 0.90915]\n",
"Moyenne du taux de classification avec Never5Classifier: 0.9096\n"
]
}
],
"source": [
"from sklearn.base import BaseEstimator\n",
"\n",
"class Never5Classifier(BaseEstimator):\n",
" def fit(self, data, labels):\n",
" pass\n",
"\n",
" def predict(self, data):\n",
" '''Prend en argument les données et retourne une \n",
"structure de données ayant la taille des données et qui contient que la \n",
"valeur False (= non-5)'''\n",
" return np.zeros((data.shape[0],), dtype=bool)\n",
" \n",
"# c. Créez un objet de la classe Never5Classifier\n",
"never_5_classifier = Never5Classifier()\n",
"\n",
"# d. Testez le classifieur Never5Classifier en utilisant une validation croisée de type 3-fold cross-validation.\n",
"# i. Afficher le taux de classification (accuracy) de chaque fold\n",
"scores_never5 = cross_val_score(never_5_classifier, X_train, y_train_5, cv=3, scoring='accuracy')\n",
"print(f\"\\nTaux de classification (accuracy) pour chaque fold avec Never5Classifier: {scores_never5}\")\n",
"# ii. Afficher la moyenne du taux de classification\n",
"print(f\"Moyenne du taux de classification avec Never5Classifier: {scores_never5.mean():.4f}\")"
]
},
{
"cell_type": "markdown",
"id": "776962ff",
"metadata": {},
"source": [
"### 2-2- Matrice de confusion"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "acaeacd9",
"id": "5733c7b1",
"metadata": {},
"outputs": [],
"source": []
"source": [
"from sklearn.model_selection import cross_val_predict\n",
"\n",
"print(\"=== Évaluation du classifieur SGD avec cross_val_predict ===\\n\")\n",
"\n",
"# Utiliser cross_val_predict pour obtenir les classes prédites\n",
"# Cette fonction retourne les prédictions pour chaque échantillon lors de la validation croisée 3-fold\n",
"y_train_pred = cross_val_predict(sgd_classifier, X_train, y_train_5, cv=3)\n",
"\n",
"print(f\"Type des prédictions: {type(y_train_pred)}\")\n",
"print(f\"Forme des prédictions: {y_train_pred.shape}\")\n",
"print(f\"Type des éléments: {type(y_train_pred[0])}\")\n",
"\n",
"# Afficher quelques exemples de prédictions\n",
"print(f\"\\nPremières 20 prédictions: {y_train_pred[:20]}\")\n",
"print(f\"Dernières 20 prédictions: {y_train_pred[-20:]}\")\n",
"\n",
"# Compter les prédictions True et False\n",
"nb_true = np.sum(y_train_pred)\n",
"nb_false = len(y_train_pred) - nb_true\n",
"\n",
"print(f\"\\n=== Statistiques des prédictions ===\")\n",
"print(f\"Nombre total de prédictions: {len(y_train_pred)}\")\n",
"print(f\"Prédictions 'True' (chiffre 5): {nb_true}\")\n",
"print(f\"Prédictions 'False' (non-5): {nb_false}\")\n",
"print(f\"Pourcentage de 'True': {(nb_true / len(y_train_pred) * 100):.2f}%\")\n",
"print(f\"Pourcentage de 'False': {(nb_false / len(y_train_pred) * 100):.2f}%\")\n",
"\n",
"# Comparer avec les vraies valeurs\n",
"nb_vraies_5 = np.sum(y_train_5)\n",
"print(f\"\\n=== Comparaison avec la réalité ===\")\n",
"print(f\"Vraies instances de '5' dans l'entraînement: {nb_vraies_5}\")\n",
"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\")"
]
}
],
"metadata": {