RSS page de blog - 1/2 ==> Blog calcul_matriciel (2) cours (3) numpy (2) pandas (4)


page de blog - 1/2

Hackathon - Institut des Actuaires

2017-09-11

Crésus accompagne les personnes en situation de surendettement. Les personnes en situation financière difficile commencent par envoyer un dossier qui précisent les éléments principaux de leur situation. C’est ce que contiennent les bases dossier, budget. Un ou plusieurs rendez-vous téléphonique suit pour renseigné les tables agenda et crédit. Deux colonnes sont utilisées pour qualifier la nature de la situation (diagnostic) et l’orientation donnée au dossier. Il faudra prédire l’orientation et ne pas tenir compte de la nature. Pour ce faire, les tables sont été divisés en apprentissage et test selon deux ensembles disjoints dans le temps de dossiers. La base de dossier ne contient pas d’historique. C’est une vue de la situation au moment où le dossier est orienté.

Mode d’emploi

Les différents fichiers sont un dump des différentes tables du système d’information de l’association. Elles sont liées par des identifiants. L’identifiant dossier est celui qui permet de lier les données de la table principale dossier aux autres. La table dossier est scindée en deux parties :

  • X : ensemble des colonnes saisies à la réception d’un dossier
  • Y : ensemble des informations renseignées manuellement après l’étude d’un dossier.

La partie Y contient deux colonnes :

  • orientation : la suite donnée au dossier par l’association Crésus

Il faut prédire cette colonne. Il ne faut pas utiliser les colonnes etat et nature qui sont renseignées manuellement après orientation.

Compétition

La compétition est accessible sur codalab : Hackathon Institut des Actuaires. C’est un problème de classification multi-classes.

Les réponses doivent être données dans le même ordre que les lignes de la table tbl_dossier.test.X.txt dans un fichier texte sans en-tête answer.txt. Soumettre une solution consiste à envoyer à fichier answer.zip qui contient un fichier answer.txt au format suivant :

4.0  0.9144635693307518
2.0  0.9058230082126213
1.0  0.963522847810654
2.0  0.6700924948192609
5.0  0.33637962518435127
1.0  0.2746943724528652
5.0  0.695436159178639

Avec deux colonnes :

  1. prédiction pour l”orientation
  2. score orientation pour la prédiction de l’orientation

Un exemple de soumission est disponible (réponse aléatoire)

  1. answer.txt
  2. answer.zip

Les métriques produites pour chaque colonne :

  • ERR - taux d’erreur : c’est la proportion de mauvaises prédictions, la classe prédite n’est pas la classe attendue.
  • AUC - aire sous la courbe ROC : ce chiffre correspond à la probabilité pour le score d’une bonne prédiction d’être supérieur au score d’une mauvaise prédiction - Courbe ROC.

Une bonne AUC indique que le score de la prédiction est fiable. Autrement dit, même si le taux d’erreur est élevé, cela signifie que celui qui utilise le modèle de prédiction peut plus facilement croire la prédiction quand celle-ci est élevée. Cette métrique a été choisie pour permettre à l’utilisateur d’automatiser une partie du traitement avec fiabilité et de continuer à gérer les autres dossiers manuellement lorsque la prédiction n’est pas assez fiable. La fonction de calcul AUC est implémentée : AUC_multi et le fichier d’évaluation fonctionne en Python 2 ou 3 : evaluate.py.

Autres données

article

Machine Learning - session 6

2017-06-25

Exercices

Plan

article

Cheat Sheets

2017-06-24

Quand quelqu’un s’amuse à regrouper plusieurs cheat sheets au même endroit, il faut absolument garder le lien quelque part, Essential Cheat Sheets for Machine Learning and Deep Learning Engineers, et son répertoire GitHub. C’est une façon très simple d’attirer pas mal de monde au même endroit car cela nous évite pas mal d’aller retour vers un moteur de recherche.

article

Préparation pour la séance 5, données out of memory

2017-05-23

Certains jeux disponibles sur data.gouv.fr sont très volumineux. C’est l’occasion de voir comment se débrouiller quand les données ne tiennent pas en mémoire. Pour la prochaine, nous utiliserons un des fichiers disponibles sur cette page : DAMIR, de préférence un des plus récents. Il faudra le télécharger avant la séance. Nous verrons différentes options pour le manipuler.

Correction de l’exercice proposé dans le blog précédent : Tracer une pyramide bigarrée.

article

Références et plan pour la séance 4

2017-04-18

Plan suivi pour cette séance :

Un exercice est prévu pour la prochaine séance : tracer une pyramide bigarrée.

http://lesenfantscodaient.fr/_images/biodiversite_tri2.png

On veut reproduire cette pyramide avec matplotlib :

article

Mettre à jour un module sous Windows

2016-11-15

Comme il n’existe pas de compilateur par défaut sous Windows, l’installation ou la mise à jour des modules requiert de passer toujours par les mêmes étapes. Si la distribution Anaconda est installée et que le module est maintenu, il faut toujours exécuter :

conda install <module>

Et :

conda update <module>

Si le module n’est pas maintenu ou que la distribution Anaconda n’est pas utilisé, il existe trois cas possibles.

  1. Le module est écrit en Python pur (exemple : seaborn).
  2. Le module contient du C++ et est compilé par le site Unofficial Windows Binaries for Python Extension Packages (exemple : numpy).
  3. Le module contient du C++ et n’est pas compilé par le site Unofficial Windows Binaries for Python Extension Packages : (exemple : xgboost).

Le cas 1 est simple si le module dépend de modules tous écrits en Python (voir plus bas). Il suffit d’exécuter :

pip install <module>

