Projets de science des données open source à contribuer


15

La contribution à des projets open source est généralement un bon moyen de s'entraîner pour les débutants et d'essayer un nouveau domaine pour les scientifiques et analystes de données expérimentés.

Quels projets contribuez-vous? Veuillez fournir une intro + un lien sur Github.


2
Découvrez ELKI (sur github, Java; voir aussi Wikipedia). Je l'utilise beaucoup car c'est le projet le plus complet pour le clustering et la détection d'anomalies; et généralement beaucoup plus rapide que R, aussi.
A QUIT - Anony-Mousse

Réponses:


15

Le projet Julia est un projet auquel je contribue activement, y compris l'informatique avancée et les bibliothèques XGBoost. Donc, je peux certainement garantir sa maintenance et la qualité de la communauté.

Voici de très bons projets de science des données open source auxquels même les débutants peuvent contribuer:

  • Sklearn : Toujours en développement à un rythme rapide, la communauté sklearn est toujours ouverte aux nouveaux développeurs et contributeurs.
  • H2O : H2O est un autre projet de science des données à croissance rapide, travaillant sur des solutions évolutives d'apprentissage automatique et d'apprentissage en profondeur.
  • Go : feuille de route et ressources de la science des données open source. Ce n'est pas vraiment un projet technique, mais il est très utile pour les débutants absolus et les analystes en herbe.
  • Pylearn2 : Un autre projet de Machine Learning et Deep Learning en pleine croissance.
  • Vowpal Wabbit : Le projet Vowpal Wabbit (VW) est un système d'apprentissage rapide hors du noyau parrainé par Microsoft Research et (auparavant) Yahoo! Recherche.

Voici une discussion Quora sur de tels projets et quelques autres qui ne sont pas mentionnés dans cette réponse.

Voici une autre belle discussion sur les projets open source Data Science et ML en Python.


2
Je confirme - il est très facile de s'engager à sklearn, ouvrez simplement une demande de tirage et c'est tout.
Alexey Grigorev

Pylearn2 n'est plus actif. Keras, lasagnes et blocs sont une meilleure option pour la contribution.
SHASHANK GUPTA

6

Il y en a beaucoup disponibles. Je ne sais pas si je suis autorisé à le faire (veuillez me le faire savoir si c'est faux), mais j'en développe un et il a déjà plus de 2 ans sur git hub (il a en fait commencé un an avant github). Le projet s'appelle rapaio, est sur git hub ici et récemment j'ai commencé à écrire un manuel pour cela (certains de mes amis m'ont demandé à ce sujet). Le manuel peut être trouvé ici .

Il s'adapte à vos besoins si vous êtes prêt à développer en Java 8, si vous aimez faire vous-même n'importe quel outil et si vous aimez expérimenter. Il n'y a que deux principes que j'applique. La première consiste à écrire quelque chose uniquement lorsque vous en avez besoin . C'est parce que je crois fermement que ce n'est que lorsque vous avez besoin d'un outil que vous savez également ce que vous en attendez vraiment en termes de sortie, de performances, d'informations. Le deuxième principe est que vous ne dépendez que de jdk, si vous avez besoin de quelque chose, vous l'écrirez . Je peux convenir que je suis démodé, mais vous pouvez adapter n'importe quelle fonction à votre objectif de cette manière.

Si je ne suis pas autorisé à le faire comme une réponse, encore une fois, faites-le moi savoir. Bien que, comme il s'agit d'une initiative open source, je redonne quelque chose aux personnes sans but lucratif , je ne vois pas pourquoi je ne pouvais pas le faire.


2
+1 Je pense que c'est un excellent projet pour quelqu'un de contribuer. Merci pour le partage. Au moins, je ne pense pas que ce soit hors de propos :)
Dawny33

1
Avez-vous envisagé de joindre vos efforts à l'un des nombreux autres projets similaires? Disons, ELKI, Weka, JSAT, Smile, Hubminer, ... avez-vous une référence? D'un coup d'œil, j'ai vu quelques constructions qui me semblent très chères (mais probablement pas aussi mauvaises que R).
A QUIT - Anony-Mousse

Mon objectif était d'avoir un bel ensemble d'outils conviviaux pour les programmeurs, la performance n'était pas un objectif. Mais j'ai commencé à réévaluer cela. En ce qui concerne les autres projets: pour des raisons juridiques, je ne peux pas m'engager à distribuer des trucs et je ne peux contribuer qu'à des projets avec un certain type de licences open source. Quoi qu'il en soit, merci d'avoir jeté un coup d'œil, je serais très heureux si vous pouviez me donner plus de détails concernant les constructions que vous avez mentionnées. Je m'attends à ce que votre temps soit limité, et je n'ose pas avoir une discussion complète
rapaio

1
ELKI est AGPL-3. Il n'est pas distribué, mais possède quelques optimisations de bas niveau pour des performances "locales" élevées (pas encore Java 8). JSAT, Smile, Hubminer - tous sont open-source, probablement principalement apache, non distribués et pas aussi optimisés si je ne me trompe pas (j'utilise principalement ELKI).
A QUIT - Anony-Mousse


