RSS page de blog - 1/5 ==> Blog Azure (2) deep_learning (2) machine_learning (7) modules (3) pandas (3) programmation (3) setup (2) tutoriel (2)


page de blog - 1/5

Performance du langage Pyhon

2017-02-25

C’est un article de blog assez concis et clair qui dévoile une partie de ce que cache un langage interprété comme Python : Cost of abstractions.

post

Combiner des random forest

2017-02-15

C’est une astuce que m’ont fait découvrir deux étudiants dans leur projet associé au cours de troisième année Eléments logiciels pour le traitement des données massives. Ils ont utilisé une propriété rendue possible par l’implémentation des random forest de scikit-learn : il est possible de construire une random forest issue de l’assemblage de deux random forest. De là à paralléliser l’apprentissage d’une random forest, il n’y a qu’un pas. L’article en question : Combining random forest models in scikit learn.

post

Un module pour calculer des indicateurs financiers

2017-01-08

Je ne l’ai pas essayé mais il a l’air intéressant pour quiconque souhaite coder des algorithmes de trading automatiques : TA-LIB et son interface Python. La plupart des indicateurs financiers y sont implémentés.

post

Annoter des images

2017-01-05

Construire une application qui reconnaît des images implique qu’on sache localiser un visage et le reconnaître. Pour appendre, il faut disposer d’une base images annotées ou labellisées dans lesquelles on connaît l’information à trouver. Voici l’image tirée de wikipédia : Détection de visage.

https://upload.wikimedia.org/wikipedia/commons/e/ef/Face_detection.jpg

Quand on n’a pas d’image avec des labels, il faut les construire et c’est plutôt fastidieux sans outils adéquats. En voici deux écrits en Python :

post

Deviner l’encoding d’un fichier

2016-12-20

Lire un fichier avec pandas est parfois compliqué voire très frustrant parce que chaque source à sa propre façon de faire. Bref comment devenir l’encoding d’un fichier texte.

import pandas
df = pandas.read_csv("machin_tres_chiant.csv",
                     sep="\t",
                     encoding="UTF-16LE")

Plutôt que de devenir fou, le plus simple est d’utiliser un module comme chardet qui retourne cette information avec l’exemple suivant :

import chardet
with open("machin_tres_chiant.csv", "rb") as f:
    raw = f.read()
enc = chardet.detect(raw)
print(enc)

post

Ecrire un test unitaire pour Flask

2016-12-01

Utiliser flask n’est pas si compliqué (voir Débuter avec Flask). Et puis une fois qu’on a terminé, on souhaite écrire des tests unitaires pour vérifier que cela ne casse pas. Cela veut dire créer un second thread qui va faire tourner le site web et surtout l’arrêter quand on n’en a plus besoin. La suite est à lire sur cette page Site Web, exemple avec Flask.

post

Tranformer les variables catégorielles et contrastes

2016-11-30

Certains modèles de machine learning requiert de transformer les variables catégorielles en variables numériques. Il existe plusieurs façons de faire cela : Patsy: Contrast Coding Systems for categorical variables. Les extensions de scikit-learn incluent un module qui fait cela aussi mais façon scikit-learn : category_encoders implémente les transformations suivantes :

  • Backward Difference Coding : Voir Backward Difference Coding
  • Binary : cette transformation est identique à One Hot mais toutes les colonnes sont regroupées en une seule. Chaque nombre a une représentation binaire identique aux colonnes regroupées.
  • Hashing : chaque catégorie est transformée en hash. Cela veut dire chaque catégorie est transformée en une chaîne de caractères de longueur fixe. On peut ajuster le hash de telle sorte que plusieurs catégories seront encodées de la même manière si le nombre de catégories est trpo grand.
  • Helmert Coding : Voir Helmert.
  • One Hot : chaque catégorie devient une colonne à part entière qui prend ses valeurs dans \{0,1\} indiquant si l’observation fait partie de cette catégorie ou non. Si la catégorie est renseignée à chaque fois, la somme de ces colonnes fait toujours 1. Le nouveau jeu de données peut poser des problèmes pour toutes les méthodes supposant que la matrice des covariances est inversible.
  • Ordinal : convertit les catégories en entier stocké dans une seule colonne.
  • Polynomial Coding : Voir Orthogonal Polynomial Coding.
  • Sum Coding : Voir Sum (Deviation) Coding.

L’idée de base derrière tous ces schémas est la notion de contraste. On souhaite affecter à chaque catégorie une valeur réelle qui soit en adéquation avec le problème de machine learning considéré et celles-ci sont estimées en fonction de la variable Y à prédire, le plus souvent avec une régression linéaire.

Voir également Coding schemes covered.

post

pandas, groupby, nan values

2016-11-20

La fonction groupby ne considère pas (plus) les valeurs manquantes ou NaN. Le notebook groupby et valeur manquantes illustre ce fait et montre comment les corriger.

post

Piloter un drone depuis un notebook

2016-11-10

Vidéo : Building a (semi) Autonomous Drone with Python.

Une autre vidéo à propos du futur des notebooks : JupyterLab: Building Blocks for Interactive Computing.

post

Coordonnées des données carroyées

2016-11-03

Les données carroyées sont fournies par l’INSEE et proposent différentes variables économiques agrégées par carreaux : Un carroyage est un découpage de l’espace géographique en mailles régulières de forme carrée et de taille fixe. Il survient toujours un moment où on cherche à représenter ses données qui sont localisées avec un système de coordonnées : Lambert Azimutal Equal Area. Pour les convertir an longitude, latitude, il faut utiliser le module pyproj. Exemple : Conversion de coordonnées. La plupart des systèmes de coordonnées (ou Spatial reference system) sont identifiés par un code EPSG. Dans le cas des données carroyées, le code est EPSG:3035. Il est répertorié sur spatialreference.org qui listent façons de l’écrire avec différents outils. Lorsqu’on télécharge des fichiers shapefiles, elles viennent souvent avec un fichier .prj qui décrit le système de coordonnées utilisé. Le site prj2epsg permet d’obtenir le code EPSG correspondant ouvrant la porte à toutes sortes de conversions.

post


RSS page de blog - 1/5 ==> 2015-04 (5) 2015-05 (5) 2015-07 (2) 2015-08 (1) 2015-09 (2) 2015-12 (1) 2016-01 (6) 2016-03 (8) 2016-04 (1) 2016-05 (1) 2016-06 (1) 2016-08 (4) 2016-09 (2) 2016-10 (3) 2016-11 (4) 2016-12 (2) 2017-01 (2) 2017-02 (2)