Ou :

pip install <module> --upgrade

Si on souhaite installer ou mettre à jour le module sans les dépendances, il faut ajouter l’option --no-deps. Cette option est indispensable lorsqu’on met à jour un module qui prend une dépendance sur un autre module qui contient du C++ comme seaborn. La mise à jour de ce module entraîne la mise à jour de numpy qui échoue car elle requiert un compilateur C++ et Intel® Math Kernel Library.

NumPy, a fundamental package needed for scientific computing with Python. Numpy+MKL is linked to the Intel® Math Kernel Library and includes required DLLs in the numpy.core directory.

Le cas 2 est simple aussi dans la mesure où il suffit de télécharger le fichier .whl depuis le site Unofficial Windows Binaries for Python Extension Packages. Une fois ce fichier téléchargé, il suffit d’exécuter :

pip install <fichier>

La mise à jour se fait de la même façon :

pip install <fichier>

Le cas 3 est plus complexe. Il requiert que le module soit compilé. Pypi propose parfois une version compilée comme pour scipy mais il faut vérifier qu’il existe une version pour la distribution de Python installée. Il existe deux sous-cas.

Cas 3.1 : le site du module explique comment compiler le module sous Windows. C’est le cas de xgboost. Lire Build xgboost on Windows.

Cas 3.2 : le module peut être compilé avec les instructions standard. Exemple : Build param on Windows.

Que fait le module pymyinstall ?

Le module pymyinstall peut installer ou mettre à jour une liste de modules utilisée pour mes enseignements. C’est un mélange de module Python (cas 1), de module C++ accessibles depuis le site Unofficial Windows Binaries for Python Extension Packages ou non (cas 3). Dans ce dernier cas, le module va chercher la dernière version compilé sur le site www.xavierdupre.fr. Pour s’en servir :

pymy_install <module>

Ou pour mettre à jour :

pymy_update <module>

Les instructions pour compiler certains modules compliqués sont décrites sur ce blog.

article

Télécharger en Python via un proxy

2016-10-10

Il n’est pas facile de télécharger des données via un proxy. Je retranscris différents essais reçu par mail. La fonction urllib.request.urlopen ne fonctionne pas pour ce genre d’usage. Il faut utiliser le module python-requests. Ce qui ne marche pas avec un proxy :

import urllib.request
with urllib.request.urlopen('http://www.python.org/') as f:
    content = f.read(300)

Ce qui marche avec un proxy :

import requests
s = requests.Session()
s.proxies = {"http": "http://<login>\\<pwd>:<user>@<proxy>:<port>"}
result = s.get("http://www.python.org")

result.content retourne le contenu brut au format bytes. result.text convertit result.content au format texte. Si on veut ne lire qu’une partie de la page web, il faut explicitement demander que la fonction retourne un stream :

result = s.get("http://www.python.org", stream=True)
content = result.raw.read(100)

Pour le reste, la documentation n’est pas très explicite quant à la méthode get, il faut revenir au code de get qui appelle la méthode request

article

Eviter les mots de passe dans les notebooks

2016-09-24

Il arrive fréquemment qu’on ait besoin d’une ressource protégée par un mot de passe, service web, API, login et le plus simple est toujours d’écire ce mot de passe en clair dans le notebook. On se dit qu’il faudra penser à l’enlever avant de partager le notebook et on oublie toujours de l’enlever. C’est mon cas en tout cas. J’ai dû plusieurs fois changer de mot de passe car le précédent est parti sur GitHub par inadvertance (programmée).

Ma première réponse à ce mécanisme était d’ouvrir un formulaire javascript dans le notebook. J’ai créé la fonction open_html_form. Cette solution est pratique mais elle implique de rentrer le mot de passe à chaque fois qu’on ouvre le notebook. Et elle ne sert à rien pour les notebooks.

La seconde réponse et à mon avis la meilleur est d’utiliser le module keyring. D’un côté, on écrit ceci sur une ligne de commande Python une et une seule fois :

import keyring
keyring.set_password("actuariat", "dupre", "mon mot de passe")

Puis dans le notebook, il suffit d’exécuter le code suivant pour récupérer le mot de passe :

import keyring
keyring.get_password("actuariat", "dupre")

Le mot de passe n’apparaît pas dans le notebook, il n’est pas besoin de le saisir à chaque fois qu’on se sert du notebook et il peut tout aussi bien servier pour récupérer le notebook dans un test unitaire.

article

Références, séance du 14 juin 2016

2016-06-14

Trucs et astuces sur Internet

  • Chercher sur un moteur de recherche <module> cheatsheet pour retrouver les usages les plus fréquents avec un module

Autres trucs et astuces

Installation sous Windows, essayer dans l’ordre :

  1. conda install <module>
  2. Regarder sur la page Unofficial Windows Binaries for Python Extension Packages si elle contient le module souhaité. Si oui, il y a de grandes chances que le module nécessite un compilateur C. Essayer pip install <wheel>.
  3. Enfin, essayer pip install <module>.

Si cela ne marche pas, installer Visual Studio 2015 Community.

Notebooks

Visualisation

article

Challenge Kaggle Assurance

2016-06-10

Can you accelerate BNP Paribas Cardif’s claims management process?

Le challenge consisté à accélérer le traitement des demandes de remboursement. Les données sont conséquentes environ 50 Mo.

article


RSS page de blog - 1/2 ==> 2015-05 (1) 2015-06 (3) 2016-03 (2) 2016-04 (2) 2016-06 (2) 2016-09 (1) 2016-10 (1) 2016-11 (1) 2017-04 (1) 2017-05 (1) 2017-06 (2) 2017-09 (1)