You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/modelisation/2_classification.qmd
+25-29Lines changed: 25 additions & 29 deletions
Original file line number
Diff line number
Diff line change
@@ -191,23 +191,27 @@ import matplotlib.pyplot as plt
191
191
192
192
1. Créer une variable *dummy* appelée `y` dont la valeur vaut 1 quand les républicains l'emportent.
193
193
2. En utilisant la fonction prête à l'emploi nommée `train_test_split` de la librairie `sklearn.model_selection`,
194
-
créer des échantillons de test (20 % des observations) et d'estimation (80 %) avec comme *features* :`'Unemployment_rate_2019', 'Median_Household_Income_2021', 'Percent of adults with less than a high school diploma, 2018-22', "Percent of adults with a bachelor's degree or higher, 2018-22"` et comme *label* la variable `y`.
194
+
créer des échantillons de test (20 % des observations) et d'estimation (80 %) avec comme *features* :
195
195
196
-
*Note: Il se peut que vous ayez le warning suivant :*
197
-
198
-
> A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel()
"Percent of adults with less than a high school diploma, 2018-22",
200
+
"Percent of adults with a bachelor's degree or higher, 2018-22"
201
+
]
202
+
```
199
203
200
-
*Note : Pour éviter ce warning à chaque fois que vous estimez votre modèle, vous pouvez utiliser `DataFrame[['y']].values.ravel()` plutôt que `DataFrame[['y']]` lorsque vous constituez vos échantillons.*
204
+
et comme *label* la variable `y`.
201
205
202
206
3. Entraîner un classifieur SVM avec comme paramètre de régularisation `C = 1`. Regarder les mesures de performance suivante : `accuracy`, `f1`, `recall` et `precision`.
203
207
204
-
4. Vérifier la matrice de confusion : vous devriez voir que malgré des scores en apparence pas si mauvais, il y a un problème notable.
208
+
2. Vérifier la matrice de confusion : vous devriez voir que malgré des scores en apparence pas si mauvais, il y a un problème notable.
205
209
206
-
5. Refaire les questions précédentes avec des variables normalisées. Le résultat est-il différent ?
210
+
3. Refaire les questions précédentes avec des variables normalisées. Le résultat est-il différent ?
207
211
208
-
6. Changer de variables *x*. Utiliser uniquement le résultat passé du vote démocrate (année 2016) et le revenu. Les variables en question sont `share_2016_republican` et `Median_Household_Income_2021`. Regarder les résultats, notamment la matrice de confusion.
212
+
4. Changer de variables *x*. Utiliser uniquement le résultat passé du vote démocrate (année 2016) et le revenu. Les variables en question sont `share_2016_republican` et `Median_Household_Income_2021`. Regarder les résultats, notamment la matrice de confusion.
209
213
210
-
7.[OPTIONNEL] Faire une 5-fold validation croisée pour déterminer le paramètre *C* idéal.
214
+
5.[OPTIONNEL] Faire une 5-fold validation croisée pour déterminer le paramètre *C* idéal.
211
215
::::
212
216
213
217
:::
@@ -222,33 +226,27 @@ créer des échantillons de test (20 % des observations) et d'estimation (80 %)
222
226
2. Using the ready-to-use function `train_test_split` from the `sklearn.model_selection` library,
223
227
create test samples (20% of the observations) and training samples (80%) with the following *features*:
"Percent of adults with less than a high school diploma, 2018-22",
229
233
"Percent of adults with a bachelor's degree or higher, 2018-22"
230
234
]
231
235
```
232
236
233
237
234
-
235
238
and use the variable `y` as the *label*.
236
239
237
-
*Note: You may encounter the following warning:*
238
-
239
-
> A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel()
240
-
241
-
*Note: To avoid this warning every time you train your model, you can use `DataFrame[['y']].values.ravel()` instead of `DataFrame[['y']]` when preparing your samples.*
242
-
243
240
3. Train an SVM classifier with a regularization parameter `C = 1`. Examine the following performance metrics: `accuracy`, `f1`, `recall`, and `precision`.
244
241
245
242
4. Check the confusion matrix: despite seemingly reasonable scores, you should notice a significant issue.
246
243
247
244
5. Repeat the previous steps using normalized variables. Are the results different?
248
245
249
246
247
+
6. Change the *x* variables. Use only the previous Democratic vote result (2016) and income. Variables in question are `share_2016_republican` and `Median_Household_Income_2021`. Examine results, in particular the confusion matrix.
248
+
250
249
7.[OPTIONAL] Perform 5-fold cross-validation to determine the ideal *C* parameter.
251
-
6. Change the *x* variables. Use only the previous Democratic vote result (2016) and income. The variables in question are `share_2016_republican` and `Median_Household_Income_2021 `. Examine the results, particularly the confusion matrix.
252
250
253
251
:::
254
252
::::
@@ -268,14 +266,12 @@ xvars = [
268
266
"Percent of adults with a bachelor's degree or higher, 2018-22"
0 commit comments