Gibt es eine gute Mathe- / Statistikbibliothek für Scala? [geschlossen]

87

Ich suche eine gute Open-Source-Bibliothek für Scala für Mathematik und Statistik. Hoffentlich so etwas wie Apache Math oder Colt, aber in Scala implementiert.

Kann mich jemand in die richtige Richtung weisen?

Dave
quelle
4
Es könnte hilfreich sein zu erklären, warum Sie nach einer in Scala implementierten Bibliothek suchen, anstatt nach einer, die nur von Scala aus verwendet werden kann.
Retronym
Eigentlich habe ich angefangen, commons.apache.org/proper/commons-math zu verwenden, und es ist einfach zu bedienen und funktioniert gut in Scala.
Tom10271

Antworten:

145

Ja da sind welche:

Scalalab

Das ScalaLab-Projekt zielt darauf ab, eine effiziente wissenschaftliche Programmierumgebung für die Java Virtual Machine bereitzustellen. Die Skriptsprache basiert auf der Programmiersprache Scala, die durch hochrangige wissenschaftliche Mitarbeiter erweitert wurde, und über eine integrierte Umgebung, die einen Matlab-ähnlichen Arbeitsstil bietet.

Der Skriptcode ist extrem schnell, nahe an Java (manchmal langsamer, manchmal schneller) und normalerweise schneller als bei entsprechenden Matlab .m-Skripten!

Scalala wird jetzt von Breeze abgelöst

Eine leistungsstarke numerische lineare Algebra-Bibliothek für Scala mit umfangreichen Matlab-ähnlichen Operatoren für Vektoren und Matrizen; eine Bibliothek numerischer Routinen; Unterstützung für das Plotten.

Factorie

FACTORIE ist ein Toolkit für die implementierbare probabilistische Modellierung, das als Softwarebibliothek in Scala implementiert ist. Es bietet seinen Benutzern eine prägnante Sprache zum Erstellen von relationalen Faktordiagrammen , zum Schätzen von Parametern und zum Durchführen von Inferenzen.

Cassovary

von Twitter für die Grafikverarbeitung:

Cassovary wurde von Grund auf so konzipiert, dass Grafiken mit Milliarden von Kanten effizient verarbeitet werden können. Es enthält einige gängige Knoten- und Diagrammdatenstrukturen sowie Durchquerungsalgorithmen. Eine typische Verwendung ist das groß angelegte Graph Mining und die Analyse.

Bei Twitter bildet Cassovary die unterste Ebene eines Stapels, mit dem wir viele unserer grafischen Funktionen unterstützen, darunter "Who to Follow" und "Similar to". Wir verwenden es auch für die Relevanz in der Twitter-Suche und für die Algorithmen, die bestimmen, welche gesponserten Produkte Benutzer sehen. Wir hoffen, mit der Zeit mehr nicht proprietäre Logik von einigen dieser Produktfunktionen in Cassovary einbringen zu können.

Algebird

Abstrakte Algebra-Bibliothek von Twitter:

Code zielt darauf ab, Aggregationssysteme zu erstellen (über Verbrühung oder Sturm). Es wurde ursprünglich als Teil der Matrix-API von Scalding entwickelt, bei der Matrizen Werte hatten, die Elemente von Monoiden, Gruppen oder Ringen sind. In der Folge war klar, dass der Code eine breitere Anwendung in Scalding und in anderen Projekten innerhalb von Twitter hatte.

scala_prob

! hat experimentellen Status!

sb_probdsl bietet einfache Unterstützung für diskrete probabilistische Programmierung unter Verwendung der neuen Unterstützung für abgegrenzte Fortsetzungen von scala.

Malakov

Eine Markov-Kettenbibliothek für Scala

Markov-Ketten stellen stochastische Prozesse dar, bei denen die Wahrscheinlichkeitsverteilung des nächsten Schritts nicht trivial vom aktuellen Schritt abhängt, jedoch nicht von vorherigen Schritten. Geben Sie dieser Bibliothek einige Trainingsdaten und es werden neue Zufallsdaten generiert, die statistisch ähnlich sind.

Signal sammeln

Signal / Collect ist ein Programmiermodell und ein Framework für die groß angelegte Grafikverarbeitung. Das Modell ist ausdrucksstark genug, um viele iterierte Algorithmen und Datenflussalgorithmen in Diagrammen präzise zu formulieren, während das Framework die Verarbeitung transparent parallelisieren kann.

Grizzled.math

Enthält Statistik- und Dienstprogrammpakete. Enthält sehr grundlegende und bekannte Dinge, wie z.

Wahrscheinlichkeitsmonade:

Obwohl es sich nicht um eine Bibliothek handelt, kann es Ihnen beim Umgang mit Wahrscheinlichkeiten sehr helfen.

OM Nom Nom
quelle
4
Sie können Leistungsvergleiche von Scalala und Scalalab gegen Python hier
om-nom-nom
13
Es gibt auch Saddle : Saddle ist eine Datenmanipulationsbibliothek für Scala, die Array-gestützte, indizierte, ein- und zweidimensionale Datenstrukturen bereitstellt, die mit Bedacht auf JVM-Grundelemente spezialisiert sind, um den Aufwand für das Ein- und Auspacken zu vermeiden.
Om-Nom-Nom
3
om-nom-nom, du solltest Saddle zu einer Antwort erheben. +1
Metasim
1
@SimeonFitch Ich warte auf ein bisschen Freizeit, um mir den Sattel genauer anzusehen und vielleicht etwas mehr als den obigen Auszug zu schreiben.
Om-Nom-Nom
1
@ om-nom-nom: Dein Link funktioniert nicht mehr.
Pravesh Jain
9

Figaro ist eine Scala-Bibliothek für probabilistische Programmierung. Weitere Informationen zu Figaro finden Sie hier Figaro Reference

Figaro kann von Figaro Github heruntergeladen werden

Der Autor dieser Bibliothek schreibt derzeit ein Buch über probabilistische Programmierung mit Figaro. Hier ist der Link zur Buchseite: Probabilistic Programming Book

Ravi
quelle
1

Turm

Spire ist eine numerische Bibliothek für Scala, die allgemein, schnell und präzise sein soll.

Mit Funktionen wie Spezialisierung, Makros, Typklassen und Implikits arbeitet Spire hart daran, konventioneller Weisheit in Bezug auf Leistung und Präzisionskompromisse zu trotzen. Ein Hauptziel ist es, Entwicklern das Schreiben von effizientem numerischem Code zu ermöglichen, ohne bestimmte numerische Darstellungen "einbacken" zu müssen. In den meisten Fällen werden generische Implementierungen unter Verwendung der speziellen Typklassen von Spire identisch mit entsprechenden direkten Implementierungen ausgeführt.

Make42
quelle