|
| 1 | +--- |
| 2 | +title: "Matrices de confusion" |
| 3 | +author: "Guyliann Engels & Philippe Grosjean" |
| 4 | +description: "**SDD III** Exercices sur les matrices de confusion." |
| 5 | +tutorial: |
| 6 | + id: "C01La_confusion" |
| 7 | + version: 0.0.1/2 |
| 8 | +output: |
| 9 | + learnr::tutorial: |
| 10 | + progressive: true |
| 11 | + allow_skip: true |
| 12 | +runtime: shiny_prerendered |
| 13 | +--- |
| 14 | +```{r setup, include=FALSE} |
| 15 | +BioDataScience3::learnr_setup() |
| 16 | +SciViews::R() |
| 17 | +``` |
| 18 | + |
| 19 | +```{r, echo=FALSE} |
| 20 | +BioDataScience3::learnr_banner() |
| 21 | +``` |
| 22 | + |
| 23 | +```{r, context="server"} |
| 24 | +BioDataScience3::learnr_server(input, output, session) |
| 25 | +``` |
| 26 | + |
| 27 | +---- |
| 28 | + |
| 29 | +## Objectifs |
| 30 | + |
| 31 | +- Appréhender les matrices de confusion. |
| 32 | + |
| 33 | +## Les métriques sur les matrice de confusion |
| 34 | + |
| 35 | +### La taux de reconnaissance global |
| 36 | + |
| 37 | +```{r, echo=FALSE, message=FALSE} |
| 38 | +data.frame( |
| 39 | + "A" = c( 25, 0, 1), |
| 40 | + "B" = c(0, 16, 9), |
| 41 | + "C" = c(0,8, 18), |
| 42 | + row.names = c("A", "B", "C")) %>.% |
| 43 | + knitr::kable(., caption = "Matrice de confusion dont les colonnes représentent la classification par ordinateur et les lignes la classification manuelle.") |
| 44 | +``` |
| 45 | + |
| 46 | +Sur base de la matrice de confusion confusion ci dessus, calculez le taux de reconnaissance global du groupe B. |
| 47 | + |
| 48 | +```{r conf1_h2, exercise = TRUE} |
| 49 | +tp <- ___ # TRUE POSITIVE, vrai positif |
| 50 | +fp <- ___ # FALSE POSITIVE, faux positif |
| 51 | +fn <- ___ # FALSE NEGATIVE, faux négatif |
| 52 | +tn <- ___ # TRUE NEGATIVE, vrai négatif |
| 53 | +# calcul de la matrice |
| 54 | +conf <- ___ |
| 55 | +conf |
| 56 | +``` |
| 57 | + |
| 58 | +```{r conf1_h2-hint-1} |
| 59 | +tp <- 16 |
| 60 | +fp <- 9 |
| 61 | +fn <- 8 |
| 62 | +tn <- 44 |
| 63 | +# calcul de la matrice |
| 64 | +conf <- ___ |
| 65 | +conf |
| 66 | +## Attention, le prochain indice est la solution ## |
| 67 | +``` |
| 68 | + |
| 69 | +```{r conf1_h2-solution} |
| 70 | +## Solution ## |
| 71 | +tp <- 16 |
| 72 | +fp <- 9 |
| 73 | +fn <- 8 |
| 74 | +tn <- 44 |
| 75 | +# calcul de la matrice |
| 76 | +conf <- (tp+tn)/(tp+fp+fn+tn) |
| 77 | +conf |
| 78 | +``` |
| 79 | + |
| 80 | +```{r conf1_h2-check} |
| 81 | +grade_result( |
| 82 | + pass_if(~ identical(.result, ((16+44)/(16+9+8+44))), "Bien joué !") |
| 83 | +) |
| 84 | +``` |
| 85 | + |
| 86 | +### La taux de vrai positif |
| 87 | + |
| 88 | +```{r, echo=FALSE, message=FALSE} |
| 89 | +data.frame( |
| 90 | + "A" = c( 9, 4, 1), |
| 91 | + "B" = c(0, 6, 9), |
| 92 | + "C" = c(0,1, 14), |
| 93 | + row.names = c("A", "B", "C")) %>.% |
| 94 | + knitr::kable(., caption = "Matrice de confusion dont les colonnes représentent la classification par ordinateur et les lignes la classification manuelle.") |
| 95 | +``` |
| 96 | + |
| 97 | +Sur base de la matrice de confusion confusion ci dessus, calculez le **taux de vrai positif** du groupe C. |
| 98 | + |
| 99 | +```{r conf2_h2, exercise = TRUE} |
| 100 | +tp <- ___ |
| 101 | +fp <- ___ |
| 102 | +fn <- ___ |
| 103 | +tn <- ___ |
| 104 | +# calcul de la matrice |
| 105 | +conf <- ___ |
| 106 | +conf |
| 107 | +``` |
| 108 | + |
| 109 | +```{r conf2_h2-hint-1} |
| 110 | +tp <- 14 |
| 111 | +fp <- 1 |
| 112 | +fn <- 10 |
| 113 | +tn <- 19 |
| 114 | +# calcul de la matrice |
| 115 | +conf <- ___ |
| 116 | +conf |
| 117 | +## Attention, le prochain indice est la solution ## |
| 118 | +``` |
| 119 | + |
| 120 | +```{r conf2_h2-solution} |
| 121 | +## Solution ## |
| 122 | +tp <- 14 |
| 123 | +fp <- 1 |
| 124 | +fn <- 10 |
| 125 | +tn <- 19 |
| 126 | +# calcul de la matrice |
| 127 | +conf <- (tp)/(tp+fn) |
| 128 | +conf |
| 129 | +``` |
| 130 | + |
| 131 | +```{r conf2_h2-check} |
| 132 | +grade_result( |
| 133 | + pass_if(~ identical(.result, (14/(14 + 10))), "Bien joué !") |
| 134 | +) |
| 135 | +``` |
| 136 | + |
| 137 | +## Conclusion |
| 138 | + |
| 139 | +```{r comm_noscore, echo=FALSE} |
| 140 | +question_text( |
| 141 | + "Laissez-nous vos impressions sur cet outil pédagogique", |
| 142 | + answer("", TRUE, message = "Pas de commentaires... C'est bien aussi."), |
| 143 | + incorrect = "Vos commentaires sont enregistrés.", |
| 144 | + placeholder = "Entrez vos commentaires ici...", |
| 145 | + allow_retry = TRUE |
| 146 | +) |
| 147 | +``` |
0 commit comments