← Tous les exercices
Choisir le seuil sur la validation, noter sur le test
Partie 5 · ★★★★
Le seuil est un réglage : on le choisit sur la validation, jamais sur le test, puis on mesure sensibilité et spécificité sur le test, une seule fois. Voici une mini-validation de 10 radios (exemple ajouté) et les 8 radios « test » du cours. Coût à 10 pour 1 : 10 × FN + FP, avec « pneumonie » si la probabilité vaut au moins le seuil.
Calcule le coût pour chaque seuil de 0,1 à 0,9 par pas de 0,1 sur la validation, garde le moins coûteux (le premier en cas d'égalité), puis applique ce seuil au test.
probas_val = [0.95, 0.85, 0.70, 0.60, 0.45, 0.42, 0.55, 0.35, 0.20, 0.15] vraies_val = [1, 1, 1, 1, 1, 1, 0, 0, 0, 0] probas_test = [0.90, 0.80, 0.65, 0.55, 0.35, 0.60, 0.40, 0.10] vraies_test = [1, 1, 1, 1, 1, 0, 0, 0] def decisions(probas, seuil): return [1 if p >= seuil else 0 for p in probas] def erreurs(dit, vraies): fn = sum(1 for d, v in zip(dit, vraies) if d == 0 and v == 1) fp = sum(1 for d, v in zip(dit, vraies) if d == 1 and v == 0) return fn, fp seuils = [s / 10 for s in range(1, 10)] couts_val = [] for s in seuils: fn, fp = erreurs(decisions(probas_val, s), vraies_val) couts_val.append(10 * fn + fp) seuil_choisi = seuils[couts_val.index(min(___))] dit_test = decisions(probas_test, ___) fn_t, fp_t = erreurs(dit_test, vraies_test) sensibilite_test = (5 - fn_t) / 5 specificite_test = (3 - fp_t) / 3
Ctrl/⌘+Entrée