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/NLP/03_embedding.qmd
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -70,7 +70,7 @@ et un [deuxième](https://www.kaggle.com/meiyizi/spooky-nlp-and-topic-modelling-
70
70
Comme dans la [partie précédente](/content/NLP/02_exoclean.qmd), il faut télécharger des librairies
71
71
spécialiséees pour le NLP, ainsi que certaines de leurs dépendances. Ce TD utilisera plusieurs librairies dont certaines dépendent de `PyTorch` qui est une librairie volumineuse.
72
72
73
-
::: {.important}
73
+
::: {.callout-important}
74
74
## `PyTorch` sur le `SSPCloud`
75
75
76
76
__La prochaine remarque ne concerne que les utilisateurs.trices du `SSPCloud`.__
@@ -120,7 +120,7 @@ and [a second one](https://www.kaggle.com/meiyizi/spooky-nlp-and-topic-modelling
120
120
121
121
As in the [previous section](/content/NLP/02_exoclean.qmd), we need to install specialized NLP libraries along with their dependencies. This tutorial will use several libraries, including some that depend on `PyTorch`, which is a large framework.
122
122
123
-
::: {.important}
123
+
::: {.callout-important}
124
124
## `PyTorch` on `SSPCloud`
125
125
126
126
__The following note is only relevant for users of `SSPCloud`.__
Copy file name to clipboardExpand all lines: content/annexes/evaluation.qmd
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,7 @@ Ces données peuvent être directement disponibles sous la forme de fichiers txt
45
45
46
46
Vous obtiendrez vraisemblablement des données qui ne sont pas « propres » du premier coup : mettez en place des protocoles de nettoyage pour obtenir à la fin de cette étape un ou des jeux de données fiable et robuste pour mener ensuite votre analyse. C’est également le moment de créer des variables plus appréhendables, mieux identifiées. N'oubliez pas de justifier les choix méthodologiques que vous avez pu faire car le chargé de TD ne connaît pas forcément la base de données en question.
47
47
48
-
::: {.important collapse=true}
48
+
::: {.callout-important collapse=true}
49
49
## Faire un code reproductible quand on fait du webscraping ou utilise des API est une gageure
50
50
51
51
Comme cela est expliqué dans le chapitre consacré au [_webscraping_](/content/manipulation/04_webscraping_TP.qmd), récupérer des données par ce biais est un moyen détourné peu fiable dans la durée car les sites évoluent continuellement ou mettent en oeuvre des solutions pour bloquer les robots aspirant leurs données. Vous n'êtes pas assuré que votre code qui fonctionne aujourd'hui pourra à nouveau tourner demain sans encombre. C'est un problème qui peut également être rencontré avec les API quoique ces dernières sont un moyen plus robuste d'accès aux données. Mais on n'est jamais à l'abri d'une mise à jour de celle-ci.
Il est déconseillé d'utiliser des importations globales sous la forme `from pkg import *`. Par exemple, prenons deux modules qui proposent une fonction `sqrt`:
282
282
::::
283
283
:::
284
284
285
285
::: {.content-visible when-profile="en"}
286
-
:::: {.important}
286
+
:::: {.callout-important}
287
287
It is discouraged to use global imports like `from pkg import *`. For example, consider two modules that provide a `sqrt` function:
288
288
::::
289
289
:::
@@ -393,7 +393,7 @@ The best way to learn `Python` or notebooks is through practice, so all chapters
393
393
394
394
395
395
::: {.content-visible when-profile="fr"}
396
-
:::: {.important}
396
+
:::: {.callout-important}
397
397
## Environnement recommandé pour ce cours
398
398
399
399
Pour les agents de la fonction publique, ou
@@ -413,7 +413,7 @@ Comme nous l'avons évoqué, `VSCode` est un environnement bien plus complet que
413
413
:::
414
414
415
415
::: {.content-visible when-profile="en"}
416
-
:::: {.important}
416
+
:::: {.callout-important}
417
417
## Recommended environment for this course
418
418
419
419
For public sector employees or students from partner schools, it is recommended to use the `SSPCloud` button, which is a modern, powerful, and flexible cloud infrastructure developed by Insee and accessible at [https://datalab.sspcloud.fr](https://datalab.sspcloud.fr/home)[^portail-formation].
Copy file name to clipboardExpand all lines: content/getting-started/02_data_analysis.qmd
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -370,7 +370,7 @@ Depending on the target audience, communication will differ. The code may intere
370
370
371
371
::: {.content-visible when-profile="fr"}
372
372
373
-
:::: {.caution}
373
+
:::: {.callout-caution}
374
374
375
375
Les _notebooks_`Jupyter` ont eu beaucoup de succès dans le monde de la _data science_ pour partager des travaux. Pourtant il ne s'agit pas forcément toujours du meilleur format. En effet, beaucoup de _notebooks_ tentent à empiler des pavés de code et du texte, ce qui les rend difficilement lisibles[^note-projet].
376
376
@@ -388,7 +388,7 @@ Si ce cours propose des _notebooks_, c'est parce qu'ils sont particulièrement a
388
388
389
389
::: {.content-visible when-profile="en"}
390
390
391
-
:::: {.caution}
391
+
:::: {.callout-caution}
392
392
393
393
_Jupyter_ notebooks have been very popular in the data science world for sharing work. However, they are not always the best format. Indeed, many notebooks tend to stack blocks of code and text, which makes them hard to read[^note-projet].
Copy file name to clipboardExpand all lines: content/getting-started/intro/_intro.qmd
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -42,7 +42,7 @@ You can find more information in the [introductory slides](https://slidespython.
42
42
43
43
44
44
::: {.content-visible when-profile="fr"}
45
-
:::: {.note collapse="true"}
45
+
:::: {.callout-note collapse="true"}
46
46
## Architecture du site web
47
47
48
48
Ce cours présente des tutoriels et des exercices complets qui peuvent être lus depuis ce site ou édités et testés dans un environnement interactif de type `Jupyter Notebook` (voir [prochain chapitre](/content/getting-started/01_environment.qmd) pour plus de détails).
@@ -55,7 +55,7 @@ plus extensive.
55
55
:::
56
56
57
57
:::: {.content-visible when-profile="en"}
58
-
::::: {.note collapse="true"}
58
+
::::: {.callout-note collapse="true"}
59
59
## Website Architecture
60
60
61
61
This course offers comprehensive tutorials and exercises that can be read directly on the site or edited and run in an interactive `Jupyter Notebook` environment (see the [next chapter](/content/getting-started/01_environment.qmd) for details).
Copy file name to clipboardExpand all lines: content/git/introgit.qmd
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -49,7 +49,7 @@ Pour comprendre les analogies avec le versionnage artisanal à la main, rappelon
49
49
{#fig-version-control-inferno}
50
50
51
51
52
-
::: {.important}
52
+
::: {.callout-important}
53
53
Il est vivement recommandé de privilégier `VSCode` pour l'apprentissage de `Git`. Son extension est très bien faite, bien meilleure que celle de `Jupyter`.
54
54
55
55
`Colab` n'embarque pas, nativement, d'extension `Git`. Des sauvegardes automatiques sont possibles sur `Github` mais ce n'est pas une pratique à encourager. Pire encore, `Colab` proposera plutôt une intégration avec `Drive`, un autre produit `Google`. Certes le _notebook_ sera versionné puisque `Drive` embarque des sauvegardes de version mais ce n'est pas une technologie faite pour les sauvegardes de code ; elle n'apportera pas les bénéfices de `Git` qui seront évoqués ultérieurement.
@@ -205,7 +205,7 @@ __⚠️ Gardez la page ouverte__, le _token_ n'apparaît qu'une fois et nous n'
205
205
206
206
Nous avons créé un _token_ et comme cela est indiqué sur la page de `Github` ou dans les consignes de l'exercice, celui-ci n'est pas pérenne. Il va donc falloir trouver un moyen de conserver celui-ci quelque part. Nous allons proposer plusieurs solutions pour cela. Ecrire celui-ci dans un fichier texte créé avec le bloc note ne fait pas parti de ces solutions, au contraire c'est une très mauvaise pratique.
207
207
208
-
::: {.important}
208
+
::: {.callout-important}
209
209
210
210
Il est important de ne jamais stocker un _token_, et encore moins son mot de passe, dans un projet.
211
211
Il est possible de stocker un mot de passe ou *token* de manière sécurisée et durable
@@ -949,7 +949,7 @@ Voici quelques exemples où les branches sont utilisées pour des travaux signif
949
949
950
950
Il est commun, dans un cadre collaboratif, d'utiliser à foison les branches. Comme nous le verrons dans le prochain chapitre, cela peut en effet faire économiser un temps précieux si l'organisation du projet est mal définie. Néanmoins, les branches ne sont pas un remède magique car leur gestion demande de la rigueur et peut entraîner de la désorganisation sans celle-ci. `Git` est une solution technique qui fluidifie l'organisation mais en cas de rôles mal définis, il va rapidement vous révéler les problèmes, mais ne vous offrira pas la solution sans un effort de réflexion sur l'organisation du travail.
951
951
952
-
::: {.caution}
952
+
::: {.callout-caution}
953
953
954
954
Les branches ne sont pas personnelles, ce n'est pas parce que vous avez créé une branche qu'une des personnes collaborant avec vous sur le projet `Git` ne pourra pas modifier cette branche.
Copy file name to clipboardExpand all lines: content/manipulation/02_pandas_intro.qmd
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -307,7 +307,7 @@ poids
307
307
308
308
::: {.content-visible when-profile="fr"}
309
309
310
-
:::: {.important}
310
+
:::: {.callout-important}
311
311
## Attention aux valeurs manquantes !
312
312
313
313
De manière générale, si `Pandas` détecte exclusivement des valeurs entières dans une variable, il utilisera le type `int` pour optimiser la mémoire. Ce choix fait sens. Il a néanmoins un inconvénient: `Numpy`, et donc par extension `Pandas`, ne sait se représenter des valeurs manquantes pour le type `int` (plus d'éléments sur les valeurs manquantes ci-dessous).
@@ -321,7 +321,7 @@ Pour des données textuelles, c'est tout aussi simple:
321
321
:::
322
322
323
323
::: {.content-visible when-profile="en"}
324
-
:::: {.important}
324
+
:::: {.callout-important}
325
325
## Missing Values are tricky !
326
326
327
327
In general, if `Pandas` exclusively detects integer values in a variable, it will use the `int` type to optimize memory. This choice makes sense. However, it has a drawback: `Numpy`, and therefore by extension `Pandas`, cannot represent missing values for the `int` type (more on missing values below).
Copy file name to clipboardExpand all lines: content/manipulation/04c_API_TP.qmd
+4-4Lines changed: 4 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -141,7 +141,7 @@ The first mode (access via a browser) is primarily used when a web interface all
141
141
142
142
:::: {.content-visible when-format="ipynb"}
143
143
144
-
::: {.important}
144
+
::: {.callout-important}
145
145
Une explication interactive est disponible sur [le site du cours](https://pythonds.linogaliana.fr/content/manipulation/04c_API_TP.html).
146
146
:::
147
147
@@ -153,7 +153,7 @@ Une explication interactive est disponible sur [le site du cours](https://python
153
153
154
154
:::: {.content-visible when-profile="en"}
155
155
156
-
::: {.important}
156
+
::: {.callout-important}
157
157
An interactive explanation is available on [the course website](https://pythonds.linogaliana.fr/content/manipulation/04c_API_TP.html).
158
158
:::
159
159
@@ -1382,7 +1382,7 @@ The retrieved PDF
1382
1382
1383
1383
:::: {.content-visible when-profile="fr"}
1384
1384
1385
-
::: {.important}
1385
+
::: {.callout-important}
1386
1386
L'approche par variable d'environnement est la plus générale et malléable. Il faut néanmoins bien faire attention à ne pas oublier d'ajouter le `.env` stockant les identifiants dans `Git`. Autrement, vous risquez de révéler des informations identifiantes ce qui annule tout effet positif des bonnes pratiques mises en oeuvre avec `dotenv`.
1387
1387
1388
1388
Pour cela, la solution est simple : ajouter la ligne `.env` au `.gitignore` et par sécurité `*.env` au cas où le fichier ne soit pas à la racine du dépôt. Pour en savoir plus sur ce fichier `.gitignore`, se rendre sur les [chapitres `Git`](/content/git/index.qmd).
@@ -1392,7 +1392,7 @@ Pour cela, la solution est simple : ajouter la ligne `.env` au `.gitignore` et p
1392
1392
1393
1393
:::: {.content-visible when-profile="en"}
1394
1394
1395
-
::: {.important}
1395
+
::: {.callout-important}
1396
1396
The environment variable approach is the most general and flexible. However, it is crucial to ensure that the `.env` file storing the credentials is not added to `Git`. Otherwise, you risk exposing identifying information, which negates any benefits of the good practices implemented with `dotenv`.
1397
1397
1398
1398
The solution is simple: add the `.env` line to `.gitignore` and, for extra safety, include `*.env` in case the file is not at the root of the repository. To learn more about the `.gitignore` file, refer to the [Git chapters](/content/git/index.qmd).
Comme cela a été évoqué dans le [chapitre consacré à la cartographie](/content/visualisation/matplotlib.qmd), les cartes choroplèthes peuvent donner une impression fallacieuse
@@ -265,7 +265,7 @@ l'une des surcouches à `JavaScript` vues dans la partie [visualisation](/conten
265
265
266
266
::: {.content-visible when-profile="en"}
267
267
268
-
:::: {.important}
268
+
:::: {.callout-important}
269
269
## The Territorial Trap
270
270
271
271
As mentioned in the [chapter on mapping](/content/visualisation/matplotlib.qmd), choropleth maps can give a misleading impression that the Republican Party won by a large margin in 2020 because this type of graphic representation gives more importance to large areas rather than dense areas. This explains why this type of map has been used as justification for contesting the election results.
@@ -471,7 +471,7 @@ Nous allons voir deux processus très classiques de *preprocessing* pour des var
471
471
472
472
Il en existe d'autres, par exemple le `MinMaxScaler` pour renormaliser les variables en fonction des bornes minimales et maximales des valeurs observées. Le choix de la méthode a mettre en oeuvre dépend du type d'algorithmes choisis par la suite: les hypothèses des k plus proches voisins (knn) seront différentes de celles d'une _random forest_. C'est pour cette raison que, normalement, on définit des _pipelines_ complets, intégrant à la fois _preprocessing_ et apprentissage. Ce sera l'objet des prochains chapitres.
473
473
474
-
::: {.caution}
474
+
::: {.callout-caution}
475
475
Pour les statisticiens.ennes,
476
476
le terme _normalization_ dans le vocable `Scikit` peut avoir un sens contre-intuitif.
477
477
On s'attendrait à ce que la normalisation consiste à transformer une variable de manière à ce que $X \sim \mathcal{N}(0,1)$.
@@ -492,7 +492,7 @@ We will cover two very common preprocessing steps for continuous variables:
492
492
493
493
There are other options, such as `MinMaxScaler` to rescale variables according to observed minimum and maximum bounds. The choice of method depends on the algorithms chosen later: the assumptions of k-nearest neighbors (knn) differ from those of a random forest. For this reason, complete pipelines are usually defined, integrating both preprocessing and learning, which will be discussed in upcoming chapters.
494
494
495
-
:::: {.caution}
495
+
:::: {.callout-caution}
496
496
For statisticians,
497
497
the term _normalization_ in `Scikit` terminology can have a counterintuitive meaning.
498
498
One might expect normalization to transform a variable so that $X \sim \mathcal{N}(0,1)$.
@@ -524,7 +524,7 @@ Standardization involves transforming data so that the empirical distribution fo
524
524
525
525
C'est une illustration d'un problème classique en _machine learning_, le _data drift_, qui arrive lorsqu'on essaie d'extrapoler à des données dont la distribution ne correspond plus à celle des données d'apprentissage. Ce type de situation arrive typiquement lorsqu'on a entraîné un algorithme sur un échantillon biaisé de la population ou lorsqu'on a des séries temporelles non stationnaires. Il est donc important de bien réfléchir à la constitution de l'échantillon d'apprentissage et aux possibilités d'extrapolation sur une population plus large : la validité externe du modèle - préparation des données ou algorithme d'apprentissage - peut être nulle si cette étape a été réalisée de manière hâtive.
526
526
527
-
::: {.important}
527
+
::: {.callout-important}
528
528
## Le _data drift_
529
529
530
530
Le _data drift_ désigne un changement dans la distribution des données au fil du temps, entraînant une dégradation des performances d’un modèle de _machine learning_ qui, par construction, a été entraîné sur des données passées.
@@ -540,7 +540,7 @@ Il est crucial de détecter le _data drift_ pour ajuster ou réentraîner le mod
540
540
541
541
This is an illustration of a classic problem in machine learning, called _data drift_, which occurs when we attempt to extrapolate to data whose distribution no longer corresponds to that of the training data. This situation typically arises when an algorithm has been trained on a biased sample of the population or when we have non-stationary time series data. It is, therefore, essential to carefully consider the construction of the training sample and the potential for extrapolation to a broader population: the external validity of the model—whether data preparation or learning algorithm—can be null if this step was rushed.
542
542
543
-
::: {.important}
543
+
::: {.callout-important}
544
544
## Data Drift
545
545
546
546
Data drift refers to a shift in data distribution over time, leading to a degradation in the performance of a machine learning model that, by design, was trained on past data.
@@ -707,7 +707,7 @@ The `IsolationForest()` function in the `sklearn.ensemble` package is particular
707
707
::: {.content-visible when-profile="fr"}
708
708
## Exercice d'application
709
709
710
-
::: {.caution}
710
+
::: {.callout-caution}
711
711
## Attention aux nouvelles modalités !
712
712
713
713
Les _transformers_ créent un _mapping_ entre des modalités textuelles et des valeurs numériques. Cela présuppose que les données sur lesquelles a été construit ce _mapping_ intègrent l'ensemble des valeurs possibles pour les modalités textuelles.
@@ -722,7 +722,7 @@ Néanmoins, si de nouvelles modalités apparaissent, le classifieur ne saura pas
722
722
723
723
## Application exercise
724
724
725
-
::: {.caution}
725
+
::: {.callout-caution}
726
726
## Be careful with new categories!
727
727
728
728
Transformers create a mapping between text categories and numeric values. This assumes that the data used to build this mapping includes all possible values for the text categories.
0 commit comments