Skip to content
This repository has been archived by the owner on Oct 4, 2021. It is now read-only.

Dépôt du code python permettant la production de liste de prédiction Signaux Faibles.

License

Notifications You must be signed in to change notification settings

signaux-faibles/predictsignauxfaibles

Repository files navigation

predictsignauxfaibles

Dépôt du code python permettant la production de liste de prédiction Signaux Faibles.

⚠️ ce dépôt est aujourd'hui archivé est n'est plus en cours de développement ! En effet, la partie data science du projet Signaux Faibles a migrée sur le lac de données de la DGFiP dans le cadre d'une évolution du partenariat et a donc changé d'environnement technique.

Dépendances / pré-requis

  • python 3.6.4
  • un accès à la base de données du projet

Installation pour un développeur/data scientist :

Cloner et naviguer dans le repo

git clone [email protected]:signaux-faibles/predictsignauxfaibles.git

Optionnel : Pour les personnes qui travaillent sur le serveur labtenant avec un proxy

Pour pouvoir télécharger les packages, leurs dépendances ainsi que la documentation de données de opensignauxfaibles, il est nécessaire de prendre en compte le proxy pour les personnes qui travaillent sur le serveur.

Par exemple, pour installer un package :

pip install --proxy socks5h://localhost:<PORT_INTERNET> <MON_PACKAGE>

Pour éviter de fournir l'option --proxy à chaque fois, vous pouvez créer un fichier ~/.conf/pip/pip.conf

mkdir -p ~/.config/pip
nano pip.conf

Et y ajouter la configuration suivante :


proxy = socks5h://localhost:<PORT_INTERNET>

Cette configuration est cruciale pour l'installation automatique des packages indiqué dans requirements.

créer un environnement virtuel python (recommandé)

Exemple avec pyenv :

pyenv install 3.6.4
pyenv virtualenv 3.6.4 sf
pyenv local sf

installer les dépendences du projet

pip install -r requirements.txt

Note: la procédure sur le serveur est légèrement différente.

activer les githooks

python -m python_githooks

Commencer à travailler !

Faire tourner un modèle

Les modèles sont configurés dans un fichier de configuration en python dans models/<model_name>/model_conf.py. Certaines valeurs peuvent être changées via le CLI (python -m predictsignauxfaibles --help).

Chaque run de modèle produit 2 fichiers dans ./model_runs/<model_id> qui n'est pas commité sur Git :

  • les prédictions du modèle
  • des statistiques de performance du modèle

La variable d'environnement ENV permet de faire tourner le modèle en mode develop (utilisant moins de données, le défaut) ou bien en prod:

export ENV=prod
python -m predictsignauxfaibles

Structure du Dépot

Librement inspiré du cookiecutter data science

  • lib/ contient l'essentiel du code nécéssaire à la production de listes signaux faibles.
  • bin/ contient des scripts utiles au projet.
  • models/ contient les artefacts de modèle (entrainés et serialisés), ses prédictions, et son évaluation.
  • model_run/ contient les prédictions, et les métriques d'évaluation des modèles exécutés.
  • notebooks/ contient les notebooks Jupyter (exploration, documentation intéractive, tutoriels…)
  • tests/ contient les tests du projet : tests unitaires, d'intégration, et "end-to-end" (e2e). Le module python utilisé pour les tests est pytest.
  • Makefile peut être utilisé pour l'execution de taches communes (make train, make predict, etc.) Rq : Ceci n'est pas implémenté car déjà couvert par l'utilitaire en ligne de commandes.
  • setup.cfg est un fichier contenant les métaonnées du projet utilisées par setuptools lors de l'installation du projet.
  • requirements.txt liste les dépendences (et leurs versions) nécessaires à la production d'une liste signaux faibles.
  • .githooks.ini et .pylintrc sont les fichiers de configuration pour les githooks et le linter.

Documentation

Démo

Un notebook jupyter interactif de démo est disponible ici.

Générer la documentation

La documentation peut être générée en exécutant la commande (toujours depuis docs/)

make html

pour obtenir un dossier formattant la documentation en html (type «readthedocs.io»). Celle-ci est ensuite navigable en ouvrant docs/build_/html/index.html

Beaucoup d'autres formats d'export sont disponibles (pdf, man, texinfo); pour plus d'informations, voir

make help

La documentation est générée grâce aux fichiers .rst contenus dans le dossier docs/source. Si besoin, ceux-ci peuvent être automatiquement générés à l'aide de sphinx : depuis le dossier docs/, exécuter

sphinx-apidoc -fP -o source/ ../predictsignauxfaibles

Variables d'apprentissage

Il est également possible de télécharger la liste des features disponibles pour le modèle Signaux Faibles, fichier json présent dans le dépôt Github opensignauxfaibles. Ce listing est utilisé dans le notebook de démo.

cd notebooks
curl --proxy socks5h://localhost:<PORT_INTERNET> -OL https://raw.githubusercontent.com/signaux-faibles/opensignauxfaibles/master/js/reduce.algo2/docs/variables.json -o variables.json
cd ..

Gestion des fonctions aléatoires

Les fonctions aléatoires doivent être décorées avec le décorateur is_random (dans lib.decorators).

Dès lors, la variable d'environnement RANDOM_SEED permet aux fonctions aléatoires d'être déterministes. Par défaut, cela n'est pas le cas. Cette variable doit être un entier.

Au début d'un notebook, vous pouvez créer cette variable d'environnement de la manière suivante :

import os
os.environ["RANDOM_SEED"]="42"

Ou depuis le terminal :

export RANDOM_SEED=42

About

Dépôt du code python permettant la production de liste de prédiction Signaux Faibles.

Resources

License

Stars

Watchers

Forks

Packages

No packages published