Suite

Traitement d'images avec Python, GDAL et Scikit-Image

Traitement d'images avec Python, GDAL et Scikit-Image


Je suis aux prises avec un traitement et j'espère pouvoir résoudre ici.

Je travaille avec la télédétection appliquée à la foresterie, en particulier en travaillant avec des données LiDAR. L'idée est d'utiliser Scikit-image pour la détection de la cime des arbres. Comme je suis nouveau en Python, j'ai considéré comme un grand triomphe personnel de faire ce qui suit :

  1. Importer un CHM (avec matplotlib);
  2. Exécutez un filtre gaussien (avec le package scikit-image);
  3. Exécutez un filtre maxima (avec le package scikit-image);
  4. Exécutez peak_local_max (avec le package scikit-image) ;
  5. Afficher le CHM avec les maxima locaux (avec matplotlib);

Maintenant mon problème. Lorsque j'importe avec matplot, l'image perd ses coordonnées géographiques. Donc, les coordonnées que j'ai ne sont que des coordonnées d'image de base (c'est-à-dire 250 312). Ce dont j'ai besoin, c'est d'obtenir la valeur du pixel sous le point de maxima local dans l'image (points rouges dans l'image). Ici, dans le forum, j'ai vu un gars demander la même chose (Obtenir la valeur en pixels du raster GDAL sous le point OGR sans NumPy ?), mais il avait déjà les points dans un fichier de formes. Dans mon cas, les points ont été calculés avec scikit-image (c'est un tableau avec les coordonnées de chaque sommet d'arbre). Je n'ai donc pas le shapefile.

En conclusion, ce que je veux au final c'est un fichier txt avec les coordonnées de chaque maxima local en coordonnées géographiques, par exemple :

525412 62980123 1150…


Tout d'abord, bienvenue sur le site !

Les tableaux Numpy n'ont pas de concept de système de coordonnées intégré dans le tableau. Pour un raster 2D, ils sont indexés par colonne et par ligne.

Noter Je suppose que vous lisez un format raster pris en charge par GDAL.

En Python, le meilleur moyen d'importer des données raster spatiales est d'utiliser le rasterio paquet. Les données brutes importées par rasterio sont toujours un tableau numpy sans accès aux systèmes de coordonnées, mais rasterio vous donne également accès à une méthode affine sur le tableau source que vous pouvez utiliser pour transformer des colonnes et des lignes raster en coordonnées projetées. Par exemple:

import rasterio # La meilleure façon d'ouvrir un raster avec rasterio est de passer par le gestionnaire de contexte # afin qu'il se ferme automatiquement avec rasterio.open(path_to_raster) comme source : data = source.read(1) # Lire la bande raster 1 en tant que tableau numpy affine = source.affine #… travaillez avec scikit-image et obtenez un tableau d'emplacements maxima locaux # par exemple # maxima = numpy.array([[0, 0], [1, 1], [2, 2]]) # Notez également que la convention dans un tableau numy pour un tableau 2D est les lignes (y), les colonnes (x) pour le point dans les maxima : #Boucle sur chaque paire de coordonnées colonne = point[1] rangée = point[0] x, y = affine * (colonne, ligne) print x, y # Ou vous pouvez tout faire à la fois : colonnes = maxima[:, 1] rows = maxima[:, 0] xs, ys = affine * (colonnes, lignes)

Et à partir de là, vous pouvez écrire vos résultats dans un fichier texte comme vous le souhaitez (je vous suggère de jeter un œil aucsvmodule par exemple).


D'un rapide coup d'œil à matplotlib, je dirais que vous devez modifier les échelles des axes après l'importation.


Veuillez essayer avec le morceau de code suivant. Cela peut être utilisé pour lire les données d'image à partir du raster et écrire les données traitées dans le raster (fichier .geotiff).

from PIL import Image, ImageOps import numpy as np from osgeo import gdal #from osgeo import gdal_array #from osgeo import osr #from osgeo.gdalconst import * #import matplotlib.pylab as plt #from PIL import Image, ImageOps #import gdal #from Image d'importation PIL gdal.AllRegister() ################## Lire le raster ################# inRaster="C : pythonResultsDatabaseRisat1CRSCRS_LEVEL2_GEOTIFFscene_HHimagery_HH.tif" inDS=gdal.Open(inRaster,1) geoTransform = inDS.GetGeoTransform() band=inDS.GetRasterBand(1) datatype=band.DataType proj = inDS .GetProjection() rows = inDS.RasterYSize cols=inDS.RasterXSize data=band.ReadAsArray(0,0,cols,rows)#extraction des données à traiter# ############write raster ########## driver=inDS.GetDriver() outRaster="C:pythonResultsDatabaseTemporary databaseclipped_26July2017demo11.tif" outDS = driver.Create (outRaster, cols,rows, 1, datatype) geoTransform = inDS.GetGeoTransform() outDS.SetGeoTransform(geoTransform) proj = inDS.GetProjection() outDS.Set Projection(proj) outBand = outDS.GetRasterBand(1) outBand.WriteArray(data1,0,0) #data est le tableau de sortie à écrire dans le fichier tiff outDS=None im2=Image.open('C:python RésultatsBase de donnéesBase de données temporaireclipped_26juillet2017demo11.tif'); im2.show()

Détection des contours d'une grande image Python à l'aide de Scikit-image et de GDAL

J'ai un gros fichier jpg de 9600x7000 pixels. J'essaie de voir si je peux faire une détection de bord. J'ai essayé de charger le gros fichier (25 Mo) en utilisant :

Cependant, l'interpréteur python plantera. J'utilise Pycharm sous Python 2.7.

J'ai donc utilisé un GDAL (utilisé pour grande fichiers de référencement GEO) pour charger le fichier. Il chargera le fichier en mémoire sans aucun problème.

Cela chargera le fichier. Cependant, j'essaie d'exécuter la détection de bord suivante dessus :

Cela fonctionnerait si je générais une image en utilisant le code suivant :

Mon problème est que je ne comprends pas grand-chose à Python sur le format de données de la variable "image" par rapport à la variable de jeu de données générée par GDAL. Mon objectif final est de pouvoir exécuter la détection des contours sur une grande image jpg (10000x7000) pixels à l'aide de la bibliothèque Python scikit-image. S'il y a un meilleur moyen que GDAL de lire de grandes images jpg, je suis ouvert à cela.

et lancez-le, j'obtiens l'erreur suivante:

Ce message d'erreur indique que je ne comprends pas le type de données entre l'ensemble de données et les variables d'image.


1. Introduction au traitement d'images

Le traitement d'image est une méthode pour effectuer certaines opérations sur une image, afin d'obtenir une image améliorée ou d'en extraire des informations utiles. C'est un type de traitement du signal dans lequel l'entrée est une image et la sortie peut être une image ou des caractéristiques/caractéristiques associées à cette image. De nos jours, le traitement d'images fait partie des technologies en pleine croissance. Il constitue également un domaine de recherche central dans les disciplines de l'ingénierie et de l'informatique.

Le traitement des images comprend essentiellement les trois étapes suivantes :

  • Importation de l'image via des outils d'acquisition d'images
  • Analyser et manipuler l'image
  • Sortie dans laquelle le résultat peut être modifié, image ou rapport basé sur l'analyse d'image.

