我正在为数学和统计学的scala寻找一个好的开源库。希望像Apache Math或Colt这样的东西,但在Scala中实现。
有人能指出我正确的方向吗?
答案 0 :(得分:143)
是的,有一些:
ScalaLab项目旨在提供有效的科学 Java虚拟机的编程环境。脚本 语言是基于Scala编程语言增强的高 一流的科学操作者和一个综合的环境 提供类似Matlab的工作方式。
脚本代码 非常快,接近Java(有时更慢,有时更快), 并且通常比同等的Matlab .m脚本更快!
Scala的高性能数字线性代数库,具有丰富的功能 矢量和矩阵上类似Matlab的算子;一个数值库 程序;支持绘图。
FACTORIE是可部署概率建模的工具包, 在Scala中作为软件库实现。它为用户提供 用于创建关系因子图的简洁语言,估算 参数和执行推理。
通过twitter进行图表处理:
Cassovary从头开始设计,可高效处理图形 有数十亿的边缘。它附带了一些常见的节点和图形数据 结构和遍历算法。一个典型的用法是做 大规模图挖掘和分析。
在Twitter上,Cassovary构成了我们习惯的堆栈的底层 为我们的许多基于图形的功能提供支持,包括“跟随谁”和 “类似于。”我们也将它用于Twitter搜索和 确定哪些推广产品用户将看到的算法。过度 时间,我们希望从其中一些带来更多的非专有逻辑 产品功能进入Cassovary。
来自twitter的抽象代数库:
代码的目标是构建聚合系统(通过Scalding或 风暴)。它最初是作为Scalding的Matrix API的一部分开发的, 矩阵的值是Monoids,Group或的元素 戒指。随后,很明显代码范围更广 在Scalding和Twitter内的其他项目中应用。
!有实验状态!
sb_probdsl提供简单的离散概率编程支持 使用scala的新分隔延续支持。
Scala的马尔可夫链库
马尔可夫链代表概率的随机过程 下一步的分配取决于当前的非平凡 步骤,但不依赖于以前的步骤。给这个库一些 训练数据,它将生成统计上的新随机数据 类似于它。
Signal / Collect是一种大规模的编程模型和框架 图处理。该模型足以表达简洁 在图上制定了许多迭代和数据流算法 允许框架透明地并行化处理。
包括统计和实用程序包。包含非常基本和众所周知的 事情,比如手段...... ...
虽然它不是图书馆,但它可以帮助你解决很多问题 概率。
答案 1 :(得分:9)
Figaro是一个用于概率编程的Scala库。您可以在Figaro Reference
找到有关费加罗的更多信息Figaro可从Figaro Github
下载该图书馆的作者目前正在使用费加罗撰写一本关于概率编程的书。以下是图书页面的链接:Probabilistic Programming Book
答案 2 :(得分:1)
Spire是Scala的数字库,旨在通用, 快速,准确。
使用特殊化,宏,类型类等功能 暗示,Spire努力克服传统智慧 性能和精度权衡。一个主要目标是允许 开发人员编写高效的数字代码而无需"烘烤" 特定的数字表示。在大多数情况下,通用 使用Spire专用类型类的实现 与相应的直接实现相同。