4

ELKI (également sur GitHub ) est un projet open source d'exploration de données et de science des données. Il est unique par son architecture modulaire: vous pouvez combiner des algorithmes, des fonctions de distance et des index d'accélération avec très peu de limitations (bien sûr, les algorithmes qui n'utilisent pas de distances ne peuvent pas être combinés avec des distances). Ce n'est pas le code le plus simple en raison de son efficacité. Pour l'exploration de données, vous devez faire attention à la mémoire - l'utilisation ArrayList<Integer>est un pas si vous voulez une évolutivité.

En raison de l'architecture modulaire, il est facile de contribuer uniquement à de petits modules, comme une fonction ou un algorithme à distance unique.

Nous gardons une liste de idées de projets d'exploration données , grossièrement regroupées par difficulté. La plupart des projets consistent à implémenter une variante d'un algorithme. ELKI vise à permettre des études comparatives d'algorithmes, nous essayons donc de permettre toute combinaison, et couvrons également des variantes d'algorithmes. Par exemple, avec k-means, nous avons non seulement l'algorithme de Lloyds, mais 10 variantes du thème général de k-means. Plus de 220 articles ont été (au moins partiellement) réimplémentés dans ELKI.

En mettant tout en œuvre dans le même outil, nous obtenons des résultats beaucoup plus comparables. Si vous utilisez R pour l'analyse comparative, vous comparez généralement des pommes et des oranges. k-means dans R lui-même est en fait un ancien programme Fortran, et très rapide. k-means dans R mais dans le package "flexclust" est 100x plus lent, car il est écrit en vrai code R. Alors ne faites pas confiance à un benchmark dans R ... aussi, les modules R ont tendance à être incompatibles, donc vous ne pouvez souvent pas utiliser la distance A des modules A avec l'algorithme B du module B. dans ELKI, nous essayons de partager autant de code que dans toutes les implémentations pour réduire ces artefacts (il ne sera bien sûr jamais possible d'avoir un benchmark 100% juste - il y a toujours de la place pour l'optimisation), mais aussi pour permettre de combiner facilement des modules.

Vous pouvez commencer par quelque chose de petit, comme la variante Hartigan & Wong k-means, puis continuer dans les k-means sphériques (qui sont destinés aux données rares, où différentes optimisations de performances peuvent devenir nécessaires) et continuer à ajouter un meilleur support pour les données catégorielles; ou en ajoutant une fonctionnalité d'indexation.

J'aimerais aussi voir une meilleure interface utilisateur pour ELKI , mais c'est un effort majeur.


4

Si l'on aime les outils de programmation visuelle multiplateforme, Orange est une option. Ayant récemment migré vers Python 3, ils n'ont pas encore porté tous les widgets. Il apporte la pile PyData (NumPy, SciPy, SciKit Learn, ...) à Python 3, PyQt, PyQtGraph, et c'est GPL sur GitHub .

Écran de veille orange

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.