Il existe deux types de méthodes utilisées pour le traitement d'image, à savoir le traitement d'image analogique et numérique. Le traitement d'image analogique peut être utilisé pour les copies papier comme les impressions et les photographies. Les analystes d'images utilisent divers principes fondamentaux d'interprétation tout en utilisant ces techniques visuelles. Les techniques de traitement d'images numériques aident à manipuler les images numériques à l'aide d'ordinateurs. Les trois phases générales que doivent subir tous les types de données lors de l'utilisation de la technique numérique sont le prétraitement, l'amélioration et l'affichage, l'extraction d'informations.

Dans cette conférence, nous parlerons de quelques définitions fondamentales telles que l'image, l'image numérique et le traitement d'image numérique. Différentes sources d'images numériques seront discutées et des exemples pour chaque source seront fournis. Le continuum du traitement de l'image à la vision par ordinateur sera couvert dans ce cours. Enfin, nous parlerons de l'acquisition d'images et des différents types de capteurs d'images.

De plus amples détails sur les raisons pour lesquelles nous avons besoin de traitement d'image numérique ont été discutés dans une autre présentation qui a eu lieu en janvier 2014. Pour accéder à la vidéo de cette présentation, veuillez cliquer ici.


Redimensionner une image

Pour redimensionner une image, vous pouvez utiliser la méthode resize() d'openCV. Dans la méthode de redimensionnement, vous pouvez soit spécifier les valeurs des axes x et y, soit le nombre de lignes et de colonnes qui indiquent la taille de l'image.

Importez et lisez l'image :

Maintenant, en utilisant la méthode de redimensionnement avec des valeurs d'axe :

Le résultat sera le suivant :

Maintenant, en utilisant les valeurs de ligne et de colonne pour redimensionner l'image :

Nous disons que nous voulons 550 colonnes (la largeur) et 350 lignes (la hauteur).


Contenu

De nombreuses techniques de traitement d'image numérique, ou traitement d'image numérique comme on l'appelait souvent, ont été développées dans les années 1960, aux laboratoires Bell, au Jet Propulsion Laboratory, au Massachusetts Institute of Technology, à l'Université du Maryland et dans quelques autres installations de recherche, avec application à l'imagerie satellitaire, à la conversion de normes fil-photo, à l'imagerie médicale, au visiophone, à la reconnaissance de caractères et à l'amélioration des photographies. [3] Le but du premier traitement d'image était d'améliorer la qualité de l'image. Il était destiné aux êtres humains pour améliorer l'effet visuel des personnes. En traitement d'image, l'entrée est une image de faible qualité et la sortie est une image de meilleure qualité. Le traitement d'image courant comprend l'amélioration, la restauration, l'encodage et la compression d'image. La première application réussie a été l'American Jet Propulsion Laboratory (JPL). Ils ont utilisé des techniques de traitement d'images telles que la correction géométrique, la transformation de gradation, la suppression du bruit, etc. sur les milliers de photos lunaires renvoyées par le Space Detector Ranger 7 en 1964, en tenant compte de la position du soleil et de l'environnement de la lune. L'impact de la cartographie réussie de la carte de la surface de la lune par ordinateur a été un énorme succès. Plus tard, un traitement d'image plus complexe a été effectué sur les près de 100 000 photos renvoyées par le vaisseau spatial, de sorte que la carte topographique, la carte couleur et la mosaïque panoramique de la lune ont été obtenues, qui ont obtenu des résultats extraordinaires et ont jeté des bases solides pour l'atterrissage humain sur le lune. [4]

Le coût de traitement était cependant assez élevé avec le matériel informatique de cette époque. Cela a changé dans les années 1970, lorsque le traitement d'image numérique a proliféré à mesure que des ordinateurs moins chers et du matériel dédié sont devenus disponibles. Cela a conduit à des traitements d'images en temps réel, pour certains problèmes dédiés comme la conversion des normes de télévision. Au fur et à mesure que les ordinateurs à usage général sont devenus plus rapides, ils ont commencé à assumer le rôle de matériel dédié pour toutes les opérations, sauf les plus spécialisées et les plus gourmandes en ressources informatiques. Avec les ordinateurs rapides et les processeurs de signal disponibles dans les années 2000, le traitement d'image numérique est devenu la forme de traitement d'image la plus courante et est généralement utilisé car il s'agit non seulement de la méthode la plus polyvalente, mais aussi la moins chère.

Capteurs d'images Modifier

La base des capteurs d'images modernes est la technologie métal-oxyde-semiconducteur (MOS), [5] qui provient de l'invention du MOSFET (MOS Field-effect transistor) par Mohamed M. Atalla et Dawon Kahng aux Bell Labs en 1959. [ 6] Cela a conduit au développement de capteurs d'images numériques à semi-conducteurs, y compris le dispositif à couplage de charge (CCD) et plus tard le capteur CMOS. [5]

Le dispositif à couplage de charge a été inventé par Willard S. Boyle et George E. Smith aux Bell Labs en 1969. [7] En recherchant la technologie MOS, ils ont réalisé qu'une charge électrique était l'analogie de la bulle magnétique et qu'elle pouvait être stockée sur un petit condensateur MOS. Comme il était assez simple de fabriquer une série de condensateurs MOS d'affilée, ils leur ont connecté une tension appropriée afin que la charge puisse passer de l'un à l'autre. [5] Le CCD est un circuit semi-conducteur qui a été utilisé plus tard dans les premières caméras vidéo numériques pour la télédiffusion. [8]

Le capteur à pixels actifs (APS) NMOS a été inventé par Olympus au Japon au milieu des années 1980. Cela a été rendu possible par les progrès de la fabrication de dispositifs à semi-conducteurs MOS, la mise à l'échelle des MOSFET atteignant des niveaux plus petits, puis inférieurs au micron. [9] [10] Le NMOS APS a été fabriqué par l'équipe de Tsutomu Nakamura à Olympus en 1985. [11] Le capteur à pixels actifs CMOS (capteur CMOS) a ensuite été développé par l'équipe d'Eric Fossum au Jet Propulsion Laboratory de la NASA en 1993. [ 12] En 2007, les ventes de capteurs CMOS avaient dépassé les capteurs CCD. [13]

Compression d'image Modifier

Un développement important dans la technologie de compression d'image numérique a été la transformation en cosinus discrète (DCT), une technique de compression avec perte proposée pour la première fois par Nasir Ahmed en 1972. [14] La compression DCT est devenue la base du JPEG, qui a été introduit par le Joint Photographic Experts Group en 1992. [15] JPEG compresse les images jusqu'à des tailles de fichier beaucoup plus petites et est devenu le format de fichier d'image le plus largement utilisé sur Internet. [16] Son algorithme de compression DCT très efficace était en grande partie responsable de la large prolifération d'images numériques et de photos numériques, [17] avec plusieurs milliards d'images JPEG produites chaque jour à partir de 2015. [18]

Processeur de signal numérique (DSP) Modifier

Le traitement électronique du signal a été révolutionné par l'adoption généralisée de la technologie MOS dans les années 1970. [19] La technologie des circuits intégrés MOS était à la base des premiers microprocesseurs et microcontrôleurs à puce unique au début des années 1970, [20] puis des premières puces de processeur de signal numérique (DSP) à puce unique à la fin des années 1970. [21] [22] Les puces DSP ont depuis été largement utilisées dans le traitement d'images numériques. [21]

