Czy istnieje dobra biblioteka matematyki / statystyk dla Scali? [Zamknięte]

88

Szukam dobrej biblioteki open source dla scali do matematyki i statystyki. Miejmy nadzieję, że coś w rodzaju Apache Math lub Colt, ale zaimplementowane w Scali.

Czy ktoś może wskazać mi właściwy kierunek?

dave
źródło
4
Może pomóc wyjaśnić, dlaczego szukasz biblioteki zaimplementowanej w Scali, a nie takiej, której można używać tylko w Scali.
retronim
Właściwie zacząłem używać commons.apache.org/proper/commons-math i jest łatwy w użyciu i działa dobrze w Scali.
tom10271

Odpowiedzi:

147

Tak, są jakieś:

Scalalab

Projekt ScalaLab ma na celu zapewnienie wydajnego naukowego środowiska programistycznego dla wirtualnej maszyny języka Java. Język skryptowy oparty jest na języku programowania Scala wzbogaconym o operatory naukowe wysokiego poziomu i zintegrowanym środowisku, które zapewnia styl pracy podobny do Matlab.

Kod skryptowy jest niezwykle szybki, zbliżony do języka Java (czasem wolniejszy, czasem szybszy) i zwykle szybszy od równoważnych skryptów Matlab .m!

Skalala została teraz zastąpiona przez Breeze

Wysokowydajna biblioteka numerycznej algebry liniowej dla Scala, z bogatymi operatorami podobnymi do Matlaba na wektorach i macierzach; biblioteka procedur numerycznych; wsparcie dla kreślenia.

Factorie

FACTORIE to zestaw narzędzi do możliwego do wdrożenia modelowania probabilistycznego, zaimplementowany jako biblioteka oprogramowania w Scali. Zapewnia użytkownikom zwięzły język do tworzenia wykresów czynników relacyjnych , szacowania parametrów i przeprowadzania wnioskowania.

Cassovary

przez Twittera do przetwarzania wykresów:

Cassovary został zaprojektowany od podstaw, aby efektywnie obsługiwać wykresy z miliardami krawędzi. Zawiera kilka typowych struktur danych węzłów i grafów oraz algorytmy przechodzenia. Typowym zastosowaniem jest eksploracja i analiza wykresów na dużą skalę.

Na Twitterze Cassovary stanowi dolną warstwę stosu, którego używamy do obsługi wielu naszych funkcji opartych na wykresach, takich jak „Kogo obserwować” i „Podobni do”. Używamy go również do oceny trafności w wyszukiwaniu na Twitterze i algorytmów określających, które produkty promowane zobaczą użytkownicy. Mamy nadzieję, że z biegiem czasu wprowadzimy do Cassovary więcej niezastrzeżonych rozwiązań logicznych z niektórych funkcji produktu.

Algebird

Biblioteka algebry abstrakcyjnej z Twittera:

Kod jest przeznaczony do budowania systemów agregacji (poprzez Scalding lub Storm). Pierwotnie został opracowany jako część Matrix API firmy Scalding, w którym Matryce miały wartości będące elementami Monoidów, Grup lub Pierścieni. Następnie stało się jasne, że kod ma szersze zastosowanie w Scalding i innych projektach na Twitterze.

scala_prob

! ma status eksperymentalny!

sb_probdsl oferuje obsługę prostego dyskretnego programowania probabilistycznego przy użyciu nowej obsługi ograniczonych kontynuacji w scali.

Malakov

Biblioteka łańcuchów Markov dla Scala

Łańcuchy Markowa reprezentują procesy stochastyczne, w których rozkład prawdopodobieństwa następnego kroku zależy nietrywialnie od bieżącego kroku, ale nie zależy od poprzednich kroków. Daj tej bibliotece trochę danych szkoleniowych, a wygeneruje nowe losowe dane, które są statystycznie do niej podobne.

zbieranie sygnału

Signal / Collect to model programowania i framework do przetwarzania wykresów na dużą skalę. Model jest wystarczająco wyrazisty, aby zwięźle sformułować wiele iterowanych algorytmów przepływu danych na wykresach, jednocześnie umożliwiając platformie przejrzystą równoległość przetwarzania.

Grizzled.math

Zawiera pakiety statystyk i narzędzi. Zawiera bardzo podstawowe i dobrze znane rzeczy, takie jak oznacza std ...

Monada prawdopodobieństwa:

Chociaż nie jest to biblioteka, może ci bardzo pomóc w rozwiązywaniu problemów.

mniam mniam mniam
źródło
4
Możesz spojrzeć na porównania wydajności Scalala i Scalalab vs Python tutaj
om-nom-nom
15
Istnieje również Saddle : Saddle to biblioteka do manipulacji danymi dla Scala, która zapewnia oparte na tablicach, indeksowane, jedno- i dwuwymiarowe struktury danych, które są rozsądnie wyspecjalizowane w prymitywach JVM, aby uniknąć narzutu związanego z pakowaniem i rozpakowywaniem.
om-nom-nom
3
om-nom-nom, powinieneś podnieść Saddle'a do odpowiedzi. +1
metasim
1
@SimeonFitch Czekam na chwilę wolnego czasu, żeby przyjrzeć się siodełku i może napiszę coś więcej niż powyższy fragment.
om-nom-nom
1
@ om-nom-nom: Twój link już nie działa.
Pravesh Jain
9

Figaro to biblioteka Scala do programowania probabilistycznego. Więcej informacji o Figaro można znaleźć tutaj Figaro Reference

Figaro można pobrać z Figaro Github

Autor tej biblioteki obecnie pisze książkę o programowaniu probabilistycznym przy użyciu Figaro. Oto link do strony książki: Probabilistic Programming Book

Ravi
źródło
1

Iglica

Spire to biblioteka numeryczna dla Scala, która ma być ogólna, szybka i precyzyjna.

Korzystając z takich funkcji, jak specjalizacja, makra, klasy typów i implikacje, Spire ciężko pracuje, aby przeciwstawić się konwencjonalnej wiedzy na temat kompromisów dotyczących wydajności i precyzji. Głównym celem jest umożliwienie programistom pisania wydajnego kodu numerycznego bez konieczności „pieczenia” określonych reprezentacji liczbowych. W większości przypadków implementacje generyczne używające wyspecjalizowanych klas typu Spire działają identycznie jak odpowiadające im implementacje bezpośrednie.

Make42
źródło