From 9a4e2267c8712d7a33c3e7302b6d12cca1e6266c Mon Sep 17 00:00:00 2001 From: Lino Galiana Date: Mon, 28 Aug 2023 17:11:52 +0200 Subject: [PATCH] Action to check URL still exist (#399) * Check url action * check force pass false * poly jussieu * URL checker * ressources * URL check * fix CI * indent * urlcheck * remove cache * pandas install * workflow dispatch --- .github/workflows/checks.yaml | 21 ++++++++++++++++ build/checkurl.py | 16 ++++++++++++ content/NLP/04_word2vec.qmd | 2 +- content/getting-started/01_installation.qmd | 12 ++++----- content/getting-started/03_data_analysis.qmd | 2 +- .../getting-started/04_python_practice.qmd | 2 +- content/getting-started/index.qmd | 2 +- content/git/exogit.qmd | 25 +++++++++---------- content/git/index.qmd | 9 +++---- content/manipulation/02a_pandas_tutorial.qmd | 4 +-- content/manipulation/02b_pandas_TP.qmd | 2 +- .../manipulation/03_geopandas_tutorial.qmd | 4 +-- content/manipulation/04a_webscraping_TP.qmd | 2 +- content/manipulation/04b_regex_TP.qmd | 4 +-- content/manipulation/07_dask.qmd | 5 +++- content/manipulation/index.qmd | 2 +- content/modelisation/0_preprocessing.qmd | 6 ++--- content/modelisation/1_modelevaluation.qmd | 2 +- content/modelisation/2_SVM.qmd | 2 +- content/modelisation/3_regression.qmd | 4 +-- content/modelisation/4_featureselection.qmd | 3 +-- content/modelisation/5_clustering.qmd | 4 +-- content/modern-ds/continuous_integration.qmd | 12 ++++----- 23 files changed, 91 insertions(+), 56 deletions(-) create mode 100644 .github/workflows/checks.yaml create mode 100644 build/checkurl.py diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml new file mode 100644 index 000000000..394dae952 --- /dev/null +++ b/.github/workflows/checks.yaml @@ -0,0 +1,21 @@ +name: Check URLs + +on: workflow_dispatch + + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.11' + - run: pip install pandas urlchecker + - name: Test with pytest + run: | + python build/checkurl.py + - uses: actions/upload-artifact@v3 + with: + name: URLChecker + path: diagnostic.csv \ No newline at end of file diff --git a/build/checkurl.py b/build/checkurl.py new file mode 100644 index 000000000..c6145c1c5 --- /dev/null +++ b/build/checkurl.py @@ -0,0 +1,16 @@ +from urlchecker.core.check import UrlChecker +import os +import pandas as pd + +path = os.getcwd() + +checker = UrlChecker( + path=path + "/content", + file_types=[".qmd", ".py", ".md"], + print_all=False + ) + +checker.run() + +df = pd.DataFrame(checker.results['failed'], columns = ["failed"]) +df.to_csv("diagnostic.csv") \ No newline at end of file diff --git a/content/NLP/04_word2vec.qmd b/content/NLP/04_word2vec.qmd index 484c24ec5..ca089c642 100644 --- a/content/NLP/04_word2vec.qmd +++ b/content/NLP/04_word2vec.qmd @@ -471,7 +471,7 @@ qui permet de tenir compte des fréquences *relatives* des mots. Ainsi, pour un mot donné, on va multiplier la fréquence d'apparition du mot dans le document (calculé comme dans la méthode précédente) par un terme qui pénalise une fréquence élevée du mot dans le corpus. L'image ci-dessous, empruntée à Chris Albon, illustre cette mesure: ![](https://chrisalbon.com/images/machine_learning_flashcards/TF-IDF_print.png) -*Source: [https://chrisalbon](https://chrisalbon.com/code/machine_learning/preprocessing_text/tf-idf/)* +*Source: [Chris Albon](https://chrisalbon.com/code/machine_learning/preprocessing_text/tf-idf/)* La vectorisation `TF-IDF` permet donc de limiter l'influence des *stop-words* et donc de donner plus de poids aux mots les plus salients d'un document. diff --git a/content/getting-started/01_installation.qmd b/content/getting-started/01_installation.qmd index c0301d4cc..a86ebf20b 100644 --- a/content/getting-started/01_installation.qmd +++ b/content/getting-started/01_installation.qmd @@ -73,7 +73,7 @@ l'administration. Ces compétences ne sont pas propres à `Python` et seront utiles pour tout projet ultérieur. Un cours dédié à cette question est proposé par Romain Avouac et moi en dernière année de l'ENSAE. Son -contenu est disponible sur https://ensae-reproductibilite.netlify.app/. +contenu est disponible sur https://ensae-reproductibilite.github.io/website/. Le projet final devra impérativement être associé à un dépôt @@ -108,16 +108,14 @@ qui permet d'installer une distribution minimale de `Python` ainsi qu'éventuell un environnement plus complet : * Sous **_Windows_**, il suffit de télécharger l'exécutable puis -l'exécuter (cf. [la doc officielle](https://docs.anaconda.com/anaconda/install/windows/) -ou [ce site](https://mrmint.fr/installer-environnement-python-machine-learning-anaconda)). -* Sous **_Mac_**, se reporter à la [doc officielle](https://docs.anaconda.com/anaconda/install/mac-os/) +l'exécuter (cf. [la doc officielle](https://docs.anaconda.com/anaconda/install/windows/) ; +* Sous **_Mac_**, se reporter à la [doc officielle](https://docs.anaconda.com/anaconda/install/mac-os/) ; * Sous **_Linux_**, suivre les instructions de la [doc officielle](https://docs.anaconda.com/anaconda/install/linux/) selon sa distribution Passer par `Anaconda` permet: * d'installer `Python` ; -* d'installer par défaut une multitude de _packages_ utiles -([liste ici](https://docs.anaconda.com/anaconda/packages/py3.6_win-64/)) ; +* d'installer par défaut une multitude de _packages_ utiles ; * de pouvoir utiliser un gestionnaire de package nommé `conda`. `Anaconda` permet de créer des environnements isolés et facilite l'installation @@ -218,7 +216,7 @@ déploiement de visualisations automatiques[^2]) mais n'est pas très pratique p le griffonnage. [^2] A cet égard, il est recommandé de consulter le cours de dernière année -de l'ENSAE déjà cité: https://ensae-reproductibilite.netlify.app/ +de l'ENSAE déjà cité: https://ensae-reproductibilite.github.io/website/ [Kaggle](https://www.kaggle.com/notebooks) propose des compétitions de code mais diff --git a/content/getting-started/03_data_analysis.qmd b/content/getting-started/03_data_analysis.qmd index f355f9483..6554b0928 100644 --- a/content/getting-started/03_data_analysis.qmd +++ b/content/getting-started/03_data_analysis.qmd @@ -131,7 +131,7 @@ systématiquement utiliser ces plateformes pour la mise à disposition de code. Cependant, il ne s'agit que d'une petite partie des gains à l'utiliser. Le cours que je donne avec Romain Avouac en troisième année d'ENSAE -(https://ensae-reproductibilite.netlify.app/) évoque +(https://ensae-reproductibilite.github.io/website/) évoque l'un des principaux gains à utiliser ces plateformes, à savoir la possibilité de mettre à disposition automatiquement différents livrables pour valoriser son travail auprès de différents publics. diff --git a/content/getting-started/04_python_practice.qmd b/content/getting-started/04_python_practice.qmd index be0aba614..956a7263d 100644 --- a/content/getting-started/04_python_practice.qmd +++ b/content/getting-started/04_python_practice.qmd @@ -87,7 +87,7 @@ dans l'écosystème Python. Les deux normes les plus connues sont la norme PEP8 (code) et la norme PEP257 (documentation). La plupart de ces recommandations ne sont pas propres à `Python`, on les retrouve aussi dans `R` -(cf. [ici](https://linogaliana.gitlab.io/documentationR/comment-nommer-les-objets-dans-r.html)). +(cf. [ici](https://www.book.utilitr.org/02_bonnes_pratiques/02-structure-code)). On retrouve de nombreux conseils dans [cet ouvrage](https://docs.python-guide.org/writing/style/) qu'il est recommandé de suivre. La suite se concentrera sur des éléments complémentaires. diff --git a/content/getting-started/index.qmd b/content/getting-started/index.qmd index 0a97d8cf0..514b44950 100644 --- a/content/getting-started/index.qmd +++ b/content/getting-started/index.qmd @@ -200,7 +200,7 @@ Je donne également un cours, plus avancé, sur ce sujet à l'ENSAE avec Romain Avouac: -https://ensae-reproductibilite.netlify.app/. +https://ensae-reproductibilite.github.io/website/. diff --git a/content/git/exogit.qmd b/content/git/exogit.qmd index c44ee7754..afbd4c20b 100644 --- a/content/git/exogit.qmd +++ b/content/git/exogit.qmd @@ -36,12 +36,12 @@ print_badges("content/git/exogit.qmd") Les exercices suivants sont inspirés d'un cours de Git que j'ai construit à l'Insee et dont les ressources sont disponibles -[ici](https://linogaliana.gitlab.io/collaboratif/git.html). L'idée -du cadavre exquis, qui m'a été inspirée par +[ici](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/). L'idée +du cadavre exquis, qui m'a été soufflée par [Romain Lesur](https://github.com/RLesur) est inspirée de [cette ressource](https://github.com/corent01/03-Swartz/blob/master/Parcours/01-La-prairie/git/exercice-git-cadavre-exquis.md) et de [celle-ci](https://github.com/simplonco/cadavre-request). -Cette partie part du principe que les concepts généraux de Git sont +Cette partie part du principe que les concepts généraux de `Git` sont maîtrisés et qu'un environnement de travail fonctionnel avec `Git` est disponible. Un exemple de tel environnement est le`JupyterLab` du `SSPCloud` où une extension @@ -51,14 +51,12 @@ disponible. Un exemple de tel environnement est le`JupyterLab` du Outre le [chapitre précédent](#introgit), il existe de -nombreuses ressources sur internet sur le sujet. Parmi-celles auquel -j'ai contribué, vous pourrez trouver un -[cours de `Git` orienté gestion de projet](https://linogaliana.gitlab.io/collaboratif/git.html), -une version plus -légère à partir de [_slides_](https://formation.pages.lab.sspcloud.fr/git/20220929-formation-git-dese/#/title-slide) +nombreuses ressources sur internet sur le sujet, +notamment une série de ressources construites +pour l'Insee [sur ce site](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/) et des ressources de la documentation collaborative sur `R` qu'est `utilitR` -([des éléments sur la configuration](https://www.book.utilitr.org/git-config.html) -et [pratique sur RStudio](https://www.book.utilitr.org/git.html)). Toutes +([des éléments sur la configuration](https://www.book.utilitr.org/03_fiches_thematiques/fiche_configurer_git) +et [pratique sur RStudio](https://www.book.utilitr.org/03_fiches_thematiques/fiche_git_utilisation)). Toutes les ressources ne sont donc pas du `Python` car `Git` est un outil tranversal qui doit servir quelque soit le langage de prédilection. @@ -176,7 +174,7 @@ Plus précisément, il existe deux modalités pour faire connaître son identit * une authentification HTTPS (décrite ici) : l’authentification se fait avec un login et un mot de passe (qu’il faut renseigner à chaque interaction avec le dépôt), ou avec un token (méthode à privilégier). * une authentification SSH : l’authentification se fait par une clé cryptée disponible sur le poste de travail et que GitHub ou GitLab connaît. Une fois configurée, cette méthode ne nécessite plus de faire connaître son identité : l’empreinte digitale que constitue la clé suffit à reconnaître un utilisateur. -La [documentation collaborative `utilitR`](https://www.book.utilitr.org/git-config.html#interaction-avec-un-d%C3%A9p%C3%B4t-distant-principe) présente les raisons pour lesquelles il convient de favoriser +La [documentation collaborative `utilitR`](https://www.book.utilitr.org/03_fiches_thematiques/fiche_configurer_git.html#interaction-avec-un-d%C3%A9p%C3%B4t-distant-principe) présente les raisons pour lesquelles il convient de favoriser la méthode HTTPS sur la méthode SSH. Depuis août 2021, `Github` n'autorise plus l'authentification par mot de passe @@ -434,7 +432,7 @@ git add .gitignore ~~~ Pour se remémorer ce que signifie `git add`, vous pouvez vous rendre -sur [mon cours dédié à Git](https://linogaliana.gitlab.io/collaboratif/git.html#le-b.a-ba). +sur [ce cours dédié à `Git`](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/). :three: Observer le changement de statut du fichier `.gitignore`. Il est désormais dans la partie `Staged` @@ -932,7 +930,8 @@ Il correspond à cette forme caractéristique d'arbre: 3. Lorsque les modifications aboutissent, elles sont intégrées à `master` ; la branche en question disparaît: -![](https://linogaliana.gitlab.io/collaboratif/pics/03_git/flow4_discuss.png) +![](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/slides/img/ghflow.png) + Il existe des *workflows* plus complexes, notamment le `Git Flow` que j'utilise pour développer ce cours. [Ce tutoriel](https://www.atlassian.com/fr/git/tutorials/comparing-workflows/gitflow-workflow), très bien fait, diff --git a/content/git/index.qmd b/content/git/index.qmd index 421e4da15..cd8b61577 100644 --- a/content/git/index.qmd +++ b/content/git/index.qmd @@ -21,14 +21,13 @@ categories: Cette partie du site présente un élément qui n'est pas propre à `Python` mais qui est néanmoins indispensable : la pratique de `Git`. -Une grande partie du contenu de la partie provient du cours -[Travail collaboratif avec `R`](https://linogaliana.gitlab.io/collaboratif/git.html) -ou d'un [cours dédié fait avec Romain Avouac](https://formation.pages.lab.sspcloud.fr/git/20220929-formation-git-dese/#/title-slide). +Une grande partie du contenu de la partie provient +d'un [cours dédié fait avec Romain Avouac](https://inseefrlab.github.io/formation-bonnes-pratiques-git-R/slides/img/ghflow.png). -Le chapitre [de présentation de `Git`](/introgit) propose +Le chapitre [de présentation de `Git`](introgit.qmd) propose une introduction visant à présenter l'intérêt d'utiliser cet outil. Une mise en pratique est proposée -avec [un cadavre exquis](/exogit). +avec [un cadavre exquis](exogit.qmd). # Utilisation de `Git` avec `Python` diff --git a/content/manipulation/02a_pandas_tutorial.qmd b/content/manipulation/02a_pandas_tutorial.qmd index 11b4690cf..cdf1c97a9 100644 --- a/content/manipulation/02a_pandas_tutorial.qmd +++ b/content/manipulation/02a_pandas_tutorial.qmd @@ -1099,10 +1099,10 @@ serions dans une situation, beaucoup plus complexe, d'appariement flou[^6]). La situation typique est l'appariement entre deux sources de données selon un identifiant individuel. Ici, il s'agit d'un identifiant de code commune. -Il est recommandé de lire [ce guide assez complet sur la question des jointures avec R](https://www.book.utilitr.org/jointures.html) +Il est recommandé de lire [ce guide assez complet sur la question des jointures avec `R`](https://www.book.utilitr.org/fiche_joindre_donnees.html) qui donne des recommandations également utiles pour un utilisateur de `Python`. -![](https://pics.me.me/thumb_left-join-right-join-inner-join-full-outer-join-imgflip-com-66845242.png) +![](https://external-preview.redd.it/yOLzCR0qSzul2WpjQorxINB0xpU3_N9twmFVsgbGJwQ.jpg?auto=webp&s=4feedc91302ba635b3028a21b98d047def5cdc2b) On utilise de manière indifférente les termes *merge* ou *join*. Le deuxième terme provient de la syntaxe SQL. diff --git a/content/manipulation/02b_pandas_TP.qmd b/content/manipulation/02b_pandas_TP.qmd index 8f627421b..4e1ab7bf7 100644 --- a/content/manipulation/02b_pandas_TP.qmd +++ b/content/manipulation/02b_pandas_TP.qmd @@ -588,7 +588,7 @@ df_wide_agg.rank(axis = 1).median().nlargest(10) Une information que l'on cherche à obtenir s'obtient de moins en moins à partir d'une unique base de données. Il devient commun de devoir combiner des données issues de sources différentes. Nous allons ici nous focaliser sur le cas le plus favorable qui est la situation où une information permet d'apparier de manière exacte deux bases de données (autrement nous serions dans une situation, beaucoup plus complexe, d'appariement flou). La situation typique est l'appariement entre deux sources de données selon un identifiant individuel ou un identifiant de code commune, ce qui est notre cas. -Il est recommandé de lire [ce guide assez complet sur la question des jointures avec R](https://linogaliana.gitlab.io/documentationR/joindre-des-tables-de-donn%C3%A9es.html) qui donne des recommandations également utiles en `python`. +Il est recommandé de lire [ce guide assez complet sur la question des jointures avec R](https://www.book.utilitr.org/03_fiches_thematiques/fiche_joindre_donnees) qui donne des recommandations également utiles en `python`. On utilise de manière indifférente les termes *merge* ou *join*. Le deuxième terme provient de la syntaxe SQL. En `pandas`, dans la plupart des cas, on peut utiliser indifféremment `df.join` et `df.merge` diff --git a/content/manipulation/03_geopandas_tutorial.qmd b/content/manipulation/03_geopandas_tutorial.qmd index 8543ee6df..3403473a2 100644 --- a/content/manipulation/03_geopandas_tutorial.qmd +++ b/content/manipulation/03_geopandas_tutorial.qmd @@ -54,7 +54,7 @@ l'objet de ce chapitre porte davantage sur la manipulation des données géograp Ce tutoriel s'inspire beaucoup d'un autre tutoriel que j'ai fait pour `R` disponible -[dans la documentation `utilitr`](https://www.book.utilitr.org/spatdata.html). +[dans la documentation `utilitr`](https://www.book.utilitr.org/fiche_donnees_spatiales). Il peut servir de pendant à celui-ci pour l'utilisateur de `R`. @@ -193,7 +193,7 @@ partir d'`OpenStreetMap`. Nous proposons ici une méthode nouvelle de récupération de ces données qui s'appuie sur le projet interministériel -[`cartiflette`](https://10pourcent.etalab.studio/projets/insee/). +[`cartiflette`](https://www.10pourcent.etalab.gouv.fr/projets/cartiflette/). Ce projet vise à faciliter la récupération des sources officielles, notamment celles de l'IGN, et leur association à des jeux de données géographiques. diff --git a/content/manipulation/04a_webscraping_TP.qmd b/content/manipulation/04a_webscraping_TP.qmd index e62e102b1..bcadd5975 100644 --- a/content/manipulation/04a_webscraping_TP.qmd +++ b/content/manipulation/04a_webscraping_TP.qmd @@ -133,7 +133,7 @@ d'un robot ne signifie pas qu'on peut se permettre de n'être pas civilisé. En effet, lorsqu'il est non-maîtrisé, le _webscraping_ peut ressembler à une attaque informatique classique pour faire sauter un site _web_: le déni de service. -Le cours d'[Antoine Palazzolo](https://inseefrlab.github.io/formation_webscraping/) revient +Le cours d'[Antoine Palazzolo](https://inseefrlab.github.io/formation-webscraping/) revient sur certaines bonnes pratiques qui ont émergé dans la communauté des _scrapeurs_. Il est recommandé de lire cette ressource pour en apprendre plus sur ce sujet. Y sont évoqués diff --git a/content/manipulation/04b_regex_TP.qmd b/content/manipulation/04b_regex_TP.qmd index 0ba303a6d..a766b4a87 100644 --- a/content/manipulation/04b_regex_TP.qmd +++ b/content/manipulation/04b_regex_TP.qmd @@ -60,7 +60,7 @@ ou _"regex"_. C'est une fonctionnalité qu'on retrouve dans beaucoup de langages Une partie du contenu de cette partie est une adaptation de la -[documentation collaborative sur `R` nommée `utilitR`](https://www.book.utilitr.org/textdata.html#regex) à laquelle j'ai participé. Ce chapitre reprend aussi du contenu du +[documentation collaborative sur `R` nommée `utilitR`](https://www.book.utilitr.org/03_fiches_thematiques/fiche_donnees_textuelles#regex) à laquelle j'ai participé. Ce chapitre reprend aussi du contenu du livre [_R for Data Science_](https://r4ds.hadley.nz/regexps.html) qui présente un chapitre très pédagogique sur les regex. @@ -662,7 +662,7 @@ Cela peut valoir le coup de s'habituer à l'ajouter. ## Pour en savoir plus -- [documentation collaborative sur `R` nommée `utilitR`](https://www.book.utilitr.org/textdata.html#regex) +- [documentation collaborative sur `R` nommée `utilitR`](https://www.book.utilitr.org/03_fiches_thematiques/fiche_donnees_textuelles#regex) - [_R for Data Science_](https://r4ds.hadley.nz/regexps.html) - [_Regular Expression HOWTO_ dans la documentation officielle de `Python`](https://docs.python.org/3/howto/regex.html) - L'outil de référence [https://regex101.com/] pour tester des expressions régulières diff --git a/content/manipulation/07_dask.qmd b/content/manipulation/07_dask.qmd index 9942d1920..b8e380bcc 100644 --- a/content/manipulation/07_dask.qmd +++ b/content/manipulation/07_dask.qmd @@ -64,8 +64,11 @@ Plusieurs points sont mis en avant dans la documentation officielle et sont rés ### Comment `Dask` se compare à `Spark` ? Dans le monde du _big-data_, un écosystème concurrent existe: [`Spark`](https://spark.apache.org/). Globalement, lorsqu'on a compris la logique -de l'un, il est très facile de faire la transition vers l'autre si besoin[^1]. Pour ma part, j'ai principalement fait du `Spark` sur +de l'un, il est très facile de faire la transition vers l'autre si besoin[^1]. + [^1]: Sauf si on doit mettre en oeuvre soi-même l'infrastructure `Spark`, ce qui relève plus des compétences du _data architect_ que du _data scientist_. diff --git a/content/manipulation/index.qmd b/content/manipulation/index.qmd index 3751f352c..ae854d5a1 100644 --- a/content/manipulation/index.qmd +++ b/content/manipulation/index.qmd @@ -89,7 +89,7 @@ utilisent des objets construits à partir de `Numpy`[^1]. de `Numpy` qui n'est pas toujours le plus adapté pour la gestion de certains types de données. Le _framework_ `Arrow` tend à devenir la couche basse utilisée par de plus en plus de librairies de _data science_. -[Ce _post_ de blog](https://pypistats.org/api/packages/pandas/) approfondit +[Ce _post_ de blog](https://datapythonista.me/blog/pandas-20-and-the-arrow-revolution-part-i) approfondit de manière très pédagogique ce sujet. L'approche `Pandas`, qui offre un point d'entrée harmonisé pour manipuler diff --git a/content/modelisation/0_preprocessing.qmd b/content/modelisation/0_preprocessing.qmd index 4c31a18d3..acd1f51d6 100644 --- a/content/modelisation/0_preprocessing.qmd +++ b/content/modelisation/0_preprocessing.qmd @@ -45,7 +45,7 @@ print_badges("content/modelisation/0_preprocessing.qmd") ::: Ce chapitre utilise le jeu de données présenté dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/) : +de cette partie](index.qmd) : les données de vote aux élections présidentielles américaines de 2020 au niveau des comtés croisées à des variables socio-démographiques. Le code de consitution de la base de données @@ -84,7 +84,7 @@ bénéficié que plus récemment d'une librairie unifiée, Une autre raison du succès de `scikit` est son approche opérationnelle: la mise en production de modèles développés via les _pipelines_ `scikit` est peu coûteuse. Un [chapitre spécial de ce cours](/pipeline-scikit) est dédié aux _pipelines_. -Avec Romain Avouac, nous proposons un [cours plus avancé](https://ensae-reproductibilite.netlify.app/) +Avec Romain Avouac, nous proposons un [cours plus avancé](https://ensae-reproductibilite.github.io/website/) en dernière année d'ENSAE où nous présentons certains enjeux relatifs à la mise en production de modèles développés avec `scikit`. @@ -289,7 +289,7 @@ Les fonctionnalités de `pandas` sont, à ce niveau, suffisantes pour explorer d Néanmoins, lorsqu'on est face à un jeu de données présentant de nombreuses variables explicatives (*features* en machine learning, *covariates* en économétrie), il est souvent judicieux d'avoir une première étape de sélection de variables, -ce que nous verrons par la suite dans la [partie dédiée](https://linogaliana-teaching.netlify.app/lasso/). +ce que nous verrons par la suite dans la [partie dédiée](4_featureselection.qmd). Avant d'être en mesure de sélectionner le meilleur ensemble de variables explicatives, nous allons en prendre un nombre restreint et arbitraire. diff --git a/content/modelisation/1_modelevaluation.qmd b/content/modelisation/1_modelevaluation.qmd index 2ac08b3c7..e7c5ae2c1 100644 --- a/content/modelisation/1_modelevaluation.qmd +++ b/content/modelisation/1_modelevaluation.qmd @@ -156,7 +156,7 @@ Ce type d'échantillonnage stratifié est également possible avec `scikit`. ::: -L'[exercice sur les SVM](https://linogaliana-teaching.netlify.app/svm/) illustre cette construction et la manière +L'[exercice sur les SVM](2_SVM.qmd) illustre cette construction et la manière dont elle facilite l'évaluation de la qualité d'un modèle. ## Validation croisée diff --git a/content/modelisation/2_SVM.qmd b/content/modelisation/2_SVM.qmd index 613964afc..64085571a 100644 --- a/content/modelisation/2_SVM.qmd +++ b/content/modelisation/2_SVM.qmd @@ -46,7 +46,7 @@ print_badges("content/modelisation/2_SVM.qmd") Nous allons partir du même jeu de données que précédemment, c'est-à-dire les résultats des élections US 2020 présentés dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/): les données de vote aux élections présidentielles américaines +de cette partie](index.qmd): les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible [sur Github](https://github.com/linogaliana/python-datascientist/blob/master/content/modelisation/get_data.py). diff --git a/content/modelisation/3_regression.qmd b/content/modelisation/3_regression.qmd index 8e8a9dceb..96915d866 100644 --- a/content/modelisation/3_regression.qmd +++ b/content/modelisation/3_regression.qmd @@ -45,7 +45,7 @@ print_badges("content/modelisation/3_regression.qmd") Nous allons partir du même jeu de données que précédemment, c'est-à-dire les résultats des élections US 2020 présentés dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/): les données de vote aux élections présidentielles américaines +de cette partie](index.qmd): les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible [sur Github](https://github.com/linogaliana/python-datascientist/blob/master/content/modelisation/get_data.py). @@ -82,7 +82,7 @@ qu'il faudrait, pour être rigoureux, transformer l'échelle afin d'avoir des données dans cet intervalle. Ce chapitre utilise toujours le même jeu de données, présenté dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/): les données de vote aux élections présidentielles américaines +de cette partie](index.qmd): les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible [sur Github](https://github.com/linogaliana/python-datascientist/blob/master/content/modelisation/get_data.py). diff --git a/content/modelisation/4_featureselection.qmd b/content/modelisation/4_featureselection.qmd index 548777e91..dabe2e30f 100644 --- a/content/modelisation/4_featureselection.qmd +++ b/content/modelisation/4_featureselection.qmd @@ -54,7 +54,7 @@ print_badges("content/modelisation/4_featureselection.qmd") Pour illustrer le travail de données nécessaire pour faire de la sélection de variables, nous allons partir du même jeu de données que précédemment, c'est-à-dire les résultats des élections US 2020 présentés dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/): les données de vote aux élections présidentielles américaines +de cette partie](index.qmd): les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible [sur Github](https://github.com/linogaliana/python-datascientist/blob/master/content/modelisation/get_data.py). @@ -316,7 +316,6 @@ nb_non_zero = np.apply_along_axis(func1d=np.count_nonzero,arr=coefs_lasso,axis=0 print(nb_non_zero) ## graphique -# Graphe emprunté à http://tutoriels-data-mining.blogspot.com/2018/05/regression-lasso-sous-python.html sns.set_style("whitegrid") plt.figure() diff --git a/content/modelisation/5_clustering.qmd b/content/modelisation/5_clustering.qmd index 0e8cddd29..e960a1383 100644 --- a/content/modelisation/5_clustering.qmd +++ b/content/modelisation/5_clustering.qmd @@ -49,7 +49,7 @@ print_badges("content/modelisation/5_clustering.qmd") Nous allons continuer avec le même jeu de données que précédemment, c'est-à-dire les résultats des élections US 2020 présentés dans l'[introduction -de cette partie](https://linogaliana-teaching.netlify.app/modelisation/): les données de vote aux élections présidentielles américaines +de cette partie](index.qmd): les données de vote aux élections présidentielles américaines croisées à des variables sociodémographiques. Le code est disponible [sur Github](https://github.com/linogaliana/python-datascientist/blob/master/content/modelisation/get_data.py). @@ -442,7 +442,7 @@ vont être détectées comme des anomalies. #### Les mélanges de gaussiennes -En ce qui concerne la théorie, voir le cours [Probabilités numériques et statistiques computationnelles, M1 Jussieu, V.Lemaire et T.Rebafka](http://www.proba.jussieu.fr/pageperso/rebafka/#enseignement) +En ce qui concerne la théorie, voir le cours [Probabilités numériques et statistiques computationnelles, M1 Jussieu, V.Lemaire et T.Rebafka](https://perso.lpsm.paris/~rebafka/#enseignement) Se référer notamment aux notebooks pour l'algorithme EM pour mélange gaussien. Dans `sklearn`, les mélanges gaussiens sont implémentés dans `sklearn.mixture` comme `GaussianMixture`. diff --git a/content/modern-ds/continuous_integration.qmd b/content/modern-ds/continuous_integration.qmd index 2f75954e2..0339f863a 100644 --- a/content/modern-ds/continuous_integration.qmd +++ b/content/modern-ds/continuous_integration.qmd @@ -49,7 +49,7 @@ projets ce qui peut représenter un gâchis non négligeable de temps et de ressources. Comme nous l'expliquons avec Romain Avouac dans un cours de dernière année de l'ENSAE -(https://ensae-reproductibilite.netlify.app/), +(https://ensae-reproductibilite.github.io/website/), l'adoption de certaines bonnes pratiques de développement de code et d'une démarche exploitant les dernières innovations de @@ -169,7 +169,7 @@ concernant `Docker. Il est également très simple de construire son image de rien, ce qui est la démarche choisie dans l'autre cours de l'ENSAE que nous donnons avec Romain -Avouac (https://ensae-reproductibilite.netlify.app/). +Avouac (https://ensae-reproductibilite.github.io/website/). Quand on utilise un dépôt `Github` ou `Gitlab` , @@ -287,7 +287,7 @@ avec un certain nombre de dépendances pré-installées[^4]. [^4]: Sur la différence entre les environnements virtuels et les environnements conda, voir -[cette partie](https://ensae-reproductibilite.netlify.app/portability/#les-environnements-virtuels-) de cours +[cette partie](https://ensae-reproductibilite.github.io/website/portability/#les-environnements-virtuels-) de cours plus avancé que nous donnons avec Romain Avouac sur la mise en production de projets _data-science_. @@ -400,7 +400,7 @@ un _data-scientist_ pourra privilégier telle ou telle option. Les deux solutions sont présentées dans l'exemple fil-rouge du cours que nous donnons avec Romain Avouac -(https://ensae-reproductibilite.netlify.app/application/). +(https://ensae-reproductibilite.github.io/website/application/). [^6]: Le point de vue que nous défendons avec Romain Avouac dans notre cours sur la reproductibilité @@ -689,7 +689,7 @@ valorisant un projet mais aussi le fonctionnement du _back-office_, par exemple en testant la capacité de charge de cette application. Une introduction à `Kubernetes` orienté donnée peut être trouvée dans -le [cours dédié à la mise en production](https://ensae-reproductibilite.netlify.app/) +le [cours dédié à la mise en production](https://ensae-reproductibilite.github.io/website/) que nous donnons avec Romain Avouac et dans ce [post de blog](https://towardsdatascience.com/from-jupyter-to-kubernetes-refactoring-and-deploying-notebooks-using-open-source-tools-19f99585e923) très bien fait. @@ -713,7 +713,7 @@ AWS. # Références -- https://ensae-reproductibilite.netlify.app/ +- https://ensae-reproductibilite.github.io/website/ - https://towardsdatascience.com/from-jupyter-to-kubernetes-refactoring-and-deploying-notebooks-using-open-source-tools-19f99585e923