L'algorithme de compression d'image à transformée en cosinus discrète (DCT) a été largement mis en œuvre dans les puces DSP, de nombreuses entreprises développant des puces DSP basées sur la technologie DCT. Les DCT sont largement utilisés pour le codage, le décodage, le codage vidéo, le codage audio, le multiplexage, les signaux de contrôle, la signalisation, la conversion analogique-numérique, le formatage des différences de luminance et de couleur, et les formats de couleur tels que YUV444 et YUV411. Les DCT sont également utilisés pour les opérations de codage telles que l'estimation de mouvement, la compensation de mouvement, la prédiction inter-image, la quantification, la pondération perceptive, le codage entropique, le codage variable et les vecteurs de mouvement, et les opérations de décodage telles que l'opération inverse entre différents formats de couleur (YIQ, YUV et RVB) à des fins d'affichage. Les DCT sont également couramment utilisés pour les puces d'encodeur/décodeur de télévision haute définition (TVHD). [23]

Imagerie médicale Modifier

En 1972, l'ingénieur de la société britannique EMI Housfield a inventé l'appareil de tomodensitométrie à rayons X pour le diagnostic de la tête, que l'on appelle généralement CT (tomographie par ordinateur). La méthode du noyau CT est basée sur la projection de la section de la tête humaine et est traitée par ordinateur pour reconstruire l'image en coupe, appelée reconstruction d'image. En 1975, EMI a développé avec succès un appareil de tomodensitométrie pour l'ensemble du corps, qui a obtenu une image tomographique claire de diverses parties du corps humain. En 1979, cette technique de diagnostic a remporté le prix Nobel. [4] La technologie de traitement d'images numériques pour les applications médicales a été intronisée au Space Foundation Space Technology Hall of Fame en 1994. [24]

Le traitement numérique de l'image permet l'utilisation d'algorithmes beaucoup plus complexes, et peut donc offrir à la fois des performances plus sophistiquées pour des tâches simples, et la mise en œuvre de méthodes qui seraient impossibles par des moyens analogiques.

En particulier, le traitement numérique de l'image est une application concrète et une technologie pratique basée sur :

Certaines techniques utilisées dans le traitement d'images numériques comprennent :

Filtrage Modifier

Les filtres numériques sont utilisés pour brouiller et affiner les images numériques. Le filtrage peut être effectué par :

    avec des noyaux spécialement conçus (filter array) dans le domaine spatial [25]
  • masquage de régions fréquentielles spécifiques dans le domaine fréquentiel (Fourier)

Les exemples suivants montrent les deux méthodes : [26]

F = Transformée de Fourier de l'image

Afficher l'image : log(1+valeur absolue (F))

Remplissage d'image dans le filtrage de domaine de Fourier Modifier

Les images sont généralement rembourrées avant d'être transformées dans l'espace de Fourier, les images filtrées passe-haut ci-dessous illustrent les conséquences des différentes techniques de remplissage :

Zéro rembourré Bord répété rembourré

Notez que le filtre passe-haut affiche des bords supplémentaires lorsqu'il est rempli de zéro par rapport au remplissage de bord répété.

Exemples de code de filtrage Modifier

Exemple MATLAB pour le filtrage passe-haut dans le domaine spatial.

Transformations affines Modifier

Les transformations affines permettent des transformations d'image de base, notamment l'échelle, la rotation, la translation, la symétrie et le cisaillement, comme le montrent les exemples suivants : [26]

Nom de la transformation Matrice affine Exemple
Identité [ 1 0 0 0 1 0 0 0 1 ] 1&0&0&1&0&0&1fin>>
Réflexion [ − 1 0 0 0 1 0 0 0 1 ] -1&0&0&1&0&0&1fin>>
Échelle [ c x = 2 0 0 0 c y = 1 0 0 0 1 ] c_=2&0&0&c_=1&0&0&1fin>>
Tourner [ cos ⁡ ( θ ) sin ⁡ ( θ ) 0 − sin ⁡ ( θ ) cos ⁡ ( θ ) 0 0 0 1 ] cos( heta )&sin( heta )&0-sin( heta )&cos( heta )&0&0&1end>> θ = / 6 =30°
Tondre [ 1 c x = 0.5 0 c y = 0 1 0 0 0 1 ] 1&c_=0.5&0c_=0&1&0&0&1fin>>

Pour appliquer la matrice affine à une image, l'image est convertie en matrice dans laquelle chaque entrée correspond à l'intensité des pixels à cet emplacement. Ensuite, l'emplacement de chaque pixel peut être représenté par un vecteur indiquant les coordonnées de ce pixel dans l'image, [x, y], où x et y sont la ligne et la colonne d'un pixel dans la matrice d'image. Cela permet à la coordonnée d'être multipliée par une matrice de transformation affine, qui donne la position à laquelle la valeur de pixel sera copiée dans l'image de sortie.

Cependant, pour permettre des transformations qui nécessitent des transformations de translation, des coordonnées homogènes en 3 dimensions sont nécessaires. La troisième dimension est généralement définie sur une constante non nulle, généralement 1, de sorte que la nouvelle coordonnée est [x, y, 1]. Cela permet de multiplier le vecteur de coordonnées par une matrice 3 par 3, permettant des décalages de translation. Donc la troisième dimension, qui est la constante 1, permet la translation.

La multiplication matricielle étant associative, plusieurs transformations affines peuvent être combinées en une seule transformation affine en multipliant la matrice de chaque transformation individuelle dans l'ordre dans lequel les transformations sont effectuées. Il en résulte une matrice unique qui, lorsqu'elle est appliquée à un vecteur ponctuel, donne le même résultat que toutes les transformations individuelles effectuées sur le vecteur [x, y, 1] en séquence. Ainsi, une séquence de matrices de transformation affine peut être réduite à une seule matrice de transformation affine.

Par exemple, les coordonnées bidimensionnelles autorisent uniquement la rotation autour de l'origine (0, 0). Mais les coordonnées homogènes en 3 dimensions peuvent être utilisées pour traduire d'abord n'importe quel point en (0, 0), puis effectuer la rotation et enfin traduire l'origine (0, 0) vers le point d'origine (le contraire de la première translation). Ces 3 transformations affines peuvent être combinées en une seule matrice, permettant ainsi une rotation autour de n'importe quel point de l'image. [27]

Images d'appareils photo numériques Modifier

Les appareils photo numériques incluent généralement du matériel de traitement d'image numérique spécialisé - soit des puces dédiées, soit des circuits ajoutés sur d'autres puces - pour convertir les données brutes de leur capteur d'image en une image corrigée des couleurs dans un format de fichier d'image standard.

Montage de film

Westworld (1973) a été le premier long métrage à utiliser le traitement d'image numérique pour pixeliser la photographie afin de simuler le point de vue d'un androïde. [28]

Il y a eu des progrès importants dans la technologie de surveillance de la fatigue au cours de la dernière décennie. Ces solutions technologiques innovantes sont désormais disponibles dans le commerce et offrent de réels avantages en matière de sécurité aux conducteurs, opérateurs et autres travailleurs postés dans tous les secteurs. [29]

Les développeurs de logiciels, les ingénieurs et les scientifiques développent des logiciels de détection de la fatigue en utilisant divers indices physiologiques pour déterminer l'état de fatigue ou de somnolence. La mesure de l'activité cérébrale (électroencéphalogramme) est largement acceptée comme la norme en matière de surveillance de la fatigue. D'autres technologies utilisées pour déterminer la déficience liée à la fatigue comprennent les mesures des symptômes comportementaux tels que le comportement des yeux, la direction du regard, les micro-corrections dans l'utilisation de la direction et de l'accélérateur ainsi que la variabilité de la fréquence cardiaque. [ citation requise ]


