¿Existe una buena biblioteca de matemáticas / estadísticas para Scala? [cerrado]

88

Estoy buscando una buena biblioteca de código abierto para scala para matemáticas y estadísticas. Con suerte, algo como Apache Math o Colt, pero implementado en Scala.

¿Alguien puede señalarme en la dirección correcta?

Dave
fuente
4
Podría ayudar a explicar por qué busca una biblioteca implementada en Scala, en lugar de una que simplemente se puede usar desde Scala.
retrónimo
De hecho, comencé a usar commons.apache.org/proper/commons-math y es fácil de usar y funciona bien en Scala.
tom10271

Respuestas:

147

Si hay algunos:

Scalalab

El proyecto ScalaLab tiene como objetivo proporcionar un entorno de programación científica eficiente para la máquina virtual Java. El lenguaje de scripting se basa en el lenguaje de programación Scala mejorado con operadores científicos de alto nivel y con un entorno integrado que proporciona un estilo de trabajo similar a Matlab.

El código de secuencia de comandos es extremadamente rápido, cercano a Java (a veces más lento, a veces más rápido) y, por lo general, más rápido que los scripts de Matlab .m equivalentes.

Scalala ahora es reemplazado por Breeze

Una biblioteca de álgebra lineal numérica de alto rendimiento para Scala, con ricos operadores tipo Matlab en vectores y matrices; una biblioteca de rutinas numéricas; soporte para trazar.

Factorie

FACTORIE es un conjunto de herramientas para el modelado probabilístico desplegable, implementado como una biblioteca de software en Scala. Proporciona a sus usuarios un lenguaje sucinto para crear gráficos de factores relacionales , estimar parámetros y realizar inferencias.

Cassovary

por twitter para el procesamiento de gráficos:

Cassovary está diseñado desde cero para manejar de manera eficiente gráficos con miles de millones de bordes. Viene con algunas estructuras de datos de gráficos y nodos comunes y algoritmos transversales. Un uso típico es realizar minería y análisis de gráficos a gran escala.

En Twitter, Cassovary forma la capa inferior de una pila que usamos para impulsar muchas de nuestras funciones basadas en gráficos, incluidas "A quién seguir" y "Similar a". También lo usamos por su relevancia en la búsqueda de Twitter y los algoritmos que determinan qué Productos Promocionados verán los usuarios. Con el tiempo, esperamos incorporar más lógica no propietaria de algunas de esas características del producto a Cassovary.

Algebird

Biblioteca de álgebra abstracta de twitter:

El código está destinado a la construcción de sistemas de agregación (mediante Scalding o Storm). Originalmente se desarrolló como parte de la API de Matrix de Scalding, donde las matrices tenían valores que son elementos de monoides, grupos o anillos. Posteriormente, quedó claro que el código tenía una aplicación más amplia dentro de Scalding y en otros proyectos dentro de Twitter.

scala_prob

! tiene estado experimental!

sb_probdsl ofrece soporte de programación probabilística discreta simple utilizando el nuevo soporte de continuaciones delimitadas de scala.

Malakov

Una biblioteca de Markov Chain para Scala

Las cadenas de Markov representan procesos estocásticos donde la distribución de probabilidad del siguiente paso depende de manera no trivial del paso actual, pero no depende de los pasos anteriores. Proporcione a esta biblioteca algunos datos de entrenamiento y generará nuevos datos aleatorios que estadísticamente se le parezcan.

recoger señal

Signal / Collect es un modelo y marco de programación para el procesamiento de gráficos a gran escala. El modelo es lo suficientemente expresivo como para formular de manera concisa muchos algoritmos iterados y de flujo de datos en gráficos, al tiempo que permite que el marco paralelice de manera transparente el procesamiento.

Matemático canoso

Incluye paquetes de estadísticas y utilidades. Contiene cosas muy básicas y bien conocidas, como significa std ...

Mónada de probabilidad:

Si bien no es una biblioteca, podría ayudarlo mucho con el manejo de probabilidades.

Om nom nom
fuente
4
Puede ver las comparaciones de rendimiento de Scalala y Scalalab vs Python aquí
om-nom-nom
15
También está Saddle : Saddle es una biblioteca de manipulación de datos para Scala que proporciona estructuras de datos unidimensionales y bidimensionales indexadas, respaldadas por matrices, que están juiciosamente especializadas en primitivas de JVM para evitar la sobrecarga de boxing y unboxing.
om-nom-nom
3
om-nom-nom, deberías plantear a Saddle como respuesta. +1
metasim
1
@SimeonFitch Estoy esperando un poco de tiempo libre, para echar un vistazo más de cerca a la silla de montar y quizás escribir algo más que el extracto anterior.
om-nom-nom
1
@ om-nom-nom: Tu enlace ya no funciona.
Pravesh Jain
9

Figaro es una biblioteca de Scala para programación probabilística. Puede encontrar más información sobre Figaro aquí Figaro Reference

Figaro está disponible para su descarga desde Figaro Github

El autor de esta biblioteca está escribiendo actualmente un libro sobre programación probabilística usando Figaro. Aquí está el enlace a la página del libro: Libro de programación probabilística

Ravi
fuente
1

Aguja

Spire es una biblioteca numérica para Scala que pretende ser genérica, rápida y precisa.

Usando características como especialización, macros, clases de tipos e implícitos, Spire trabaja duro para desafiar la sabiduría convencional en torno a las compensaciones de rendimiento y precisión. Un objetivo principal es permitir que los desarrolladores escriban código numérico eficiente sin tener que "crear" representaciones numéricas particulares. En la mayoría de los casos, las implementaciones genéricas que utilizan las clases de tipos especializadas de Spire funcionan de manera idéntica a las implementaciones directas correspondientes.

Make42
fuente