Scala有没有一个好的数学/统计库?

90

我正在寻找一款适用于数学和统计的良好Scala开源库。希望能够像Apache Math或Colt一样,但是是用Scala实现的。

有人可以指导我吗?


4
为什么你需要使用Scala实现的库,而不是仅能够在Scala中使用的库,这一点可能有所帮助。 - retronym
实际上,我开始使用http://commons.apache.org/proper/commons-math/,它易于使用并且在Scala中运行良好。 - tom10271
3个回答

149

是的,有一些:

Scalalab

ScalaLab项目旨在为Java虚拟机提供高效的科学编程环境。脚本语言基于Scala编程语言,增强了高级科学运算符,并提供了一个集成环境,提供类似Matlab的工作风格。

脚本代码非常快,接近Java(有时比Java慢,有时比Java快),而且通常比等效的Matlab .m脚本更快!

Scalala现已被Breeze替代

Breeze是Scala的高性能数值线性代数库,具有丰富的向量和矩阵类Matlab操作符;具有大量数值例程和绘图支持。

Factorie

FACTORIE是一个部署概率建模的工具包,实现为Scala软件库。它为用户提供了一种简洁的语言来创建关系型因子图,估计参数并执行推断。

Cassovary

由Twitter用于图处理:

Cassovary是从头开始设计的,旨在高效处理数十亿个边缘的图形。它配备了一些常见的节点和图形数据结构和遍历算法。一个典型的用途是进行大规模图形挖掘和分析。

在Twitter,Cassovary形成我们用于支持许多基于图形的功能(包括“Who to Follow”和“Similar to”)的堆栈的底层。我们还将其用于Twitter搜索中的相关性以及确定用户将看到哪些推广产品的算法。超过

时间上,我们希望能够从一些产品特性中带来更多的非专有逻辑到Cassovary中。

Algebird

Twitter的抽象代数库:

该代码旨在构建聚合系统(通过Scalding或Storm)。最初作为Scalding的Matrix API的一部分开发,其中矩阵的值是幺半群、群或环的元素。后来明确这段代码在Scalding内部和Twitter其他项目中具有更广泛的应用。

scala_prob

!拥有实验性状态!

sb_probdsl提供了使用Scala的新分界连续支持的简单离散概率编程支持。

Malakov

Scala的马尔可夫链库。

马尔可夫链表示随机过程,其中下一步的概率分布在非平凡地取决于当前步骤,但不依赖于先前的步骤。将训练数据提供给此库,它将生成新的随机数据,统计上类似于原始数据。

signal-collect

Signal/Collect是用于大规模图处理的编程模型和框架。该模型足够表达许多迭代和数据流算法,同时允许框架透明地并行处理。

Grizzled.math

包括stat和utility包。包含非常基本且知名的事物,如均值、标准差等......

概率单子:

它虽然不是一个库,但可以帮助你处理概率问题。


4
您可以在此处查看Scalala和Scalalab与Python的性能比较链接 - om-nom-nom
15
还有一个SaddleSaddle是一个Scala数据操作库,它提供了支持数组、索引、一维和二维数据结构的功能,并且针对JVM原始类型进行了巧妙优化,避免了装箱和拆箱带来的开销。 - om-nom-nom
3
嗯呐嗯呐,你应该将Saddle提升为答案。+1 - metasim
1
@SimeonFitch 我正在等待一些空闲时间,来仔细研究saddle,也许会写一些比上面摘录更多的东西。 - om-nom-nom
1
@om-nom-nom:你的链接已经失效了。 - Pravesh Jain

9

Figaro是一款用于概率编程的Scala库。您可以在这里找到有关Figaro的更多信息:Figaro参考资料

Figaro可以从Figaro Github下载。

该库的作者正在使用Figaro编写一本有关概率编程的书籍。以下是书籍页面链接:概率编程书籍


1

Spire

Spire是Scala的数字库,旨在实现通用、快速和精确。

利用专业化、宏、类型类和隐式等特性,Spire致力于打破传统智慧关于性能和精度权衡的局限。一个主要目标是允许开发人员编写高效的数字代码,而无需“烘烤”特定的数字表示。在大多数情况下,使用Spire的专门类型类的通用实现与相应的直接实现表现完全一致。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接