Utilisation de RasterIO

RasterIO est implémenté par Mapbox et fournit une API python pour la lecture de jeux de données géoréférencés. En outre, la documentation mentionne que contrairement aux liaisons python GDAL, il ne souffre pas de pointeur C pendant et d'autres problèmes de pointeur qui peuvent faire planter votre programme.

Ne vous confondez pas avec les valeurs d'échelle des axes x et y, ce ne sont que des valeurs de longitude et de latitude. Si vous souhaitez lire des bandes individuelles, utilisez le code ci-dessous.


Types d'une image

  1. IMAGE BINAIRE– L'image binaire, comme son nom l'indique, ne contient que deux éléments de pixel, c'est-à-dire 0 et 1, où 0 fait référence au noir et 1 au blanc. Cette image est également connue sous le nom de monochrome.
  2. IMAGE EN NOIR ET BLANC– L'image qui se compose uniquement de couleur noir et blanc est appelée IMAGE NOIR ET BLANC.
  3. FORMAT COULEUR 8 bitsC'est le format d'image le plus connu. Il contient 256 nuances de couleurs différentes et est communément appelé Image en niveaux de gris. Dans ce format, 0 signifie noir, 255 signifie blanc et 127 signifie gris.
  4. FORMAT COULEUR 16 bits– C'est un format d'image couleur. Il contient 65 536 couleurs différentes. Il est également connu sous le nom de High Color Format. Dans ce format, la répartition des couleurs n'est pas la même que celle de l'image en niveaux de gris.

Un format 16 bits est en fait divisé en trois autres formats qui sont le rouge, le vert et le bleu. Ce fameux format RVB.


Traitement d'images avec Python, GDAL et Scikit-Image - Systèmes d'Information Géographique

Super science des données avec Python

Une liste organisée de ressources impressionnantes pour pratiquer la science des données à l'aide de Python, comprenant non seulement des bibliothèques, mais également des liens vers des didacticiels, des extraits de code, des articles de blog et des conférences.

pandas - Structures de données construites sur numpy.
scikit-learn - Bibliothèque Core ML.
matplotlib - Bibliothèque de traçage.
seaborn - Bibliothèque de visualisation de données basée sur matplotlib.
pandas_summary - Statistiques de base utilisant DataFrameSummary(df).summary() .
pandas_profiling - Statistiques descriptives utilisant ProfileReport .
sklearn_pandas - Classe DataFrameMapper utile.
missingno - Visualisation des données manquantes.
rainbow-csv - Plugin pour afficher les fichiers .csv avec de belles couleurs.

Astuces du général Jupyter
Environnement de réparation : lien
Débogueur Python (pdb) - article de blog, vidéo, aide-mémoire
cookiecutter-data-science - Modèle de projet pour les projets de science des données.
nteract - Ouvrez Jupyter Notebooks avec un double-clic.
papermill - Paramétrer et exécuter les cahiers Jupyter, tutoriel.
nbdime - Diff deux fichiers notebook, Alternative GitHub App: ReviewNB.
RISE - Transformez les cahiers Jupyter en présentations.
qgrid - Tri de Pandas DataFrame.
pivottablejs - Faites glisser et déposez des tableaux croisés dynamiques et des graphiques pour les notebooks jupyter.
itables - Tables interactives dans Jupyter.
jupyter-datatables - Tableaux interactifs dans Jupyter.
débogueur - Débogueur visuel pour Jupyter.
nbcommands - Affichez et recherchez des blocs-notes à partir du terminal.
handcalcs - Un moyen plus pratique d'écrire des équations mathématiques dans Jupyter.

Astuces, alternatives et ajouts aux pandas

Astuces de pandas
Utilisation de df.pipe() (vidéo)
pandasvault - Grande collection de tours de pandas.
modin - Bibliothèque de parallélisation pour des pandas plus rapides DataFrame.
vaex - DataFrames hors du cœur.
pandarallel - Parallélisez les opérations des pandas.
xarray - Étend les pandas aux tableaux à n dimensions.
plus rapide - Appliquez plus rapidement n'importe quelle fonction à une trame de données pandas.
pandas_flavor - Écrire des accesseurs personnalisés comme .str et .dt .
pandas-log - Trouvez les problèmes de logique métier et les problèmes de performances dans les pandas.
pandapy - Fonctionnalités supplémentaires pour les pandas.

drawdata - Dessinez rapidement des points et exportez-les au format csv, site Web.
tqdm - Barres de progression pour les boucles for. Prend également en charge les pandas apply().
icecream - Sortie de débogage simple.
loguru - journalisation Python.
pyprojroot - Commande here() utile de R.
apport - Le chargement des ensembles de données est facilité, parlez.

texttract - Extraire le texte de n'importe quel document.
camelot - Extraire le texte du PDF.

spark - DataFrame pour le big data, aide-mémoire, tutoriel.
sparkit-learn, spark-deep-learning - frameworks ML pour spark.
koalas - API Pandas sur Apache Spark.
dask, dask-ml - Pandas DataFrame pour la bibliothèque Big Data et Machine Learning, ressources, talk1, talk2, notebooks, vidéos.
dask-gateway - Gestion des clusters dask.
turicreate - Classe SFrame utile pour les trames de données hors mémoire.
h2o - Classe H2OFrame utile pour les trames de données hors mémoire.
datatable - Table de données pour la prise en charge du Big Data.
cuDF - Bibliothèque GPU DataFrame, Intro.
ray - Framework d'exécution distribuée flexible et hautes performances.
mars - Cadre unifié basé sur des tenseurs pour le calcul de données à grande échelle.
goulot d'étranglement - Fonctions de tableau Fast NumPy écrites en C.
bolz - Un conteneur de données en colonnes qui peut être compressé.
cupy - API de type NumPy accélérée avec CUDA.
petastorm - Bibliothèque d'accès aux données pour les fichiers parquet par Uber.
zarr - Tableaux numpy distribués.

ni - Outil de ligne de commande pour le Big Data.
xsv - Outil de ligne de commande pour l'indexation, le découpage, l'analyse, le fractionnement et la jonction de fichiers CSV.
csvkit - Un autre outil de ligne de commande pour les fichiers CSV.
csvsort - Trie les gros fichiers csv.
tsv-utils - Outils pour travailler avec des fichiers CSV par ebay.
triche - Créez des feuilles de triche pour les commandes de ligne de commande.

Tests et packages statistiques

Analyses intermédiaires / Analyse séquentielle / Arrêt

Analyse séquentielle — Wikipédia.
Surveillance des effets du traitement - Conception et analyse des essais cliniques PennState.
séquentiel - Analyse séquentielle exacte pour les données de Poisson et binomiales (package R).
confseq - Limites uniformes, séquences de confiance et valeurs p toujours valides.

R Epidemics Consortium - Grande suite d'outils pour travailler avec des données épidémiologiques (packages R). Github
incidence2 - Calcul, manipulation, visualisation et modélisation simple de l'incidence (package R).
EpiEstim - Estimation du nombre de reproduction instantanée variant dans le temps R pendant les épidémies (paquet R) papier.
researchpy - Fonction utile summary_cont() pour les statistiques récapitulatives (tableau 1).
zEpid - Package d'analyse épidémiologique, Tutoriel.

