signaux-faibles / predictsignauxfaibles

Dépôt du code python permettant la production de liste de prédiction Signaux Faibles.
MIT License
6 stars 1 forks source link

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

Installation pour un développeur/data scientist :

Cloner et naviguer dans le repo

git clone git@github.com: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 :

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

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