mirror of
https://github.com/BreizhHardware/cours-ISEN-MD.git
synced 2026-01-18 16:47:24 +01:00
Obisidian vault auto-backup: 29-09-2025 14:59:28 on . 1 files edited
This commit is contained in:
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user