Liste de contrôle.
cleanlab - Imagerie de données : apprentissage automatique avec des étiquettes bruyantes et recherche de données mal étiquetées.
pandasgui - GUI pour la visualisation, le traçage et l'analyse des Pandas DataFrames.
concierge - Nettoyez les noms de colonnes en désordre.
impyute - Imputations.
fancyimpute - Algorithmes de complétion de matrice et d'imputation.
déséquilibred-learn - Rééchantillonnage pour les ensembles de données déséquilibrés.
tspreprocess - Prétraitement des séries temporelles : Débruitage, Compression, Rééchantillonnage.
Kaggler - Fonctions utilitaires ( OneHotEncoder(min_obs=100) )
pyupset - Visualisation des ensembles qui se croisent.
pyemd - Earth Mover's Distance / distance de Wasserstein, similitude entre les histogrammes. Implémentation OpenCV, implémentation POT
littleballoffur - Échantillonnage à partir de graphiques.

iterative-stratification - Stratification de données multilabels.

Parlez
sklearn - Pipeline, exemples.
pdpipe - Pipelines pour DataFrames.
scikit-lego - Transformateurs personnalisés pour pipelines.
skoot - Fonctions d'assistance du pipeline.
encodage catégoriel - Encodage catégoriel des variables, vtreat (package R).
dirty_cat - Encodage des variables catégorielles sales.
patsy - Syntaxe de type R pour les modèles statistiques.
mlxtend - LDA.
featuretools - Ingénierie automatisée des fonctionnalités, exemple.
tsfresh - Ingénierie des fonctionnalités de séries temporelles.
pypeln - Pipelines de données simultanées.
feature_engine - Encodeurs, transformateurs, etc.

Images d'ingénierie

skimage - Regionprops : superficie, excentricité, étendue.
mahotas - Fonctionnalités Zernike, Haralick, LBP et TAS.
Pyradiomics - Fonctionnalités de radiomics issues de l'imagerie médicale.
pyefd - Descripteur de caractéristique elliptique, approximant un contour avec une série de Fourier.

Parlez
Série d'articles de blog - 1, 2, 3, 4
Tutoriels - 1, 2
sklearn - Sélection des fonctionnalités.
eli5 - Sélection de caractéristiques utilisant l'importance de la permutation.
scikit-feature - Algorithmes de sélection de fonctionnalités.
stabilité-sélection - Sélection de stabilité.
scikit-rebate - Algorithmes de sélection de caractéristiques basés sur le relief.
scikit-genetic - Sélection de caractéristiques génétiques.
boruta_py - Sélection de fonctionnalités, explication, exemple.
linselect - Package de sélection de fonctionnalités.
mlxtend - Sélection de fonctionnalités exhaustive.
BoostARoota - Algorithme de sélection de fonctionnalités Xgboost.
INVASE - Sélection de variables par instance à l'aide de réseaux de neurones.

Consultez également la section Clustering pour des idées !
Revoir

APC - lien
Encodeur automatique - lien
Isomaps - lien
LLE - lien
Dessin de graphique dirigé par la force - lien
MDS - lien
Cartes de diffusion - lien
t-SNE - lien
NeRV - lien, papier
MDR - lien
UMAP - lien
Ivis - lien

Parlez, tsne intro. sklearn.manifold et sklearn.decomposition - PCA, t-SNE, MDS, Isomaps et autres.
prince - Réduction de dimensionnalité, analyse factorielle (PCA, MCA, CA, FAMD).
Implémentations t-SNE plus rapides : lvdmaaten, MulticoreTSNE, FIt-SNE umap - Approximation et projection uniformes de collecteurs, discussion, explorateur, explication, version parallèle.
somnambulisme - Explorez les encastrements, la visualisation interactive (package R).
somoclu - Carte auto-organisatrice.
scikit-tda - Analyse de données topologiques, papier, conversation, conversation, papier.
giotto-tda - Analyse de données topologiques.
ivis - Réduction de la dimensionnalité à l'aide des réseaux siamois.
trimap - Réduction de la dimensionnalité à l'aide de triplets.
scanpy - Dessin graphique dirigé par la force, Cartes de diffusion.
direpack - Poursuite de la projection, Réduction de dimension suffisante, M-estimateurs robustes.
DBS - DatabionicSwarm (package R).

iterative-stratification - Validateurs croisés avec stratification pour les données multilabels.
livelossplot - Graphique de perte d'entraînement en direct dans Jupyter Notebook.

Toutes les cartes, monuments autrichiens.
boutons de manchette - Bibliothèque de visualisation dynamique, wrapper pour plotly, medium, example.
physt - De meilleurs histogrammes, conversation, cahier.
fast-histogram - Histogrammes rapides.
matplotlib_venn - Diagrammes de Venn, alternative.
joypy - Dessinez des parcelles de densité empilées (= parcelles de crête), des parcelles de crête en mer.
tracés en mosaïque - Visualisation des variables catégorielles, exemple.
scikit-plot - Courbes ROC et autres visualisations pour les modèles ML.
yellowbrick - Visualisations pour les modèles ML (similaires à scikit-plot).
bokeh - Bibliothèque de visualisation interactive, exemples, exemples.
Lets-plot - Bibliothèque de traçage.
animatplot - Les tracés animés sont construits sur matplotlib.
plotnine - ggplot pour Python.
altair - Bibliothèque de visualisation statistique déclarative.
bqplot - Bibliothèque de traçage pour les notebooks IPython/Jupyter.
hvplot - Bibliothèque de traçage de haut niveau construite sur des holoviews.
dtreeviz - Visualisation de l'arbre de décision et interprétation du modèle.
chartify - Générer des graphiques.
VivaGraphJS - Visualisation de graphes (package JS).
pm - Visualisation graphique 3D navigable (package JS), exemple.
python-ternaire - Tracés triangulaires.
falcon - Visualisations interactives pour le Big Data.
hiplot - Traçage interactif en haute dimension.
visdom - Visualisations en direct.
mpl-scatter-density - Graphiques de densité de dispersion. Alternative aux histogrammes 2D.

palettable - Palettes de couleurs de colorbrewer2.
colorcet - Collection de palettes de couleurs perceptuellement uniformes.

superset - Solution de tableau de bord par Apache.
streamlit - Solution de tableau de bord. Ressources, composants de la galerie, événements bokeh.
dash - Solution de tableau de bord par plot.ly. Ressources.
visdom - Bibliothèque de tableaux de bord par facebook.
panneau - Solution de tableau de bord.
exemple altair - Vidéo.
le tour est joué - Transformez les notebooks Jupyter en applications Web autonomes.

sampics - Techniques d'échantillonnage pour les plans d'enquête complexes.

folium - Tracez des cartes géographiques à l'aide de la bibliothèque Leaflet.js, plugin jupyter.
gmaps - Google Maps pour les blocs-notes Jupyter.
stadiamaps - Tracez des cartes géographiques.
datashader - Dessinez des millions de points sur une carte.
sklearn - BallTree, exemple.
pynndescent - Descente du voisin le plus proche pour les voisins les plus proches approximatifs.
géocodeur - Géocodage des adresses, adresses IP.
Conversion de différents formats géographiques : talk, repo
geopandas - Outils pour les données géographiques
Outils géospatiaux de bas niveau (GEOS, GDAL/OGR, PROJ.4)
Données vectorielles (Shapely, Fiona, Pyproj)
Données raster (Rasterio)
Tracé (Descartes, Catropie)
Prédisez les indicateurs économiques d'Open Street Map ipynb.
PySal - Bibliothèque d'analyse spatiale Python.
géographie - Extrayez les pays, les régions et les villes d'une URL ou d'un texte.
cartogram - Cartes déformées basées sur la population.

