Existe-t-il une bonne bibliothèque de mathématiques / statistiques pour Scala? [fermé]


87

Je recherche une bonne bibliothèque open source pour scala pour les mathématiques et les statistiques. Espérons quelque chose comme Apache Math ou Colt, mais implémenté dans Scala.

Est-ce que quelqu'un peut-il me montrer la bonne direction?


4
Cela peut aider à expliquer pourquoi vous recherchez une bibliothèque implémentée dans Scala, plutôt qu'une bibliothèque simplement utilisable depuis Scala.
retronym

En fait, j'ai commencé à utiliser commons.apache.org/proper/commons-math et il est facile à utiliser et fonctionne très bien dans Scala.
tom10271

Réponses:


145

Oui, il y en a:

Scalalab

Le projet ScalaLab vise à fournir un environnement de programmation scientifique efficace pour la machine virtuelle Java. Le langage de script est basé sur le langage de programmation Scala amélioré avec des opérateurs scientifiques de haut niveau et avec un environnement intégré qui fournit un style de travail de type Matlab.

Le code de script est extrêmement rapide, proche de Java (parfois plus lent, parfois plus rapide), et généralement plus rapide à partir de scripts Matlab .m équivalents!

Scalala est maintenant remplacé par Breeze

Une bibliothèque d'algèbre linéaire numérique haute performance pour Scala, avec des opérateurs riches de type Matlab sur les vecteurs et les matrices; une bibliothèque de routines numériques; support pour le traçage.

Factorie

FACTORIE est une boîte à outils pour la modélisation probabiliste déployable, implémentée sous forme de bibliothèque logicielle dans Scala. Il fournit à ses utilisateurs un langage succinct pour créer des graphiques de facteurs relationnels , estimer des paramètres et effectuer des inférences.

Cassovary

par Twitter pour le traitement des graphiques:

Cassovary est conçu de A à Z pour gérer efficacement les graphiques avec des milliards d'arêtes. Il est livré avec des structures de données de nœuds et de graphiques et des algorithmes de traversée communs. Une utilisation typique consiste à effectuer une extraction et une analyse de graphes à grande échelle.

Sur Twitter, Cassovary forme la couche inférieure d'une pile que nous utilisons pour alimenter bon nombre de nos fonctionnalités basées sur des graphiques, notamment "Qui suivre" et "Similaire à". Nous l'utilisons également pour la pertinence dans la recherche Twitter et les algorithmes qui déterminent les produits promus que les utilisateurs verront. Au fil du temps, nous espérons intégrer plus de logique non propriétaire à partir de certaines de ces fonctionnalités du produit dans Cassovary.

Algebird

Bibliothèque d'algèbre abstraite de Twitter:

Le code est destiné à la construction de systèmes d'agrégation (via Scalding ou Storm). Il a été développé à l'origine dans le cadre de l'API Matrix de Scalding, où les matrices avaient des valeurs qui sont des éléments de Monoids, Groups ou Rings. Par la suite, il était clair que le code avait une application plus large dans Scalding et sur d'autres projets au sein de Twitter.

scala_prob

! a un statut expérimental!

sb_probdsl offre un support de programmation probabiliste discret simple en utilisant le nouveau support de continuations délimitées de scala.

Malakov

Une bibliothèque de chaînes de Markov pour Scala

Les chaînes de Markov représentent des processus stochastiques où la distribution de probabilité de l'étape suivante dépend de manière non triviale de l'étape actuelle, mais ne dépend pas des étapes précédentes. Donnez à cette bibliothèque des données d'entraînement et elle générera de nouvelles données aléatoires qui lui ressemblent statistiquement.

collecte de signal

Signal / Collect est un modèle et un cadre de programmation pour le traitement de graphes à grande échelle. Le modèle est suffisamment expressif pour formuler de manière concise de nombreux algorithmes itérés et de flux de données sur des graphiques, tout en permettant au cadre de paralléliser le traitement de manière transparente.

Grizzled.math

Comprend des packages statistiques et utilitaires. Contient des éléments très basiques et bien connus, tels que signifie std ...

Monade de probabilité:

Bien que ce ne soit pas une bibliothèque, cela pourrait vous aider beaucoup à traiter les probabilités.


4
Vous pouvez consulter les comparaisons de performances de Scalala et Scalalab vs Python ici
om-nom-nom

13
Il existe également Saddle : Saddle est une bibliothèque de manipulation de données pour Scala qui fournit des structures de données basées sur des tableaux, indexées, unidimensionnelles et bidimensionnelles qui sont judicieusement spécialisées sur les primitives JVM pour éviter la surcharge de boxing et de déballage.
om-nom-nom

3
om-nom-nom, vous devriez élever Saddle pour obtenir une réponse. +1
metasim

1
@SimeonFitch J'attends un peu de temps libre, pour regarder de plus près la selle et peut-être écrire quelque chose de plus que l'extrait ci-dessus.
om-nom-nom

1
@ om-nom-nom: Votre lien ne fonctionne plus.
Pravesh Jain

9

Figaro est une bibliothèque Scala pour la programmation probabiliste. Vous pouvez trouver plus d'informations sur Figaro ici Figaro Reference

Figaro est disponible en téléchargement sur Figaro Github

L'auteur de cette bibliothèque écrit actuellement un livre sur la programmation probabiliste utilisant Figaro. Voici le lien vers la page du livre: Livre de programmation probabiliste


1

Flèche

Spire est une bibliothèque numérique pour Scala qui se veut générique, rapide et précise.

En utilisant des fonctionnalités telles que la spécialisation, les macros, les classes de types et les implicites, Spire s'efforce de défier les idées reçues en matière de performances et de précision. Un objectif majeur est de permettre aux développeurs d'écrire du code numérique efficace sans avoir à "cuire" des représentations numériques particulières. Dans la plupart des cas, les implémentations génériques utilisant les classes de types spécialisées de Spire fonctionnent de la même manière que les implémentations directes correspondantes.

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.