Skip to content

Commit 109bdb4

Browse files
committed
Modules 2 and 3 revised
1 parent 85cfa9e commit 109bdb4

File tree

7 files changed

+402
-403
lines changed

7 files changed

+402
-403
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Package: BioDataScience3
2-
Version: 2022.2.0
2+
Version: 2022.3.0
33
Title: A Series of Learnr Documents for Biological Data Science 3
44
Description: Interactive documents using learnr for studying biological data science (second course).
55
Authors@R: c(

NEWS.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# BioDataScience3 2022.3.0
2+
3+
- **C02La_cv** and **C03La_roc** revised.
4+
5+
- **C02Lb_ml2** and **C03Lb_ml3** partly revised, but inactivated because they have to be further reworked before being useful (`.inactivated` at the end of the name).
6+
17
# BioDataScience3 2022.2.0
28

39
- **C00La_rappel** renamed **C00La_refresh** and also totally reworked. Also includes explanations about changes between svbox2021 and svbox2022.

inst/tutorials/C02La_cv/C02La_cv.Rmd

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ rice_test <- rsample::testing(rice_split)
2828
rice_lda <- mlLda(data = rice_train, class ~ .)
2929
rice_conf <- confusion(predict(rice_lda, rice_test), rice_test$class)
3030
rice_tab <- summary(rice_conf)
31-
# mlda with cv 10 times
31+
# mlda avec cv 10 fois
3232
rice_lda_cv <- mlLda(data = rice, class ~ .)
3333
rice_conf_cv <- confusion(cvpredict(rice_lda_cv, cv.k = 10), rice$class)
3434
rice_tab_cv <- summary(rice_conf_cv)
@@ -81,25 +81,25 @@ Le graphique des éboulis est présenté ci-dessous.
8181
chart$scree(rice_pca)
8282
```
8383

84-
La représentation dans l'espace des variables est proposée ci-dessous
84+
Voici la représentation dans l'espace des variables pour le premier plan de l'ACP :
8585

8686
```{r, echo=TRUE}
87-
chart(rice_pca, type = "loadings")
87+
chart$loadings(rice_pca)
8888
```
8989

90-
La représentation dans l'espace des individus est proposée ci-dessous
90+
... et la représentation dans l'espace des individuspour le premier plan de l'ACP :
9191

9292
```{r, echo=TRUE}
93-
chart(rice_pca, type = "scores", labels = rice$class)
93+
chart$scores(rice_pca, labels = rice$class)
9494
```
9595

96-
L'exploration des données a été réalisée pour vous. Avant de passer à la section suivante, explorer les tableaux et les graphiques proposés ci-dessus.
96+
Analysez par vous-même les résultats de l'ACP et estimez si vous penser que l'ADL fonctionnera sur cette base. Ensuite, passez à la section suivante.
9797

9898
## Préparation du set d'apprentissage et de test
9999

100-
Utilisez les fonctions `initial_split()`, `training()` et `testing()` du package `rsamples` afin de définir votre set d'apprentissage et votre set de test. Votre set d'apprentissage se nomme `rice_train` et votre set de test se nomme `rice_test`. Il vous est demandé de réaliser un set d'entrainement contenant 0.8 des observations. Cet échantillonnage doit être stratifié grâce à la variable `class`.
100+
Utilisez les fonctions `initial_split()`, `training()` et `testing()` afin de définir votre set d'apprentissage et votre set de test. Votre set d'apprentissage se nommera `rice_train` et votre set de test se nommera `rice_test`. Il vous est demandé de réaliser un set d'entraînement contenant 80% des observations. Cet échantillonnage doit être stratifié pour la variable `class`.
101101

102-
```{r rice_split_h2, exercise = TRUE}
102+
```{r rice_split_h2, exercise=TRUE}
103103
set.seed(8888) # Fixer le début du générateur de nombres pseudo-aléatoires
104104
rice_split <- initial_split(___, prop = ___, strata = ___)
105105
rice_split
@@ -129,7 +129,7 @@ rice_test <- testing(rice_split)
129129
```
130130

131131
```{r rice_split_h2-check}
132-
grade_code("Parfait ! Vous avez réalisez votre set d'apprentissage et votre set d'évaluation avec les proportions demandées.", "Avez vous bien respectée les consignes ? Il ne faut compléter que les éléments signalés par ___.")
132+
grade_code("Vous avez réalisé votre set d'apprentissage et votre set de test avec les proportions demandées.", "Avez-vous bien respectée les consignes ? Il ne faut compléter que les champs signalés par ___.")
133133
```
134134

135135
## Création des classifieurs
@@ -138,16 +138,14 @@ grade_code("Parfait ! Vous avez réalisez votre set d'apprentissage et votre set
138138

139139
Il vous est demandé de réaliser un classifieur utilisant l'analyse discriminante linéaire. C'est à vous de définir le tableau de données à employer entre `rice`, `rice_train` et `rice_test`.
140140

141-
Entrainez un modèle de type analyse discriminant linéaire avec le set d'apprentissage. Votre objectif est de prédire la variable `class` à l'aide des sept variable. Assignez le classifieur n'utilisant pas la validation croisée à `rice_lda` et assignez le classifieur utilisant la validation croisée à rice_cv_lda.
141+
Entraînez un modèle de type analyse discriminant linéaire avec le set d'apprentissage (utilisez la formule condensée). Votre objectif est de prédire la variable `class` à l'aide des sept autres variables. Assignez le classifieur n'utilisant pas la validation croisée à `rice_lda` et assignez le classifieur utilisant la validation croisée à `rice_lda_cv`.
142142

143143
```{r lda_h2, exercise = TRUE}
144-
set.seed(8888)
145144
rice_lda <- mlLda(data = ___, ___ ~ ___)
146145
summary(rice_lda)
147146
```
148147

149148
```{r lda_h2-hint-1}
150-
set.seed(8888)
151149
rice_lda <- mlLda(data = rice_train, ___ ~ ___)
152150
summary(rice_lda)
153151
@@ -156,27 +154,22 @@ summary(rice_lda)
156154

157155
```{r lda_h2-solution}
158156
## Solution ##
159-
set.seed(8888)
160157
rice_lda <- mlLda(data = rice_train, class ~ .)
161158
summary(rice_lda)
162159
```
163160

164161
```{r lda_h2-check}
165-
grade_code("Votre LDA est entrainé. Il faut encore mesuré ces performances.", "Avez vous bien proposé la formule écrites sous sa forme condensée ? ")
162+
grade_code("Votre classifieur LDA est entrainé. Il faut encore en mesurer les performances.", "Avez-vous bien proposé la formule écrite sous sa forme condensée ? ")
166163
```
167164

168-
*La formule doit être écrite sous sa forme condensée*
169-
170-
Réalisez à présent votre modèle en utilisant la validation croisée.
165+
Calculez maintenant votre classifieur afin d'en étudier les performances à l'aide de la validation croisée (toujours en utilisant la formule condensée).
171166

172-
```{r lda_cv_h2, exercise = TRUE}
173-
set.seed(8888)
167+
```{r lda_cv_h2, exercise=TRUE}
174168
rice_lda_cv <- mlLda(data = ___, ___ ~ ___)
175169
summary(rice_lda_cv)
176170
```
177171

178172
```{r lda_cv_h2-hint-1}
179-
set.seed(8888)
180173
rice_lda_cv <- mlLda(data = rice, ___ ~ ___)
181174
summary(rice_lda_cv)
182175
@@ -185,24 +178,17 @@ summary(rice_lda_cv)
185178

186179
```{r lda_cv_h2-solution}
187180
## Solution ##
188-
set.seed(8888)
189181
rice_lda_cv <- mlLda(data = rice, class ~ .)
190182
summary(rice_lda_cv)
191183
```
192184

193185
```{r lda_cv_h2-check}
194-
grade_code("Votre LDA avec validation croisée est entrainée. Il faut encore mesuré ces performances.", "Avez vous bien proposé la formule écrites sous sa forme condensée ?")
186+
grade_code("Si vous souhaitez utiliser la validation croisée pour le test, vous pouvez entraîner votre modèle sur l'ensemble des données dans un premier temps avec {mlearning} que nous utilisons ici. Il faut bien sûr encore mesurer ses performances.", "Avez-vous bien écrit la formule sous sa forme condensée ?")
195187
```
196188

197-
*La formule doit être écrite sous sa forme condensée*
189+
## Évaluation des performances des classifieurs
198190

199-
## Évaluation des classifieurs
200-
201-
Vous avez réalisé deux classifieurs `rice_lda` et `rice_lda_cv`. Le premier n'utilise pas la validation croisée alors que le second l'utilise.
202-
203-
Les tableaux de données disponibles sont les suivants : `rice`, `rice_train`, `rice_test`
204-
205-
Évaluez les performances du premier classifieur `rice_lda`
191+
Évaluez les performances du premier classifieur `rice_lda` sans validation croisée. Pour rappel, les jeux de données disponibles sont les suivants : `rice`, `rice_train` et `rice_test`
206192

207193
```{r pred_lda_h2, exercise = TRUE}
208194
# prédiction
@@ -231,13 +217,13 @@ summary(rice_conf)
231217
```
232218

233219
```{r pred_lda_h2-check}
234-
grade_code("Vous venez de calculer les métriques de performances du premier classifieur. Prenez un peu de temps pour analyser votre matrice de confusion et les métriques qui en découlent.")
220+
grade_code("Vous venez de calculer les métriques de performances du premier classifieur. Prenez un peu de temps pour analyser votre matrice de confusion et les métriques qui en découlent. Combien de données sont utilisées ici ?")
235221
```
236222

237-
Évaluez les performances du second classifieur `rice_lda_cv` à l'aide d'une validation croisée dix fois.
223+
Évaluez les performances du second classifieur `rice_lda_cv`, cette fois-ci, à l'aide d'une validation croisée dix fois.
238224

239225
```{r lda_pred_cv_h2, exercise = TRUE}
240-
set.seed(8888)
226+
set.seed(76456)
241227
# prédiction
242228
rice_pred_cv <- ___(___, cv.k = ___)
243229
# matrice de confusion
@@ -247,7 +233,7 @@ summary(rice_conf_cv)
247233
```
248234

249235
```{r lda_pred_cv_h2-hint-1}
250-
set.seed(8888)
236+
set.seed(76456)
251237
rice_pred_cv <- ___(rice_lda_cv, cv.k = ___)
252238
rice_conf_cv <- confusion(rice_pred_cv, ___$___)
253239
bio_conf_cv
@@ -258,18 +244,18 @@ summary(rice_conf_cv)
258244

259245
```{r lda_pred_cv_h2-solution}
260246
## Solution ##
261-
set.seed(8888)
247+
set.seed(76456)
262248
rice_pred_cv <- cvpredict(rice_lda_cv, cv.k = 10)
263249
rice_conf_cv <- confusion(rice_pred_cv, rice$class)
264250
rice_conf_cv
265251
summary(rice_conf_cv)
266252
```
267253

268254
```{r lda_pred_cv_h2-check}
269-
grade_code("Vous venez de réaliser les analyses des performances du second classifieur. Prenez un peu de temps pour analyser votre matrice de confusion et les métriques qui en découlent.")
255+
grade_code("Toute la mécanique de la validation croisée est \"déployée\" à l'intérieur de `cvpredict()`. En réalité, les données sont divisées en 10 sous-unités et 10 classifieurs différents sont entraînées et testés successivement. Aucun n'est identique à `rice_lda_cv`, mais ils en sont tous relativement proches. Prenez un peu de temps pour analyser votre matrice de confusion et les métriques qui en découlent. Combien de données sont utilisées ici ?")
270256
```
271257

272-
Répondez aux questions ci-dessous. Ces questions portent sur l'évaluation des deux classifieurs.
258+
Répondez aux questions ci-dessous relatives aux deux classifieurs `rice_lda` et `rice_lda_cv`.
273259

274260
```{r qu_lda_cv}
275261
quiz(
@@ -280,7 +266,7 @@ quiz(
280266
submit_button = "Soumettre une réponse",
281267
try_again_button = "Resoumettre une réponse",
282268
incorrect = "Mauvaise réponse. Recommencez afin de trouver la bonne réponse",
283-
correct = "Bravo, c'est correct !"),
269+
correct = "C'est le nombre d'observations utilisées en apprentissage qui sont déterminantes ici (plus d'observations mènent potentiellement à un meilleur classifieur)."),
284270
question("Combien d'items sont employé afin de déterminer les performances du classifieur avec validation croisée ?",
285271
answer(sprintf("%1.f", nrow(rice)), correct = TRUE),
286272
answer(sprintf("%1.f", nrow(rice_train))),
@@ -290,7 +276,7 @@ quiz(
290276
submit_button = "Soumettre une réponse",
291277
try_again_button = "Resoumettre une réponse",
292278
incorrect = "Mauvaise réponse. Recommencez afin de trouver la bonne réponse",
293-
correct = "Bravo, c'est correct ! On utilise l'ensemble des données disponibles."),
279+
correct = "On utilise effectivement l'ensemble des données disponibles."),
294280
question("Quel est le taux de vrai positif pour la classe `Osmancik` avec le classifieurs `rice_lda_cv` ?",
295281
answer(sprintf("%.3f", rice_tab_cv[row.names(rice_tab_cv) == "Osmancik", ]$Recall), correct = TRUE),
296282
answer(sprintf("%.3f", rice_tab_cv[row.names(rice_tab_cv) == "Osmancik", ]$Fscore)),
@@ -301,13 +287,13 @@ quiz(
301287
submit_button = "Soumettre une réponse",
302288
try_again_button = "Resoumettre une réponse",
303289
incorrect = "Mauvaise réponse. Recommencez afin de trouver la bonne réponse",
304-
correct = "Bravo, c'est correct ! Vous avez analysé correctement les résulatats de votre analyse.")
290+
correct = "Vous avez analysé correctement les résultats obtenus.")
305291
)
306292
```
307293

308294
## Conclusion
309295

310-
Ce tutoriel vous a permis de découvrir la validation croisée appliquée sur une analyse discriminante linéaire. L'avantage de la validation croisée est de pouvoir employer plus de données pour entrainer votre classifieur.
296+
Ce tutoriel vous a permis de découvrir la validation croisée appliquée sur une analyse discriminante linéaire. L'avantage de la validation croisée est de pouvoir employer plus de données pour entraîner votre classifieur. Il n'est pas nécessaire de séparer les groupes à la main et de calculer *n* fois les performances avant de sommer les *n* matrices de confusion en une seule. La fonction `cvpredict()` se charge de faire tout cela pour vous automatiquement.
311297

312298
```{r comm_noscore, echo=FALSE}
313299
question_text(

0 commit comments

Comments
 (0)