Exemples : 1, 2, 2-ipynb, 3.
surprise - Recommender, talk.
turicreate - Recommender.
implicit - Fast Collaborative Filtering for Implicit Feedback Datasets.
spotlight - Deep recommender models using PyTorch.
lightfm - Recommendation algorithms for both implicit and explicit feedback.
funk-svd - Fast SVD.
pywFM - Factorization.

Intro to Decision Trees and Random Forests, Intro to Gradient Boosting
lightgbm - Gradient boosting (GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, doc.
xgboost - Gradient boosting (GBDT, GBRT or GBM) library, doc, Methods for CIs: link1, link2.
catboost - Gradient boosting.
h2o - Gradient boosting and general machine learning framework.
snapml - Gradient boosting and general machine learning framework by IBM, for CPU and GPU. PyPI
pycaret - Wrapper for xgboost, lightgbm, catboost etc.
thundergbm - GBDTs and Random Forest.
h2o - Gradient boosting.
forestci - Confidence intervals for random forests.
scikit-garden - Quantile Regression.
grf - Generalized random forest.
dtreeviz - Decision tree visualization and model interpretation.
Nuance - Decision tree visualization.
rfpimp - Feature Importance for RandomForests using Permuation Importance.
Why the default feature importance for random forests is wrong: link
treeinterpreter - Interpreting scikit-learn's decision tree and random forest predictions.
bartpy - Bayesian Additive Regression Trees.
infiniteboost - Combination of RFs and GBDTs.
merf - Mixed Effects Random Forest for Clustering, video
rrcf - Robust Random Cut Forest algorithm for anomaly detection on streams.

Natural Language Processing (NLP) / Text Processing

talk-nb, nb2, talk.
Text classification Intro, Preprocessing blog post.
gensim - NLP, doc2vec, word2vec, text processing, topic modelling (LSA, LDA), Example, Coherence Model for evaluation.
Embeddings - GloVe ([1], [2]), StarSpace, wikipedia2vec, visualization.
magnitude - Vector embedding utility package.
pyldavis - Visualization for topic modelling.
spaCy - NLP.
NTLK - NLP, helpful KMeansClusterer with cosine_distance .
pytext - NLP from Facebook.
fastText - Efficient text classification and representation learning.
annoy - Approximate nearest neighbor search.
faiss - Approximate nearest neighbor search.
pysparnn - Approximate nearest neighbor search.
infomap - Cluster (word-)vectors to find topics, example.
datasketch - Probabilistic data structures for large data (MinHash, HyperLogLog).
flair - NLP Framework by Zalando.
stanfordnlp - NLP Library.
Chatistics - Turn Messenger, Hangouts, WhatsApp and Telegram chat logs into DataFrames.
textvec - Supervised text vectorization tool.

scanpy - Analyze single-cell gene expression data, tutorial.

mahotas - Image processing (Bioinformatics), example.
imagepy - Software package for bioimage analysis.
CellProfiler - Biological image analysis.
imglyb - Viewer for large images, talk, slides.
microscopium - Unsupervised clustering of images + viewer, talk.
cytokit - Analyzing properties of cells in fluorescent microscopy datasets.

imgaug - More sophisticated image preprocessing.
Augmentor - Image augmentation library.
keras preprocessing - Preprocess images.
albumentations - Wrapper around imgaug and other libraries.
augmix - Image augmentation from Google.
kornia - Image augmentation, feature extraction and loss functions.
augly - Image, audio, text, video augmentation from Facebook.

SegLoss - List of loss functions for medical image segmentation.

ktext - Utilities for pre-processing text for deep learning in Keras.
textgenrnn - Ready-to-use LSTM for text generation.
ctrl - Text generation.

keras - Neural Networks on top of tensorflow, examples.
keras-contrib - Keras community contributions.
keras-tuner - Hyperparameter tuning for Keras.
hyperas - Keras + Hyperopt: Convenient hyperparameter optimization wrapper.
elephas - Distributed Deep learning with Keras & Spark.
tflearn - Neural Networks on top of tensorflow.
tensorlayer - Neural Networks on top of tensorflow, tricks.
tensorforce - Tensorflow for applied reinforcement learning.
fastai - Neural Networks in pytorch.
pytorch-optimizer - Collection of optimizers for pytorch.
ignite - Highlevel library for pytorch.
skorch - Scikit-learn compatible neural network library that wraps pytorch, talk, slides.
autokeras - AutoML for deep learning.
PlotNeuralNet - Plot neural networks.
lucid - Neural network interpretability, Activation Maps.
tcav - Interpretability method.
AdaBound - Optimizer that trains as fast as Adam and as good as SGD, alt.
foolbox - Adversarial examples that fool neural networks.
hiddenlayer - Training metrics.
imgclsmob - Pretrained models.
netron - Visualizer for deep learning and machine learning models.
torchcv - Deep Learning in Computer Vision.
pytorch-lightning - Wrapper around PyTorch.

flexflow - Distributed TensorFlow Keras and PyTorch.

netron - Viewer for neural networks.

Object detection / Instance Segmentation

segmentation_models - Segmentation models with pretrained backbones: Unet, FPN, Linknet, PSPNet.
yolact - Fully convolutional model for real-time instance segmentation.
EfficientDet Pytorch, EfficientDet Keras - Scalable and Efficient Object Detection.
detectron2 - Object Detection (Mask R-CNN) by Facebook.
simpledet - Object Detection and Instance Recognition.
CenterNet - Object detection.
FCOS - Fully Convolutional One-Stage Object Detection.
norfair - Real-time 2D object tracking.

cvat - Image annotation tool.
pigeon - Create annotations from within a Jupyter notebook.

nfnets - Neural network.
efficientnet - Neural network.

Applications and Snippets

CycleGAN and Pix2pix - Various image-to-image tasks.
SPADE - Semantic Image Synthesis.
Entity Embeddings of Categorical Variables, code, kaggle
Image Super-Resolution - Super-scaling using a Residual Dense Network.
Cell Segmentation - Talk, Blog Posts: 1, 2
deeplearning-models - Deep learning models.

Variational Autoencoders (VAE)

disentanglement_lib - BetaVAE, FactorVAE, BetaTCVAE, DIP-VAE.

Graph-Based Neural Networks

How to do Deep Learning on Graphs with Graph Convolutional Networks
Introduction To Graph Convolutional Networks
ogb - Open Graph Benchmark, Benchmark datasets.
networkx - Graph library.
cugraph - RAPIDS, Graph library on the GPU.
pytorch-geometric - Various methods for deep learning on graphs.
dgl - Deep Graph Library.
graph_nets - Build graph networks in Tensorflow, by deepmind.

Other neural network and deep learning frameworks

caffe - Deep learning framework, pretrained models.
mxnet - Deep learning framework, book.

hummingbird - Compile trained ML models into tensor computations (by Microsoft).

cuML - RAPIDS, Run traditional tabular ML tasks on GPUs, Intro.
thundergbm - GBDTs and Random Forest.
thundersvm - Support Vector Machines.
Legate Numpy - Distributed Numpy array multiple using GPUs by Nvidia (not released yet) video.

Understanding SVM Regression: slides, forum, paper

pyearth - Multivariate Adaptive Regression Splines (MARS), tutorial.
pygam - Generalized Additive Models (GAMs), Explanation.
GLRM - Generalized Low Rank Models.
tweedie - Specialized distribution for zero inflated targets, Talk.

metric-learn - Supervised and weakly-supervised metric learning algorithms.
pytorch-metric-learning - Pytorch metric learning.
deep_metric_learning - Methods for deep metric learning.
ivis - Metric learning using siamese neural networks.

Overview of clustering algorithms applied image data (= Deep Clustering).
Clustering with Deep Learning: Taxonomy and New Methods.
hdbscan - Clustering algorithm, talk, blog.
pyclustering - All sorts of clustering algorithms.
FCPS - Fundamental Clustering Problems Suite (R package).
GaussianMixture - Generalized k-means clustering using a mixture of Gaussian distributions, video.
nmslib - Similarity search library and toolkit for evaluation of k-NN methods.
buckshotpp - Outlier-resistant and scalable clustering algorithm.
merf - Mixed Effects Random Forest for Clustering, video
tree-SNE - Hierarchical clustering algorithm based on t-SNE.
MiniSom - Pure Python implementation of the Self Organizing Maps.
distribution_clustering, paper, related paper, alt.
phenograph - Clustering by community detection.

Assessing the quality of a clustering (video)
fpc - Various methods for clustering and cluster validation (R package).

  • Minimum distance between any two clusters
  • Distance between centroids
  • p-separation index: Like minimum distance. Look at the average distance to nearest point in different cluster for p=10% "border" points in any cluster. Measuring density, measuring mountains vs valleys
  • Estimate density by weighted count of close points Other measures
  • Within-cluster average distance
  • Mean of within-cluster average distance over nearest-cluster average distance (silhouette score)
  • Within-cluster similarity measure to normal/uniform
  • Within-cluster (squared) distance to centroid (this is the k-Means loss function)
  • Correlation coefficient between distance we originally had to the distance the are induced by the clustering (Huberts Gamma)
  • Entropy of cluster sizes
  • Average largest within-cluster gap
  • Variation of clusterings on bootstrapped data

Interpretable Classifiers and Regressors

skope-rules - Interpretable classifier, IF-THEN rules.
sklearn-expertsys - Interpretable classifiers, Bayesian Rule List classifier.

Signal Processing and Filtering

statsmodels - Time series analysis, seasonal decompose example, SARIMA, granger causality.
kats - Time series prediction library by Facebook.
prophet - Time series prediction library by Facebook.
pyramid, pmdarima - Wrapper for (Auto-) ARIMA.
pyflux - Time series prediction algorithms (ARIMA, GARCH, GAS, Bayesian).
atspy - Automated Time Series Models.
pm-prophet - Time series prediction and decomposition library.
htsprophet - Hierarchical Time Series Forecasting using Prophet.
nupic - Hierarchical Temporal Memory (HTM) for Time Series Prediction and Anomaly Detection.
tensorflow - LSTM and others, examples: link, link, link, Explain LSTM, seq2seq: 1, 2, 3, 4
tspreprocess - Preprocessing: Denoising, Compression, Resampling.
tsfresh - Time series feature engineering.
thunder - Data structures and algorithms for loading, processing, and analyzing time series data.
gatspy - General tools for Astronomical Time Series, talk.
gendis - shapelets, example.
tslearn - Time series clustering and classification, TimeSeriesKMeans , TimeSeriesKMeans .
pastas - Simulation of time series.
fastdtw - Dynamic Time Warp Distance.
fable - Time Series Forecasting (R package).
CausalImpact - Causal Impact Analysis (R package).
pydlm - Bayesian time series modeling (R package, Blog post)
PyAF - Automatic Time Series Forecasting.
luminol - Anomaly Detection and Correlation library from Linkedin.
matrixprofile-ts - Detecting patterns and anomalies, website, ppt, alternative.
stumpy - Another matrix profile library.
obspy - Seismology package. Useful classic_sta_lta function.
RobustSTL - Robust Seasonal-Trend Decomposition.
seglearn - Time Series library.
pyts - Time series transformation and classification, Imaging time series.
Turn time series into images and use Neural Nets: example, example.
sktime, sktime-dl - Toolbox for (deep) learning with time series.
adtk - Time Series Anomaly Detection.
rocket - Time Series classification using random convolutional kernels.
luminaire - Anomaly Detection for time series.

TimeSeriesSplit - Sklearn time series split.
tscv - Evaluation with gap.

Tutorial on using cvxpy: 1, 2
pandas-datareader - Read stock data.
yfinance - Read stock data from Yahoo Finance.
findatapy - Read stock data from various sources.
ta - Technical analysis library.
backtrader - Backtesting for trading strategies.
surpriver - Find high moving stocks before they move using anomaly detection and machine learning.
ffn - Financial functions.
bt - Backtesting algorithms.
alpaca-trade-api-python - Commission-free trading through API.
eiten - Eigen portfolios, minimum variance portfolios and other algorithmic investing strategies.
tf-quant-finance - Quantitative finance tools in tensorflow, by Google.
quantstats - Portfolio management.

pyfolio - Portfolio and risk analytics.
zipline - Algorithmic trading.
alphalens - Performance analysis of predictive stock factors.
empyrical - Financial risk metrics.
trading_calendars - Calendars for various securities exchanges.

Time-dependent Cox Model in R.
lifelines - Survival analysis, Cox PH Regression, talk, talk2.
scikit-survival - Survival analysis.
xgboost - "objective": "survival:cox" NHANES example
survivalstan - Survival analysis, intro.
convoys - Analyze time lagged conversions.
RandomSurvivalForests (R packages: randomForestSRC, ggRandomForests).
pysurvival - Survival analysis .

Outlier Detection & Anomaly Detection

sklearn - Isolation Forest and others.
pyod - Outlier Detection / Anomaly Detection.
eif - Extended Isolation Forest.
AnomalyDetection - Anomaly detection (R package).
luminol - Anomaly Detection and Correlation library from Linkedin.
Distances for comparing histograms and detecting outliers - Talk: Kolmogorov-Smirnov, Wasserstein, Energy Distance (Cramer), Kullback-Leibler divergence.
banpei - Anomaly detection library based on singular spectrum transformation.
telemanom - Detect anomalies in multivariate time series data using LSTMs.
luminaire - Anomaly Detection for time series.

lightning - Large-scale linear classification, regression and ranking.

SLIM - Scoring systems for classification, Supersparse linear integer models.

Probabilistic Modeling and Bayes

Intro, Guide
PyMC3 - Baysian modelling, intro
pomegranate - Probabilistic modelling, talk.
pmlearn - Probabilistic machine learning.
arviz - Exploratory analysis of Bayesian models.
zhusuan - Bayesian deep learning, generative models.
dowhy - Estimate causal effects.
edward - Probabilistic modeling, inference, and criticism, Mixture Density Networks (MNDs), MDN Explanation.
Pyro - Deep Universal Probabilistic Programming.
tensorflow probability - Deep learning and probabilistic modelling, talk, example.
bambi - High-level Bayesian model-building interface on top of PyMC3.
neural-tangents - Infinite Neural Networks.

Visualization, Article
GPyOpt - Gaussian process optimization.
GPflow - Gaussian processes (Tensorflow).
gpytorch - Gaussian processes (Pytorch).

Stacking Models and Ensembles

Model Stacking Blog Post
mlxtend - EnsembleVoteClassifier , StackingRegressor , StackingCVRegressor for model stacking.
vecstack - Stacking ML models.
StackNet - Stacking ML models.
mlens - Ensemble learning.
combo - Combining ML models (stacking, ensembling).

pycm - Multi-class confusion matrix.
pandas_ml - Confusion matrix.
Plotting learning curve: link.
yellowbrick - Learning curve.

uncertainty-toolbox - Predictive uncertainty quantification, calibration, metrics, and visualization.

Model Explanation, Interpretability, Feature Importance

Book, Examples
shap - Explain predictions of machine learning models, talk.
treeinterpreter - Interpreting scikit-learn's decision tree and random forest predictions.
lime - Explaining the predictions of any machine learning classifier, talk, Warning (Myth 7).
lime_xgboost - Create LIMEs for XGBoost.
eli5 - Inspecting machine learning classifiers and explaining their predictions.
lofo-importance - Leave One Feature Out Importance, talk, examples: 1, 2, 3.
pybreakdown - Generate feature contribution plots.
FairML - Model explanation, feature importance.
pycebox - Individual Conditional Expectation Plot Toolbox.
pdpbox - Partial dependence plot toolbox, example.
partial_dependence - Visualize and cluster partial dependence.
skater - Unified framework to enable model interpretation.
anchor - High-Precision Model-Agnostic Explanations for classifiers.
l2x - Instancewise feature selection as methodology for model interpretation.
contrastive_explanation - Contrastive explanations.
DrWhy - Collection of tools for explainable AI.
lucid - Neural network interpretability.
xai - An eXplainability toolbox for machine learning.
innvestigate - A toolbox to investigate neural network predictions.
dalex - Explanations for ML models (R package).
interpret - Fit interpretable models, explain models (Microsoft).
causalml - Causal inference by Uber.

Automated Machine Learning

AdaNet - Automated machine learning based on tensorflow.
tpot - Automated machine learning tool, optimizes machine learning pipelines.
auto_ml - Automated machine learning for analytics & production.
autokeras - AutoML for deep learning.
nni - Toolkit for neural architecture search and hyper-parameter tuning by Microsoft.
automl-gs - Automated machine learning.
mljar - Automated machine learning.
automl_zero - Automatically discover computer programs that can solve machine learning tasks from Google.

Graph Representation Learning

Karate Club - Unsupervised learning on graphs.
Pytorch Geometric - Graph representation learning with PyTorch.
DLG - Graph representation learning with TensorFlow.

cvxpy - Modeling language for convex optimization problems. Tutorial: 1, 2

Evolutionary Algorithms & Optimization

deap - Evolutionary computation framework (Genetic Algorithm, Evolution strategies).
evol - DSL for composable evolutionary algorithms, talk.
platypus - Multiobjective optimization.
autograd - Efficiently computes derivatives of numpy code.
nevergrad - Derivation-free optimization.
gplearn - Sklearn-like interface for genetic programming.
blackbox - Optimization of expensive black-box functions.
Optometrist algorithm - paper.
DeepSwarm - Neural architecture search.

sklearn - GridSearchCV, RandomizedSearchCV.
sklearn-deap - Hyperparameter search using genetic algorithms.
hyperopt - Hyperparameter optimization.
hyperopt-sklearn - Hyperopt + sklearn.
optuna - Hyperparamter optimization, Talk.
skopt - BayesSearchCV for Hyperparameter search.
tune - Hyperparameter search with a focus on deep learning and deep reinforcement learning.
hypergraph - Global optimization methods and hyperparameter optimization.
bbopt - Black box hyperparameter optimization.
dragonfly - Scalable Bayesian optimisation.

Incremental Learning, Online Learning

sklearn - PassiveAggressiveClassifier, PassiveAggressiveRegressor.
creme-ml - Incremental learning framework, talk.
Kaggler - Online Learning algorithms.
onelearn - Online Random Forests.

Talk
modAL - Active learning framework.

YouTube, YouTube
Intro to Monte Carlo Tree Search (MCTS) - 1, 2, 3
AlphaZero methodology - 1, 2, 3, Cheat Sheet
RLLib - Library for reinforcement learning.
Horizon - Facebook RL framework.

Deployment and Lifecycle Management

dephell - Dependency management.
poetry - Dependency management.
pyup - Dependency management.
pypi-timemachine - Install packages with pip as if you were in the past.

Data Versioning and Pipelines

dvc - Version control for large files.
hangar - Version control for tensor data.
kedro - Build data pipelines.

m2cgen - Transpile trained ML models into other languages.
sklearn-porter - Transpile trained scikit-learn estimators to C, Java, JavaScript and others.
mlflow - Manage the machine learning lifecycle, including experimentation, reproducibility and deployment.
modelchimp - Experiment Tracking.
skll - Command-line utilities to make it easier to run machine learning experiments.
BentoML - Package and deploy machine learning models for serving in production.
dagster - Tool with focus on dependency graphs.
knockknock - Be notified when your training ends.
metaflow - Lifecycle Management Tool by Netflix.
cortex - Deploy machine learning models.

daft - Render probabilistic graphical models using matplotlib.
unyt - Working with units.
scrapy - Web scraping library.
VowpalWabbit - ML Toolkit from Microsoft.

General Python Programming

more_itertools - Extension of itertools.
funcy - Fancy and practical functional tools.
dateparser - A better date parser.
jellyfish - Approximate string matching.
coloredlogs - Colored logging output.


Hough_line_peaks¶

Return peaks in a straight line Hough transform.

Identifies most prominent lines separated by a certain angle and distance in a Hough transform. Non-maximum suppression with different sizes is applied separately in the first (distances) and second (angles) dimension of the Hough space to identify peaks.

Paramètres hspace (N, M) array

Hough space returned by the hough_line function.

angles (M,) array

Angles returned by the hough_line function. Assumed to be continuous. (angles[-1] - angles[0] == PI).

dists (N, ) array

Distances returned by the hough_line function.

min_distance int, optional

Minimum distance separating lines (maximum filter size for first dimension of hough space).

min_angle int, optional

Minimum angle separating lines (maximum filter size for second dimension of hough space).

au seuil float, optional

Minimum intensity of peaks. Default is 0.5 * max(hspace).

num_peaks int, optional

Maximum number of peaks. When the number of peaks exceeds num_peaks, return num_peaks coordinates based on peak intensity.

Retour accum, angles, dists tuple of array

Peak values in Hough space, angles and distances.

Examples using skimage.transform.hough_line_peaks ¶


Conclusion:

Congratulation! You have just learned a convex hull, an extra tool to work with your data. Data science is not always a linear regression line. Most of the time, you will work with messy data. Thus, knowing what tools are out there will give you the flexibility and power over your data.

If you are curious about how to code this algorithm with Python, you can find and fork the source code in my Github repository. In my notebook, I explain in detail each piece of code as well as provide the functions you need for the algorithm (counter-clockwise, point class, from points to vector, cross product, etc). Maybe gaining the understanding of this code will give you the confidence to try out with other computation geometry algorithms and create your own module in Python?

I like to write about basic data science concepts and play with different algorithms and data science tools. You could connect with me on LinkedIn and Twitter.

Star this repo if you want to check out the codes for all of the articles I have written. Follow me on Medium to stay informed with my latest data science articles like these:


Voir la vidéo: 20 - Introduction to image processing using scikit-image in Python